diff --git a/docs/categories/all.html b/docs/categories/all.html index 1baddb79..022c413b 100644 --- a/docs/categories/all.html +++ b/docs/categories/all.html @@ -109,7 +109,7 @@

Yes Yes No - 1174 + 1175 @@ -256,7 +256,7 @@

Yes Yes Yes - 132 + 133 @@ -300,7 +300,7 @@

No Yes No - 65 + 66 @@ -535,7 +535,7 @@

Yes Yes Yes - 20706 + 20719 @@ -581,7 +581,7 @@

No Yes Yes - 1336 + 1337 @@ -713,7 +713,7 @@

No Yes No - 3822 + 3828 @@ -759,7 +759,7 @@

No Yes Yes - 17236 + 17251 @@ -805,7 +805,7 @@

No Yes Yes - 773 + 776 @@ -851,7 +851,7 @@

Yes Yes Yes - 24 + 26 @@ -917,7 +917,7 @@

No Yes Yes - 266 + 267 @@ -1001,7 +1001,7 @@

Yes Yes Yes - 8294 + 8297 @@ -1362,7 +1362,7 @@

Yes Yes Yes - 3673 + 3674 @@ -1408,7 +1408,7 @@

Yes Yes Yes - 909 + 910 @@ -1561,7 +1561,7 @@

No Yes Yes - 2806 + 2809 @@ -1676,7 +1676,7 @@

Yes Yes No - 478 + 479 @@ -1699,7 +1699,7 @@

No Yes Yes - 7989 + 7995 @@ -1745,7 +1745,7 @@

No Yes No - 1504 + 1510 @@ -1812,7 +1812,7 @@

No Yes No - 1438 + 1439 @@ -1946,7 +1946,7 @@

No Yes No - 569 + 570 @@ -1990,7 +1990,7 @@

Yes Yes Yes - 1995 + 1996 @@ -2168,7 +2168,7 @@

No Yes Yes - 694 + 695 @@ -2300,7 +2300,7 @@

No Yes Yes - 2039 + 2040 @@ -2342,7 +2342,7 @@

No Yes No - 440 + 441 @@ -2430,7 +2430,7 @@

No Yes Yes - 1178 + 1180 @@ -2581,7 +2581,7 @@

No No Yes - 8792 + 8793 @@ -2627,7 +2627,7 @@

No Yes Yes - 6012 + 6013 @@ -2673,7 +2673,7 @@

No Yes Yes - 15884 + 15888 @@ -2763,7 +2763,7 @@

Yes Yes Yes - 366 + 365 @@ -3053,7 +3053,7 @@

No Yes No - 451 + 453 @@ -3118,7 +3118,7 @@

No Yes No - 177 + 179 @@ -3410,7 +3410,7 @@

No Yes Yes - 5844 + 5843 @@ -3454,7 +3454,7 @@

No Yes Yes - 11109 + 11114 @@ -3649,7 +3649,7 @@

No Yes No - 26077 + 26079 @@ -3801,7 +3801,7 @@

No Yes No - 783 + 785 @@ -4046,7 +4046,7 @@

No Yes Yes - 1551 + 1555 @@ -4159,7 +4159,7 @@

Yes Yes Yes - 243 + 244 @@ -4203,7 +4203,7 @@

Yes Yes Yes - 3343 + 3347 @@ -4226,7 +4226,7 @@

Yes Yes Yes - 144 + 145 @@ -4429,7 +4429,7 @@

Yes Yes Yes - 33 + 34 @@ -4601,7 +4601,7 @@

No Yes No - 1718 + 1719 @@ -4624,7 +4624,7 @@

No Yes Yes - 1658 + 1669 @@ -4647,7 +4647,7 @@

No Yes No - 61202 + 61245 @@ -4670,7 +4670,7 @@

Yes Yes No - 24259 + 24264 @@ -4693,7 +4693,7 @@

Yes Yes No - 20706 + 20719 @@ -4714,7 +4714,7 @@

No Yes No - 12601 + 12608 @@ -4735,7 +4735,7 @@

No Yes No - 7244 + 7246 @@ -4756,7 +4756,7 @@

No Yes No - 5287 + 5289 @@ -4777,7 +4777,7 @@

No Yes No - 3535 + 3536 @@ -4798,7 +4798,7 @@

No Yes No - 3313 + 3315 @@ -4821,7 +4821,7 @@

No Yes No - 2720 + 2723 @@ -4842,7 +4842,7 @@

Yes Yes No - 2521 + 2522 @@ -4863,7 +4863,7 @@

No Yes No - 2313 + 2314 @@ -4907,7 +4907,7 @@

No Yes No - 1804 + 1805 @@ -4928,7 +4928,7 @@

No Yes No - 1773 + 1775 @@ -4949,7 +4949,7 @@

No Yes No - 1367 + 1368 @@ -4993,7 +4993,7 @@

No Yes No - 1254 + 1258 @@ -5014,7 +5014,7 @@

No Yes No - 1151 + 1155 @@ -5035,7 +5035,7 @@

No Yes No - 1044 + 1045 @@ -5056,7 +5056,7 @@

No Yes No - 1017 + 1018 @@ -5077,7 +5077,7 @@

No Yes No - 826 + 827 @@ -5098,7 +5098,7 @@

No Yes No - 773 + 774 @@ -5203,7 +5203,7 @@

No Yes No - 634 + 635 @@ -5224,7 +5224,7 @@

No Yes No - 624 + 625 @@ -5518,7 +5518,7 @@

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

No Yes No - 307 + 308 @@ -5602,7 +5602,7 @@

No Yes No - 292 + 293 @@ -5728,7 +5728,7 @@

No Yes No - 268 + 269 @@ -5793,7 +5793,7 @@

No Yes No - 233 + 234 @@ -5942,7 +5942,7 @@

No Yes No - 197 + 198 @@ -6068,7 +6068,7 @@

No Yes No - 183 + 185 @@ -6299,7 +6299,7 @@

No Yes No - 157 + 158 @@ -6492,7 +6492,7 @@

No Yes No - 129 + 130 @@ -6681,7 +6681,7 @@

No Yes No - 101 + 102 @@ -6702,7 +6702,7 @@

Yes Yes No - 101 + 102 @@ -6996,7 +6996,7 @@

No Yes No - 74 + 75 @@ -7269,7 +7269,7 @@

Yes Yes No - 59 + 60 @@ -7840,7 +7840,7 @@

No Yes No - 39 + 40 @@ -8239,7 +8239,7 @@

No Yes No - 29 + 30 @@ -8346,7 +8346,7 @@

Yes Yes No - 28 + 29 @@ -9694,7 +9694,7 @@

No Yes No - 15 + 16 @@ -11187,7 +11187,7 @@

No Yes No - 8 + 10 @@ -17405,7 +17405,7 @@

No Yes No - 1 + 2 @@ -26494,7 +26494,7 @@

No No No - 7244 + 7246 @@ -26517,7 +26517,7 @@

No No No - 1178 + 1180 @@ -26830,7 +26830,7 @@

No No No - 3376 + 3375 @@ -27388,7 +27388,7 @@

No Yes Yes - 4268 + 4269 @@ -27547,7 +27547,7 @@

No Yes Yes - 494 + 495 @@ -27570,7 +27570,7 @@

No Yes No - 4603 + 4602 @@ -27614,7 +27614,7 @@

No Yes Yes - 2226 + 2227 @@ -28621,7 +28621,7 @@

optic diff (link)

Stars - 1174 + 1175 Watchers @@ -28637,7 +28637,7 @@

optic diff (link)

Last Updated - 2023-08-06T15:55:11Z + 2023-08-08T10:05:52Z Archived @@ -28985,7 +28985,7 @@

OpenAPI Filter (link)

Stars - 132 + 133 Watchers @@ -29001,7 +29001,7 @@

OpenAPI Filter (link)

Last Updated - 2023-07-24T16:40:41Z + 2023-08-08T19:32:00Z Archived @@ -29089,7 +29089,7 @@

avantation (link)

Stars - 65 + 66 Watchers @@ -29105,7 +29105,7 @@

avantation (link)

Last Updated - 2023-08-06T06:21:23Z + 2023-08-09T03:14:26Z Archived @@ -29661,15 +29661,15 @@

ReDoc (link)

Stars - 20706 + 20719 Watchers - 284 + 285 Forks - 2206 + 2208 Created @@ -29677,7 +29677,7 @@

ReDoc (link)

Last Updated - 2023-08-08T02:49:13Z + 2023-08-08T23:52:26Z Archived @@ -29765,7 +29765,7 @@

widdershins (link)

Stars - 1336 + 1337 Watchers @@ -29773,7 +29773,7 @@

widdershins (link)

Forks - 309 + 308 Created @@ -29781,7 +29781,7 @@

widdershins (link)

Last Updated - 2023-08-04T03:10:12Z + 2023-08-08T16:59:53Z Archived @@ -30077,7 +30077,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 3822 + 3828 Watchers @@ -30085,7 +30085,7 @@

OpenAPI Server Code Generator (oapi-cod Forks - 659 + 660 Created @@ -30093,7 +30093,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2023-08-07T23:52:42Z + 2023-08-09T03:00:35Z Archived @@ -30181,7 +30181,7 @@

OpenAPI Generator (link)

Stars - 17236 + 17251 Watchers @@ -30189,7 +30189,7 @@

OpenAPI Generator (link)

Forks - 5504 + 5505 Created @@ -30197,7 +30197,7 @@

OpenAPI Generator (link)

Last Updated - 2023-08-08T02:43:45Z + 2023-08-09T03:02:57Z Archived @@ -30249,7 +30249,7 @@

OpenAPI JSON Schema Generator (link) Last Updated - 2023-08-07T18:45:43Z + 2023-08-08T22:55:03Z Archived @@ -30285,7 +30285,7 @@

Kiota Api Client Generator (link)

Stars - 773 + 776 Watchers @@ -30301,7 +30301,7 @@

Kiota Api Client Generator (link)

Last Updated - 2023-08-06T12:00:48Z + 2023-08-08T21:13:36Z Archived @@ -30389,7 +30389,7 @@

Bump.sh (link)

Stars - 24 + 26 Watchers @@ -30405,7 +30405,7 @@

Bump.sh (link)

Last Updated - 2023-07-27T01:48:17Z + 2023-08-08T23:03:21Z Archived @@ -30545,7 +30545,7 @@

VSCode OpenAPI (link)

Stars - 266 + 267 Watchers @@ -30561,7 +30561,7 @@

VSCode OpenAPI (link)

Last Updated - 2023-07-31T09:07:36Z + 2023-08-08T07:52:42Z Archived @@ -30753,7 +30753,7 @@

Swagger Editor (link)

Stars - 8294 + 8297 Watchers @@ -30761,7 +30761,7 @@

Swagger Editor (link)

Forks - 2183 + 2182 Created @@ -30769,7 +30769,7 @@

Swagger Editor (link)

Last Updated - 2023-08-06T23:56:49Z + 2023-08-08T10:49:11Z Archived @@ -31637,7 +31637,7 @@

Prism (link)

Stars - 3673 + 3674 Watchers @@ -31653,7 +31653,7 @@

Prism (link)

Last Updated - 2023-08-07T20:52:30Z + 2023-08-08T11:46:10Z Archived @@ -31741,7 +31741,7 @@

Microcks (link)

Stars - 909 + 910 Watchers @@ -31757,7 +31757,7 @@

Microcks (link)

Last Updated - 2023-08-05T01:33:44Z + 2023-08-08T09:57:23Z Archived @@ -32105,7 +32105,7 @@

tsoa (link)

Stars - 2806 + 2809 Watchers @@ -32121,7 +32121,7 @@

tsoa (link)

Last Updated - 2023-08-05T19:54:25Z + 2023-08-08T14:40:39Z Archived @@ -32365,7 +32365,7 @@

openapi-backend (link)

Stars - 478 + 479 Watchers @@ -32381,7 +32381,7 @@

openapi-backend (link)

Last Updated - 2023-07-28T06:36:25Z + 2023-08-08T18:18:17Z Archived @@ -32417,7 +32417,7 @@

API Platform (link)

Stars - 7989 + 7995 Watchers @@ -32433,7 +32433,7 @@

API Platform (link)

Last Updated - 2023-08-06T18:54:53Z + 2023-08-08T22:26:21Z Archived @@ -32521,7 +32521,7 @@

Fusio (link)

Stars - 1504 + 1510 Watchers @@ -32537,7 +32537,7 @@

Fusio (link)

Last Updated - 2023-08-07T20:17:45Z + 2023-08-08T23:42:01Z Archived @@ -32677,7 +32677,7 @@

@nestjs/swagger (link)

Stars - 1438 + 1439 Watchers @@ -32693,7 +32693,7 @@

@nestjs/swagger (link)

Last Updated - 2023-08-07T05:51:06Z + 2023-08-08T05:13:15Z Archived @@ -32989,7 +32989,7 @@

portman (link)

Stars - 569 + 570 Watchers @@ -33005,7 +33005,7 @@

portman (link)

Last Updated - 2023-08-01T13:53:08Z + 2023-08-08T20:52:32Z Archived @@ -33093,7 +33093,7 @@

Spectral (link)

Stars - 1995 + 1996 Watchers @@ -33109,7 +33109,7 @@

Spectral (link)

Last Updated - 2023-08-07T19:01:18Z + 2023-08-08T17:22:04Z Archived @@ -33205,7 +33205,7 @@

OpenAPI Validator (link)

Forks - 87 + 90 Created @@ -33509,7 +33509,7 @@

swagger-parser (link)

Stars - 694 + 695 Watchers @@ -33525,7 +33525,7 @@

swagger-parser (link)

Last Updated - 2023-07-31T17:13:20Z + 2023-08-08T07:03:16Z Archived @@ -33821,7 +33821,7 @@

kin-openapi (link)

Stars - 2039 + 2040 Watchers @@ -33837,7 +33837,7 @@

kin-openapi (link)

Last Updated - 2023-08-07T04:47:19Z + 2023-08-08T03:43:11Z Archived @@ -33925,7 +33925,7 @@

php-openapi (link)

Stars - 440 + 441 Watchers @@ -33941,7 +33941,7 @@

php-openapi (link)

Last Updated - 2023-08-01T22:58:13Z + 2023-08-08T10:29:11Z Archived @@ -34133,7 +34133,7 @@

Microsoft/OpenAPI.NET (link)

Stars - 1178 + 1180 Watchers @@ -34149,7 +34149,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2023-08-07T20:14:14Z + 2023-08-08T18:31:03Z Archived @@ -34497,7 +34497,7 @@

go-swagger (link)

Stars - 8792 + 8793 Watchers @@ -34505,7 +34505,7 @@

go-swagger (link)

Forks - 1220 + 1221 Created @@ -34513,7 +34513,7 @@

go-swagger (link)

Last Updated - 2023-08-07T15:10:38Z + 2023-08-09T01:07:36Z Archived @@ -34601,7 +34601,7 @@

NSwag (link)

Stars - 6012 + 6013 Watchers @@ -34617,7 +34617,7 @@

NSwag (link)

Last Updated - 2023-08-05T16:12:22Z + 2023-08-08T21:08:40Z Archived @@ -34705,7 +34705,7 @@

Swagger-Codegen (link)

Stars - 15884 + 15888 Watchers @@ -34721,7 +34721,7 @@

Swagger-Codegen (link)

Last Updated - 2023-08-08T00:31:13Z + 2023-08-08T22:49:06Z Archived @@ -34913,7 +34913,7 @@

api (link)

Stars - 366 + 365 Watchers @@ -34929,7 +34929,7 @@

api (link)

Last Updated - 2023-08-05T20:37:07Z + 2023-08-08T11:31:41Z Archived @@ -35641,7 +35641,7 @@

openapi-fuzzer (link)

Stars - 451 + 453 Watchers @@ -35657,7 +35657,7 @@

openapi-fuzzer (link)

Last Updated - 2023-08-04T10:06:56Z + 2023-08-08T11:40:43Z Archived @@ -35797,7 +35797,7 @@

OpenAPI Schema to JSON Schema (link) Stars - 177 + 179 Watchers @@ -35813,7 +35813,7 @@

OpenAPI Schema to JSON Schema (link) Last Updated - 2023-08-05T07:29:04Z + 2023-08-08T14:52:11Z Archived @@ -36321,7 +36321,7 @@

openapi-to-postman (link)

Watchers - 24 + 23 Forks @@ -36377,7 +36377,7 @@

openapi-format (link)

Forks - 13 + 12 Created @@ -36429,7 +36429,7 @@

super-linter (link)

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

SpringFox (link)

Stars - 5844 + 5843 Watchers @@ -36489,7 +36489,7 @@

SpringFox (link)

Last Updated - 2023-08-07T07:07:33Z + 2023-08-08T11:11:12Z Archived @@ -36577,7 +36577,7 @@

OWASP ZAP (link)

Stars - 11109 + 11114 Watchers @@ -36585,7 +36585,7 @@

OWASP ZAP (link)

Forks - 2109 + 2110 Created @@ -36593,7 +36593,7 @@

OWASP ZAP (link)

Last Updated - 2023-08-07T21:45:35Z + 2023-08-09T02:43:56Z Archived @@ -37045,7 +37045,7 @@

Django REST Framework (link)

Stars - 26077 + 26079 Watchers @@ -37053,7 +37053,7 @@

Django REST Framework (link)

Forks - 6650 + 6651 Created @@ -37061,7 +37061,7 @@

Django REST Framework (link)

Last Updated - 2023-08-08T03:09:39Z + 2023-08-08T18:50:55Z Archived @@ -37409,7 +37409,7 @@

openapi-python-client (link)

Stars - 783 + 785 Watchers @@ -37417,7 +37417,7 @@

openapi-python-client (link)

Forks - 149 + 150 Created @@ -37425,7 +37425,7 @@

openapi-python-client (link)

Last Updated - 2023-08-07T18:25:28Z + 2023-08-09T01:48:17Z Archived @@ -37981,7 +37981,7 @@

orval (link)

Stars - 1551 + 1555 Watchers @@ -37989,7 +37989,7 @@

orval (link)

Forks - 179 + 180 Created @@ -37997,7 +37997,7 @@

orval (link)

Last Updated - 2023-08-07T09:31:19Z + 2023-08-08T18:57:40Z Archived @@ -38241,7 +38241,7 @@

vacuum (link)

Stars - 243 + 244 Watchers @@ -38257,7 +38257,7 @@

vacuum (link)

Last Updated - 2023-08-07T04:33:12Z + 2023-08-09T00:11:05Z Archived @@ -38345,7 +38345,7 @@

OpenAPI TypeScript (link)

Stars - 3343 + 3347 Watchers @@ -38361,7 +38361,7 @@

OpenAPI TypeScript (link)

Last Updated - 2023-08-08T00:33:33Z + 2023-08-08T17:12:31Z Archived @@ -38397,7 +38397,7 @@

libopenapi (link)

Stars - 144 + 145 Watchers @@ -38413,7 +38413,7 @@

libopenapi (link)

Last Updated - 2023-08-07T21:05:58Z + 2023-08-08T03:39:33Z Archived @@ -38609,7 +38609,7 @@

ABAP OpenAPI Client & Server Genera Watchers - 11 + 10 Forks @@ -38621,7 +38621,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2023-07-06T10:15:40Z + 2023-08-08T15:44:43Z Archived @@ -38865,7 +38865,7 @@

openapi-changes (link)

Stars - 33 + 34 Watchers @@ -38881,7 +38881,7 @@

openapi-changes (link)

Last Updated - 2023-08-06T21:35:37Z + 2023-08-08T03:39:51Z Archived @@ -39081,7 +39081,7 @@

api-smart-diff (link)

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

rswag (link)

Stars - 1718 + 1719 Watchers @@ -39297,7 +39297,7 @@

rswag (link)

Last Updated - 2023-08-07T09:03:27Z + 2023-08-08T05:22:56Z Archived @@ -39333,7 +39333,7 @@

Fern (link)

Stars - 1658 + 1669 Watchers @@ -39341,7 +39341,7 @@

Fern (link)

Forks - 59 + 58 Created @@ -39349,7 +39349,7 @@

Fern (link)

Last Updated - 2023-08-08T02:55:59Z + 2023-08-09T03:05:43Z Archived @@ -39385,7 +39385,7 @@

FastAPI (link)

Stars - 61202 + 61245 Watchers @@ -39393,7 +39393,7 @@

FastAPI (link)

Forks - 5140 + 5144 Created @@ -39401,7 +39401,7 @@

FastAPI (link)

Last Updated - 2023-08-08T00:24:56Z + 2023-08-09T03:11:06Z Archived @@ -39437,7 +39437,7 @@

swagger-ui (link)

Stars - 24259 + 24264 Watchers @@ -39445,7 +39445,7 @@

swagger-ui (link)

Forks - 8740 + 8741 Created @@ -39453,7 +39453,7 @@

swagger-ui (link)

Last Updated - 2023-08-07T21:45:39Z + 2023-08-09T01:30:19Z Archived @@ -39489,15 +39489,15 @@

Redoc (link)

Stars - 20706 + 20719 Watchers - 284 + 285 Forks - 2206 + 2208 Created @@ -39505,7 +39505,7 @@

Redoc (link)

Last Updated - 2023-08-08T02:49:13Z + 2023-08-08T23:52:26Z Archived @@ -39541,7 +39541,7 @@

full-stack-fastapi-postgresql (link) Stars - 12601 + 12608 Watchers @@ -39549,7 +39549,7 @@

full-stack-fastapi-postgresql (link) Forks - 2327 + 2329 Created @@ -39557,7 +39557,7 @@

full-stack-fastapi-postgresql (link) Last Updated - 2023-08-08T01:01:07Z + 2023-08-08T20:17:08Z Archived @@ -39593,7 +39593,7 @@

swagger-core (link)

Stars - 7244 + 7246 Watchers @@ -39609,7 +39609,7 @@

swagger-core (link)

Last Updated - 2023-08-05T02:32:00Z + 2023-08-09T03:07:29Z Archived @@ -39645,7 +39645,7 @@

mockoon (link)

Stars - 5287 + 5289 Watchers @@ -39653,7 +39653,7 @@

mockoon (link)

Forks - 298 + 297 Created @@ -39661,7 +39661,7 @@

mockoon (link)

Last Updated - 2023-08-07T23:09:30Z + 2023-08-08T21:52:52Z Archived @@ -39697,7 +39697,7 @@

knife4j (link)

Stars - 3535 + 3536 Watchers @@ -39713,7 +39713,7 @@

knife4j (link)

Last Updated - 2023-08-06T14:57:53Z + 2023-08-08T12:04:54Z Archived @@ -39749,7 +39749,7 @@

openapi-directory (link)

Stars - 3313 + 3315 Watchers @@ -39757,7 +39757,7 @@

openapi-directory (link)

Forks - 551 + 552 Created @@ -39765,7 +39765,7 @@

openapi-directory (link)

Last Updated - 2023-08-06T01:43:43Z + 2023-08-08T21:55:24Z Archived @@ -39801,7 +39801,7 @@

springdoc-openapi (link)

Stars - 2720 + 2723 Watchers @@ -39809,7 +39809,7 @@

springdoc-openapi (link)

Forks - 407 + 408 Created @@ -39817,7 +39817,7 @@

springdoc-openapi (link)

Last Updated - 2023-08-07T23:43:44Z + 2023-08-09T01:00:55Z Archived @@ -39853,7 +39853,7 @@

swagger-js (link)

Stars - 2521 + 2522 Watchers @@ -39869,7 +39869,7 @@

swagger-js (link)

Last Updated - 2023-08-07T16:18:22Z + 2023-08-08T21:28:31Z Archived @@ -39905,7 +39905,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2313 + 2314 Watchers @@ -39913,7 +39913,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Forks - 307 + 306 Created @@ -39921,7 +39921,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2023-08-07T12:54:16Z + 2023-08-08T06:59:36Z Archived @@ -40009,7 +40009,7 @@

Schemathesis (link)

Stars - 1804 + 1805 Watchers @@ -40017,7 +40017,7 @@

Schemathesis (link)

Forks - 133 + 134 Created @@ -40025,7 +40025,7 @@

Schemathesis (link)

Last Updated - 2023-08-07T18:44:22Z + 2023-08-08T18:41:27Z Archived @@ -40061,7 +40061,7 @@

drf-spectacular (link)

Stars - 1773 + 1775 Watchers @@ -40077,7 +40077,7 @@

drf-spectacular (link)

Last Updated - 2023-08-07T07:53:32Z + 2023-08-08T17:40:18Z Archived @@ -40113,7 +40113,7 @@

rapidoc (link)

Stars - 1367 + 1368 Watchers @@ -40129,7 +40129,7 @@

rapidoc (link)

Last Updated - 2023-08-07T18:11:31Z + 2023-08-08T07:45:09Z Archived @@ -40217,7 +40217,7 @@

utoipa (link)

Stars - 1254 + 1258 Watchers @@ -40233,7 +40233,7 @@

utoipa (link)

Last Updated - 2023-08-07T22:31:55Z + 2023-08-09T01:45:51Z Archived @@ -40269,7 +40269,7 @@

msgspec (link)

Stars - 1151 + 1155 Watchers @@ -40285,7 +40285,7 @@

msgspec (link)

Last Updated - 2023-08-07T14:03:37Z + 2023-08-08T16:40:51Z Archived @@ -40321,7 +40321,7 @@

apispec (link)

Stars - 1044 + 1045 Watchers @@ -40329,7 +40329,7 @@

apispec (link)

Forks - 165 + 164 Created @@ -40337,7 +40337,7 @@

apispec (link)

Last Updated - 2023-08-05T22:27:22Z + 2023-08-08T13:57:27Z Archived @@ -40373,7 +40373,7 @@

openapi-generator-cli (link)

Stars - 1017 + 1018 Watchers @@ -40381,7 +40381,7 @@

openapi-generator-cli (link)

Forks - 113 + 114 Created @@ -40389,7 +40389,7 @@

openapi-generator-cli (link)

Last Updated - 2023-08-07T03:22:48Z + 2023-08-08T20:41:12Z Archived @@ -40425,7 +40425,7 @@

apiflask (link)

Stars - 826 + 827 Watchers @@ -40433,7 +40433,7 @@

apiflask (link)

Forks - 100 + 101 Created @@ -40441,7 +40441,7 @@

apiflask (link)

Last Updated - 2023-08-07T09:15:32Z + 2023-08-09T02:19:15Z Archived @@ -40477,7 +40477,7 @@

typespec (link)

Stars - 773 + 774 Watchers @@ -40493,7 +40493,7 @@

typespec (link)

Last Updated - 2023-08-08T01:06:25Z + 2023-08-08T14:20:36Z Archived @@ -40737,7 +40737,7 @@

ogen (link)

Stars - 634 + 635 Watchers @@ -40745,7 +40745,7 @@

ogen (link)

Forks - 41 + 42 Created @@ -40753,7 +40753,7 @@

ogen (link)

Last Updated - 2023-08-07T17:57:07Z + 2023-08-08T08:19:56Z Archived @@ -40789,7 +40789,7 @@

openapi-diff (link)

Stars - 624 + 625 Watchers @@ -40805,7 +40805,7 @@

openapi-diff (link)

Last Updated - 2023-08-01T08:54:13Z + 2023-08-08T13:43:05Z Archived @@ -41213,7 +41213,7 @@

oazapfts (link)

Forks - 61 + 62 Created @@ -41517,7 +41517,7 @@

typeconv (link)

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

typeconv (link)

Last Updated - 2023-08-07T13:12:50Z + 2023-08-08T13:32:52Z Archived @@ -41673,7 +41673,7 @@

akita-cli (link)

Stars - 307 + 308 Watchers @@ -41689,7 +41689,7 @@

akita-cli (link)

Last Updated - 2023-08-07T16:26:53Z + 2023-08-08T11:45:02Z Archived @@ -41725,7 +41725,7 @@

fastapi-plugins (link)

Stars - 292 + 293 Watchers @@ -41741,7 +41741,7 @@

fastapi-plugins (link)

Last Updated - 2023-07-24T21:30:46Z + 2023-08-08T06:11:38Z Archived @@ -42037,7 +42037,7 @@

beacon-apis (link)

Stars - 268 + 269 Watchers @@ -42053,7 +42053,7 @@

beacon-apis (link)

Last Updated - 2023-08-06T16:02:55Z + 2023-08-08T09:35:01Z Archived @@ -42193,7 +42193,7 @@

rest (link)

Stars - 233 + 234 Watchers @@ -42209,7 +42209,7 @@

rest (link)

Last Updated - 2023-08-07T21:34:15Z + 2023-08-08T15:39:34Z Archived @@ -42557,7 +42557,7 @@

apicat (link)

Stars - 197 + 198 Watchers @@ -42573,7 +42573,7 @@

apicat (link)

Last Updated - 2023-08-01T06:07:51Z + 2023-08-08T09:57:55Z Archived @@ -42869,7 +42869,7 @@

modelina (link)

Stars - 183 + 185 Watchers @@ -42885,7 +42885,7 @@

modelina (link)

Last Updated - 2023-08-04T15:29:42Z + 2023-08-08T11:42:44Z Archived @@ -43441,7 +43441,7 @@

fastapi-clean-example (link)

Stars - 157 + 158 Watchers @@ -43457,7 +43457,7 @@

fastapi-clean-example (link)

Last Updated - 2023-07-31T02:26:01Z + 2023-08-08T04:55:02Z Archived @@ -43909,7 +43909,7 @@

openapi-go (link)

Stars - 129 + 130 Watchers @@ -43925,7 +43925,7 @@

openapi-go (link)

Last Updated - 2023-08-07T03:32:20Z + 2023-08-08T10:18:38Z Archived @@ -44333,7 +44333,7 @@

api-docs (link)

Forks - 184 + 183 Created @@ -44377,7 +44377,7 @@

flask-openapi3 (link)

Stars - 101 + 102 Watchers @@ -44385,7 +44385,7 @@

flask-openapi3 (link)

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

flask-openapi3 (link)

Last Updated - 2023-08-03T12:00:27Z + 2023-08-08T07:14:35Z Archived @@ -44429,7 +44429,7 @@

openapi-starter (link)

Stars - 101 + 102 Watchers @@ -44437,7 +44437,7 @@

openapi-starter (link)

Forks - 83 + 84 Created @@ -44445,7 +44445,7 @@

openapi-starter (link)

Last Updated - 2023-08-07T16:33:55Z + 2023-08-08T22:29:10Z Archived @@ -45157,7 +45157,7 @@

api-insights (link)

Stars - 74 + 75 Watchers @@ -45173,7 +45173,7 @@

api-insights (link)

Last Updated - 2023-08-07T10:51:08Z + 2023-08-08T09:16:22Z Archived @@ -45833,7 +45833,7 @@

documentation (link)

Stars - 59 + 60 Watchers @@ -45849,7 +45849,7 @@

documentation (link)

Last Updated - 2023-08-01T16:50:57Z + 2023-08-08T18:19:34Z Archived @@ -47045,7 +47045,7 @@

refitter (link)

Last Updated - 2023-08-07T17:25:25Z + 2023-08-08T22:31:37Z Archived @@ -47237,7 +47237,7 @@

tooling (link)

Stars - 39 + 40 Watchers @@ -47253,7 +47253,7 @@

tooling (link)

Last Updated - 2023-08-08T02:40:56Z + 2023-08-08T18:44:43Z Archived @@ -48225,7 +48225,7 @@

api-doc-gpt (link)

Stars - 29 + 30 Watchers @@ -48241,7 +48241,7 @@

api-doc-gpt (link)

Last Updated - 2023-08-04T02:55:50Z + 2023-08-08T22:54:43Z Archived @@ -48485,7 +48485,7 @@

openapi (link)

Stars - 28 + 29 Watchers @@ -48501,7 +48501,7 @@

openapi (link)

Last Updated - 2023-07-20T19:18:30Z + 2023-08-08T10:19:48Z Archived @@ -51813,7 +51813,7 @@

tgtg-api-wrapper (link)

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

tgtg-api-wrapper (link)

Last Updated - 2023-06-23T08:23:38Z + 2023-08-08T14:26:31Z Archived @@ -55505,7 +55505,7 @@

wiretap (link)

Stars - 8 + 10 Watchers @@ -55521,7 +55521,7 @@

wiretap (link)

Last Updated - 2023-08-01T15:28:46Z + 2023-08-09T01:11:02Z Archived @@ -62013,7 +62013,7 @@

jax-rs-example (link)

Forks - 0 + 1 Created @@ -62229,11 +62229,11 @@

nodeproto (link)

Last Updated - 2023-03-04T04:06:39Z + 2023-08-08T05:32:31Z Archived - No + Yes Language @@ -68249,7 +68249,7 @@

tidepoolapi (link)

Watchers - 11 + 12 Forks @@ -70897,7 +70897,7 @@

oasis (link)

Stars - 1 + 2 Watchers @@ -70913,7 +70913,7 @@

oasis (link)

Last Updated - 2022-01-14T11:17:32Z + 2023-08-08T12:48:41Z Archived @@ -73201,7 +73201,7 @@

eora_apibot (link)

Last Updated - 2023-07-06T01:40:51Z + 2023-08-08T19:34:19Z Archived @@ -77153,7 +77153,7 @@

mailbaby-mail-api (link)

Last Updated - 2023-01-11T02:38:21Z + 2023-08-08T16:13:20Z Archived @@ -84173,7 +84173,7 @@

laravel-openapi (link)

Last Updated - 2023-08-01T20:06:20Z + 2023-08-08T13:45:40Z Archived @@ -93413,7 +93413,7 @@

swagger-models (link)

Stars - 7244 + 7246 Watchers @@ -93429,7 +93429,7 @@

swagger-models (link)

Last Updated - 2023-08-05T02:32:00Z + 2023-08-09T03:07:29Z Archived @@ -93465,7 +93465,7 @@

Microsoft.OpenApi.net (link)

Stars - 1178 + 1180 Watchers @@ -93481,7 +93481,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2023-08-07T20:14:14Z + 2023-08-08T18:31:03Z Archived @@ -94245,7 +94245,7 @@

PHP-CRUD-API (link)

Stars - 3376 + 3375 Watchers @@ -94261,7 +94261,7 @@

PHP-CRUD-API (link)

Last Updated - 2023-08-07T08:36:40Z + 2023-08-08T11:55:15Z Archived @@ -95597,7 +95597,7 @@

Connexion (link)

Stars - 4268 + 4269 Watchers @@ -95613,7 +95613,7 @@

Connexion (link)

Last Updated - 2023-08-06T10:28:38Z + 2023-08-08T09:51:22Z Archived @@ -95961,7 +95961,7 @@

guardrail (link)

Stars - 494 + 495 Watchers @@ -95977,7 +95977,7 @@

guardrail (link)

Last Updated - 2023-08-05T10:43:50Z + 2023-08-08T22:15:59Z Archived @@ -96013,7 +96013,7 @@

LoopBack 4 (link)

Stars - 4603 + 4602 Watchers @@ -96021,7 +96021,7 @@

LoopBack 4 (link)

Forks - 1041 + 1040 Created @@ -96029,7 +96029,7 @@

LoopBack 4 (link)

Last Updated - 2023-08-07T02:47:55Z + 2023-08-08T11:30:16Z Archived @@ -96117,7 +96117,7 @@

RESTler (link)

Stars - 2226 + 2227 Watchers @@ -96133,7 +96133,7 @@

RESTler (link)

Last Updated - 2023-08-08T02:20:45Z + 2023-08-08T11:41:14Z Archived @@ -98057,7 +98057,7 @@

go-doudou (link)

Last Updated - 2023-08-05T03:17:39Z + 2023-08-08T06:34:03Z Archived diff --git a/docs/categories/code-generators.html b/docs/categories/code-generators.html index 97a7d92c..b9ff1924 100644 --- a/docs/categories/code-generators.html +++ b/docs/categories/code-generators.html @@ -86,7 +86,7 @@

No Yes No - 3822 + 3828 @@ -132,7 +132,7 @@

No Yes Yes - 17236 + 17251 @@ -178,7 +178,7 @@

No Yes Yes - 773 + 776 @@ -247,7 +247,7 @@

No Yes Yes - 15884 + 15888 @@ -339,7 +339,7 @@

No Yes Yes - 1551 + 1555 @@ -408,7 +408,7 @@

No Yes Yes - 1658 + 1669 @@ -431,7 +431,7 @@

Yes Yes No - 24259 + 24264 @@ -452,7 +452,7 @@

No Yes No - 7244 + 7246 @@ -473,7 +473,7 @@

Yes Yes No - 2521 + 2522 @@ -494,7 +494,7 @@

No Yes No - 1017 + 1018 @@ -1676,7 +1676,7 @@

No No No - 7244 + 7246 @@ -1946,7 +1946,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 3822 + 3828 Watchers @@ -1954,7 +1954,7 @@

OpenAPI Server Code Generator (oapi-cod Forks - 659 + 660 Created @@ -1962,7 +1962,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2023-08-07T23:52:42Z + 2023-08-09T03:00:35Z Archived @@ -2050,7 +2050,7 @@

OpenAPI Generator (link)

Stars - 17236 + 17251 Watchers @@ -2058,7 +2058,7 @@

OpenAPI Generator (link)

Forks - 5504 + 5505 Created @@ -2066,7 +2066,7 @@

OpenAPI Generator (link)

Last Updated - 2023-08-08T02:43:45Z + 2023-08-09T03:02:57Z Archived @@ -2118,7 +2118,7 @@

OpenAPI JSON Schema Generator (link) Last Updated - 2023-08-07T18:45:43Z + 2023-08-08T22:55:03Z Archived @@ -2154,7 +2154,7 @@

Kiota Api Client Generator (link)

Stars - 773 + 776 Watchers @@ -2170,7 +2170,7 @@

Kiota Api Client Generator (link)

Last Updated - 2023-08-06T12:00:48Z + 2023-08-08T21:13:36Z Archived @@ -2310,7 +2310,7 @@

Swagger-Codegen (link)

Stars - 15884 + 15888 Watchers @@ -2326,7 +2326,7 @@

Swagger-Codegen (link)

Last Updated - 2023-08-08T00:31:13Z + 2023-08-08T22:49:06Z Archived @@ -2518,7 +2518,7 @@

orval (link)

Stars - 1551 + 1555 Watchers @@ -2526,7 +2526,7 @@

orval (link)

Forks - 179 + 180 Created @@ -2534,7 +2534,7 @@

orval (link)

Last Updated - 2023-08-07T09:31:19Z + 2023-08-08T18:57:40Z Archived @@ -2674,7 +2674,7 @@

Fern (link)

Stars - 1658 + 1669 Watchers @@ -2682,7 +2682,7 @@

Fern (link)

Forks - 59 + 58 Created @@ -2690,7 +2690,7 @@

Fern (link)

Last Updated - 2023-08-08T02:55:59Z + 2023-08-09T03:05:43Z Archived @@ -2726,7 +2726,7 @@

swagger-ui (link)

Stars - 24259 + 24264 Watchers @@ -2734,7 +2734,7 @@

swagger-ui (link)

Forks - 8740 + 8741 Created @@ -2742,7 +2742,7 @@

swagger-ui (link)

Last Updated - 2023-08-07T21:45:39Z + 2023-08-09T01:30:19Z Archived @@ -2778,7 +2778,7 @@

swagger-core (link)

Stars - 7244 + 7246 Watchers @@ -2794,7 +2794,7 @@

swagger-core (link)

Last Updated - 2023-08-05T02:32:00Z + 2023-08-09T03:07:29Z Archived @@ -2830,7 +2830,7 @@

swagger-js (link)

Stars - 2521 + 2522 Watchers @@ -2846,7 +2846,7 @@

swagger-js (link)

Last Updated - 2023-08-07T16:18:22Z + 2023-08-08T21:28:31Z Archived @@ -2882,7 +2882,7 @@

openapi-generator-cli (link)

Stars - 1017 + 1018 Watchers @@ -2890,7 +2890,7 @@

openapi-generator-cli (link)

Forks - 113 + 114 Created @@ -2898,7 +2898,7 @@

openapi-generator-cli (link)

Last Updated - 2023-08-07T03:22:48Z + 2023-08-08T20:41:12Z Archived @@ -3774,7 +3774,7 @@

jax-rs-example (link)

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

swagger-models (link)

Stars - 7244 + 7246 Watchers @@ -5810,7 +5810,7 @@

swagger-models (link)

Last Updated - 2023-08-05T02:32:00Z + 2023-08-09T03:07:29Z Archived diff --git a/docs/categories/converters.html b/docs/categories/converters.html index b6c85962..084daec9 100644 --- a/docs/categories/converters.html +++ b/docs/categories/converters.html @@ -149,7 +149,7 @@

Yes Yes Yes - 132 + 133 @@ -193,7 +193,7 @@

No Yes No - 65 + 66 @@ -239,7 +239,7 @@

No Yes No - 569 + 570 @@ -262,7 +262,7 @@

No No Yes - 8792 + 8793 @@ -285,7 +285,7 @@

Yes Yes Yes - 366 + 365 @@ -350,7 +350,7 @@

No Yes No - 177 + 179 @@ -440,7 +440,7 @@

No Yes No - 783 + 785 @@ -486,7 +486,7 @@

Yes Yes Yes - 3343 + 3347 @@ -843,7 +843,7 @@

No Yes No - 1 + 2 @@ -1202,7 +1202,7 @@

OpenAPI Filter (link)

Stars - 132 + 133 Watchers @@ -1218,7 +1218,7 @@

OpenAPI Filter (link)

Last Updated - 2023-07-24T16:40:41Z + 2023-08-08T19:32:00Z Archived @@ -1306,7 +1306,7 @@

avantation (link)

Stars - 65 + 66 Watchers @@ -1322,7 +1322,7 @@

avantation (link)

Last Updated - 2023-08-06T06:21:23Z + 2023-08-09T03:14:26Z Archived @@ -1410,7 +1410,7 @@

portman (link)

Stars - 569 + 570 Watchers @@ -1426,7 +1426,7 @@

portman (link)

Last Updated - 2023-08-01T13:53:08Z + 2023-08-08T20:52:32Z Archived @@ -1462,7 +1462,7 @@

go-swagger (link)

Stars - 8792 + 8793 Watchers @@ -1470,7 +1470,7 @@

go-swagger (link)

Forks - 1220 + 1221 Created @@ -1478,7 +1478,7 @@

go-swagger (link)

Last Updated - 2023-08-07T15:10:38Z + 2023-08-09T01:07:36Z Archived @@ -1514,7 +1514,7 @@

api (link)

Stars - 366 + 365 Watchers @@ -1530,7 +1530,7 @@

api (link)

Last Updated - 2023-08-05T20:37:07Z + 2023-08-08T11:31:41Z Archived @@ -1670,7 +1670,7 @@

OpenAPI Schema to JSON Schema (link) Stars - 177 + 179 Watchers @@ -1686,7 +1686,7 @@

OpenAPI Schema to JSON Schema (link) Last Updated - 2023-08-05T07:29:04Z + 2023-08-08T14:52:11Z Archived @@ -1778,7 +1778,7 @@

openapi-to-postman (link)

Watchers - 24 + 23 Forks @@ -1834,7 +1834,7 @@

openapi-format (link)

Forks - 13 + 12 Created @@ -1878,7 +1878,7 @@

openapi-python-client (link)

Stars - 783 + 785 Watchers @@ -1886,7 +1886,7 @@

openapi-python-client (link)

Forks - 149 + 150 Created @@ -1894,7 +1894,7 @@

openapi-python-client (link)

Last Updated - 2023-08-07T18:25:28Z + 2023-08-09T01:48:17Z Archived @@ -1982,7 +1982,7 @@

OpenAPI TypeScript (link)

Stars - 3343 + 3347 Watchers @@ -1998,7 +1998,7 @@

OpenAPI TypeScript (link)

Last Updated - 2023-08-08T00:33:33Z + 2023-08-08T17:12:31Z Archived @@ -2866,7 +2866,7 @@

oasis (link)

Stars - 1 + 2 Watchers @@ -2882,7 +2882,7 @@

oasis (link)

Last Updated - 2022-01-14T11:17:32Z + 2023-08-08T12:48:41Z Archived diff --git a/docs/categories/data-validators.html b/docs/categories/data-validators.html index f296a8b0..74600e85 100644 --- a/docs/categories/data-validators.html +++ b/docs/categories/data-validators.html @@ -86,7 +86,7 @@

No Yes Yes - 2806 + 2809 @@ -241,7 +241,7 @@

No Yes Yes - 2039 + 2040 @@ -440,7 +440,7 @@

Yes Yes Yes - 243 + 244 @@ -486,7 +486,7 @@

Yes Yes Yes - 33 + 34 @@ -1762,7 +1762,7 @@

tsoa (link)

Stars - 2806 + 2809 Watchers @@ -1778,7 +1778,7 @@

tsoa (link)

Last Updated - 2023-08-05T19:54:25Z + 2023-08-08T14:40:39Z Archived @@ -2126,7 +2126,7 @@

kin-openapi (link)

Stars - 2039 + 2040 Watchers @@ -2142,7 +2142,7 @@

kin-openapi (link)

Last Updated - 2023-08-07T04:47:19Z + 2023-08-08T03:43:11Z Archived @@ -2594,7 +2594,7 @@

vacuum (link)

Stars - 243 + 244 Watchers @@ -2610,7 +2610,7 @@

vacuum (link)

Last Updated - 2023-08-07T04:33:12Z + 2023-08-09T00:11:05Z Archived @@ -2698,7 +2698,7 @@

openapi-changes (link)

Stars - 33 + 34 Watchers @@ -2714,7 +2714,7 @@

openapi-changes (link)

Last Updated - 2023-08-06T21:35:37Z + 2023-08-08T03:39:51Z Archived diff --git a/docs/categories/description-validators.html b/docs/categories/description-validators.html index b2762dd4..42870190 100644 --- a/docs/categories/description-validators.html +++ b/docs/categories/description-validators.html @@ -128,7 +128,7 @@

Yes Yes Yes - 1995 + 1996 @@ -237,7 +237,7 @@

No Yes No - 440 + 441 @@ -260,7 +260,7 @@

Yes Yes Yes - 366 + 365 @@ -369,7 +369,7 @@

Yes Yes Yes - 243 + 244 @@ -1581,7 +1581,7 @@

Spectral (link)

Stars - 1995 + 1996 Watchers @@ -1597,7 +1597,7 @@

Spectral (link)

Last Updated - 2023-08-07T19:01:18Z + 2023-08-08T17:22:04Z Archived @@ -1693,7 +1693,7 @@

OpenAPI Validator (link)

Forks - 87 + 90 Created @@ -1841,7 +1841,7 @@

php-openapi (link)

Stars - 440 + 441 Watchers @@ -1857,7 +1857,7 @@

php-openapi (link)

Last Updated - 2023-08-01T22:58:13Z + 2023-08-08T10:29:11Z Archived @@ -1893,7 +1893,7 @@

api (link)

Stars - 366 + 365 Watchers @@ -1909,7 +1909,7 @@

api (link)

Last Updated - 2023-08-05T20:37:07Z + 2023-08-08T11:31:41Z Archived @@ -2057,7 +2057,7 @@

super-linter (link)

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

vacuum (link)

Stars - 243 + 244 Watchers @@ -2169,7 +2169,7 @@

vacuum (link)

Last Updated - 2023-08-07T04:33:12Z + 2023-08-09T00:11:05Z Archived diff --git a/docs/categories/documentation.html b/docs/categories/documentation.html index 1e0ec2aa..72daa26e 100644 --- a/docs/categories/documentation.html +++ b/docs/categories/documentation.html @@ -275,7 +275,7 @@

Yes Yes Yes - 20706 + 20719 @@ -321,7 +321,7 @@

No Yes Yes - 1336 + 1337 @@ -432,7 +432,7 @@

Yes Yes Yes - 24 + 26 @@ -670,7 +670,7 @@

Yes Yes Yes - 33 + 34 @@ -733,7 +733,7 @@

No Yes Yes - 1658 + 1669 @@ -754,7 +754,7 @@

No Yes No - 1367 + 1368 @@ -775,7 +775,7 @@

No Yes No - 268 + 269 @@ -2339,15 +2339,15 @@

ReDoc (link)

Stars - 20706 + 20719 Watchers - 284 + 285 Forks - 2206 + 2208 Created @@ -2355,7 +2355,7 @@

ReDoc (link)

Last Updated - 2023-08-08T02:49:13Z + 2023-08-08T23:52:26Z Archived @@ -2443,7 +2443,7 @@

widdershins (link)

Stars - 1336 + 1337 Watchers @@ -2451,7 +2451,7 @@

widdershins (link)

Forks - 309 + 308 Created @@ -2459,7 +2459,7 @@

widdershins (link)

Last Updated - 2023-08-04T03:10:12Z + 2023-08-08T16:59:53Z Archived @@ -2703,7 +2703,7 @@

Bump.sh (link)

Stars - 24 + 26 Watchers @@ -2719,7 +2719,7 @@

Bump.sh (link)

Last Updated - 2023-07-27T01:48:17Z + 2023-08-08T23:03:21Z Archived @@ -3275,7 +3275,7 @@

openapi-changes (link)

Stars - 33 + 34 Watchers @@ -3291,7 +3291,7 @@

openapi-changes (link)

Last Updated - 2023-08-06T21:35:37Z + 2023-08-08T03:39:51Z Archived @@ -3431,7 +3431,7 @@

Fern (link)

Stars - 1658 + 1669 Watchers @@ -3439,7 +3439,7 @@

Fern (link)

Forks - 59 + 58 Created @@ -3447,7 +3447,7 @@

Fern (link)

Last Updated - 2023-08-08T02:55:59Z + 2023-08-09T03:05:43Z Archived @@ -3483,7 +3483,7 @@

rapidoc (link)

Stars - 1367 + 1368 Watchers @@ -3499,7 +3499,7 @@

rapidoc (link)

Last Updated - 2023-08-07T18:11:31Z + 2023-08-08T07:45:09Z Archived @@ -3535,7 +3535,7 @@

beacon-apis (link)

Stars - 268 + 269 Watchers @@ -3551,7 +3551,7 @@

beacon-apis (link)

Last Updated - 2023-08-06T16:02:55Z + 2023-08-08T09:35:01Z Archived diff --git a/docs/categories/dsl.html b/docs/categories/dsl.html index 0395273c..af96b215 100644 --- a/docs/categories/dsl.html +++ b/docs/categories/dsl.html @@ -187,7 +187,7 @@

No Yes No - 1718 + 1719 @@ -545,7 +545,7 @@

rswag (link)

Stars - 1718 + 1719 Watchers @@ -561,7 +561,7 @@

rswag (link)

Last Updated - 2023-08-07T09:03:27Z + 2023-08-08T05:22:56Z Archived diff --git a/docs/categories/gateway.html b/docs/categories/gateway.html index 821c8ab3..32472c34 100644 --- a/docs/categories/gateway.html +++ b/docs/categories/gateway.html @@ -105,7 +105,7 @@

No Yes No - 1504 + 1510 @@ -272,7 +272,7 @@

Fusio (link)

Stars - 1504 + 1510 Watchers @@ -288,7 +288,7 @@

Fusio (link)

Last Updated - 2023-08-07T20:17:45Z + 2023-08-08T23:42:01Z Archived diff --git a/docs/categories/learning.html b/docs/categories/learning.html index 63bd9ba9..5e2be28a 100644 --- a/docs/categories/learning.html +++ b/docs/categories/learning.html @@ -86,7 +86,7 @@

Yes Yes No - 1174 + 1175 @@ -295,7 +295,7 @@

optic diff (link)

Stars - 1174 + 1175 Watchers @@ -311,7 +311,7 @@

optic diff (link)

Last Updated - 2023-08-06T15:55:11Z + 2023-08-08T10:05:52Z Archived diff --git a/docs/categories/low-level-tooling.html b/docs/categories/low-level-tooling.html index 189e437c..9399d9a5 100644 --- a/docs/categories/low-level-tooling.html +++ b/docs/categories/low-level-tooling.html @@ -86,7 +86,7 @@

No Yes No - 2720 + 2723 @@ -151,7 +151,7 @@

No Yes No - 129 + 130 @@ -323,7 +323,7 @@

Yes Yes No - 28 + 29 @@ -1293,7 +1293,7 @@

No No No - 7244 + 7246 @@ -1316,7 +1316,7 @@

No No No - 1178 + 1180 @@ -1498,7 +1498,7 @@

springdoc-openapi (link)

Stars - 2720 + 2723 Watchers @@ -1506,7 +1506,7 @@

springdoc-openapi (link)

Forks - 407 + 408 Created @@ -1514,7 +1514,7 @@

springdoc-openapi (link)

Last Updated - 2023-08-07T23:43:44Z + 2023-08-09T01:00:55Z Archived @@ -1654,7 +1654,7 @@

openapi-go (link)

Stars - 129 + 130 Watchers @@ -1670,7 +1670,7 @@

openapi-go (link)

Last Updated - 2023-08-07T03:32:20Z + 2023-08-08T10:18:38Z Archived @@ -1818,7 +1818,7 @@

api-docs (link)

Forks - 184 + 183 Created @@ -2070,7 +2070,7 @@

openapi (link)

Stars - 28 + 29 Watchers @@ -2086,7 +2086,7 @@

openapi (link)

Last Updated - 2023-07-20T19:18:30Z + 2023-08-08T10:19:48Z Archived @@ -4462,7 +4462,7 @@

swagger-models (link)

Stars - 7244 + 7246 Watchers @@ -4478,7 +4478,7 @@

swagger-models (link)

Last Updated - 2023-08-05T02:32:00Z + 2023-08-09T03:07:29Z Archived @@ -4514,7 +4514,7 @@

Microsoft.OpenApi.net (link)

Stars - 1178 + 1180 Watchers @@ -4530,7 +4530,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2023-08-07T20:14:14Z + 2023-08-08T18:31:03Z Archived diff --git a/docs/categories/mock-testing.html b/docs/categories/mock-testing.html index c6350eb4..cabdf3c8 100644 --- a/docs/categories/mock-testing.html +++ b/docs/categories/mock-testing.html @@ -86,7 +86,7 @@

Yes Yes Yes - 909 + 910 @@ -140,7 +140,7 @@

Microcks (link)

Stars - 909 + 910 Watchers @@ -156,7 +156,7 @@

Microcks (link)

Last Updated - 2023-08-05T01:33:44Z + 2023-08-08T09:57:23Z Archived diff --git a/docs/categories/mock.html b/docs/categories/mock.html index 684b7342..91282aeb 100644 --- a/docs/categories/mock.html +++ b/docs/categories/mock.html @@ -125,7 +125,7 @@

Yes Yes Yes - 3673 + 3674 @@ -345,7 +345,7 @@

No Yes Yes - 1551 + 1555 @@ -582,7 +582,7 @@

No Yes Yes - 4268 + 4269 @@ -828,7 +828,7 @@

Prism (link)

Stars - 3673 + 3674 Watchers @@ -844,7 +844,7 @@

Prism (link)

Last Updated - 2023-08-07T20:52:30Z + 2023-08-08T11:46:10Z Archived @@ -1348,7 +1348,7 @@

orval (link)

Stars - 1551 + 1555 Watchers @@ -1356,7 +1356,7 @@

orval (link)

Forks - 179 + 180 Created @@ -1364,7 +1364,7 @@

orval (link)

Last Updated - 2023-08-07T09:31:19Z + 2023-08-08T18:57:40Z Archived @@ -1728,7 +1728,7 @@

eora_apibot (link)

Last Updated - 2023-07-06T01:40:51Z + 2023-08-08T19:34:19Z Archived @@ -1920,7 +1920,7 @@

Connexion (link)

Stars - 4268 + 4269 Watchers @@ -1936,7 +1936,7 @@

Connexion (link)

Last Updated - 2023-08-06T10:28:38Z + 2023-08-08T09:51:22Z Archived diff --git a/docs/categories/parsers.html b/docs/categories/parsers.html index 1ae5ad2a..c6cd81ca 100644 --- a/docs/categories/parsers.html +++ b/docs/categories/parsers.html @@ -107,7 +107,7 @@

Yes Yes Yes - 132 + 133 @@ -220,7 +220,7 @@

Yes Yes Yes - 20706 + 20719 @@ -266,7 +266,7 @@

No Yes Yes - 1336 + 1337 @@ -333,7 +333,7 @@

No Yes No - 3822 + 3828 @@ -356,7 +356,7 @@

No Yes Yes - 266 + 267 @@ -607,7 +607,7 @@

No Yes Yes - 2806 + 2809 @@ -787,7 +787,7 @@

No Yes Yes - 694 + 695 @@ -919,7 +919,7 @@

No Yes Yes - 2039 + 2040 @@ -940,7 +940,7 @@

No Yes No - 440 + 441 @@ -1028,7 +1028,7 @@

No Yes Yes - 1178 + 1180 @@ -1118,7 +1118,7 @@

No No Yes - 8792 + 8793 @@ -1164,7 +1164,7 @@

Yes Yes Yes - 366 + 365 @@ -1231,7 +1231,7 @@

No Yes No - 451 + 453 @@ -1254,7 +1254,7 @@

No Yes No - 177 + 179 @@ -1545,7 +1545,7 @@

No Yes No - 783 + 785 @@ -1683,7 +1683,7 @@

Yes Yes Yes - 3343 + 3347 @@ -1706,7 +1706,7 @@

Yes Yes Yes - 144 + 145 @@ -1798,7 +1798,7 @@

Yes Yes Yes - 33 + 34 @@ -1905,7 +1905,7 @@

No Yes No - 1718 + 1719 @@ -1928,7 +1928,7 @@

Yes Yes No - 20706 + 20719 @@ -1949,7 +1949,7 @@

No Yes No - 1254 + 1258 @@ -1970,7 +1970,7 @@

No Yes No - 1044 + 1045 @@ -2054,7 +2054,7 @@

No Yes No - 634 + 635 @@ -2075,7 +2075,7 @@

No Yes No - 624 + 625 @@ -2180,7 +2180,7 @@

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

No Yes No - 129 + 130 @@ -2648,7 +2648,7 @@

Yes Yes No - 101 + 102 @@ -3005,7 +3005,7 @@

Yes Yes No - 59 + 60 @@ -3408,7 +3408,7 @@

Yes Yes No - 28 + 29 @@ -9126,7 +9126,7 @@

No No No - 1178 + 1180 @@ -9771,7 +9771,7 @@

OpenAPI Filter (link)

Stars - 132 + 133 Watchers @@ -9787,7 +9787,7 @@

OpenAPI Filter (link)

Last Updated - 2023-07-24T16:40:41Z + 2023-08-08T19:32:00Z Archived @@ -10031,15 +10031,15 @@

ReDoc (link)

Stars - 20706 + 20719 Watchers - 284 + 285 Forks - 2206 + 2208 Created @@ -10047,7 +10047,7 @@

ReDoc (link)

Last Updated - 2023-08-08T02:49:13Z + 2023-08-08T23:52:26Z Archived @@ -10135,7 +10135,7 @@

widdershins (link)

Stars - 1336 + 1337 Watchers @@ -10143,7 +10143,7 @@

widdershins (link)

Forks - 309 + 308 Created @@ -10151,7 +10151,7 @@

widdershins (link)

Last Updated - 2023-08-04T03:10:12Z + 2023-08-08T16:59:53Z Archived @@ -10291,7 +10291,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 3822 + 3828 Watchers @@ -10299,7 +10299,7 @@

OpenAPI Server Code Generator (oapi-cod Forks - 659 + 660 Created @@ -10307,7 +10307,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2023-08-07T23:52:42Z + 2023-08-09T03:00:35Z Archived @@ -10343,7 +10343,7 @@

VSCode OpenAPI (link)

Stars - 266 + 267 Watchers @@ -10359,7 +10359,7 @@

VSCode OpenAPI (link)

Last Updated - 2023-07-31T09:07:36Z + 2023-08-08T07:52:42Z Archived @@ -10915,7 +10915,7 @@

tsoa (link)

Stars - 2806 + 2809 Watchers @@ -10931,7 +10931,7 @@

tsoa (link)

Last Updated - 2023-08-05T19:54:25Z + 2023-08-08T14:40:39Z Archived @@ -11331,7 +11331,7 @@

swagger-parser (link)

Stars - 694 + 695 Watchers @@ -11347,7 +11347,7 @@

swagger-parser (link)

Last Updated - 2023-07-31T17:13:20Z + 2023-08-08T07:03:16Z Archived @@ -11643,7 +11643,7 @@

kin-openapi (link)

Stars - 2039 + 2040 Watchers @@ -11659,7 +11659,7 @@

kin-openapi (link)

Last Updated - 2023-08-07T04:47:19Z + 2023-08-08T03:43:11Z Archived @@ -11695,7 +11695,7 @@

php-openapi (link)

Stars - 440 + 441 Watchers @@ -11711,7 +11711,7 @@

php-openapi (link)

Last Updated - 2023-08-01T22:58:13Z + 2023-08-08T10:29:11Z Archived @@ -11903,7 +11903,7 @@

Microsoft/OpenAPI.NET (link)

Stars - 1178 + 1180 Watchers @@ -11919,7 +11919,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2023-08-07T20:14:14Z + 2023-08-08T18:31:03Z Archived @@ -12111,7 +12111,7 @@

go-swagger (link)

Stars - 8792 + 8793 Watchers @@ -12119,7 +12119,7 @@

go-swagger (link)

Forks - 1220 + 1221 Created @@ -12127,7 +12127,7 @@

go-swagger (link)

Last Updated - 2023-08-07T15:10:38Z + 2023-08-09T01:07:36Z Archived @@ -12215,7 +12215,7 @@

api (link)

Stars - 366 + 365 Watchers @@ -12231,7 +12231,7 @@

api (link)

Last Updated - 2023-08-05T20:37:07Z + 2023-08-08T11:31:41Z Archived @@ -12371,7 +12371,7 @@

openapi-fuzzer (link)

Stars - 451 + 453 Watchers @@ -12387,7 +12387,7 @@

openapi-fuzzer (link)

Last Updated - 2023-08-04T10:06:56Z + 2023-08-08T11:40:43Z Archived @@ -12423,7 +12423,7 @@

OpenAPI Schema to JSON Schema (link) Stars - 177 + 179 Watchers @@ -12439,7 +12439,7 @@

OpenAPI Schema to JSON Schema (link) Last Updated - 2023-08-05T07:29:04Z + 2023-08-08T14:52:11Z Archived @@ -12791,7 +12791,7 @@

openapi-to-postman (link)

Watchers - 24 + 23 Forks @@ -12847,7 +12847,7 @@

openapi-format (link)

Forks - 13 + 12 Created @@ -13099,7 +13099,7 @@

openapi-python-client (link)

Stars - 783 + 785 Watchers @@ -13107,7 +13107,7 @@

openapi-python-client (link)

Forks - 149 + 150 Created @@ -13115,7 +13115,7 @@

openapi-python-client (link)

Last Updated - 2023-08-07T18:25:28Z + 2023-08-09T01:48:17Z Archived @@ -13411,7 +13411,7 @@

OpenAPI TypeScript (link)

Stars - 3343 + 3347 Watchers @@ -13427,7 +13427,7 @@

OpenAPI TypeScript (link)

Last Updated - 2023-08-08T00:33:33Z + 2023-08-08T17:12:31Z Archived @@ -13463,7 +13463,7 @@

libopenapi (link)

Stars - 144 + 145 Watchers @@ -13479,7 +13479,7 @@

libopenapi (link)

Last Updated - 2023-08-07T21:05:58Z + 2023-08-08T03:39:33Z Archived @@ -13571,7 +13571,7 @@

ABAP OpenAPI Client & Server Genera Watchers - 11 + 10 Forks @@ -13583,7 +13583,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2023-07-06T10:15:40Z + 2023-08-08T15:44:43Z Archived @@ -13671,7 +13671,7 @@

openapi-changes (link)

Stars - 33 + 34 Watchers @@ -13687,7 +13687,7 @@

openapi-changes (link)

Last Updated - 2023-08-06T21:35:37Z + 2023-08-08T03:39:51Z Archived @@ -13731,7 +13731,7 @@

api-smart-diff (link)

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

rswag (link)

Stars - 1718 + 1719 Watchers @@ -13947,7 +13947,7 @@

rswag (link)

Last Updated - 2023-08-07T09:03:27Z + 2023-08-08T05:22:56Z Archived @@ -13983,15 +13983,15 @@

Redoc (link)

Stars - 20706 + 20719 Watchers - 284 + 285 Forks - 2206 + 2208 Created @@ -13999,7 +13999,7 @@

Redoc (link)

Last Updated - 2023-08-08T02:49:13Z + 2023-08-08T23:52:26Z Archived @@ -14035,7 +14035,7 @@

utoipa (link)

Stars - 1254 + 1258 Watchers @@ -14051,7 +14051,7 @@

utoipa (link)

Last Updated - 2023-08-07T22:31:55Z + 2023-08-09T01:45:51Z Archived @@ -14087,7 +14087,7 @@

apispec (link)

Stars - 1044 + 1045 Watchers @@ -14095,7 +14095,7 @@

apispec (link)

Forks - 165 + 164 Created @@ -14103,7 +14103,7 @@

apispec (link)

Last Updated - 2023-08-05T22:27:22Z + 2023-08-08T13:57:27Z Archived @@ -14295,7 +14295,7 @@

ogen (link)

Stars - 634 + 635 Watchers @@ -14303,7 +14303,7 @@

ogen (link)

Forks - 41 + 42 Created @@ -14311,7 +14311,7 @@

ogen (link)

Last Updated - 2023-08-07T17:57:07Z + 2023-08-08T08:19:56Z Archived @@ -14347,7 +14347,7 @@

openapi-diff (link)

Stars - 624 + 625 Watchers @@ -14363,7 +14363,7 @@

openapi-diff (link)

Last Updated - 2023-08-01T08:54:13Z + 2023-08-08T13:43:05Z Archived @@ -14511,7 +14511,7 @@

oazapfts (link)

Forks - 61 + 62 Created @@ -14607,7 +14607,7 @@

typeconv (link)

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

typeconv (link)

Last Updated - 2023-08-07T13:12:50Z + 2023-08-08T13:32:52Z Archived @@ -15491,7 +15491,7 @@

openapi-go (link)

Stars - 129 + 130 Watchers @@ -15507,7 +15507,7 @@

openapi-go (link)

Last Updated - 2023-08-07T03:32:20Z + 2023-08-08T10:18:38Z Archived @@ -15751,7 +15751,7 @@

openapi-starter (link)

Stars - 101 + 102 Watchers @@ -15759,7 +15759,7 @@

openapi-starter (link)

Forks - 83 + 84 Created @@ -15767,7 +15767,7 @@

openapi-starter (link)

Last Updated - 2023-08-07T16:33:55Z + 2023-08-08T22:29:10Z Archived @@ -16635,7 +16635,7 @@

documentation (link)

Stars - 59 + 60 Watchers @@ -16651,7 +16651,7 @@

documentation (link)

Last Updated - 2023-08-01T16:50:57Z + 2023-08-08T18:19:34Z Archived @@ -17171,7 +17171,7 @@

refitter (link)

Last Updated - 2023-08-07T17:25:25Z + 2023-08-08T22:31:37Z Archived @@ -17623,7 +17623,7 @@

openapi (link)

Stars - 28 + 29 Watchers @@ -17639,7 +17639,7 @@

openapi (link)

Last Updated - 2023-07-20T19:18:30Z + 2023-08-08T10:19:48Z Archived @@ -27519,7 +27519,7 @@

mailbaby-mail-api (link)

Last Updated - 2023-01-11T02:38:21Z + 2023-08-08T16:13:20Z Archived @@ -31767,7 +31767,7 @@

Microsoft.OpenApi.net (link)

Stars - 1178 + 1180 Watchers @@ -31783,7 +31783,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2023-08-07T20:14:14Z + 2023-08-08T18:31:03Z Archived diff --git a/docs/categories/sdk.html b/docs/categories/sdk.html index 70480eb3..fc72ab30 100644 --- a/docs/categories/sdk.html +++ b/docs/categories/sdk.html @@ -109,7 +109,7 @@

No Yes Yes - 17236 + 17251 @@ -155,7 +155,7 @@

No Yes Yes - 773 + 776 @@ -285,7 +285,7 @@

No No Yes - 8792 + 8793 @@ -331,7 +331,7 @@

No Yes Yes - 6012 + 6013 @@ -486,7 +486,7 @@

No Yes Yes - 11109 + 11114 @@ -668,7 +668,7 @@

No Yes Yes - 1658 + 1669 @@ -689,7 +689,7 @@

No Yes No - 3535 + 3536 @@ -710,7 +710,7 @@

No Yes No - 3313 + 3315 @@ -773,7 +773,7 @@

No Yes No - 307 + 308 @@ -2541,7 +2541,7 @@

No Yes Yes - 494 + 495 @@ -2731,7 +2731,7 @@

OpenAPI Generator (link)

Stars - 17236 + 17251 Watchers @@ -2739,7 +2739,7 @@

OpenAPI Generator (link)

Forks - 5504 + 5505 Created @@ -2747,7 +2747,7 @@

OpenAPI Generator (link)

Last Updated - 2023-08-08T02:43:45Z + 2023-08-09T03:02:57Z Archived @@ -2799,7 +2799,7 @@

OpenAPI JSON Schema Generator (link) Last Updated - 2023-08-07T18:45:43Z + 2023-08-08T22:55:03Z Archived @@ -2835,7 +2835,7 @@

Kiota Api Client Generator (link)

Stars - 773 + 776 Watchers @@ -2851,7 +2851,7 @@

Kiota Api Client Generator (link)

Last Updated - 2023-08-06T12:00:48Z + 2023-08-08T21:13:36Z Archived @@ -3147,7 +3147,7 @@

go-swagger (link)

Stars - 8792 + 8793 Watchers @@ -3155,7 +3155,7 @@

go-swagger (link)

Forks - 1220 + 1221 Created @@ -3163,7 +3163,7 @@

go-swagger (link)

Last Updated - 2023-08-07T15:10:38Z + 2023-08-09T01:07:36Z Archived @@ -3251,7 +3251,7 @@

NSwag (link)

Stars - 6012 + 6013 Watchers @@ -3267,7 +3267,7 @@

NSwag (link)

Last Updated - 2023-08-05T16:12:22Z + 2023-08-08T21:08:40Z Archived @@ -3615,7 +3615,7 @@

OWASP ZAP (link)

Stars - 11109 + 11114 Watchers @@ -3623,7 +3623,7 @@

OWASP ZAP (link)

Forks - 2109 + 2110 Created @@ -3631,7 +3631,7 @@

OWASP ZAP (link)

Last Updated - 2023-08-07T21:45:35Z + 2023-08-09T02:43:56Z Archived @@ -3983,7 +3983,7 @@

ABAP OpenAPI Client & Server Genera Watchers - 11 + 10 Forks @@ -3995,7 +3995,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2023-07-06T10:15:40Z + 2023-08-08T15:44:43Z Archived @@ -4031,7 +4031,7 @@

Fern (link)

Stars - 1658 + 1669 Watchers @@ -4039,7 +4039,7 @@

Fern (link)

Forks - 59 + 58 Created @@ -4047,7 +4047,7 @@

Fern (link)

Last Updated - 2023-08-08T02:55:59Z + 2023-08-09T03:05:43Z Archived @@ -4083,7 +4083,7 @@

knife4j (link)

Stars - 3535 + 3536 Watchers @@ -4099,7 +4099,7 @@

knife4j (link)

Last Updated - 2023-08-06T14:57:53Z + 2023-08-08T12:04:54Z Archived @@ -4135,7 +4135,7 @@

openapi-directory (link)

Stars - 3313 + 3315 Watchers @@ -4143,7 +4143,7 @@

openapi-directory (link)

Forks - 551 + 552 Created @@ -4151,7 +4151,7 @@

openapi-directory (link)

Last Updated - 2023-08-06T01:43:43Z + 2023-08-08T21:55:24Z Archived @@ -4291,7 +4291,7 @@

akita-cli (link)

Stars - 307 + 308 Watchers @@ -4307,7 +4307,7 @@

akita-cli (link)

Last Updated - 2023-08-07T16:26:53Z + 2023-08-08T11:45:02Z Archived @@ -8659,7 +8659,7 @@

guardrail (link)

Stars - 494 + 495 Watchers @@ -8675,7 +8675,7 @@

guardrail (link)

Last Updated - 2023-08-05T10:43:50Z + 2023-08-08T22:15:59Z Archived @@ -8883,7 +8883,7 @@

go-doudou (link)

Last Updated - 2023-08-05T03:17:39Z + 2023-08-08T06:34:03Z Archived diff --git a/docs/categories/security.html b/docs/categories/security.html index 90abcdc8..6ccd64e5 100644 --- a/docs/categories/security.html +++ b/docs/categories/security.html @@ -126,7 +126,7 @@

No Yes No - 451 + 453 @@ -191,7 +191,7 @@

No Yes Yes - 11109 + 11114 @@ -258,7 +258,7 @@

No Yes Yes - 2226 + 2227 @@ -416,7 +416,7 @@

openapi-fuzzer (link)

Stars - 451 + 453 Watchers @@ -432,7 +432,7 @@

openapi-fuzzer (link)

Last Updated - 2023-08-04T10:06:56Z + 2023-08-08T11:40:43Z Archived @@ -572,7 +572,7 @@

OWASP ZAP (link)

Stars - 11109 + 11114 Watchers @@ -580,7 +580,7 @@

OWASP ZAP (link)

Forks - 2109 + 2110 Created @@ -588,7 +588,7 @@

OWASP ZAP (link)

Last Updated - 2023-08-07T21:45:35Z + 2023-08-09T02:43:56Z Archived @@ -728,7 +728,7 @@

RESTler (link)

Stars - 2226 + 2227 Watchers @@ -744,7 +744,7 @@

RESTler (link)

Last Updated - 2023-08-08T02:20:45Z + 2023-08-08T11:41:14Z Archived diff --git a/docs/categories/server-implementations.html b/docs/categories/server-implementations.html index 7e516f5f..53556956 100644 --- a/docs/categories/server-implementations.html +++ b/docs/categories/server-implementations.html @@ -86,7 +86,7 @@

Yes Yes No - 1174 + 1175 @@ -132,7 +132,7 @@

Yes Yes Yes - 24 + 26 @@ -178,7 +178,7 @@

Yes Yes Yes - 8294 + 8297 @@ -224,7 +224,7 @@

Yes Yes Yes - 3673 + 3674 @@ -247,7 +247,7 @@

Yes Yes Yes - 909 + 910 @@ -293,7 +293,7 @@

No Yes Yes - 7989 + 7995 @@ -316,7 +316,7 @@

No Yes No - 1504 + 1510 @@ -406,7 +406,7 @@

No Yes No - 26077 + 26079 @@ -475,7 +475,7 @@

No Yes No - 61202 + 61245 @@ -496,7 +496,7 @@

No Yes No - 12601 + 12608 @@ -519,7 +519,7 @@

No Yes No - 2720 + 2723 @@ -540,7 +540,7 @@

No Yes No - 2313 + 2314 @@ -563,7 +563,7 @@

No Yes No - 1804 + 1805 @@ -584,7 +584,7 @@

No Yes No - 1773 + 1775 @@ -628,7 +628,7 @@

No Yes No - 1151 + 1155 @@ -649,7 +649,7 @@

No Yes No - 826 + 827 @@ -670,7 +670,7 @@

No Yes No - 773 + 774 @@ -775,7 +775,7 @@

No Yes No - 307 + 308 @@ -796,7 +796,7 @@

No Yes No - 292 + 293 @@ -838,7 +838,7 @@

No Yes No - 268 + 269 @@ -861,7 +861,7 @@

No Yes No - 233 + 234 @@ -903,7 +903,7 @@

No Yes No - 197 + 198 @@ -945,7 +945,7 @@

No Yes No - 157 + 158 @@ -1050,7 +1050,7 @@

No Yes No - 101 + 102 @@ -1092,7 +1092,7 @@

No Yes No - 74 + 75 @@ -1323,7 +1323,7 @@

No Yes No - 39 + 40 @@ -1470,7 +1470,7 @@

No Yes No - 29 + 30 @@ -1890,7 +1890,7 @@

No Yes No - 15 + 16 @@ -2394,7 +2394,7 @@

No Yes No - 8 + 10 @@ -8385,7 +8385,7 @@

No No No - 3376 + 3375 @@ -8597,7 +8597,7 @@

No Yes Yes - 4268 + 4269 @@ -8995,7 +8995,7 @@

optic diff (link)

Stars - 1174 + 1175 Watchers @@ -9011,7 +9011,7 @@

optic diff (link)

Last Updated - 2023-08-06T15:55:11Z + 2023-08-08T10:05:52Z Archived @@ -9099,7 +9099,7 @@

Bump.sh (link)

Stars - 24 + 26 Watchers @@ -9115,7 +9115,7 @@

Bump.sh (link)

Last Updated - 2023-07-27T01:48:17Z + 2023-08-08T23:03:21Z Archived @@ -9203,7 +9203,7 @@

Swagger Editor (link)

Stars - 8294 + 8297 Watchers @@ -9211,7 +9211,7 @@

Swagger Editor (link)

Forks - 2183 + 2182 Created @@ -9219,7 +9219,7 @@

Swagger Editor (link)

Last Updated - 2023-08-06T23:56:49Z + 2023-08-08T10:49:11Z Archived @@ -9307,7 +9307,7 @@

Prism (link)

Stars - 3673 + 3674 Watchers @@ -9323,7 +9323,7 @@

Prism (link)

Last Updated - 2023-08-07T20:52:30Z + 2023-08-08T11:46:10Z Archived @@ -9359,7 +9359,7 @@

Microcks (link)

Stars - 909 + 910 Watchers @@ -9375,7 +9375,7 @@

Microcks (link)

Last Updated - 2023-08-05T01:33:44Z + 2023-08-08T09:57:23Z Archived @@ -9463,7 +9463,7 @@

API Platform (link)

Stars - 7989 + 7995 Watchers @@ -9479,7 +9479,7 @@

API Platform (link)

Last Updated - 2023-08-06T18:54:53Z + 2023-08-08T22:26:21Z Archived @@ -9515,7 +9515,7 @@

Fusio (link)

Stars - 1504 + 1510 Watchers @@ -9531,7 +9531,7 @@

Fusio (link)

Last Updated - 2023-08-07T20:17:45Z + 2023-08-08T23:42:01Z Archived @@ -9679,7 +9679,7 @@

super-linter (link)

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

Django REST Framework (link)

Stars - 26077 + 26079 Watchers @@ -9731,7 +9731,7 @@

Django REST Framework (link)

Forks - 6650 + 6651 Created @@ -9739,7 +9739,7 @@

Django REST Framework (link)

Last Updated - 2023-08-08T03:09:39Z + 2023-08-08T18:50:55Z Archived @@ -9879,7 +9879,7 @@

FastAPI (link)

Stars - 61202 + 61245 Watchers @@ -9887,7 +9887,7 @@

FastAPI (link)

Forks - 5140 + 5144 Created @@ -9895,7 +9895,7 @@

FastAPI (link)

Last Updated - 2023-08-08T00:24:56Z + 2023-08-09T03:11:06Z Archived @@ -9931,7 +9931,7 @@

full-stack-fastapi-postgresql (link) Stars - 12601 + 12608 Watchers @@ -9939,7 +9939,7 @@

full-stack-fastapi-postgresql (link) Forks - 2327 + 2329 Created @@ -9947,7 +9947,7 @@

full-stack-fastapi-postgresql (link) Last Updated - 2023-08-08T01:01:07Z + 2023-08-08T20:17:08Z Archived @@ -9983,7 +9983,7 @@

springdoc-openapi (link)

Stars - 2720 + 2723 Watchers @@ -9991,7 +9991,7 @@

springdoc-openapi (link)

Forks - 407 + 408 Created @@ -9999,7 +9999,7 @@

springdoc-openapi (link)

Last Updated - 2023-08-07T23:43:44Z + 2023-08-09T01:00:55Z Archived @@ -10035,7 +10035,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2313 + 2314 Watchers @@ -10043,7 +10043,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Forks - 307 + 306 Created @@ -10051,7 +10051,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2023-08-07T12:54:16Z + 2023-08-08T06:59:36Z Archived @@ -10087,7 +10087,7 @@

Schemathesis (link)

Stars - 1804 + 1805 Watchers @@ -10095,7 +10095,7 @@

Schemathesis (link)

Forks - 133 + 134 Created @@ -10103,7 +10103,7 @@

Schemathesis (link)

Last Updated - 2023-08-07T18:44:22Z + 2023-08-08T18:41:27Z Archived @@ -10139,7 +10139,7 @@

drf-spectacular (link)

Stars - 1773 + 1775 Watchers @@ -10155,7 +10155,7 @@

drf-spectacular (link)

Last Updated - 2023-08-07T07:53:32Z + 2023-08-08T17:40:18Z Archived @@ -10243,7 +10243,7 @@

msgspec (link)

Stars - 1151 + 1155 Watchers @@ -10259,7 +10259,7 @@

msgspec (link)

Last Updated - 2023-08-07T14:03:37Z + 2023-08-08T16:40:51Z Archived @@ -10295,7 +10295,7 @@

apiflask (link)

Stars - 826 + 827 Watchers @@ -10303,7 +10303,7 @@

apiflask (link)

Forks - 100 + 101 Created @@ -10311,7 +10311,7 @@

apiflask (link)

Last Updated - 2023-08-07T09:15:32Z + 2023-08-09T02:19:15Z Archived @@ -10347,7 +10347,7 @@

typespec (link)

Stars - 773 + 774 Watchers @@ -10363,7 +10363,7 @@

typespec (link)

Last Updated - 2023-08-08T01:06:25Z + 2023-08-08T14:20:36Z Archived @@ -10607,7 +10607,7 @@

akita-cli (link)

Stars - 307 + 308 Watchers @@ -10623,7 +10623,7 @@

akita-cli (link)

Last Updated - 2023-08-07T16:26:53Z + 2023-08-08T11:45:02Z Archived @@ -10659,7 +10659,7 @@

fastapi-plugins (link)

Stars - 292 + 293 Watchers @@ -10675,7 +10675,7 @@

fastapi-plugins (link)

Last Updated - 2023-07-24T21:30:46Z + 2023-08-08T06:11:38Z Archived @@ -10763,7 +10763,7 @@

beacon-apis (link)

Stars - 268 + 269 Watchers @@ -10779,7 +10779,7 @@

beacon-apis (link)

Last Updated - 2023-08-06T16:02:55Z + 2023-08-08T09:35:01Z Archived @@ -10815,7 +10815,7 @@

rest (link)

Stars - 233 + 234 Watchers @@ -10831,7 +10831,7 @@

rest (link)

Last Updated - 2023-08-07T21:34:15Z + 2023-08-08T15:39:34Z Archived @@ -10919,7 +10919,7 @@

apicat (link)

Stars - 197 + 198 Watchers @@ -10935,7 +10935,7 @@

apicat (link)

Last Updated - 2023-08-01T06:07:51Z + 2023-08-08T09:57:55Z Archived @@ -11023,7 +11023,7 @@

fastapi-clean-example (link)

Stars - 157 + 158 Watchers @@ -11039,7 +11039,7 @@

fastapi-clean-example (link)

Last Updated - 2023-07-31T02:26:01Z + 2023-08-08T04:55:02Z Archived @@ -11283,7 +11283,7 @@

flask-openapi3 (link)

Stars - 101 + 102 Watchers @@ -11291,7 +11291,7 @@

flask-openapi3 (link)

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

flask-openapi3 (link)

Last Updated - 2023-08-03T12:00:27Z + 2023-08-08T07:14:35Z Archived @@ -11387,7 +11387,7 @@

api-insights (link)

Stars - 74 + 75 Watchers @@ -11403,7 +11403,7 @@

api-insights (link)

Last Updated - 2023-08-07T10:51:08Z + 2023-08-08T09:16:22Z Archived @@ -11959,7 +11959,7 @@

tooling (link)

Stars - 39 + 40 Watchers @@ -11975,7 +11975,7 @@

tooling (link)

Last Updated - 2023-08-08T02:40:56Z + 2023-08-08T18:44:43Z Archived @@ -12323,7 +12323,7 @@

api-doc-gpt (link)

Stars - 29 + 30 Watchers @@ -12339,7 +12339,7 @@

api-doc-gpt (link)

Last Updated - 2023-08-04T02:55:50Z + 2023-08-08T22:54:43Z Archived @@ -13363,7 +13363,7 @@

tgtg-api-wrapper (link)

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

tgtg-api-wrapper (link)

Last Updated - 2023-06-23T08:23:38Z + 2023-08-08T14:26:31Z Archived @@ -14611,7 +14611,7 @@

wiretap (link)

Stars - 8 + 10 Watchers @@ -14627,7 +14627,7 @@

wiretap (link)

Last Updated - 2023-08-01T15:28:46Z + 2023-08-09T01:11:02Z Archived @@ -19035,7 +19035,7 @@

tidepoolapi (link)

Watchers - 11 + 12 Forks @@ -29431,7 +29431,7 @@

PHP-CRUD-API (link)

Stars - 3376 + 3375 Watchers @@ -29447,7 +29447,7 @@

PHP-CRUD-API (link)

Last Updated - 2023-08-07T08:36:40Z + 2023-08-08T11:55:15Z Archived @@ -29951,7 +29951,7 @@

Connexion (link)

Stars - 4268 + 4269 Watchers @@ -29967,7 +29967,7 @@

Connexion (link)

Last Updated - 2023-08-06T10:28:38Z + 2023-08-08T09:51:22Z Archived diff --git a/docs/categories/server.html b/docs/categories/server.html index d5ddc096..9d4ce5c7 100644 --- a/docs/categories/server.html +++ b/docs/categories/server.html @@ -86,7 +86,7 @@

No Yes Yes - 2806 + 2809 @@ -201,7 +201,7 @@

Yes Yes No - 478 + 479 @@ -224,7 +224,7 @@

No Yes Yes - 7989 + 7995 @@ -270,7 +270,7 @@

No Yes No - 1504 + 1510 @@ -337,7 +337,7 @@

No Yes No - 1438 + 1439 @@ -428,7 +428,7 @@

No Yes Yes - 5844 + 5843 @@ -2563,7 +2563,7 @@

No Yes No - 4603 + 4602 @@ -2684,7 +2684,7 @@

tsoa (link)

Stars - 2806 + 2809 Watchers @@ -2700,7 +2700,7 @@

tsoa (link)

Last Updated - 2023-08-05T19:54:25Z + 2023-08-08T14:40:39Z Archived @@ -2944,7 +2944,7 @@

openapi-backend (link)

Stars - 478 + 479 Watchers @@ -2960,7 +2960,7 @@

openapi-backend (link)

Last Updated - 2023-07-28T06:36:25Z + 2023-08-08T18:18:17Z Archived @@ -2996,7 +2996,7 @@

API Platform (link)

Stars - 7989 + 7995 Watchers @@ -3012,7 +3012,7 @@

API Platform (link)

Last Updated - 2023-08-06T18:54:53Z + 2023-08-08T22:26:21Z Archived @@ -3100,7 +3100,7 @@

Fusio (link)

Stars - 1504 + 1510 Watchers @@ -3116,7 +3116,7 @@

Fusio (link)

Last Updated - 2023-08-07T20:17:45Z + 2023-08-08T23:42:01Z Archived @@ -3256,7 +3256,7 @@

@nestjs/swagger (link)

Stars - 1438 + 1439 Watchers @@ -3272,7 +3272,7 @@

@nestjs/swagger (link)

Last Updated - 2023-08-07T05:51:06Z + 2023-08-08T05:13:15Z Archived @@ -3464,7 +3464,7 @@

SpringFox (link)

Stars - 5844 + 5843 Watchers @@ -3480,7 +3480,7 @@

SpringFox (link)

Last Updated - 2023-08-07T07:07:33Z + 2023-08-08T11:11:12Z Archived @@ -3624,7 +3624,7 @@

ABAP OpenAPI Client & Server Genera Watchers - 11 + 10 Forks @@ -3636,7 +3636,7 @@

ABAP OpenAPI Client & Server Genera Last Updated - 2023-07-06T10:15:40Z + 2023-08-08T15:44:43Z Archived @@ -8716,7 +8716,7 @@

LoopBack 4 (link)

Stars - 4603 + 4602 Watchers @@ -8724,7 +8724,7 @@

LoopBack 4 (link)

Forks - 1041 + 1040 Created @@ -8732,7 +8732,7 @@

LoopBack 4 (link)

Last Updated - 2023-08-07T02:47:55Z + 2023-08-08T11:30:16Z Archived diff --git a/docs/categories/testing-tools.html b/docs/categories/testing-tools.html index 725d3565..799c2fae 100644 --- a/docs/categories/testing-tools.html +++ b/docs/categories/testing-tools.html @@ -86,7 +86,7 @@

No Yes No - 1804 + 1805 @@ -163,7 +163,7 @@

Schemathesis (link)

Stars - 1804 + 1805 Watchers @@ -171,7 +171,7 @@

Schemathesis (link)

Forks - 133 + 134 Created @@ -179,7 +179,7 @@

Schemathesis (link)

Last Updated - 2023-08-07T18:44:22Z + 2023-08-08T18:41:27Z Archived diff --git a/docs/categories/testing.html b/docs/categories/testing.html index 1cb431ba..247719d5 100644 --- a/docs/categories/testing.html +++ b/docs/categories/testing.html @@ -149,7 +149,7 @@

No Yes No - 569 + 570 @@ -622,7 +622,7 @@

Yes Yes Yes - 33 + 34 @@ -689,7 +689,7 @@

No Yes No - 5287 + 5289 @@ -2461,7 +2461,7 @@

No Yes Yes - 2226 + 2227 @@ -2711,7 +2711,7 @@

portman (link)

Stars - 569 + 570 Watchers @@ -2727,7 +2727,7 @@

portman (link)

Last Updated - 2023-08-01T13:53:08Z + 2023-08-08T20:52:32Z Archived @@ -3855,7 +3855,7 @@

openapi-changes (link)

Stars - 33 + 34 Watchers @@ -3871,7 +3871,7 @@

openapi-changes (link)

Last Updated - 2023-08-06T21:35:37Z + 2023-08-08T03:39:51Z Archived @@ -4011,7 +4011,7 @@

mockoon (link)

Stars - 5287 + 5289 Watchers @@ -4019,7 +4019,7 @@

mockoon (link)

Forks - 298 + 297 Created @@ -4027,7 +4027,7 @@

mockoon (link)

Last Updated - 2023-08-07T23:09:30Z + 2023-08-08T21:52:52Z Archived @@ -5899,11 +5899,11 @@

nodeproto (link)

Last Updated - 2023-03-04T04:06:39Z + 2023-08-08T05:32:31Z Archived - No + Yes Language @@ -8379,7 +8379,7 @@

RESTler (link)

Stars - 2226 + 2227 Watchers @@ -8395,7 +8395,7 @@

RESTler (link)

Last Updated - 2023-08-08T02:20:45Z + 2023-08-08T11:41:14Z Archived diff --git a/docs/categories/text-editors.html b/docs/categories/text-editors.html index 9dcb5faf..facd6afa 100644 --- a/docs/categories/text-editors.html +++ b/docs/categories/text-editors.html @@ -86,7 +86,7 @@

No Yes Yes - 266 + 267 @@ -170,7 +170,7 @@

Yes Yes Yes - 8294 + 8297 @@ -372,7 +372,7 @@

VSCode OpenAPI (link)

Stars - 266 + 267 Watchers @@ -388,7 +388,7 @@

VSCode OpenAPI (link)

Last Updated - 2023-07-31T09:07:36Z + 2023-08-08T07:52:42Z Archived @@ -580,7 +580,7 @@

Swagger Editor (link)

Stars - 8294 + 8297 Watchers @@ -588,7 +588,7 @@

Swagger Editor (link)

Forks - 2183 + 2182 Created @@ -596,7 +596,7 @@

Swagger Editor (link)

Last Updated - 2023-08-06T23:56:49Z + 2023-08-08T10:49:11Z Archived diff --git a/docs/categories/unclassified.html b/docs/categories/unclassified.html index 8b0519a1..501d191d 100644 --- a/docs/categories/unclassified.html +++ b/docs/categories/unclassified.html @@ -147,7 +147,7 @@

No Yes No - 183 + 185 @@ -1361,7 +1361,7 @@

modelina (link)

Stars - 183 + 185 Watchers @@ -1377,7 +1377,7 @@

modelina (link)

Last Updated - 2023-08-04T15:29:42Z + 2023-08-08T11:42:44Z Archived @@ -3093,7 +3093,7 @@

laravel-openapi (link)

Last Updated - 2023-08-01T20:06:20Z + 2023-08-08T13:45:40Z Archived diff --git a/docs/categories/user-interfaces.html b/docs/categories/user-interfaces.html index 3336fb0f..ee54af8f 100644 --- a/docs/categories/user-interfaces.html +++ b/docs/categories/user-interfaces.html @@ -86,7 +86,7 @@

Yes Yes No - 24259 + 24264 @@ -109,7 +109,7 @@

Yes Yes No - 20706 + 20719 @@ -291,7 +291,7 @@

swagger-ui (link)

Stars - 24259 + 24264 Watchers @@ -299,7 +299,7 @@

swagger-ui (link)

Forks - 8740 + 8741 Created @@ -307,7 +307,7 @@

swagger-ui (link)

Last Updated - 2023-08-07T21:45:39Z + 2023-08-09T01:30:19Z Archived @@ -343,15 +343,15 @@

Redoc (link)

Stars - 20706 + 20719 Watchers - 284 + 285 Forks - 2206 + 2208 Created @@ -359,7 +359,7 @@

Redoc (link)

Last Updated - 2023-08-08T02:49:13Z + 2023-08-08T23:52:26Z Archived diff --git a/src/_data/tools.yaml b/src/_data/tools.yaml index e354fc1e..5cd74993 100644 --- a/src/_data/tools.yaml +++ b/src/_data/tools.yaml @@ -20,7 +20,7 @@ owner: Tufin logo: https://avatars.githubusercontent.com/u/5352131?v=4 license: Apache-2.0 - repoEtag: '"a1c8bf4f9161f57d0736f4017ddc05e0424ced49c9fcc8086778da93abe99b5d"' + repoEtag: '"b790d8968de38e7bb4f4e36e22f5b907e20a3805d2efb1f67b61f94a9561a30c"' repoLastModified: Fri, 04 Aug 2023 16:31:37 GMT foundInMaster: true name: oasdiff @@ -69,17 +69,17 @@ changes, publish accurate documentation and improve the design of your APIs. created: '2018-03-02T17:02:50Z' - updated: '2023-08-06T15:55:11Z' + updated: '2023-08-08T10:05:52Z' language: TypeScript archived: false - stars: 1174 + stars: 1175 watchers: 11 forks: 65 owner: opticdev logo: https://avatars.githubusercontent.com/u/34556970?v=4 license: MIT - repoEtag: '"6b6306ffe0063a199a1f3a22b94364dce4aa6a9a0c3ccc006d4edfb1e51ef6f6"' - repoLastModified: Sun, 06 Aug 2023 15:55:11 GMT + repoEtag: '"68f7242fad690dd130522147fd05a8f4ce901620fb3411a1938936824811fa2f"' + repoLastModified: Tue, 08 Aug 2023 10:05:52 GMT foundInMaster: true id: 8c3d08406ca659662808d51ddc10b4e4 v3_1: true @@ -251,17 +251,17 @@ Filter internal paths, operations, parameters, schemas etc from OpenAPI/Swagger/AsyncAPI definitions created: '2017-08-02T13:42:57Z' - updated: '2023-07-24T16:40:41Z' + updated: '2023-08-08T19:32:00Z' language: JavaScript archived: false - stars: 132 + stars: 133 watchers: 5 forks: 29 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause - repoEtag: '"62e9c9286c5698ec4aeb7e0df2db986ef404bbd2d2b0fc4403cde4fb6ae40243"' - repoLastModified: Mon, 24 Jul 2023 16:40:41 GMT + repoEtag: '"174433d4f623b4d3b52feeaebd4d8660c29fae04298eee1b12b65ed81b6f580b"' + repoLastModified: Tue, 08 Aug 2023 19:32:00 GMT foundInMaster: true id: c00a8a003ace3ce47f5740bb641667fb v3_1: true @@ -311,17 +311,17 @@ repositoryId: 162068352 description: Build OpenAPI3.0 specification from HAR. created: '2018-12-17T03:17:54Z' - updated: '2023-08-06T06:21:23Z' + updated: '2023-08-09T03:14:26Z' language: TypeScript archived: false - stars: 65 + stars: 66 watchers: 2 forks: 14 owner: anbuksv logo: https://avatars.githubusercontent.com/u/13810481?v=4 license: MIT - repoEtag: '"0f73d0295917096552ece842030ec80db4ccb7f965be92669cd5c24c5b0b6109"' - repoLastModified: Sun, 06 Aug 2023 06:21:23 GMT + repoEtag: '"3a2a00006c7d92ec7eeae018e3d6aa443859d30647af9c9db7dc45d7feb912d4"' + repoLastModified: Wed, 09 Aug 2023 03:14:26 GMT foundInMaster: true id: 2b13d07e4984e87f5b5e3506ea242963 - source: https://openapi.tools/ @@ -558,7 +558,7 @@ owner: Rhosys logo: https://avatars.githubusercontent.com/u/35577654?v=4 license: Apache-2.0 - repoEtag: '"c678ab8bc502028145d5efb51a2ae3815b417022891aa0b112b6d137d1fd3901"' + repoEtag: '"c6ef9a054829aa26a7d7a4efc39c3c8b869b4eed00f10e14a32b1fa82a695ec8"' repoLastModified: Tue, 01 Aug 2023 09:09:04 GMT foundInMaster: true id: 0dd93303283cfb1f31037874c72079a7 @@ -583,17 +583,17 @@ repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' - updated: '2023-08-08T02:49:13Z' + updated: '2023-08-08T23:52:26Z' language: TypeScript archived: false - stars: 20706 - watchers: 284 - forks: 2206 + stars: 20719 + watchers: 285 + forks: 2208 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"2bd0aa55a2d8d3233103157e270d0261423aae055dcb0873d6e1517e2af85160"' - repoLastModified: Tue, 08 Aug 2023 02:49:13 GMT + repoEtag: '"890ca5186f71039b67a93c699f42b25ee7cf8d043e5d137939d590c721e11b0d"' + repoLastModified: Tue, 08 Aug 2023 23:52:26 GMT foundInMaster: true - source: https://openapi.tools/ name: oas3-api-snippet-enricher @@ -649,17 +649,17 @@ OpenAPI / Swagger, AsyncAPI & Semoasa definitions to (re)Slate compatible markdown created: '2016-10-05T23:09:13Z' - updated: '2023-08-04T03:10:12Z' + updated: '2023-08-08T16:59:53Z' language: JavaScript archived: false - stars: 1336 + stars: 1337 watchers: 17 - forks: 309 + forks: 308 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT - repoEtag: '"7277eac843d9342f4c17db5dac96aa7f4586dfaf615f5c7b686ef9addbfe784d"' - repoLastModified: Fri, 04 Aug 2023 03:10:12 GMT + repoEtag: '"1e550a06a93ec9bac3d392bb93c8505f621055ed8fa0ab7cdc0bae6491eb73f5"' + repoLastModified: Tue, 08 Aug 2023 16:59:53 GMT foundInMaster: true homepage: https://github.com/Mermade/widdershins id: ab4fb414065011325683c7b582a9e582 @@ -829,17 +829,17 @@ repositoryId: 173009358 description: Generate Go client and server boilerplate from OpenAPI 3 specifications created: '2019-02-27T23:59:59Z' - updated: '2023-08-07T23:52:42Z' + updated: '2023-08-09T03:00:35Z' language: Go archived: false - stars: 3822 + stars: 3828 watchers: 32 - forks: 659 + forks: 660 owner: deepmap logo: https://avatars.githubusercontent.com/u/47459865?v=4 license: Apache-2.0 - repoEtag: '"ceb396335fcf147c7b96a497e2cefc805d80f37adb325edb45ee3400aab04cad"' - repoLastModified: Mon, 07 Aug 2023 23:52:42 GMT + repoEtag: '"9a0da25ecc7af2c722ce15ed4c62d464df6fa06524cf46e514d415fc07c171ed"' + repoLastModified: Wed, 09 Aug 2023 03:00:35 GMT foundInMaster: true id: bc996e9362e78defa2eca82e5765d2f3 - source: https://openapi.tools/ @@ -906,17 +906,17 @@ generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3) created: '2018-05-12T09:57:56Z' - updated: '2023-08-08T02:43:45Z' + updated: '2023-08-09T03:02:57Z' language: Java archived: false - stars: 17236 + stars: 17251 watchers: 215 - forks: 5504 + forks: 5505 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"937b38a069ca9386128ddd41e92b657fa089f6545f4431504985ea9984720c10"' - repoLastModified: Tue, 08 Aug 2023 02:43:45 GMT + repoEtag: '"dc82a01dec1f35e6987c507319a1e6f0ca6da3c3ed781d1971239f45664d6d92"' + repoLastModified: Wed, 09 Aug 2023 03:02:57 GMT foundInMaster: true id: 0418f8afcd0196c648d1a46c0c5c20d1 v3_1_link: https://github.com/OpenAPITools/openapi-generator/issues/9083 @@ -934,7 +934,7 @@ repositoryId: 544314254 description: ' OpenAPI JSON Schema Generator allows auto-generation of API client libraries with a focus on JSON schema given an OpenAPI Spec' created: '2022-10-02T06:47:59Z' - updated: '2023-08-07T18:45:43Z' + updated: '2023-08-08T22:55:03Z' language: Java archived: false stars: 42 @@ -943,8 +943,8 @@ owner: openapi-json-schema-tools logo: https://avatars.githubusercontent.com/u/114849992?v=4 license: Apache-2.0 - repoEtag: '"60e3a6dece253411cc003f548af835122f6b54cb80b1433f8b175abb9cf5d232"' - repoLastModified: Mon, 07 Aug 2023 18:45:43 GMT + repoEtag: '"74a1d83be33a832759dc04b0f6344cb7cf5d84327543506b7cc9961bb9f0943d"' + repoLastModified: Tue, 08 Aug 2023 22:55:03 GMT category: - Code Generators - SDK @@ -979,23 +979,23 @@ id: c94b9d43825b39f99511edfe70e459ec repositoryMetadata: base64Readme: >- - IyBQcm9qZWN0CgpbIVtEb3RuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvYWN0aW9ucy93b3JrZmxvd3MvZG90bmV0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2FjdGlvbnMvd29ya2Zsb3dzL2RvdG5ldC55bWwpIFshW0NvZGVRTF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9hY3Rpb25zL3dvcmtmbG93cy9jb2RlcWwtYW5hbHlzaXMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbCkgWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW1pY3Jvc29mdF9raW90YSZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPW1pY3Jvc29mdF9raW90YSkgWyFbU29uYXJjbG91ZCBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW1pY3Jvc29mdF9raW90YSZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1taWNyb3NvZnRfa2lvdGEpCgpLaW90YSBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciBnZW5lcmF0aW5nIGFuIEFQSSBjbGllbnQgdG8gY2FsbCBhbnkgT3BlbkFQSSBkZXNjcmliZWQgQVBJIHlvdSBhcmUgaW50ZXJlc3RlZCBpbi4gVGhlIGdvYWwgaXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIHRha2UgYSBkZXBlbmRlbmN5IG9uIGEgZGlmZmVyZW50IEFQSSBTREsgZm9yIGV2ZXJ5IEFQSSB0aGF0IHlvdSBuZWVkIHRvIGNhbGwuIEtpb3RhIEFQSSBjbGllbnRzIHByb3ZpZGUgYSBzdHJvbmdseSB0eXBlZCBleHBlcmllbmNlIHdpdGggYWxsIHRoZSBmZWF0dXJlcyB5b3UgZXhwZWN0IGZyb20gYSBoaWdoIHF1YWxpdHkgQVBJIFNESywgYnV0IHdpdGhvdXQgaGF2aW5nIHRvIGxlYXJuIGEgbmV3IGxpYnJhcnkgZm9yIGV2ZXJ5IEhUVFAgQVBJLgoKVGhpcyBsaWJyYXJ5IGJ1aWxkcyBvbiB0b3Agb2YgdGhlIFtNaWNyb3NvZnQuT3BlbkFQSS5ORVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvb3BlbmFwaS5uZXQpIGxpYnJhcnkgdG8gZW5zdXJlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgQVBJcyB0aGF0IHVzZSBPcGVuQVBJIGRlc2NyaXB0aW9ucy4gT25lIG9mIHRoZSBnb2FscyBvZiB0aGUgcHJvamVjdCBpcyB0byBwcm92aWRlIHRoZSBiZXN0IGNvZGUgZ2VuZXJhdG9yIHN1cHBvcnQgcG9zc2libGUgZm9yIE9wZW5BUEkgYW5kIEpTT04gU2NoZW1hIGZlYXR1cmVzLiBUaGUgW2NvbmNlcHR1YWwgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEpIGRlc2NyaWJlcyBob3cga2lvdGEgd29ya3MgYW5kIHRoZSBoaWdoIGxldmVsIGNvbmNlcHRzLCB0aGlzIHJlYWRtZSBkb2N1bWVudHMgaG93IHRvIGdldCBzdGFydGVkIHdpdGggS2lvdGEuCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBHZW5lcmF0aW5nIFNES3MKCjEuIEluc3RhbGwgcmVxdWlyZWQgdG9vbHMgYW5kIGRlcGVuZGVuY2llcy4gKHJlZmVyIHRvIHRoZSBbU3VwcG9ydGVkIExhbmd1YWdlc10oI3N1cHBvcnRlZC1sYW5ndWFnZXMpIHRhYmxlIHVuZGVyIHRoZSAqKlJlcXVpcmVkIHRvb2xzICYgZGVwZW5kZW5jaWVzKiogY29sdW1uKQoxLiBHZXQgS2lvdGEgdXNpbmcgb25lIG9mIHRoZSBbYXZhaWxhYmxlIG9wdGlvbnNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL2luc3RhbGwpLgoxLiBHZW5lcmF0ZSB5b3VyIEFQSSBjbGllbnQsIGNoZWNrb3V0IHRoZSBbUGFyYW1ldGVycyByZWZlcmVuY2VdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3VzaW5nKSBmb3IgdGhlIGRpZmZlcmVudCBvcHRpb25zLgoxLiBTdGFydCBjYWxsaW5nIHlvdXIgQVBJIHVzaW5nIHlvdXIgZmx1ZW50IEFQSSBDbGllbnQuCgojIyMgU3VwcG9ydGVkIGxhbmd1YWdlcwoKVGhlIGZvbGxvd2luZyB0YWJsZSBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBLaW90YSBhbmQgdGhlIHByb2dyZXNzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMuCgp8IExhbmd1YWdlIHwgR2VuZXJhdGlvbiB8IEFic3RyYWN0aW9ucyAgICAgICAgICAgICAgICAgICB8IFNlcmlhbGl6YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF1dGhlbnRpY2F0aW9uIHwgSFRUUCB8IFJlcXVpcmVkIHRvb2xzICYgZGVwZW5kZW5jaWVzIHwKfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0gfCAtLS0tLS0tLS0tLS0tLSB8CnwgQ1NoYXJwIHwg4pyUIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtZG90bmV0KSAgICAgfCBbRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLWZvcm0tZG90bmV0KSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLWRvdG5ldCksIFtNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1tdWx0aXBhcnQtZG90bmV0KSwgW1RFWFRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi10ZXh0LWRvdG5ldCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW0Fub255bW91c10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtZG90bmV0L2Jsb2IvbWFpbi9zcmMvYXV0aGVudGljYXRpb24vQW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlci5jcyksIFtBUEkgS2V5XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1kb3RuZXQvYmxvYi9tYWluL3NyYy9hdXRoZW50aWNhdGlvbi9BcGlLZXlBdXRoZW50aWNhdGlvblByb3ZpZGVyLmNzKSwgW0F6dXJlXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWF1dGhlbnRpY2F0aW9uLWF6dXJlLWRvdG5ldCkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWh0dHAtZG90bmV0KSB8IFtsaW5rXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vb3BlbmFwaS9raW90YS9xdWlja3N0YXJ0cy9kb3RuZXQpIHwKfCBHbyB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLWdvKSAgICAgICAgIHwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1mb3JtLWdvKSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLWdvKSwgW01VTFRJUEFSVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLW11bHRpcGFydC1nbyksIFtURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXNlcmlhbGl6YXRpb24tdGV4dC1nbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLWdvL2Jsb2IvbWFpbi9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXNfYXV0aGVudGljYXRpb25fcHJvdmlkZXIuZ28pLCBbQVBJIEtleV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtZ28vYmxvYi9tYWluL2F1dGhlbnRpY2F0aW9uL2FwaV9rZXlfYXV0aGVudGljYXRpb25fcHJvdmlkZXIuZ28pLCBbQXp1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYXV0aGVudGljYXRpb24tYXp1cmUtZ28vKSB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtaHR0cC1nby8pIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL2dvKSB8CnwgSmF2YSB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9hYnN0cmFjdGlvbnMpICAgICAgIHwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9zZXJpYWxpemF0aW9uL2Zvcm0pLCBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1qYXZhL3RyZWUvbWFpbi9jb21wb25lbnRzL3NlcmlhbGl6YXRpb24vanNvbiksIFtNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9zZXJpYWxpemF0aW9uL211bHRpcGFydCksIFtURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvdHJlZS9tYWluL2NvbXBvbmVudHMvc2VyaWFsaXphdGlvbi90ZXh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS9ibG9iL21haW4vY29tcG9uZW50cy9hYnN0cmFjdGlvbnMvc3JjL21haW4vamF2YS9jb20vbWljcm9zb2Z0L2tpb3RhL2F1dGhlbnRpY2F0aW9uL0Fub255bW91c0F1dGhlbnRpY2F0aW9uUHJvdmlkZXIuamF2YSksIFtBUEkgS2V5XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvYmxvYi9tYWluL2NvbXBvbmVudHMvYWJzdHJhY3Rpb25zL3NyYy9tYWluL2phdmEvY29tL21pY3Jvc29mdC9raW90YS9hdXRoZW50aWNhdGlvbi9BcGlLZXlBdXRoZW50aWNhdGlvblByb3ZpZGVyLmphdmEpLCBbQXp1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9hdXRoZW50aWNhdGlvbi9henVyZSkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvdHJlZS9tYWluL2NvbXBvbmVudHMvaHR0cC9va0h0dHApIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL2phdmEpIHwKfCBQSFAgfCDinJQgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1waHApICAgICAgICAgIHwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLXBocCksIFvinYwgRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMjA3NCksIFvinYwgTVVMVElQQVJUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8zMDI5KSwgW1RFWFRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi10ZXh0LXBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW0Fub255bW91c10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtcGhwL2Jsb2IvbWFpbi9zcmMvQXV0aGVudGljYXRpb24vQW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlci5waHApLCBb4pyU77iPIFBIUCBMZWFndWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYXV0aGVudGljYXRpb24tcGhwbGVhZ3VlLXBocCkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWh0dHAtZ3V6emxlLXBocCkgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvcGhwKSB8CnwgUHl0aG9uIHwg4pyUIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtcHl0aG9uKSAgfCBb4p2MIEZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvaXNzdWVzLzIwNzUpLCBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLWpzb24tcHl0aG9uKSwgW+KdjCBNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvaXNzdWVzLzMwMzApLCBbVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLXRleHQtcHl0aG9uKSB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXB5dGhvbi9ibG9iL21haW4va2lvdGFfYWJzdHJhY3Rpb25zL2F1dGhlbnRpY2F0aW9uL2Fub255bW91c19hdXRoZW50aWNhdGlvbl9wcm92aWRlci5weSksIFtBenVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hdXRoZW50aWNhdGlvbi1henVyZS1weXRob24pIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1odHRwLXB5dGhvbikgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvcHl0aG9uKSB8CnwgUnVieSB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXJ1YnkpICAgICAgIHwgW+KdjCBGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8yMDc3KSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLXJ1YnkpLCBb4p2MIE1VTFRJUEFSVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMzAzMiksIFvinYwgVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMTA0OSkgfCBbQW5vbnltb3VzXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1ydWJ5L2Jsb2IvbWFpbi9saWIvbWljcm9zb2Z0X2tpb3RhX2Fic3RyYWN0aW9ucy9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXNfYXV0aGVudGljYXRpb25fcHJvdmlkZXIucmIpLCBb4pyU77iPIE9BdXRoMl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hdXRoZW50aWNhdGlvbi1vYXV0aC1ydWJ5KSB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtaHR0cC1ydWJ5KXwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL3J1YnkpICB8CnwgU2hlbGwgfCDinJQgfCAoc2VlIENTSGFycCkgKyBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWNsaS1jb21tb25zKSB8IChzZWUgQ1NIYXJwKSB8IChzZWUgQ1NoYXJwKSB8IChzZWUgQ1NoYXJwKSB8IFtsaW5rXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vb3BlbmFwaS9raW90YS9xdWlja3N0YXJ0cy9jbGkpIHwKfCBTd2lmdCB8IFvilrZdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvaXNzdWVzLzE0NDkpIHwgW+KclF0oLi9hYnN0cmFjdGlvbnMvc3dpZnQpICAgICAgIHwgW+KdjCBGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8yMDc2KSwgW+KdjCBKU09OXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8xNDUxKSwgW+KdjCBGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8zMDMzKSwgW+KdjCBURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8xNDUyKSB8IFtBbm9ueW1vdXNdKC4vYWJzdHJhY3Rpb25zL3N3aWZ0L1NvdXJjZS9NaWNyb3NvZnRLaW90YUFic3RyYWN0aW9ucy9BdXRoZW50aWNhdGlvbi9Bbm9ueW1vdXNBdXRoZW50aWNhdGlvblByb3ZpZGVyLnN3aWZ0KSwgW+KdjCBBenVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMTQ1MykgfCBb4p2MXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8xNDU0KXwgIHwKfCBUeXBlU2NyaXB0L0phdmFTY3JpcHQgfCDinJQgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL2Fic3RyYWN0aW9ucykgfCBbRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9zZXJpYWxpemF0aW9uL2Zvcm0pLCBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9zZXJpYWxpemF0aW9uL2pzb24pLCBbTVVMVElQQVJUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL3NlcmlhbGl6YXRpb24vbXVsdGlwYXJ0KSwgW1RFWFRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvc2VyaWFsaXphdGlvbi90ZXh0KSAgICAgICAgICAgICAgICAgICAgICAgICB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC9ibG9iL21haW4vcGFja2FnZXMvYWJzdHJhY3Rpb25zL3NyYy9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXNBdXRoZW50aWNhdGlvblByb3ZpZGVyLnRzKSwgW0FQSSBLZXldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC9ibG9iL21haW4vcGFja2FnZXMvYWJzdHJhY3Rpb25zL3NyYy9hdXRoZW50aWNhdGlvbi9hcGlLZXlBdXRoZW50aWNhdGlvblByb3ZpZGVyLnRzKSwgW0F6dXJlXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL2F1dGhlbnRpY2F0aW9uL2F6dXJlKSB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvaHR0cC9mZXRjaCkgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvdHlwZXNjcmlwdCkgfAoKPiBMZWdlbmQ6IOKclCAtPiBpbiBwcmV2aWV3LCDinYwgLT4gbm90IHN0YXJ0ZWQsIOKWtiAtPiBpbiBwcm9ncmVzcy4KCiMjIyBQYXJhbWV0ZXJzIHJlZmVyZW5jZQoKUGFyYW1ldGVycyBhcmUgZG9jdW1lbnRlZCBbaGVyZV0oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvdXNpbmcpLgoKIyMjIERlYnVnZ2luZwoKTWFrZSBzdXJlIHlvdSBbaW5zdGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgZmlyc3RdKENPTlRSSUJVVElORy5tZCkuIElmIHlvdSBhcmUgdXNpbmcgVmlzdWFsIFN0dWRpbyBDb2RlIGFzIHlvdXIgSURFLCB0aGUgKipsYXVuY2guanNvbioqIGZpbGUgYWxyZWFkeSBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiB0byBydW4gS2lvdGEuIEJ5IGRlZmF1bHQgdGhpcyBjb25maWd1cmF0aW9uIHdpbGwgdXNlIHRoZSBgb3BlbkFwaURvY3MvdjEuMC9NYWlsLnltbGAgdW5kZXIgdGhlIFtQb3dlclNoZWxsIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnRncmFwaC9tc2dyYXBoLXNkay1wb3dlcnNoZWxsKSBhcyB0aGUgT3BlbkFQSSB0byBnZW5lcmF0ZSBhbiBTREsgZm9yLiBCeSBkZWZhdWx0IHRoaXMgY29uZmlndXJhdGlvbiB3aWxsIG91dHB1dCB0aGUgZ2VuZXJhdGVkIGZpbGVzIGluIGEgZ3JhcGhkb3RuZXR2NHxncmFwaGphdmF2NHxncmFwaHR5cGVzY3JpcHR2NCBmb2xkZXIgbG9jYXRlZCBpbiB0aGUgcGFyZW50IGZvbGRlciB0aGlzIHJlcG9zaXRvcnkgaXMgY2xvbmVkIGluLgoKU2VsZWN0aW5nIHRoZSBsYW5ndWFnZSB5b3Ugd2FudCB0byBnZW5lcmF0ZSBhbiBBUEkgY2xpZW50IGZvciBpbiB0aGUgVmlzdWFsIFN0dWRpbyBEZWJ1ZyB0YWIgYW5kIGhpdHRpbmcgKipGNSoqIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCwgc3RhcnQsIGFuZCBhdHRhY2ggdGhlIGRlYnVnZ2luZyBwcm9jZXNzIHRvIEtpb3RhLgoKIyMjIFNhbXBsZXMKCllvdSBjYW4gZmluZCBzYW1wbGVzIG9mIGNsaWVudHMgZ2VuZXJhdGVkIHdpdGggS2lvdGEgaW4gdGhlIFtLaW90YSBzYW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXNhbXBsZXMpIHJlcG9zaXRvcnkuCgpBbiBleGFtcGxlIG9mIGFuIGFwcGxpY2F0aW9uIHRoYXQgaXMgY2FsbGluZyBtdWx0aXBsZSBBUEkgY2FuIGJlIGZvdW5kIGluIHRoZSBbS2lvdGFBcHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJyZWxtaWxsZXIvS2lvdGFBcHApIHJlcG8KCiMjIENvbnRyaWJ1dGluZwoKVGhpcyBwcm9qZWN0IHdlbGNvbWVzIGNvbnRyaWJ1dGlvbnMgYW5kIHN1Z2dlc3Rpb25zLiAgTW9zdCBjb250cmlidXRpb25zIHJlcXVpcmUgeW91IHRvIGFncmVlIHRvIGEKQ29udHJpYnV0b3IgTGljZW5zZSBBZ3JlZW1lbnQgKENMQSkgZGVjbGFyaW5nIHRoYXQgeW91IGhhdmUgdGhlIHJpZ2h0IHRvLCBhbmQgYWN0dWFsbHkgZG8sIGdyYW50IHVzCnRoZSByaWdodHMgdG8gdXNlIHlvdXIgY29udHJpYnV0aW9uLiBGb3IgZGV0YWlscywgdmlzaXQgW2h0dHBzOi8vY2xhLm9wZW5zb3VyY2UubWljcm9zb2Z0LmNvbV0oaHR0cHM6Ly9jbGEub3BlbnNvdXJjZS5taWNyb3NvZnQuY29tKS4KCldoZW4geW91IHN1Ym1pdCBhIHB1bGwgcmVxdWVzdCwgYSBDTEEgYm90IHdpbGwgYXV0b21hdGljYWxseSBkZXRlcm1pbmUgd2hldGhlciB5b3UgbmVlZCB0byBwcm92aWRlCmEgQ0xBIGFuZCBkZWNvcmF0ZSB0aGUgUFIgYXBwcm9wcmlhdGVseSAoZS5nLiwgc3RhdHVzIGNoZWNrLCBjb21tZW50KS4gU2ltcGx5IGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zCnByb3ZpZGVkIGJ5IHRoZSBib3QuIFlvdSB3aWxsIG9ubHkgbmVlZCB0byBkbyB0aGlzIG9uY2UgYWNyb3NzIGFsbCByZXBvcyB1c2luZyBvdXIgQ0xBLgoKVGhpcyBwcm9qZWN0IGhhcyBhZG9wdGVkIHRoZSBbTWljcm9zb2Z0IE9wZW4gU291cmNlIENvZGUgb2YgQ29uZHVjdF0oaHR0cHM6Ly9vcGVuc291cmNlLm1pY3Jvc29mdC5jb20vY29kZW9mY29uZHVjdC8pLgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIFtDb2RlIG9mIENvbmR1Y3QgRkFRXShodHRwczovL29wZW5zb3VyY2UubWljcm9zb2Z0LmNvbS9jb2Rlb2Zjb25kdWN0L2ZhcS8pIG9yCmNvbnRhY3QgW29wZW5jb2RlQG1pY3Jvc29mdC5jb21dKG1haWx0bzpvcGVuY29kZUBtaWNyb3NvZnQuY29tKSB3aXRoIGFueSBhZGRpdGlvbmFsIHF1ZXN0aW9ucyBvciBjb21tZW50cy4KCiMjIFRyYWRlbWFya3MKClRoaXMgcHJvamVjdCBtYXkgY29udGFpbiB0cmFkZW1hcmtzIG9yIGxvZ29zIGZvciBwcm9qZWN0cywgcHJvZHVjdHMsIG9yIHNlcnZpY2VzLiBBdXRob3JpemVkIHVzZSBvZiBNaWNyb3NvZnQKdHJhZGVtYXJrcyBvciBsb2dvcyBpcyBzdWJqZWN0IHRvIGFuZCBtdXN0IGZvbGxvdwpbTWljcm9zb2Z0J3MgVHJhZGVtYXJrICYgQnJhbmQgR3VpZGVsaW5lc10oaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9sZWdhbC9pbnRlbGxlY3R1YWxwcm9wZXJ0eS90cmFkZW1hcmtzL3VzYWdlL2dlbmVyYWwpLgpVc2Ugb2YgTWljcm9zb2Z0IHRyYWRlbWFya3Mgb3IgbG9nb3MgaW4gbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhpcyBwcm9qZWN0IG11c3Qgbm90IGNhdXNlIGNvbmZ1c2lvbiBvciBpbXBseSBNaWNyb3NvZnQgc3BvbnNvcnNoaXAuCkFueSB1c2Ugb2YgdGhpcmQtcGFydHkgdHJhZGVtYXJrcyBvciBsb2dvcyBhcmUgc3ViamVjdCB0byB0aG9zZSB0aGlyZC1wYXJ0eSdzIHBvbGljaWVzLgo= - readmeEtag: '"2a97e641f1bae65e830e7b745f538c8978181dd71894319d08b40d90a2c603bb"' - readmeLastModified: Thu, 03 Aug 2023 20:09:18 GMT + IyBQcm9qZWN0CgpbIVtEb3RuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvYWN0aW9ucy93b3JrZmxvd3MvZG90bmV0LnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2FjdGlvbnMvd29ya2Zsb3dzL2RvdG5ldC55bWwpIFshW0NvZGVRTF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9hY3Rpb25zL3dvcmtmbG93cy9jb2RlcWwtYW5hbHlzaXMueW1sL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbCkgWyFbQ292ZXJhZ2VdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW1pY3Jvc29mdF9raW90YSZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPW1pY3Jvc29mdF9raW90YSkgWyFbU29uYXJjbG91ZCBTdGF0dXNdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PW1pY3Jvc29mdF9raW90YSZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1taWNyb3NvZnRfa2lvdGEpCgpLaW90YSBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciBnZW5lcmF0aW5nIGFuIEFQSSBjbGllbnQgdG8gY2FsbCBhbnkgT3BlbkFQSSBkZXNjcmliZWQgQVBJIHlvdSBhcmUgaW50ZXJlc3RlZCBpbi4gVGhlIGdvYWwgaXMgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIHRha2UgYSBkZXBlbmRlbmN5IG9uIGEgZGlmZmVyZW50IEFQSSBTREsgZm9yIGV2ZXJ5IEFQSSB0aGF0IHlvdSBuZWVkIHRvIGNhbGwuIEtpb3RhIEFQSSBjbGllbnRzIHByb3ZpZGUgYSBzdHJvbmdseSB0eXBlZCBleHBlcmllbmNlIHdpdGggYWxsIHRoZSBmZWF0dXJlcyB5b3UgZXhwZWN0IGZyb20gYSBoaWdoIHF1YWxpdHkgQVBJIFNESywgYnV0IHdpdGhvdXQgaGF2aW5nIHRvIGxlYXJuIGEgbmV3IGxpYnJhcnkgZm9yIGV2ZXJ5IEhUVFAgQVBJLgoKVGhpcyBsaWJyYXJ5IGJ1aWxkcyBvbiB0b3Agb2YgdGhlIFtNaWNyb3NvZnQuT3BlbkFQSS5ORVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvb3BlbmFwaS5uZXQpIGxpYnJhcnkgdG8gZW5zdXJlIGNvbXByZWhlbnNpdmUgc3VwcG9ydCBmb3IgQVBJcyB0aGF0IHVzZSBPcGVuQVBJIGRlc2NyaXB0aW9ucy4gT25lIG9mIHRoZSBnb2FscyBvZiB0aGUgcHJvamVjdCBpcyB0byBwcm92aWRlIHRoZSBiZXN0IGNvZGUgZ2VuZXJhdG9yIHN1cHBvcnQgcG9zc2libGUgZm9yIE9wZW5BUEkgYW5kIEpTT04gU2NoZW1hIGZlYXR1cmVzLiBUaGUgW2NvbmNlcHR1YWwgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEpIGRlc2NyaWJlcyBob3cga2lvdGEgd29ya3MgYW5kIHRoZSBoaWdoIGxldmVsIGNvbmNlcHRzLCB0aGlzIHJlYWRtZSBkb2N1bWVudHMgaG93IHRvIGdldCBzdGFydGVkIHdpdGggS2lvdGEuCgojIyBHZXR0aW5nIHN0YXJ0ZWQKCiMjIyBHZW5lcmF0aW5nIFNES3MKCjEuIEluc3RhbGwgcmVxdWlyZWQgdG9vbHMgYW5kIGRlcGVuZGVuY2llcy4gKHJlZmVyIHRvIHRoZSBbU3VwcG9ydGVkIExhbmd1YWdlc10oI3N1cHBvcnRlZC1sYW5ndWFnZXMpIHRhYmxlIHVuZGVyIHRoZSAqKlJlcXVpcmVkIHRvb2xzICYgZGVwZW5kZW5jaWVzKiogY29sdW1uKQoxLiBHZXQgS2lvdGEgdXNpbmcgb25lIG9mIHRoZSBbYXZhaWxhYmxlIG9wdGlvbnNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL2luc3RhbGwpLgoxLiBHZW5lcmF0ZSB5b3VyIEFQSSBjbGllbnQsIGNoZWNrb3V0IHRoZSBbUGFyYW1ldGVycyByZWZlcmVuY2VdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3VzaW5nKSBmb3IgdGhlIGRpZmZlcmVudCBvcHRpb25zLgoxLiBTdGFydCBjYWxsaW5nIHlvdXIgQVBJIHVzaW5nIHlvdXIgZmx1ZW50IEFQSSBDbGllbnQuCgojIyMgU3VwcG9ydGVkIGxhbmd1YWdlcwoKVGhlIGZvbGxvd2luZyB0YWJsZSBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBieSBLaW90YSBhbmQgdGhlIHByb2dyZXNzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMuCgp8IExhbmd1YWdlIHwgR2VuZXJhdGlvbiB8IEFic3RyYWN0aW9ucyAgICAgICAgICAgICAgICAgICB8IFNlcmlhbGl6YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF1dGhlbnRpY2F0aW9uIHwgSFRUUCB8IFJlcXVpcmVkIHRvb2xzICYgZGVwZW5kZW5jaWVzIHwKfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0gfCAtLS0tLS0tLS0tLS0tLSB8CnwgQ1NoYXJwIHwg4pyUIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtZG90bmV0KSAgICAgfCBbRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLWZvcm0tZG90bmV0KSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLWRvdG5ldCksIFtNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1tdWx0aXBhcnQtZG90bmV0KSwgW1RFWFRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi10ZXh0LWRvdG5ldCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW0Fub255bW91c10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtZG90bmV0L2Jsb2IvbWFpbi9zcmMvYXV0aGVudGljYXRpb24vQW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlci5jcyksIFtBUEkgS2V5XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1kb3RuZXQvYmxvYi9tYWluL3NyYy9hdXRoZW50aWNhdGlvbi9BcGlLZXlBdXRoZW50aWNhdGlvblByb3ZpZGVyLmNzKSwgW0F6dXJlXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWF1dGhlbnRpY2F0aW9uLWF6dXJlLWRvdG5ldCkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWh0dHAtZG90bmV0KSB8IFtsaW5rXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vb3BlbmFwaS9raW90YS9xdWlja3N0YXJ0cy9kb3RuZXQpIHwKfCBHbyB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLWdvKSAgICAgICAgIHwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1mb3JtLWdvKSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLWdvKSwgW01VTFRJUEFSVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLW11bHRpcGFydC1nbyksIFtURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXNlcmlhbGl6YXRpb24tdGV4dC1nbykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLWdvL2Jsb2IvbWFpbi9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXNfYXV0aGVudGljYXRpb25fcHJvdmlkZXIuZ28pLCBbQVBJIEtleV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtZ28vYmxvYi9tYWluL2F1dGhlbnRpY2F0aW9uL2FwaV9rZXlfYXV0aGVudGljYXRpb25fcHJvdmlkZXIuZ28pLCBbQXp1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYXV0aGVudGljYXRpb24tYXp1cmUtZ28vKSB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtaHR0cC1nby8pIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL2dvKSB8CnwgSmF2YSB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9hYnN0cmFjdGlvbnMpICAgICAgIHwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9zZXJpYWxpemF0aW9uL2Zvcm0pLCBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1qYXZhL3RyZWUvbWFpbi9jb21wb25lbnRzL3NlcmlhbGl6YXRpb24vanNvbiksIFtNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9zZXJpYWxpemF0aW9uL211bHRpcGFydCksIFtURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvdHJlZS9tYWluL2NvbXBvbmVudHMvc2VyaWFsaXphdGlvbi90ZXh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS9ibG9iL21haW4vY29tcG9uZW50cy9hYnN0cmFjdGlvbnMvc3JjL21haW4vamF2YS9jb20vbWljcm9zb2Z0L2tpb3RhL2F1dGhlbnRpY2F0aW9uL0Fub255bW91c0F1dGhlbnRpY2F0aW9uUHJvdmlkZXIuamF2YSksIFtBUEkgS2V5XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvYmxvYi9tYWluL2NvbXBvbmVudHMvYWJzdHJhY3Rpb25zL3NyYy9tYWluL2phdmEvY29tL21pY3Jvc29mdC9raW90YS9hdXRoZW50aWNhdGlvbi9BcGlLZXlBdXRoZW50aWNhdGlvblByb3ZpZGVyLmphdmEpLCBbQXp1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtamF2YS90cmVlL21haW4vY29tcG9uZW50cy9hdXRoZW50aWNhdGlvbi9henVyZSkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWphdmEvdHJlZS9tYWluL2NvbXBvbmVudHMvaHR0cC9va0h0dHApIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL2phdmEpIHwKfCBQSFAgfCDinJQgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1waHApICAgICAgICAgIHwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLXBocCksIFvinYwgRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMjA3NCksIFvinYwgTVVMVElQQVJUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8zMDI5KSwgW1RFWFRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi10ZXh0LXBocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW0Fub255bW91c10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtcGhwL2Jsb2IvbWFpbi9zcmMvQXV0aGVudGljYXRpb24vQW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlci5waHApLCBb4pyU77iPIFBIUCBMZWFndWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYXV0aGVudGljYXRpb24tcGhwbGVhZ3VlLXBocCkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWh0dHAtZ3V6emxlLXBocCkgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvcGhwKSB8CnwgUHl0aG9uIHwg4pyUIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hYnN0cmFjdGlvbnMtcHl0aG9uKSAgfCBb4p2MIEZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvaXNzdWVzLzIwNzUpLCBbSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLWpzb24tcHl0aG9uKSwgW+KdjCBNVUxUSVBBUlRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvaXNzdWVzLzMwMzApLCBbVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zZXJpYWxpemF0aW9uLXRleHQtcHl0aG9uKSB8IFtBbm9ueW1vdXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXB5dGhvbi9ibG9iL21haW4va2lvdGFfYWJzdHJhY3Rpb25zL2F1dGhlbnRpY2F0aW9uL2Fub255bW91c19hdXRoZW50aWNhdGlvbl9wcm92aWRlci5weSksIFtBenVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hdXRoZW50aWNhdGlvbi1henVyZS1weXRob24pIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1odHRwLXB5dGhvbikgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvcHl0aG9uKSB8CnwgUnVieSB8IOKclCB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtYWJzdHJhY3Rpb25zLXJ1YnkpICAgICAgIHwgW+KdjCBGT1JNXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8yMDc3KSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtc2VyaWFsaXphdGlvbi1qc29uLXJ1YnkpLCBb4p2MIE1VTFRJUEFSVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMzAzMiksIFvinYwgVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMTA0OSkgfCBbQW5vbnltb3VzXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLWFic3RyYWN0aW9ucy1ydWJ5L2Jsb2IvbWFpbi9saWIvbWljcm9zb2Z0X2tpb3RhX2Fic3RyYWN0aW9ucy9hdXRoZW50aWNhdGlvbi9hbm9ueW1vdXNfYXV0aGVudGljYXRpb25fcHJvdmlkZXIucmIpLCBb4pyU77iPIE9BdXRoMl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1hdXRoZW50aWNhdGlvbi1vYXV0aC1ydWJ5KSB8IFvinJRdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtaHR0cC1ydWJ5KXwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL3J1YnkpICB8CnwgQ0xJIHwg4pyUIHwgKHNlZSBDU2hhcnApICsgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1jbGktY29tbW9ucykgfCAoc2VlIENTaGFycCkgfCAoc2VlIENTaGFycCkgfCAoc2VlIENTaGFycCkgfCBbbGlua10oaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL29wZW5hcGkva2lvdGEvcXVpY2tzdGFydHMvY2xpKSB8CnwgU3dpZnQgfCBb4pa2XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhL2lzc3Vlcy8xNDQ5KSB8IFvinJRdKC4vYWJzdHJhY3Rpb25zL3N3aWZ0KSAgICAgICB8IFvinYwgRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMjA3NiksIFvinYwgSlNPTl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMTQ1MSksIFvinYwgRk9STV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMzAzMyksIFvinYwgVEVYVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMTQ1MikgfCBbQW5vbnltb3VzXSguL2Fic3RyYWN0aW9ucy9zd2lmdC9Tb3VyY2UvTWljcm9zb2Z0S2lvdGFBYnN0cmFjdGlvbnMvQXV0aGVudGljYXRpb24vQW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlci5zd2lmdCksIFvinYwgQXp1cmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEvaXNzdWVzLzE0NTMpIHwgW+KdjF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS9pc3N1ZXMvMTQ1NCl8ICB8CnwgVHlwZVNjcmlwdC9KYXZhU2NyaXB0IHwg4pyUIHwgW+KclF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9hYnN0cmFjdGlvbnMpIHwgW0ZPUk1dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvc2VyaWFsaXphdGlvbi9mb3JtKSwgW0pTT05dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQva2lvdGEtdHlwZXNjcmlwdC90cmVlL21haW4vcGFja2FnZXMvc2VyaWFsaXphdGlvbi9qc29uKSwgW01VTFRJUEFSVF0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9zZXJpYWxpemF0aW9uL211bHRpcGFydCksIFtURVhUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL3NlcmlhbGl6YXRpb24vdGV4dCkgICAgICAgICAgICAgICAgICAgICAgICAgfCBbQW5vbnltb3VzXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvYmxvYi9tYWluL3BhY2thZ2VzL2Fic3RyYWN0aW9ucy9zcmMvYXV0aGVudGljYXRpb24vYW5vbnltb3VzQXV0aGVudGljYXRpb25Qcm92aWRlci50cyksIFtBUEkgS2V5XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvYmxvYi9tYWluL3BhY2thZ2VzL2Fic3RyYWN0aW9ucy9zcmMvYXV0aGVudGljYXRpb24vYXBpS2V5QXV0aGVudGljYXRpb25Qcm92aWRlci50cyksIFtBenVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS10eXBlc2NyaXB0L3RyZWUvbWFpbi9wYWNrYWdlcy9hdXRoZW50aWNhdGlvbi9henVyZSkgfCBb4pyUXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhLXR5cGVzY3JpcHQvdHJlZS9tYWluL3BhY2thZ2VzL2h0dHAvZmV0Y2gpIHwgW2xpbmtdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3F1aWNrc3RhcnRzL3R5cGVzY3JpcHQpIHwKCj4gTGVnZW5kOiDinJQgLT4gaW4gcHJldmlldywg4p2MIC0+IG5vdCBzdGFydGVkLCDilrYgLT4gaW4gcHJvZ3Jlc3MuCgojIyMgUGFyYW1ldGVycyByZWZlcmVuY2UKClBhcmFtZXRlcnMgYXJlIGRvY3VtZW50ZWQgW2hlcmVdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9vcGVuYXBpL2tpb3RhL3VzaW5nKS4KCiMjIyBEZWJ1Z2dpbmcKCk1ha2Ugc3VyZSB5b3UgW2luc3RhbGwgdGhlIHByZS1yZXF1aXNpdGVzIGZpcnN0XShDT05UUklCVVRJTkcubWQpLiBJZiB5b3UgYXJlIHVzaW5nIFZpc3VhbCBTdHVkaW8gQ29kZSBhcyB5b3VyIElERSwgdGhlICoqbGF1bmNoLmpzb24qKiBmaWxlIGFscmVhZHkgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gdG8gcnVuIEtpb3RhLiBCeSBkZWZhdWx0IHRoaXMgY29uZmlndXJhdGlvbiB3aWxsIHVzZSB0aGUgYG9wZW5BcGlEb2NzL3YxLjAvTWFpbC55bWxgIHVuZGVyIHRoZSBbUG93ZXJTaGVsbCByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0Z3JhcGgvbXNncmFwaC1zZGstcG93ZXJzaGVsbCkgYXMgdGhlIE9wZW5BUEkgdG8gZ2VuZXJhdGUgYW4gU0RLIGZvci4gQnkgZGVmYXVsdCB0aGlzIGNvbmZpZ3VyYXRpb24gd2lsbCBvdXRwdXQgdGhlIGdlbmVyYXRlZCBmaWxlcyBpbiBhIGdyYXBoZG90bmV0djR8Z3JhcGhqYXZhdjR8Z3JhcGh0eXBlc2NyaXB0djQgZm9sZGVyIGxvY2F0ZWQgaW4gdGhlIHBhcmVudCBmb2xkZXIgdGhpcyByZXBvc2l0b3J5IGlzIGNsb25lZCBpbi4KClNlbGVjdGluZyB0aGUgbGFuZ3VhZ2UgeW91IHdhbnQgdG8gZ2VuZXJhdGUgYW4gQVBJIGNsaWVudCBmb3IgaW4gdGhlIFZpc3VhbCBTdHVkaW8gRGVidWcgdGFiIGFuZCBoaXR0aW5nICoqRjUqKiB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQsIHN0YXJ0LCBhbmQgYXR0YWNoIHRoZSBkZWJ1Z2dpbmcgcHJvY2VzcyB0byBLaW90YS4KCiMjIyBTYW1wbGVzCgpZb3UgY2FuIGZpbmQgc2FtcGxlcyBvZiBjbGllbnRzIGdlbmVyYXRlZCB3aXRoIEtpb3RhIGluIHRoZSBbS2lvdGEgc2FtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9raW90YS1zYW1wbGVzKSByZXBvc2l0b3J5LgoKQW4gZXhhbXBsZSBvZiBhbiBhcHBsaWNhdGlvbiB0aGF0IGlzIGNhbGxpbmcgbXVsdGlwbGUgQVBJIGNhbiBiZSBmb3VuZCBpbiB0aGUgW0tpb3RhQXBwXShodHRwczovL2dpdGh1Yi5jb20vZGFycmVsbWlsbGVyL0tpb3RhQXBwKSByZXBvCgojIyBDb250cmlidXRpbmcKClRoaXMgcHJvamVjdCB3ZWxjb21lcyBjb250cmlidXRpb25zIGFuZCBzdWdnZXN0aW9ucy4gIE1vc3QgY29udHJpYnV0aW9ucyByZXF1aXJlIHlvdSB0byBhZ3JlZSB0byBhCkNvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50IChDTEEpIGRlY2xhcmluZyB0aGF0IHlvdSBoYXZlIHRoZSByaWdodCB0bywgYW5kIGFjdHVhbGx5IGRvLCBncmFudCB1cwp0aGUgcmlnaHRzIHRvIHVzZSB5b3VyIGNvbnRyaWJ1dGlvbi4gRm9yIGRldGFpbHMsIHZpc2l0IFtodHRwczovL2NsYS5vcGVuc291cmNlLm1pY3Jvc29mdC5jb21dKGh0dHBzOi8vY2xhLm9wZW5zb3VyY2UubWljcm9zb2Z0LmNvbSkuCgpXaGVuIHlvdSBzdWJtaXQgYSBwdWxsIHJlcXVlc3QsIGEgQ0xBIGJvdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHdoZXRoZXIgeW91IG5lZWQgdG8gcHJvdmlkZQphIENMQSBhbmQgZGVjb3JhdGUgdGhlIFBSIGFwcHJvcHJpYXRlbHkgKGUuZy4sIHN0YXR1cyBjaGVjaywgY29tbWVudCkuIFNpbXBseSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucwpwcm92aWRlZCBieSB0aGUgYm90LiBZb3Ugd2lsbCBvbmx5IG5lZWQgdG8gZG8gdGhpcyBvbmNlIGFjcm9zcyBhbGwgcmVwb3MgdXNpbmcgb3VyIENMQS4KClRoaXMgcHJvamVjdCBoYXMgYWRvcHRlZCB0aGUgW01pY3Jvc29mdCBPcGVuIFNvdXJjZSBDb2RlIG9mIENvbmR1Y3RdKGh0dHBzOi8vb3BlbnNvdXJjZS5taWNyb3NvZnQuY29tL2NvZGVvZmNvbmR1Y3QvKS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBbQ29kZSBvZiBDb25kdWN0IEZBUV0oaHR0cHM6Ly9vcGVuc291cmNlLm1pY3Jvc29mdC5jb20vY29kZW9mY29uZHVjdC9mYXEvKSBvcgpjb250YWN0IFtvcGVuY29kZUBtaWNyb3NvZnQuY29tXShtYWlsdG86b3BlbmNvZGVAbWljcm9zb2Z0LmNvbSkgd2l0aCBhbnkgYWRkaXRpb25hbCBxdWVzdGlvbnMgb3IgY29tbWVudHMuCgojIyBUcmFkZW1hcmtzCgpUaGlzIHByb2plY3QgbWF5IGNvbnRhaW4gdHJhZGVtYXJrcyBvciBsb2dvcyBmb3IgcHJvamVjdHMsIHByb2R1Y3RzLCBvciBzZXJ2aWNlcy4gQXV0aG9yaXplZCB1c2Ugb2YgTWljcm9zb2Z0CnRyYWRlbWFya3Mgb3IgbG9nb3MgaXMgc3ViamVjdCB0byBhbmQgbXVzdCBmb2xsb3cKW01pY3Jvc29mdCdzIFRyYWRlbWFyayAmIEJyYW5kIEd1aWRlbGluZXNdKGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vbGVnYWwvaW50ZWxsZWN0dWFscHJvcGVydHkvdHJhZGVtYXJrcy91c2FnZS9nZW5lcmFsKS4KVXNlIG9mIE1pY3Jvc29mdCB0cmFkZW1hcmtzIG9yIGxvZ29zIGluIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoaXMgcHJvamVjdCBtdXN0IG5vdCBjYXVzZSBjb25mdXNpb24gb3IgaW1wbHkgTWljcm9zb2Z0IHNwb25zb3JzaGlwLgpBbnkgdXNlIG9mIHRoaXJkLXBhcnR5IHRyYWRlbWFya3Mgb3IgbG9nb3MgYXJlIHN1YmplY3QgdG8gdGhvc2UgdGhpcmQtcGFydHkncyBwb2xpY2llcy4K + readmeEtag: '"efcd984e6b4fabba41b583d3d67db2a0162cc17980ecd4b3939c23f89b248c07"' + readmeLastModified: Tue, 08 Aug 2023 15:47:29 GMT repositoryId: 323665366 description: OpenAPI based HTTP Client code generator created: '2020-12-22T15:35:49Z' - updated: '2023-08-06T12:00:48Z' + updated: '2023-08-08T21:13:36Z' language: C# archived: false - stars: 773 + stars: 776 watchers: 31 forks: 88 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"89fadf0838227f3064c48543fba99ec5193fd4d3a66be2cb4c8abd1cb898a8a0"' - repoLastModified: Sun, 06 Aug 2023 12:00:48 GMT + repoEtag: '"905994f78cbba80097c83808210063e2dbfc6604430bacc8c2f05bffb73c13f7"' + repoLastModified: Tue, 08 Aug 2023 21:13:36 GMT foundInMaster: true - source: https://openapi.tools/ name: FabriKt @@ -1048,17 +1048,17 @@ repositoryId: 353317141 description: Bump.sh CLI - Deploy your OpenAPI & AsyncAPI documentations from your CI created: '2021-03-31T10:29:18Z' - updated: '2023-07-27T01:48:17Z' + updated: '2023-08-08T23:03:21Z' language: TypeScript archived: false - stars: 24 + stars: 26 watchers: 5 forks: 1 owner: bump-sh logo: https://avatars.githubusercontent.com/u/33217836?v=4 license: MIT - repoEtag: '"ab84fccbccb96ca5f500e993fbb3c77814e7838ea42b1d74971cf0d381804eea"' - repoLastModified: Thu, 27 Jul 2023 01:48:17 GMT + repoEtag: '"ae44b8959381ce866974cd2c9f990b05241e7b31e2c5de6ee9e1eb0fe5b8c56f"' + repoLastModified: Tue, 08 Aug 2023 23:03:21 GMT foundInMaster: true category: - Documentation @@ -1147,17 +1147,17 @@ repositoryId: 190430086 description: VisualStudio Code OpenAPI tools created: '2019-06-05T16:27:53Z' - updated: '2023-07-31T09:07:36Z' + updated: '2023-08-08T07:52:42Z' language: TypeScript archived: false - stars: 266 + stars: 267 watchers: 9 forks: 42 owner: 42Crunch logo: https://avatars.githubusercontent.com/u/25365245?v=4 license: AGPL-3.0 - repoEtag: '"a4ba5a8c56b2b2d415df7a7cc07660417f5e5d1e1afd2e6f3cb23dfa94fdf557"' - repoLastModified: Mon, 31 Jul 2023 09:07:36 GMT + repoEtag: '"4c183e78e18aed93bd8be6c1c8b5d114310671e3cef005ad197623b3f3aef1b6"' + repoLastModified: Tue, 08 Aug 2023 07:52:42 GMT foundInMaster: true id: 782ecbb10f1ff8ac9685e0ed24e52e58 - source: @@ -1247,17 +1247,17 @@ repositoryId: 19390712 description: Swagger Editor created: '2014-05-02T22:47:10Z' - updated: '2023-08-06T23:56:49Z' + updated: '2023-08-08T10:49:11Z' language: JavaScript archived: false - stars: 8294 + stars: 8297 watchers: 259 - forks: 2183 + forks: 2182 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"c436dc025f9a169f46867676620d102c5a1c539bf2bf63f942c8cdc219ee53f6"' - repoLastModified: Sun, 06 Aug 2023 23:56:49 GMT + repoEtag: '"1103a7a84806df037adea085366b3230303c0062a6e278e2dc2073abbc66df60"' + repoLastModified: Tue, 08 Aug 2023 10:49:11 GMT foundInMaster: true id: 951cf61d12c812ef9b201ad76b5d278d v3_1: true @@ -1468,7 +1468,7 @@ owner: Apicurio logo: https://avatars.githubusercontent.com/u/28107283?v=4 license: Apache-2.0 - repoEtag: '"6dca35bee9a2e32913bcf519ead1c9a35883111251ea3cd82c3f93ab769261c5"' + repoEtag: '"2e34b606e5f84e863aa0fe882a1b57755ba5051b5ea38ff0a7c306b0e7a980d4"' repoLastModified: Thu, 03 Aug 2023 03:13:31 GMT foundInMaster: true homepage: https://github.com/Apicurio/apicurio-studio @@ -1672,17 +1672,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: '2023-08-07T20:52:30Z' + updated: '2023-08-08T11:46:10Z' language: TypeScript archived: false - stars: 3673 + stars: 3674 watchers: 52 forks: 308 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"03a007204021cf6abfc30824e2de1fca3640b1bf10eba225b5fc800f4519e524"' - repoLastModified: Mon, 07 Aug 2023 20:52:30 GMT + repoEtag: '"de1302e48b643398e9439f01a8a6e660e34021bcf3dd755994658e551098db32"' + repoLastModified: Tue, 08 Aug 2023 11:46:10 GMT foundInMaster: true id: 15aad8cd322242e03733b07f2a37890a - source: https://openapi.tools/ @@ -1751,17 +1751,17 @@ Kubernetes native tool for mocking and testing API and micro-services. Microcks is a Cloud Native Computing Sandbox project 🚀 created: '2015-02-23T15:46:09Z' - updated: '2023-08-05T01:33:44Z' + updated: '2023-08-08T09:57:23Z' language: Java archived: false - stars: 909 + stars: 910 watchers: 25 forks: 164 owner: microcks logo: https://avatars.githubusercontent.com/u/11051048?v=4 license: Apache-2.0 - repoEtag: '"96699d08afa06183470b3a255b85581f21d0391fc9f0c0830415631171a60e47"' - repoLastModified: Sat, 05 Aug 2023 01:33:44 GMT + repoEtag: '"ee6d656c225f396357941a535e0fb40931f91f8548d3dd343d7840c5f509d752"' + repoLastModified: Tue, 08 Aug 2023 09:57:23 GMT foundInMaster: true id: 1c0e918b5a733b0f1726199e3ea101d6 - source: @@ -1958,17 +1958,17 @@ repositoryId: 61366800 description: Build OpenAPI-compliant REST APIs using TypeScript and Node created: '2016-06-17T10:42:50Z' - updated: '2023-08-05T19:54:25Z' + updated: '2023-08-08T14:40:39Z' language: TypeScript archived: false - stars: 2806 + stars: 2809 watchers: 23 forks: 439 owner: lukeautry logo: https://avatars.githubusercontent.com/u/8770560?v=4 license: MIT - repoEtag: '"b047ffc2d9537cd48a084b764fb9fa888f5e305b5b50f4c1b2c5796da2f5a1dd"' - repoLastModified: Sat, 05 Aug 2023 19:54:25 GMT + repoEtag: '"256063ea5f4e79f83bccce0ab417afd83c34e9e1815681532df0d3b2e913ebee"' + repoLastModified: Tue, 08 Aug 2023 14:40:39 GMT foundInMaster: true id: 2529db76d3d9f042b0c624f65b13fc41 - source: https://openapi.tools/ @@ -2005,7 +2005,7 @@ owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"0c7c70f2d5c093641d803e46fe3834bac3a80c349e22ffbd21aeb475175d724a"' + repoEtag: '"d718b1b8ba1518dabd71b55284e629e01e11db007f3caf16c894de75dc5e542d"' repoLastModified: Mon, 07 Aug 2023 16:27:11 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 @@ -2139,17 +2139,17 @@ repositoryId: 154916760 description: Build, Validate, Route, Authenticate and Mock using OpenAPI created: '2018-10-27T02:31:25Z' - updated: '2023-07-28T06:36:25Z' + updated: '2023-08-08T18:18:17Z' language: TypeScript archived: false - stars: 478 + stars: 479 watchers: 6 forks: 80 owner: anttiviljami logo: https://avatars.githubusercontent.com/u/6105650?v=4 license: MIT - repoEtag: '"124dc2e75b6c8a5e66334e23dedcffc2d5b34681eb75f7fdd708a07fab265318"' - repoLastModified: Fri, 28 Jul 2023 06:36:25 GMT + repoEtag: '"1c8a612f23778ababc4552587256edf4339a82cdd8e985cbb1ae0882c2536879"' + repoLastModified: Tue, 08 Aug 2023 18:18:17 GMT foundInMaster: true id: 834358bb85562c1924ccb7c20fb421f5 - source: https://openapi.tools/ @@ -2173,17 +2173,17 @@ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time. created: '2015-03-06T21:46:05Z' - updated: '2023-08-06T18:54:53Z' + updated: '2023-08-08T22:26:21Z' language: TypeScript archived: false - stars: 7989 + stars: 7995 watchers: 221 forks: 953 owner: api-platform logo: https://avatars.githubusercontent.com/u/13420081?v=4 license: MIT - repoEtag: '"9adcaff0cfefd8ae1cb89c08b51ff226a8c3c0851331206792605ddea71e666b"' - repoLastModified: Sun, 06 Aug 2023 18:54:53 GMT + repoEtag: '"a1061877371ecb88355b7863cd2d0a4c9fba0aebf60857b894e597c691b0ccda"' + repoLastModified: Tue, 08 Aug 2023 22:26:21 GMT foundInMaster: true id: d14f5904300aabf1ceef4660a6b3d57e - source: https://openapi.tools/ @@ -2239,17 +2239,17 @@ repositoryId: 39904377 description: Open source API management platform created: '2015-07-29T16:34:52Z' - updated: '2023-08-07T20:17:45Z' + updated: '2023-08-08T23:42:01Z' language: PHP archived: false - stars: 1504 + stars: 1510 watchers: 57 forks: 199 owner: apioo logo: https://avatars.githubusercontent.com/u/18172950?v=4 license: Apache-2.0 - repoEtag: '"8a0c9bf684fd857574ddec71ca1a6811bb17f94c66892938c92c7ffa2ddbf554"' - repoLastModified: Mon, 07 Aug 2023 20:17:45 GMT + repoEtag: '"913a56618af7110605ee99ca1e34806a60b5c237b96220a4b454c49895ccd93f"' + repoLastModified: Tue, 08 Aug 2023 23:42:01 GMT foundInMaster: true id: 5458da680012a142d20e79ac150bc4ab - source: @@ -2341,17 +2341,17 @@ repositoryId: 105440153 description: 'OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:' created: '2017-10-01T12:20:24Z' - updated: '2023-08-07T05:51:06Z' + updated: '2023-08-08T05:13:15Z' language: TypeScript archived: false - stars: 1438 + stars: 1439 watchers: 31 forks: 385 owner: nestjs logo: https://avatars.githubusercontent.com/u/28507035?v=4 license: MIT - repoEtag: '"9c22b9d60f8aa1b7ddeb82e61bb705b41de08a3f0a0cf2f3b547dfce6a38e4fe"' - repoLastModified: Mon, 07 Aug 2023 05:51:06 GMT + repoEtag: '"d765c7b3d0154872b7c9d14bdce80ca8b125a046b18c1b44bab7fc00cf72f107"' + repoLastModified: Tue, 08 Aug 2023 05:13:15 GMT foundInMaster: true id: 7071babd9853fc901c5decfa9b465b67 - source: @@ -2559,17 +2559,17 @@ Port OpenAPI Specs to Postman Collections, inject test suite and run via Newman 👨🏽‍🚀 created: '2021-05-05T10:42:29Z' - updated: '2023-08-01T13:53:08Z' + updated: '2023-08-08T20:52:32Z' language: TypeScript archived: false - stars: 569 + stars: 570 watchers: 12 forks: 51 owner: apideck-libraries logo: https://avatars.githubusercontent.com/u/73573473?v=4 license: Apache-2.0 - repoEtag: '"580302b19e5780545bd37c73f7bdacbdb04723234969f6b8afee6931f30e280b"' - repoLastModified: Tue, 01 Aug 2023 13:53:08 GMT + repoEtag: '"6b2f911ee15fa1350a0d476d4a4d876cbe7337506a6b01f0817300c30d190386"' + repoLastModified: Tue, 08 Aug 2023 20:52:32 GMT foundInMaster: true id: a03cdb329f630a946a946dfe26802c43 - source: @@ -2640,17 +2640,17 @@ baked in support for OpenAPI v3.1, v3.0, and v2.0 as well as AsyncAPI v2.x. created: '2018-08-15T18:43:18Z' - updated: '2023-08-07T19:01:18Z' + updated: '2023-08-08T17:22:04Z' language: TypeScript archived: false - stars: 1995 + stars: 1996 watchers: 30 forks: 196 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"bb0793d16d9706e31f76ab7ca6639b8eabb63116bfb185026ae3bffcf37af639"' - repoLastModified: Mon, 07 Aug 2023 19:01:18 GMT + repoEtag: '"c98ef410534ab4810f965ca7b7209975332f4f692cc743be042f33bd640c86c7"' + repoLastModified: Tue, 08 Aug 2023 17:22:04 GMT foundInMaster: true id: fab3cc58898cd8953a30e43cc622e0fe - source: https://openapi.tools/ @@ -2709,11 +2709,11 @@ archived: false stars: 395 watchers: 21 - forks: 87 + forks: 90 owner: IBM logo: https://avatars.githubusercontent.com/u/1459110?v=4 license: Apache-2.0 - repoEtag: '"f348c6121448d84c74decf2e8e1b731b1955c37862351fbaa3dd74d85df39de9"' + repoEtag: '"b5c9a59af776095e36b496d7c8e7263adddc2c0557cf9c5108a2fef2a4429c01"' repoLastModified: Mon, 07 Aug 2023 19:54:57 GMT foundInMaster: true id: 0bf7dd29a9d07232135bb00764928296 @@ -2744,7 +2744,7 @@ owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"bd53d3403ab0b46a78dae9da38d5a539a25e2923eb3863808dc6e71020add246"' + repoEtag: '"a430654190ff3c1da61e23a5f4bfc1a5436ffbd7871fd46449f2fc81d106d303"' repoLastModified: Sun, 06 Aug 2023 16:37:02 GMT category: - Description Validators @@ -2918,17 +2918,17 @@ repositoryId: 18997610 description: Swagger Spec to Java POJOs created: '2014-04-21T16:00:22Z' - updated: '2023-07-31T17:13:20Z' + updated: '2023-08-08T07:03:16Z' language: Java archived: false - stars: 694 + stars: 695 watchers: 47 forks: 500 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"f788c18ad84b404ec700c8f4c2fbc0da3e9a6247ed55dc113d20409bf67d3a71"' - repoLastModified: Mon, 31 Jul 2023 17:13:20 GMT + repoEtag: '"f07871d6fad54deda9d43fed83f3ba477530854ce8a426cf66a1ba6f773ef6d1"' + repoLastModified: Tue, 08 Aug 2023 07:03:16 GMT foundInMaster: true id: 45f46a8f7ac698cfe3926303bf3dff9d v3_1_link: https://github.com/swagger-api/swagger-parser/pull/1730 @@ -3114,17 +3114,17 @@ OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting, validation, and more) created: '2017-06-11T20:12:06Z' - updated: '2023-08-07T04:47:19Z' + updated: '2023-08-08T03:43:11Z' language: Go archived: false - stars: 2039 + stars: 2040 watchers: 19 forks: 358 owner: getkin logo: https://avatars.githubusercontent.com/u/40365715?v=4 license: MIT - repoEtag: '"6a9bbfd324c5d6c60ca9aa49c14650e0dace757b0f2c7a4df91def1340f7e222"' - repoLastModified: Mon, 07 Aug 2023 04:47:19 GMT + repoEtag: '"673d65797cd272a62f45c33caf65f03cb45715d30e238a71c1fb6d2d92dc1dfb"' + repoLastModified: Tue, 08 Aug 2023 03:43:11 GMT foundInMaster: true v2: true id: f6838ce08e87fa4c3dc813c97193ece3 @@ -3186,17 +3186,17 @@ Read and write OpenAPI yaml/json files and make the content accessible in PHP objects. created: '2018-10-23T10:46:11Z' - updated: '2023-08-01T22:58:13Z' + updated: '2023-08-08T10:29:11Z' language: PHP archived: false - stars: 440 + stars: 441 watchers: 24 forks: 79 owner: cebe logo: https://avatars.githubusercontent.com/u/189796?v=4 license: MIT - repoEtag: '"65042ff7acd8f8c02b9412efd22680e33e84b2215272e5db62a8e2227078963c"' - repoLastModified: Tue, 01 Aug 2023 22:58:13 GMT + repoEtag: '"f236ce37870aa838b97d8af99137c17caa1e3907b57d89c1c6104481fd2ec8bc"' + repoLastModified: Tue, 08 Aug 2023 10:29:11 GMT foundInMaster: true v3_1_link: https://github.com/cebe/php-openapi/pull/128 id: 3a26d5049f03c42cb9771c179db0f35f @@ -3312,17 +3312,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: '2023-08-07T20:14:14Z' + updated: '2023-08-08T18:31:03Z' language: C# archived: false - stars: 1178 + stars: 1180 watchers: 65 forks: 198 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"42b3a4a689cc48ee9d9d79017a8e74bb6df45ff979c4e43c44cbf7677f1b5065"' - repoLastModified: Mon, 07 Aug 2023 20:14:14 GMT + repoEtag: '"1251e527339b42e481eb867f9c0fafe0216b9d0713084ba2d4cb3c590be159ff"' + repoLastModified: Tue, 08 Aug 2023 18:31:03 GMT foundInMaster: true id: 1066748bb5b1f114a70856a29fee4aa7 - source: @@ -3517,17 +3517,17 @@ repositoryId: 26726495 description: Swagger 2.0 implementation for go created: '2014-11-16T20:13:15Z' - updated: '2023-08-07T15:10:38Z' + updated: '2023-08-09T01:07:36Z' language: Go archived: false - stars: 8792 + stars: 8793 watchers: 120 - forks: 1220 + forks: 1221 owner: go-swagger logo: https://avatars.githubusercontent.com/u/10362650?v=4 license: Apache-2.0 - repoEtag: '"e19df0ef2809251f061b181ddce2e851f515e19a6cf91144b2b6a80a5eac79ac"' - repoLastModified: Mon, 07 Aug 2023 15:10:38 GMT + repoEtag: '"94cc8b0a9f48142954dce9440148972c29f1e54cdf2c3f4993c350c0236e32c6"' + repoLastModified: Wed, 09 Aug 2023 01:07:36 GMT foundInMaster: true id: ef136df9ffb40bb33ccbd76665d8f5b4 - source: @@ -3584,17 +3584,17 @@ repositoryId: 41822320 description: 'The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. ' created: '2015-09-02T19:11:57Z' - updated: '2023-08-05T16:12:22Z' + updated: '2023-08-08T21:08:40Z' language: C# archived: false - stars: 6012 + stars: 6013 watchers: 165 forks: 1135 owner: RicoSuter logo: https://avatars.githubusercontent.com/u/2603405?v=4 license: MIT - repoEtag: '"47577508a6eb32fae8b2b84f6b5fab65a8949b6577632ffcc7d3bbd09f14ca92"' - repoLastModified: Sat, 05 Aug 2023 16:12:22 GMT + repoEtag: '"718f3133ec81741e0cdd3d45cf205ebf046456ce8af9fb7f1991b2ca107c3ef3"' + repoLastModified: Tue, 08 Aug 2023 21:08:40 GMT foundInMaster: true id: 93636e95435e95198d7d15c9d507f0d3 - source: https://openapi.tools/ @@ -3657,17 +3657,17 @@ documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. created: '2011-07-06T14:26:48Z' - updated: '2023-08-08T00:31:13Z' + updated: '2023-08-08T22:49:06Z' language: Mustache archived: false - stars: 15884 + stars: 15888 watchers: 422 forks: 6000 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"f5afd4459c76a09361c9cfb1fa7a25025c28dd03bd79f379f38572e0a8beb8db"' - repoLastModified: Tue, 08 Aug 2023 00:31:13 GMT + repoEtag: '"a0b85560b4a025512961dd5616af5c14592ae9b4b8a1c41992ee85aa16e0a7fd"' + repoLastModified: Tue, 08 Aug 2023 22:49:06 GMT foundInMaster: true id: eda1e66e1b7805496e42f57851791a32 - source: https://openapi.tools/ @@ -3792,17 +3792,17 @@ repositoryId: 81140437 description: 🚀 Automatic SDK generation from an OpenAPI definition created: '2017-02-06T22:31:07Z' - updated: '2023-08-05T20:37:07Z' + updated: '2023-08-08T11:31:41Z' language: TypeScript archived: false - stars: 366 + stars: 365 watchers: 20 forks: 19 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT - repoEtag: '"89b5b27c9450eb36549ce75016a3e94e6be83683bf3676c8427e330e2b77b196"' - repoLastModified: Sat, 05 Aug 2023 20:37:07 GMT + repoEtag: '"fc7171f98ab80041b9e248eb0f825316a2aa23a1744228e5d32462773634a957"' + repoLastModified: Tue, 08 Aug 2023 11:31:41 GMT foundInMaster: true - source: https://openapi.tools/ name: oas-normalize @@ -4112,7 +4112,7 @@ owner: EMResearch logo: https://avatars.githubusercontent.com/u/29148026?v=4 license: LGPL-3.0 - repoEtag: '"673d27e14d7c7d554e5af7aefc6e6458c99a360753744bd670b498fde738f80c"' + repoEtag: '"3a5dc56cf6d0923132412d921cc6806290a1dc67a71dd60363f02c2a0f079e35"' repoLastModified: Mon, 07 Aug 2023 13:29:16 GMT foundInMaster: true id: eba0fd1e4a49eb507e337ad2266e9a16 @@ -4167,17 +4167,17 @@ Black-box fuzzer that fuzzes APIs based on OpenAPI specification. Find bugs for free! created: '2020-12-23T22:33:38Z' - updated: '2023-08-04T10:06:56Z' + updated: '2023-08-08T11:40:43Z' language: Rust archived: false - stars: 451 + stars: 453 watchers: 7 forks: 15 owner: matusf logo: https://avatars.githubusercontent.com/u/18228995?v=4 license: AGPL-3.0 - repoEtag: '"3e69186fafe3523ac21d8b96e2476464e6670b000de477c47aa371c603434d5f"' - repoLastModified: Fri, 04 Aug 2023 10:06:56 GMT + repoEtag: '"e420df02be230bdc096e7fdd8e07f742512a9626a38add57c58de3949ce20251"' + repoLastModified: Tue, 08 Aug 2023 11:40:43 GMT id: 9e0191ba47403298459b30242dbfe9ad - source: https://openapi.tools/ name: cats @@ -4217,7 +4217,7 @@ owner: Endava logo: https://avatars.githubusercontent.com/u/19396140?v=4 license: Apache-2.0 - repoEtag: '"64e398b59cb5bfbff7422cf62a1e3fe38a92450f49196f98077b2563bce8f2d5"' + repoEtag: '"946104473bd2ed8ddb5d637da859960ee06b4ff660ccdafec70292daabe8662d"' repoLastModified: Thu, 03 Aug 2023 04:28:25 GMT foundInMaster: true - source: https://openapi.tools/ @@ -4256,17 +4256,17 @@ Due to the OpenAPI v3.0 and JSON Schema discrepancy, you can use this JS library to convert OpenAPI Schema objects to proper JSON Schema. created: '2020-01-17T21:37:32Z' - updated: '2023-08-05T07:29:04Z' + updated: '2023-08-08T14:52:11Z' language: TypeScript archived: false - stars: 177 + stars: 179 watchers: 6 forks: 18 owner: openapi-contrib logo: https://avatars.githubusercontent.com/u/49447320?v=4 license: MIT - repoEtag: '"715135cc8f94eef9cb8fe880dbf73abdc0fdc4592e89d4f113556e27c936cf4c"' - repoLastModified: Sat, 05 Aug 2023 07:29:04 GMT + repoEtag: '"124908a8ebf51d1f8c4f507f07b616d434ded4f6e8cb73a0468886312ab2c52b"' + repoLastModified: Tue, 08 Aug 2023 14:52:11 GMT foundInMaster: true id: f6608d418f20d73a1e15b74206edd45a - source: https://openapi.tools/ @@ -4569,7 +4569,7 @@ owner: codekie logo: https://avatars.githubusercontent.com/u/1512840?v=4 license: MIT - repoEtag: '"0ce4f3388c6e75634bdd00c7ff9214cb9b764b92fbbe2a2676182011ee9139ac"' + repoEtag: '"8feb16e34f5a1b7c8b34eca6b88f4d1b6c9b42b493dbdda2b271018372e14e7e"' repoLastModified: Thu, 13 Jul 2023 09:06:29 GMT foundInMaster: true id: 301e3f380f248daf345a88c8971d2a71 @@ -4599,12 +4599,12 @@ language: JavaScript archived: false stars: 765 - watchers: 24 + watchers: 23 forks: 191 owner: postmanlabs logo: https://avatars.githubusercontent.com/u/10251060?v=4 license: Apache-2.0 - repoEtag: '"289490bc302a85040c3870d89c75da6e862165b53877b450c671fe407449a81a"' + repoEtag: '"3ec00dab1407e91d8bd6e5e64881949c8ffa0596267687690d6872cfe26a7e35"' repoLastModified: Tue, 08 Aug 2023 00:39:14 GMT foundInMaster: true id: 31b717a2084e3d92f6cda2c33484c789 @@ -4638,11 +4638,11 @@ archived: false stars: 60 watchers: 3 - forks: 13 + forks: 12 owner: thim81 logo: https://avatars.githubusercontent.com/u/952446?v=4 license: MIT - repoEtag: '"e014d510e118bd991b077291622580c3c139a15ce6bae33bf2d8d87613573cba"' + repoEtag: '"02c4c44cbdb8c59471ecd2086f1380d1bc70455d32c8dacaf8d2844d369c1504"' repoLastModified: Wed, 12 Jul 2023 09:35:47 GMT foundInMaster: true id: 788dd625de099d0d3403fe30067f3743 @@ -4674,11 +4674,11 @@ archived: false stars: 67 watchers: 2 - forks: 7 + forks: 8 owner: github logo: https://avatars.githubusercontent.com/u/9919?v=4 license: MIT - repoEtag: '"5b98cc31cfe0f1886c78c0f0593a37a98655761811e37fddc4c44b203157610d"' + repoEtag: '"a91166c631271dfb727d5717c864f7281d173edabd0e7fdb2acfddb27c639123"' repoLastModified: Mon, 31 Jul 2023 22:32:59 GMT foundInMaster: true id: ec6a7a1e4a69a9beeb95bdebb88cb36d @@ -4704,17 +4704,17 @@ repositoryId: 4238977 description: Automated JSON API documentation for API's built with Spring created: '2012-05-06T06:38:57Z' - updated: '2023-08-07T07:07:33Z' + updated: '2023-08-08T11:11:12Z' language: Java archived: false - stars: 5844 + stars: 5843 watchers: 271 forks: 1542 owner: springfox logo: https://avatars.githubusercontent.com/u/11529357?v=4 license: Apache-2.0 - repoEtag: '"8652f25cb843750e5a164722b98a1bb80a587ee51f2492a1f8db22f9d5236165"' - repoLastModified: Mon, 07 Aug 2023 07:07:33 GMT + repoEtag: '"33cffaff342a7617a8cc078d798e1498fbbc471741673829f7c19673e7ee19fa"' + repoLastModified: Tue, 08 Aug 2023 11:11:12 GMT foundInMaster: true id: 2addde4c497bf582f20025ccac2cda86 - source: @@ -4772,17 +4772,17 @@ repositoryId: 36817565 description: The ZAP core project created: '2015-06-03T16:55:01Z' - updated: '2023-08-07T21:45:35Z' + updated: '2023-08-09T02:43:56Z' language: Java archived: false - stars: 11109 + stars: 11114 watchers: 398 - forks: 2109 + forks: 2110 owner: zaproxy logo: https://avatars.githubusercontent.com/u/6716868?v=4 license: Apache-2.0 - repoEtag: '"602d12b05c763448c19c24f2d2d93db232e45b8b3c75844c66ef384e64273cdd"' - repoLastModified: Mon, 07 Aug 2023 21:45:35 GMT + repoEtag: '"27ac1e59ee6901dae12de9d25bd4c125d0ce3b885940b72afe1b5fe44d33e7f8"' + repoLastModified: Wed, 09 Aug 2023 02:43:56 GMT foundInMaster: true id: 9eedc1be44837a65f912bcf562844f39 - source: https://openapi.tools/ @@ -5033,17 +5033,17 @@ repositoryId: 1431547 description: Web APIs for Django. 🎸 created: '2011-03-02T17:13:56Z' - updated: '2023-08-08T03:09:39Z' + updated: '2023-08-08T18:50:55Z' language: Python archived: false - stars: 26077 + stars: 26079 watchers: 615 - forks: 6650 + forks: 6651 owner: encode logo: https://avatars.githubusercontent.com/u/19159390?v=4 license: NOASSERTION - repoEtag: '"bbaa40004463d487d506631c96091406e866504f72dd2197d123d1ec67a1aafd"' - repoLastModified: Tue, 08 Aug 2023 03:09:39 GMT + repoEtag: '"556a688fae1893df3269a9217b5c636bb62d73ac067d7773ed2bfa42c6cfcaba"' + repoLastModified: Tue, 08 Aug 2023 18:50:55 GMT foundInMaster: true id: fb8994c078a380cc3510b024f6ed1202 category: Server Implementations @@ -5224,17 +5224,17 @@ repositoryId: 240776275 description: Generate modern Python clients from OpenAPI created: '2020-02-15T19:33:46Z' - updated: '2023-08-07T18:25:28Z' + updated: '2023-08-09T01:48:17Z' language: Python archived: false - stars: 783 + stars: 785 watchers: 13 - forks: 149 + forks: 150 owner: openapi-generators logo: https://avatars.githubusercontent.com/u/84925606?v=4 license: MIT - repoEtag: '"9b5c7ddb091dc2f8401016c018a542cff498b45d16c27909773d6d8343840219"' - repoLastModified: Mon, 07 Aug 2023 18:25:28 GMT + repoEtag: '"fc1d86ab2f6f7e9dbd0172af9f4e7f6fe15464969ba29ae172834dc137514e8e"' + repoLastModified: Wed, 09 Aug 2023 01:48:17 GMT foundInMaster: true id: 784ec4adac4e47e4211ea74ef36dd5a5 - source: @@ -5272,7 +5272,7 @@ owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"cdce7d217fbe6350174b70c7c3027661fc329b45593c4fb1717dad0248a10170"' + repoEtag: '"506a06eb1672fbd276d56ba0a5504aafdec7af29152c7a79074e73d453b266c6"' repoLastModified: Mon, 07 Aug 2023 18:32:30 GMT foundInMaster: true id: 2f94cc1fc980953b17a9979d4ff2e7ec @@ -5497,7 +5497,7 @@ owner: Embraser01 logo: https://avatars.githubusercontent.com/u/8802277?v=4 license: MIT - repoEtag: '"98031cb3171489e98dd66afebf92db5513bd835f2f90f2d207e55776481a72b9"' + repoEtag: '"3039830a3c8bff8aabfd1602de957d28d7b83d329d694e51f4dc7ca9a55262b2"' repoLastModified: Sun, 06 Aug 2023 21:55:48 GMT foundInMaster: true category: @@ -5598,17 +5598,17 @@ (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in yaml or json formats. 🍺 created: '2020-02-05T08:31:50Z' - updated: '2023-08-07T09:31:19Z' + updated: '2023-08-08T18:57:40Z' language: TypeScript archived: false - stars: 1551 + stars: 1555 watchers: 6 - forks: 179 + forks: 180 owner: anymaniax logo: https://avatars.githubusercontent.com/u/10516382?v=4 license: MIT - repoEtag: '"65f27de03da3aecad949fe509a879eaaa2fcc74777c263f80a6d8da18e70f3ae"' - repoLastModified: Mon, 07 Aug 2023 09:31:19 GMT + repoEtag: '"5f7a17772c644d2e10d55dd5b1d33f2411f83a913a461f15d1a9d84c7988b5b8"' + repoLastModified: Tue, 08 Aug 2023 18:57:40 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -5706,7 +5706,7 @@ owner: pmcelhaney logo: https://avatars.githubusercontent.com/u/51504?v=4 license: MIT - repoEtag: '"bde10d5a0964576f0ea92700e3daa78abfb73ec07529e5b60971cbd511835fac"' + repoEtag: '"0d5afa23baf4e0e601c216080268513605f1bcc680b9c786ccd4e61ff628426f"' repoLastModified: Sun, 30 Jul 2023 21:00:58 GMT category: - Parsers @@ -5759,17 +5759,17 @@ you can think. vacuum is compatible with Spectral rulesets and generates compatible reports. created: '2021-10-10T18:24:19Z' - updated: '2023-08-07T04:33:12Z' + updated: '2023-08-09T00:11:05Z' language: Go archived: false - stars: 243 + stars: 244 watchers: 4 forks: 19 owner: daveshanley logo: https://avatars.githubusercontent.com/u/187345?v=4 license: MIT - repoEtag: '"3b6cb1655b412373f3890c22e184db7a7efbf54c1cfdec4b3907a35e343f2a4f"' - repoLastModified: Mon, 07 Aug 2023 04:33:12 GMT + repoEtag: '"e26f4edc7d31ddb83cc202297a1d2446f2eac4ef62871048337b400d0e26cd40"' + repoLastModified: Wed, 09 Aug 2023 00:11:05 GMT foundInMaster: true category: - Description Validators @@ -5827,17 +5827,17 @@ repositoryId: 161691324 description: Generate TypeScript types from OpenAPI 3 specs created: '2018-12-13T20:28:01Z' - updated: '2023-08-08T00:33:33Z' + updated: '2023-08-08T17:12:31Z' language: TypeScript archived: false - stars: 3343 + stars: 3347 watchers: 25 forks: 290 owner: drwpow logo: https://avatars.githubusercontent.com/u/1369770?v=4 license: MIT - repoEtag: '"4e49a5b6a7c1a8d98b981cc9aa7f77c18fdce05a2d56cd7d395502e4079c8286"' - repoLastModified: Tue, 08 Aug 2023 00:33:33 GMT + repoEtag: '"bced63fe3f5c4d52965f522acd546e58e7cdb658190f3c4997fc0c63b0e215d8"' + repoLastModified: Tue, 08 Aug 2023 17:12:31 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -5856,17 +5856,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: '2023-08-07T21:05:58Z' + updated: '2023-08-08T03:39:33Z' language: Go archived: false - stars: 144 + stars: 145 watchers: 3 forks: 26 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"e162bc97043126285bee774f3c243a310cf905d3e1518b7ea718c631b3aa1c47"' - repoLastModified: Mon, 07 Aug 2023 21:05:58 GMT + repoEtag: '"6a28a5bb77dcb8a81950cd8c8e58e4208e89e45b5a61ce6dfd791b6c1e9bd0f9"' + repoLastModified: Tue, 08 Aug 2023 03:39:33 GMT category: Parsers foundInMaster: true name: libopenapi @@ -5976,17 +5976,17 @@ repositoryId: 331034649 description: ABAP OpenAPI Client and Server generator in ABAP created: '2021-01-19T16:03:52Z' - updated: '2023-07-06T10:15:40Z' + updated: '2023-08-08T15:44:43Z' language: ABAP archived: false stars: 55 - watchers: 11 + watchers: 10 forks: 6 owner: abap-openapi logo: https://avatars.githubusercontent.com/u/77685491?v=4 license: MIT - repoEtag: '"42a924e040cb87c6166a124eb1649de848c7aaaec7529f6b1056c48da8f36f69"' - repoLastModified: Thu, 06 Jul 2023 10:15:40 GMT + repoEtag: '"c9ae16c5f53a767b758e453ba6a2a7c07397f13ac5b30d01ebca8e9a2cdb5085"' + repoLastModified: Tue, 08 Aug 2023 15:44:43 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -6155,17 +6155,17 @@ OpenAPI specs, or a single spec over time. Supports OpenAPI 3.1, 3.0 and Swagger created: '2022-11-28T16:53:14Z' - updated: '2023-08-06T21:35:37Z' + updated: '2023-08-08T03:39:51Z' language: Go archived: false - stars: 33 + stars: 34 watchers: 1 forks: 5 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"3a406e1be24943b4962dcf13b1afba00e2914dee3a9edb30b382586493bc17cc"' - repoLastModified: Sun, 06 Aug 2023 21:35:37 GMT + repoEtag: '"e11504abef584f44514fcfadfd0e23ad85677b6cd09f1ab35e2ea984a6c68d5b"' + repoLastModified: Tue, 08 Aug 2023 03:39:51 GMT category: - Data Validators - Testing @@ -6302,11 +6302,11 @@ archived: false stars: 7 watchers: 1 - forks: 3 + forks: 4 owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT - repoEtag: '"535684fb5a39f6fba894285eaefcd72c69af1f8979f627cb70be3dae045caf3f"' + repoEtag: '"ed98b523d387567260cf51bc7a93e19b9ddf38de7555a5f875226bc7363f537f"' repoLastModified: Thu, 13 Jul 2023 17:01:03 GMT foundInMaster: true category: Parsers @@ -6372,7 +6372,7 @@ owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT - repoEtag: '"9557c89c9283204730b285fdc3ca5b63ac578f6f62d2eadfcc3329d1196a4b5d"' + repoEtag: '"22a9e3303b7c1f2c36522ebcda663527dae7577accf77b82c379fb4900fbc7fb"' repoLastModified: Tue, 18 Jul 2023 09:31:40 GMT foundInMaster: true - source: https://openapi.tools/ @@ -6404,7 +6404,7 @@ owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT - repoEtag: '"333d60aa8248e706d30b7b8c0de494b156960ea495d43ea5e754de501da8a259"' + repoEtag: '"fc1be4dc4cdcd8bb2999818978f271e615d4da0b215cfc086c3077e5586a2505"' repoLastModified: Thu, 20 Jul 2023 19:41:49 GMT foundInMaster: true - source: https://openapi.tools/ @@ -6430,17 +6430,17 @@ repositoryId: 29151578 description: Seamlessly adds a Swagger to Rails-based API's created: '2015-01-12T19:08:10Z' - updated: '2023-08-07T09:03:27Z' + updated: '2023-08-08T05:22:56Z' language: Ruby archived: false - stars: 1718 + stars: 1719 watchers: 28 forks: 385 owner: rswag logo: https://avatars.githubusercontent.com/u/55741034?v=4 license: MIT - repoEtag: '"4a40f674d448d1172e0e59f5022624db687bb32f9c59bea8ad1211a57c12719e"' - repoLastModified: Mon, 07 Aug 2023 09:03:27 GMT + repoEtag: '"93df1b4a667360dbb93dd2a397f0b8493f85a2a4a1c49e8e1b3bac4e3b584286"' + repoLastModified: Tue, 08 Aug 2023 05:22:56 GMT foundInMaster: true - source: https://openapi.tools/ name: Fern @@ -6463,17 +6463,17 @@ repositoryId: 476820102 description: Generate SDKs and Documentation for your API created: '2022-04-01T17:56:54Z' - updated: '2023-08-08T02:55:59Z' + updated: '2023-08-09T03:05:43Z' language: TypeScript archived: false - stars: 1658 + stars: 1669 watchers: 11 - forks: 59 + forks: 58 owner: fern-api logo: https://avatars.githubusercontent.com/u/102944815?v=4 license: MIT - repoEtag: '"bdb2c0640674242adf7d8b273dead62923e1d9b6d9f26d75e66e8997dfa73d9a"' - repoLastModified: Tue, 08 Aug 2023 02:55:59 GMT + repoEtag: '"f5984a5a8c3ef3d967fc15d55c79e5efcfd7a4724abb6656b6320b36ef9b409c"' + repoLastModified: Wed, 09 Aug 2023 03:05:43 GMT foundInMaster: true - source: openapi3 tags name: FastAPI @@ -6495,17 +6495,17 @@ FastAPI framework, high performance, easy to learn, fast to code, ready for production created: '2018-12-08T08:21:47Z' - updated: '2023-08-08T00:24:56Z' + updated: '2023-08-09T03:11:06Z' language: Python archived: false - stars: 61202 + stars: 61245 watchers: 644 - forks: 5140 + forks: 5144 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"1291187ec44da041ca05420c91af551bfd99422ed9ec63f77b5d78413d3bfde0"' - repoLastModified: Tue, 08 Aug 2023 00:24:56 GMT + repoEtag: '"9592b8c6c0a743393f5213c4d84234dff511b08fad6d71838e10b1d5ce3b9f1c"' + repoLastModified: Wed, 09 Aug 2023 03:11:06 GMT foundInMaster: true id: 8e11fa45d6f090aa2ed68317cf5a7215 - source: @@ -6523,17 +6523,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: '2023-08-07T21:45:39Z' + updated: '2023-08-09T01:30:19Z' language: JavaScript archived: false - stars: 24259 + stars: 24264 watchers: 655 - forks: 8740 + forks: 8741 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"5726af67b591f3da4777af90679fa0611b67af91a30e6d838cb9987d7c64111d"' - repoLastModified: Mon, 07 Aug 2023 21:45:39 GMT + repoEtag: '"16e15a7e29635288ed664417d901e74077297dceff4aaaf3b6575b00fec8fc75"' + repoLastModified: Wed, 09 Aug 2023 01:30:19 GMT foundInMaster: true name: swagger-ui homepage: https://github.com/swagger-api/swagger-UI @@ -6566,17 +6566,17 @@ repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' - updated: '2023-08-08T02:49:13Z' + updated: '2023-08-08T23:52:26Z' language: TypeScript archived: false - stars: 20706 - watchers: 284 - forks: 2206 + stars: 20719 + watchers: 285 + forks: 2208 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"2bd0aa55a2d8d3233103157e270d0261423aae055dcb0873d6e1517e2af85160"' - repoLastModified: Tue, 08 Aug 2023 02:49:13 GMT + repoEtag: '"890ca5186f71039b67a93c699f42b25ee7cf8d043e5d137939d590c721e11b0d"' + repoLastModified: Tue, 08 Aug 2023 23:52:26 GMT foundInMaster: true v3_1: true id: 2725d6db6977c1dd12ceaf9701787e07 @@ -6595,17 +6595,17 @@ Full stack, modern web application generator. Using FastAPI, PostgreSQL as database, Docker, automatic HTTPS and more. created: '2019-02-23T15:08:34Z' - updated: '2023-08-08T01:01:07Z' + updated: '2023-08-08T20:17:08Z' language: Python archived: false - stars: 12601 + stars: 12608 watchers: 196 - forks: 2327 + forks: 2329 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"db699691469e9f8e01cecdde50575471fd8f3e047eaa4b15a68f451c4db88295"' - repoLastModified: Tue, 08 Aug 2023 01:01:07 GMT + repoEtag: '"ef35db23f3156fdcb9e8b957321eef32d69207dff10e5c149255b34ce1989c69"' + repoLastModified: Tue, 08 Aug 2023 20:17:08 GMT foundInMaster: true category: Server Implementations id: fd87348d3e68e8838b35571b2a88b798 @@ -6622,17 +6622,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: '2023-08-05T02:32:00Z' + updated: '2023-08-09T03:07:29Z' language: Java archived: false - stars: 7244 + stars: 7246 watchers: 313 forks: 2150 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"81e64e0c3530068214806689168ce914794809c719f95fc774f6c3b4891b18cb"' - repoLastModified: Sat, 05 Aug 2023 02:32:00 GMT + repoEtag: '"c38796facd1999c333a64b625b96d156dae983950e9e9fd933a1a84e0056afa9"' + repoLastModified: Wed, 09 Aug 2023 03:07:29 GMT foundInMaster: true category: Code Generators id: 2093f5c5f56617123b73ae823791176d @@ -6649,17 +6649,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: '2023-08-07T23:09:30Z' + updated: '2023-08-08T21:52:52Z' language: TypeScript archived: false - stars: 5287 + stars: 5289 watchers: 57 - forks: 298 + forks: 297 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"435c117747e2d15a6b542a215c702efcd48d16078f0a2bfa544f03eff150fb82"' - repoLastModified: Mon, 07 Aug 2023 23:09:30 GMT + repoEtag: '"2e7a0df3a04a6af9d6c43eb77aa2195cf01adbb1e86d15ceb7907c9e08098674"' + repoLastModified: Tue, 08 Aug 2023 21:52:52 GMT foundInMaster: true category: Testing id: 8728dfca2c1908dbecdcddd31597fad4 @@ -6675,17 +6675,17 @@ repositoryId: 88701696 description: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution created: '2017-04-19T04:44:28Z' - updated: '2023-08-06T14:57:53Z' + updated: '2023-08-08T12:04:54Z' language: HTML archived: false - stars: 3535 + stars: 3536 watchers: 75 forks: 572 owner: xiaoymin logo: https://avatars.githubusercontent.com/u/7894406?v=4 license: Apache-2.0 - repoEtag: '"620f45ba0f5e8465631c4d5e20a38c1cda997ae090a57dd91974ac5e13a362fd"' - repoLastModified: Sun, 06 Aug 2023 14:57:53 GMT + repoEtag: '"2fa2908e6b397a06901d10b969e38ff7743f28376791605c7aa3b10cd6dba9d7"' + repoLastModified: Tue, 08 Aug 2023 12:04:54 GMT category: SDK foundInMaster: true - source: openapi3 tags @@ -6701,17 +6701,17 @@ 🌐 Wikipedia for Web APIs. Directory of REST API definitions in OpenAPI 2.0/3.x format created: '2015-02-22T19:58:12Z' - updated: '2023-08-06T01:43:43Z' + updated: '2023-08-08T21:55:24Z' language: null archived: false - stars: 3313 + stars: 3315 watchers: 109 - forks: 551 + forks: 552 owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: CC0-1.0 - repoEtag: '"3c4aeffb7af1b7f25d75827ce9717ce45f5ca006e9a864eb5ffd782293c22627"' - repoLastModified: Sun, 06 Aug 2023 01:43:43 GMT + repoEtag: '"f54cc8edc1a1b545fc8560dcc3d7f57ea27af2355d89f31d77b16a1b88bf01c3"' + repoLastModified: Tue, 08 Aug 2023 21:55:24 GMT foundInMaster: true category: SDK id: 667f2aef78d9d19418fbd6c0a7835abb @@ -6735,17 +6735,17 @@ repositoryId: 196475719 description: Library for OpenAPI 3 with spring-boot created: '2019-07-11T23:08:20Z' - updated: '2023-08-07T23:43:44Z' + updated: '2023-08-09T01:00:55Z' language: Java archived: false - stars: 2720 + stars: 2723 watchers: 42 - forks: 407 + forks: 408 owner: springdoc logo: https://avatars.githubusercontent.com/u/52804136?v=4 license: Apache-2.0 - repoEtag: '"d96ed2b95e5e12e2309a5489acc838bbef4b1223ba626f481c13f20a22899fca"' - repoLastModified: Mon, 07 Aug 2023 23:43:44 GMT + repoEtag: '"071dc6d57db39c71f06ca07e740d42f66a32463174e0db10f60ed2a299c21fab"' + repoLastModified: Wed, 09 Aug 2023 01:00:55 GMT foundInMaster: true id: 901410cec129651fcf7374c79f824f27 - source: @@ -6763,17 +6763,17 @@ Javascript library to connect to swagger-enabled APIs via browser or nodejs created: '2012-02-16T00:08:43Z' - updated: '2023-08-07T16:18:22Z' + updated: '2023-08-08T21:28:31Z' language: JavaScript archived: false - stars: 2521 + stars: 2522 watchers: 95 forks: 756 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"210a0a56f9b83621df48666af7f052320ce1049fc8225c45b3cfd25577956442"' - repoLastModified: Mon, 07 Aug 2023 16:18:22 GMT + repoEtag: '"5df5222431abcbd044922f7e104fbde4f024c04c795e6e6b1432d926ff4f2247"' + repoLastModified: Tue, 08 Aug 2023 21:28:31 GMT foundInMaster: true category: Code Generators id: 5f98b79464c0723b688cff46ee3500c6 @@ -6792,17 +6792,17 @@ web applications in Python with performance auto-tuning. Optionally with Alpine Linux. created: '2019-01-04T17:33:29Z' - updated: '2023-08-07T12:54:16Z' + updated: '2023-08-08T06:59:36Z' language: Python archived: false - stars: 2313 + stars: 2314 watchers: 28 - forks: 307 + forks: 306 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"3165bc5d6ca4d05e3904841f04ec525a6b15f49476246a6594181c3615a5e161"' - repoLastModified: Mon, 07 Aug 2023 12:54:16 GMT + repoEtag: '"38b280d41734510f3cbf3ce5547273fed7bfb5ca194285d672dc5415288d3b16"' + repoLastModified: Tue, 08 Aug 2023 06:59:36 GMT foundInMaster: true category: Server Implementations id: d0f3fc0bd35fcadacc8ed2c531780739 @@ -6857,17 +6857,17 @@ Guarantee flawless API functionality with thorough, high-quality test scenarios generated from your API specification. created: '2019-08-19T11:13:01Z' - updated: '2023-08-07T18:44:22Z' + updated: '2023-08-08T18:41:27Z' language: Python archived: false - stars: 1804 + stars: 1805 watchers: 21 - forks: 133 + forks: 134 owner: schemathesis logo: https://avatars.githubusercontent.com/u/70383271?v=4 license: MIT - repoEtag: '"ee579a7bd9c2f42f851b151d2ed56c3ed778d927a948265f84378d42cf047c1d"' - repoLastModified: Mon, 07 Aug 2023 18:44:22 GMT + repoEtag: '"ec3665eff3716284bd1caac5db36f7671caf5ee259243aaeace299f6fa7592ac"' + repoLastModified: Tue, 08 Aug 2023 18:41:27 GMT foundInMaster: true id: f4032fb371a703acffa691c0f1239d45 oldLocations: @@ -6883,17 +6883,17 @@ repositoryId: 244234763 description: Sane and flexible OpenAPI 3 schema generation for Django REST framework. created: '2020-03-01T22:36:54Z' - updated: '2023-08-07T07:53:32Z' + updated: '2023-08-08T17:40:18Z' language: Python archived: false - stars: 1773 + stars: 1775 watchers: 12 forks: 212 owner: tfranzel logo: https://avatars.githubusercontent.com/u/13507857?v=4 license: BSD-3-Clause - repoEtag: '"c8783cc07ab7b94d359b145bfd6a7ac2ca137414800731bbf227512383138518"' - repoLastModified: Mon, 07 Aug 2023 07:53:32 GMT + repoEtag: '"85486771d0dc40599830bf24fbc8c94d60f794b76bccdfefe9be02d097e1dbed"' + repoLastModified: Tue, 08 Aug 2023 17:40:18 GMT foundInMaster: true category: Server Implementations id: 520f5c66c3e42a7b3fbface4f156c1dc @@ -6908,17 +6908,17 @@ repositoryId: 165951750 description: RapiDoc -WebComponent for OpenAPI Spec created: '2019-01-16T01:29:58Z' - updated: '2023-08-07T18:11:31Z' + updated: '2023-08-08T07:45:09Z' language: JavaScript archived: false - stars: 1367 + stars: 1368 watchers: 11 forks: 247 owner: rapi-doc logo: https://avatars.githubusercontent.com/u/104180085?v=4 license: MIT - repoEtag: '"11b6e3fa855f079ec2cd242028e10b934b33f54fa08e95db10de3be7183d725a"' - repoLastModified: Mon, 07 Aug 2023 18:11:31 GMT + repoEtag: '"b53874aaea8aba845189b58112993ce867de7a3297c8c477c51d616dd662affa"' + repoLastModified: Tue, 08 Aug 2023 07:45:09 GMT foundInMaster: true category: Documentation id: b903cad8b99b490dbecf6c6951d5b500 @@ -6968,17 +6968,17 @@ Simple, Fast, Code first and Compile time generated OpenAPI documentation for Rust created: '2021-09-30T22:00:31Z' - updated: '2023-08-07T22:31:55Z' + updated: '2023-08-09T01:45:51Z' language: Rust archived: false - stars: 1254 + stars: 1258 watchers: 8 forks: 106 owner: juhaku logo: https://avatars.githubusercontent.com/u/26358664?v=4 license: Apache-2.0 - repoEtag: '"c7a9c09f889e03dc53a4562ba70b663f4adc0c8c32231ee68605aac25905f89a"' - repoLastModified: Mon, 07 Aug 2023 22:31:55 GMT + repoEtag: '"97a847fb283de7dbcd4765d71169de507db62a2f921d3fc055bcd210fbcbaad5"' + repoLastModified: Wed, 09 Aug 2023 01:45:51 GMT foundInMaster: true category: Parsers id: 14269a89115b3be71493769fca4d995e @@ -6996,17 +6996,17 @@ A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML created: '2021-01-26T02:53:57Z' - updated: '2023-08-07T14:03:37Z' + updated: '2023-08-08T16:40:51Z' language: Python archived: false - stars: 1151 + stars: 1155 watchers: 13 forks: 37 owner: jcrist logo: https://avatars.githubusercontent.com/u/2783717?v=4 license: BSD-3-Clause - repoEtag: '"92da31c6abdf8280d9a475723cdbeb29564271ea86a2a043f54c2b8d51fd91a9"' - repoLastModified: Mon, 07 Aug 2023 14:03:37 GMT + repoEtag: '"080ed08bcab4bb49e0cb043f3314e2b5309148494b9e2dc18b74f9883f189323"' + repoLastModified: Tue, 08 Aug 2023 16:40:51 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -7022,17 +7022,17 @@ A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification).. created: '2014-10-18T23:48:49Z' - updated: '2023-08-05T22:27:22Z' + updated: '2023-08-08T13:57:27Z' language: Python archived: false - stars: 1044 + stars: 1045 watchers: 25 - forks: 165 + forks: 164 owner: marshmallow-code logo: https://avatars.githubusercontent.com/u/10334301?v=4 license: MIT - repoEtag: '"507d3f3f95512e1e3cec86c3fdaf02a307ba4f262878c891e88efb51a9cafdbe"' - repoLastModified: Sat, 05 Aug 2023 22:27:22 GMT + repoEtag: '"846e53b9c0867a5dbe32348c1f1989ce6e8a2459f42e2e848fcb198ef91e68a1"' + repoLastModified: Tue, 08 Aug 2023 13:57:27 GMT foundInMaster: true category: Parsers id: c1528764f05dd585ca47886dd6dabb86 @@ -7049,17 +7049,17 @@ A node package wrapper for https://github.com/OpenAPITools/openapi-generator created: '2018-10-26T10:21:23Z' - updated: '2023-08-07T03:22:48Z' + updated: '2023-08-08T20:41:12Z' language: TypeScript archived: false - stars: 1017 + stars: 1018 watchers: 15 - forks: 113 + forks: 114 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"b2c1cc76bf5ee6b59b183b9a9d7a24c68bf792dbf219d875edaa74a24aacb86b"' - repoLastModified: Mon, 07 Aug 2023 03:22:48 GMT + repoEtag: '"b57c3f2ef06635495fb511ac73c9690bc8651bf710ed8e932dcb3c61cad9adc2"' + repoLastModified: Tue, 08 Aug 2023 20:41:12 GMT foundInMaster: true category: Code Generators id: 8f568f0b10837fef38571b68999adc0f @@ -7075,17 +7075,17 @@ repositoryId: 329190167 description: A lightweight Python web API framework. created: '2021-01-13T04:08:48Z' - updated: '2023-08-07T09:15:32Z' + updated: '2023-08-09T02:19:15Z' language: Python archived: false - stars: 826 + stars: 827 watchers: 18 - forks: 100 + forks: 101 owner: apiflask logo: https://avatars.githubusercontent.com/u/78075725?v=4 license: MIT - repoEtag: '"bfeb46647e9b64dc3cb66eaa391eef822c1043beeac46bd2b92a36fdb6ad46c2"' - repoLastModified: Mon, 07 Aug 2023 09:15:32 GMT + repoEtag: '"f54e6bcf3629042bc5483cda6eb134b81706f785173d2a07862aa8d5c7a887ef"' + repoLastModified: Wed, 09 Aug 2023 02:19:15 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -7102,17 +7102,17 @@ repositoryId: 381857226 description: null created: '2021-06-30T23:29:49Z' - updated: '2023-08-08T01:06:25Z' + updated: '2023-08-08T14:20:36Z' language: TypeScript archived: false - stars: 773 + stars: 774 watchers: 20 forks: 93 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"02b522561eef2858a3dcc1170f5a4fb69ecd7dbc8d75cf0b42e4b2ed671acce3"' - repoLastModified: Tue, 08 Aug 2023 01:06:25 GMT + repoEtag: '"8603afa9f93dd91c2f4f77beceb00ece751de947e63c0d36916a9398aebe2654"' + repoLastModified: Tue, 08 Aug 2023 14:20:36 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -7244,17 +7244,17 @@ repositoryId: 372032505 description: OpenAPI v3 code generator for go created: '2021-05-29T17:25:48Z' - updated: '2023-08-07T17:57:07Z' + updated: '2023-08-08T08:19:56Z' language: Go archived: false - stars: 634 + stars: 635 watchers: 11 - forks: 41 + forks: 42 owner: ogen-go logo: https://avatars.githubusercontent.com/u/85122432?v=4 license: Apache-2.0 - repoEtag: '"24d27588f0031add9c7fa4340b0d211d3e0be4d620d0f7c1a8ab46612e825aad"' - repoLastModified: Mon, 07 Aug 2023 17:57:07 GMT + repoEtag: '"90e4a2836703d2ac8e98094ea8fd72ee4c0e0ee7b42eb7410793b69f898cd80a"' + repoLastModified: Tue, 08 Aug 2023 08:19:56 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -7268,17 +7268,17 @@ repositoryId: 113924383 description: Utility for comparing two OpenAPI specifications. created: '2017-12-12T00:39:30Z' - updated: '2023-08-01T08:54:13Z' + updated: '2023-08-08T13:43:05Z' language: Java archived: false - stars: 624 + stars: 625 watchers: 20 forks: 145 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"7407d5008205e99886a5102f0e29a10d47cc9c7291ed5f849eb96677ae0c4e85"' - repoLastModified: Tue, 01 Aug 2023 08:54:13 GMT + repoEtag: '"2b88bf425994bc96bd1d788f83801d37e6897f5c6f2c3ae64c84e7feef06fd95"' + repoLastModified: Tue, 08 Aug 2023 13:43:05 GMT foundInMaster: true category: Parsers id: c128907e9d949a67c1bda0e0ceda755a @@ -7489,10 +7489,10 @@ archived: false stars: 403 watchers: 9 - forks: 61 + forks: 62 owner: oazapfts logo: https://avatars.githubusercontent.com/u/119607625?v=4 - repoEtag: '"de013be8fd7960ec6db4f7f3d62b13a7c3090c4943552796814f60cc6ae7ff24"' + repoEtag: '"c81f549c682d06bb3d2d1e12046ef9e6f25cad78f3be0e2464d8ab7dbe2a310d"' repoLastModified: Mon, 07 Aug 2023 14:43:01 GMT category: Parsers foundInMaster: true @@ -7638,17 +7638,17 @@ repositoryId: 293245471 description: Convert between JSON Schema, TypeScript, GraphQL, Open API and SureType created: '2020-09-06T09:40:04Z' - updated: '2023-08-07T13:12:50Z' + updated: '2023-08-08T13:32:52Z' language: TypeScript archived: false - stars: 330 + stars: 331 watchers: 4 forks: 8 owner: grantila logo: https://avatars.githubusercontent.com/u/5362579?v=4 license: MIT - repoEtag: '"8dd5276a11f20e54e368e070fe623f5d41b1a5528f1e37a2e44195755e2a110c"' - repoLastModified: Mon, 07 Aug 2023 13:12:50 GMT + repoEtag: '"73285c979be1705eb627c938a901bafbe9da4c9033655ae599797e5124b07a8d"' + repoLastModified: Tue, 08 Aug 2023 13:32:52 GMT foundInMaster: true category: Parsers id: 31c759927a7f06228ec927500d9722c5 @@ -7725,17 +7725,17 @@ traffic with apidump. Model API behavior with apispec. Compare API behavior with apidiff. created: '2021-02-19T00:43:53Z' - updated: '2023-08-07T16:26:53Z' + updated: '2023-08-08T11:45:02Z' language: Go archived: false - stars: 307 + stars: 308 watchers: 9 forks: 21 owner: akitasoftware logo: https://avatars.githubusercontent.com/u/44328574?v=4 license: Apache-2.0 - repoEtag: '"5fd027460d8be0a549ae928925669dee520f0468a36fe0467613318162fafb5d"' - repoLastModified: Mon, 07 Aug 2023 16:26:53 GMT + repoEtag: '"6421cd8e4bffe5fa5f3194e918c5ca51073bc563ac1b6ed8c052d156b1895bc0"' + repoLastModified: Tue, 08 Aug 2023 11:45:02 GMT foundInMaster: true category: - SDK @@ -7752,17 +7752,17 @@ repositoryId: 222924508 description: FastAPI framework plugins created: '2019-11-20T11:41:50Z' - updated: '2023-07-24T21:30:46Z' + updated: '2023-08-08T06:11:38Z' language: Python archived: false - stars: 292 + stars: 293 watchers: 3 forks: 16 owner: madkote logo: https://avatars.githubusercontent.com/u/4921881?v=4 license: MIT - repoEtag: '"4a9c5d36af8123c8e84d69befd6d6be0a38cc09d877994f3d51bb32c7648e7cb"' - repoLastModified: Mon, 24 Jul 2023 21:30:46 GMT + repoEtag: '"17f3096320260fc28eec4584c4696fca2560f7321b945ed6e29f212f2661ca5a"' + repoLastModified: Tue, 08 Aug 2023 06:11:38 GMT foundInMaster: true category: Server Implementations id: 5b8a96994e594bd26bca9505bbc19018 @@ -7911,17 +7911,17 @@ repositoryId: 202613633 description: Collection of RESTful APIs provided by Ethereum Beacon nodes created: '2019-08-15T21:27:12Z' - updated: '2023-08-06T16:02:55Z' + updated: '2023-08-08T09:35:01Z' language: HTML archived: false - stars: 268 + stars: 269 watchers: 33 forks: 154 owner: ethereum logo: https://avatars.githubusercontent.com/u/6250754?v=4 license: CC0-1.0 - repoEtag: '"4c2663ca7530bef9b8277a41d343e1fe48685f45b390b5710dc575ad1590ab81"' - repoLastModified: Sun, 06 Aug 2023 16:02:55 GMT + repoEtag: '"700ef8db64c78aa0fd8dade3aeace85cda5f7d8f2ef5438cae9267acaee3b2d6"' + repoLastModified: Tue, 08 Aug 2023 09:35:01 GMT foundInMaster: true category: - Documentation @@ -7991,23 +7991,23 @@ v3: true repositoryMetadata: base64Readme: >- - IyBSRVNUIHdpdGggQ2xlYW4gQXJjaGl0ZWN0dXJlIGZvciBHbwoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC93b3JrZmxvd3MvdGVzdC11bml0L2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L2FjdGlvbnM/cXVlcnk9YnJhbmNoJTNBbWFzdGVyK3dvcmtmbG93JTNBdGVzdC11bml0KQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY29kZWNvdi5pby9naC9zd2FnZ2VzdC9yZXN0L2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L3Jlc3QpClshW0dvRGV2RG9jXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2Rldi1kb2MtMDBBREQ4P2xvZ289Z28pXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0KQpbIVtUaW1lIFRyYWNrZXJdKGh0dHBzOi8vd2FrYXRpbWUuY29tL2JhZGdlL2dpdGh1Yi9zd2FnZ2VzdC9yZXN0LnN2ZyldKGh0dHBzOi8vd2FrYXRpbWUuY29tL2JhZGdlL2dpdGh1Yi9zd2FnZ2VzdC9yZXN0KQohW0NvZGUgbGluZXNdKGh0dHBzOi8vc2xvYy54eXovZ2l0aHViL3N3YWdnZXN0L3Jlc3QvP2NhdGVnb3J5PWNvZGUpCiFbQ29tbWVudHNdKGh0dHBzOi8vc2xvYy54eXovZ2l0aHViL3N3YWdnZXN0L3Jlc3QvP2NhdGVnb3J5PWNvbW1lbnRzKQoKVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBIVFRQIHRyYW5zcG9ydCBsZXZlbCBmb3IgW2BnaXRodWIuY29tL3N3YWdnZXN0L3VzZWNhc2VgXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSkgCnRvIGJ1aWxkIFJFU1Qgc2VydmljZXMuCgojIyBHb2FscwoKKiBNYWludGFpbiBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBkb2N1bWVudGF0aW9uLCB2YWxpZGF0aW9uIGFuZCBpbnB1dC9vdXRwdXQgb2YgSFRUUCBBUEkuCiogQXZvaWQgZGVwZW5kZW5jeSBvbiBjb21waWxlIHRpbWUgY29kZSBnZW5lcmF0aW9uLgoqIEltcHJvdmUgcHJvZHVjdGl2aXR5IGFuZCByZWxpYWJpbGl0eSBieSBhYnN0cmFjdGluZyBIVFRQIGRldGFpbHMgd2l0aCBzaW1wbGUgQVBJIGZvciBjb21tb24gY2FzZS4KKiBBbGxvdyBsb3ctbGV2ZWwgY3VzdG9taXphdGlvbnMgZm9yIGFkdmFuY2VkIGNhc2VzLgoqIE1haW50YWluIHJlYXNvbmFibGUgcGVyZm9ybWFuY2Ugd2l0aCBsb3cgR0MgaW1wYWN0LgoKIyMgTm9uLUdvYWxzCgoqIFN1cHBvcnQgZm9yIGxlZ2FjeSBkb2N1bWVudGF0aW9uIHNjaGVtYXMgbGlrZSBTd2FnZ2VyIDIuMCBvciBSQU1MLgoqIFplcm8gYWxsb2NhdGlvbnMuCiogRXhwbGljaXQgc3VwcG9ydCBmb3IgWE1MIGluIHJlcXVlc3Qgb3IgcmVzcG9uc2UgYm9kaWVzLgoKIyMgRmVhdHVyZXMKCiogQ29tcGF0aWJsZSB3aXRoIGBuZXQvaHR0cGAuCiogQnVpbHQgd2l0aCBbYGdpdGh1Yi5jb20vZ28tY2hpL2NoaWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1jaGkvY2hpKSByb3V0ZXIuCiogTW9kdWxhciBmbGV4aWJsZSBzdHJ1Y3R1cmUuCiogSFRUUCBbcmVxdWVzdCBtYXBwaW5nXSgjcmVxdWVzdC1kZWNvZGVyKSBpbnRvIEdvIHZhbHVlIGJhc2VkIG9uIGZpZWxkIHRhZ3MuCiogRGVjb3VwbGVkIGJ1c2luZXNzIGxvZ2ljIHdpdGggQ2xlYW4gQXJjaGl0ZWN0dXJlIHVzZSBjYXNlcy4KKiBBdXRvbWF0aWMgdHlwZS1zYWZlIE9wZW5BUEkgMyBkb2N1bWVudGF0aW9uIHdpdGggW2BnaXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ29gXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nbykuCiogU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGRvY3VtZW50YXRpb24gYW5kIGVuZHBvaW50IGludGVyZmFjZS4KKiBBdXRvbWF0aWMgcmVxdWVzdC9yZXNwb25zZSBKU09OIHNjaGVtYSB2YWxpZGF0aW9uIHdpdGggW2BnaXRodWIuY29tL3NhbnRob3NoLXRla3VyaS9qc29uc2NoZW1hYF0oaHR0cHM6Ly9naXRodWIuY29tL3NhbnRob3NoLXRla3VyaS9qc29uc2NoZW1hKS4KKiBEeW5hbWljIGd6aXAgY29tcHJlc3Npb24gYW5kIGZhc3QgcGFzcyB0aHJvdWdoIG1vZGUuCiogT3B0aW1pemVkIHBlcmZvcm1hbmNlLgoqIEVtYmVkZGVkIFtTd2FnZ2VyIFVJXShodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8pLgoqIEdlbmVyaWMgaW50ZXJmYWNlIGZvciBbdXNlIGNhc2UgaW50ZXJhY3RvcnNdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3VzZWNhc2UjTmV3SW50ZXJhY3RvcikuIAoKIyMgVXNhZ2UKClBsZWFzZSBjaGVjayB0aGlzIFt0dXRvcmlhbF0oaHR0cHM6Ly9kZXYudG8vdmVhcnV0b3AvdHV0b3JpYWwtZGV2ZWxvcGluZy1hLXJlc3RmdWwtYXBpLXdpdGgtZ28tanNvbi1zY2hlbWEtdmFsaWRhdGlvbi1hbmQtb3BlbmFwaS1kb2NzLTI0OTApIGZvciBlbmQtdG8tZW5kIHVzYWdlIGV4YW1wbGUuCgojIyMgUmVxdWVzdCBEZWNvZGVyCgpHbyBzdHJ1Y3Qgd2l0aCBmaWVsZCB0YWdzIGRlZmluZXMgaW5wdXQgcG9ydC4gClJlcXVlc3QgZGVjb2RlciBwb3B1bGF0ZXMgZmllbGQgdmFsdWVzIGZyb20gYGh0dHAuUmVxdWVzdGAgZGF0YSBiZWZvcmUgdXNlIGNhc2UgaW50ZXJhY3RvciBpcyBpbnZva2VkLiAKCmBgYGdvCi8vIERlY2xhcmUgaW5wdXQgcG9ydCB0eXBlLgp0eXBlIGhlbGxvSW5wdXQgc3RydWN0IHsKICAgIExvY2FsZSBzdHJpbmcgYHF1ZXJ5OiJsb2NhbGUiIGRlZmF1bHQ6ImVuLVVTIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kIiBlbnVtOiJydS1SVSxlbi1VUyJgCiAgICBOYW1lICAgc3RyaW5nIGBwYXRoOiJuYW1lIiBtaW5MZW5ndGg6IjMiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgoKICAgIC8vIEZpZWxkIHRhZ3Mgb2YgdW5uYW1lZCBmaWVsZHMgYXJlIGFwcGxpZWQgdG8gcGFyZW50IHNjaGVtYSwgCgkvLyB0aGV5IGFyZSBvcHRpb25hbCBhbmQgY2FuIGJlIHVzZWQgdG8gZGlzYWxsb3cgdW5rbm93biBwYXJhbWV0ZXJzLgogICAgLy8gRm9yIG5vbi1ib2R5IHBhcmFtcywgbmFtZSB0YWcgbXVzdCBiZSBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgLy8gRS5nLiBoZXJlIG5vIHVua25vd24gYHF1ZXJ5YCBhbmQgYGNvb2tpZWAgcGFyYW1ldGVycyBhbGxvd2VkLAogICAgLy8gdW5rbm93biBgaGVhZGVyYCBwYXJhbXMgYXJlIG9rLgogICAgXyBzdHJ1Y3R7fSBgcXVlcnk6Il8iIGNvb2tpZToiXyIgYWRkaXRpb25hbFByb3BlcnRpZXM6ImZhbHNlImAKfQpgYGAKCklucHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CiogYHBhdGhgIHBhcmFtZXRlciBpbiByZXF1ZXN0IFVSSSwgZS5nLiBgL3VzZXJzL3tuYW1lfWAsCiogYHF1ZXJ5YCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBVUkksIGUuZy4gYC91c2Vycz9sb2NhbGU9ZW4tVVNgLAoqIGBmb3JtRGF0YWAgcGFyYW1ldGVyIGluIHJlcXVlc3QgYm9keSB3aXRoIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIG9yIGBtdWx0aXBhcnQvZm9ybS1kYXRhYCBjb250ZW50LAoqIGBmb3JtYCBwYXJhbWV0ZXIgYWN0cyBhcyBgZm9ybURhdGFgIG9yIGBxdWVyeWAsCiogYGpzb25gIHBhcmFtZXRlciBpbiByZXF1ZXN0IGJvZHkgd2l0aCBgYXBwbGljYXRpb24vanNvbmAgY29udGVudCwKKiBgY29va2llYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBjb29raWUsCiogYGhlYWRlcmAgcGFyYW1ldGVyIGluIHJlcXVlc3QgaGVhZGVyLgoKRm9yIG1vcmUgZXhwbGljaXQgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBiZXR3ZWVuIHVzZSBjYXNlIGFuZCB0cmFuc3BvcnQgaXQgaXMgcG9zc2libGUgdG8gcHJvdmlkZSByZXF1ZXN0IG1hcHBpbmcgCnNlcGFyYXRlbHkgd2hlbiBpbml0aWFsaXppbmcgaGFuZGxlciAocGxlYXNlIG5vdGUsIHN1Y2ggbWFwcGluZyBpcyBbbm90IGFwcGxpZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L2lzc3Vlcy82MSNpc3N1ZWNvbW1lbnQtMTA1OTg1MTU1MykgdG8gYGpzb25gIGJvZHkpLgoKYGBgZ28KLy8gRGVjbGFyZSBpbnB1dCBwb3J0IHR5cGUuCnR5cGUgaGVsbG9JbnB1dCBzdHJ1Y3QgewogICAgTG9jYWxlIHN0cmluZyBgZGVmYXVsdDoiZW4tVVMiIHBhdHRlcm46Il5bYS16XXsyfS1bQS1aXXsyfSQiYAogICAgTmFtZSAgIHN0cmluZyBgbWluTGVuZ3RoOiIzImAgLy8gRmllbGQgdGFncyBkZWZpbmUgcGFyYW1ldGVyIGxvY2F0aW9uIGFuZCBKU09OIHNjaGVtYSBjb25zdHJhaW50cy4KfQpgYGAKCmBgYGdvCi8vIEFkZCB1c2UgY2FzZSBoYW5kbGVyIHdpdGggY3VzdG9tIGlucHV0IG1hcHBpbmcgdG8gcm91dGVyLgpyLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi9oZWxsby97bmFtZX0iLCBuZXRodHRwLk5ld0hhbmRsZXIodSwKICAgIG5ldGh0dHAuUmVxdWVzdE1hcHBpbmcobmV3KHN0cnVjdCB7CiAgICAgICBMb2NhbGUgc3RyaW5nIGBxdWVyeToibG9jYWxlImAKICAgICAgIE5hbWUgICBzdHJpbmcgYHBhdGg6Im5hbWUiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgogICAgfSkpLAopKQpgYGAKCkFkZGl0aW9uYWwgZmllbGQgdGFncyBkZXNjcmliZSBKU09OIHNjaGVtYSBjb25zdHJhaW50cywgcGxlYXNlIGNoZWNrIApbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNSZWZsZWN0b3IuUmVmbGVjdCkuCgpNb3JlIHNjaGVtYSBjdXN0b21pemF0aW9ucyBhcmUgcG9zc2libGUgd2l0aCBbYGdpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyBpbnRlcmZhY2VzYF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L2pzb25zY2hlbWEtZ28jaW1wbGVtZW50aW5nLWludGVyZmFjZXMtb24tYS10eXBlKS4KCkJ5IGRlZmF1bHQgYGRlZmF1bHRgIHRhZ3MgYXJlIG9ubHkgY29udHJpYnV0aW5nIHRvIGRvY3VtZW50YXRpb24sIAppZiBbYHJlcXVlc3QuRGVjb2RlckZhY3RvcnkuQXBwbHlEZWZhdWx0c2BdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvcmVxdWVzdCNEZWNvZGVyRmFjdG9yeSkgaXMgCnNldCB0byBgdHJ1ZWAsIGZpZWxkcyBvZiByZXF1ZXN0IHN0cnVjdHVyZSB0aGF0IGRvbid0IGhhdmUgZXhwbGljaXQgdmFsdWUgYnV0IGhhdmUgYGRlZmF1bHRgIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggCmRlZmF1bHQgdmFsdWUuCgpJZiBpbnB1dCBzdHJ1Y3R1cmUgaW1wbGVtZW50cyBbYHJlcXVlc3QuTG9hZGVyYF0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC9yZXF1ZXN0I0xvYWRlciksICAKdGhlbiBgTG9hZEZyb21IVFRQUmVxdWVzdChyICpodHRwLlJlcXVlc3QpIGVycm9yYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIHRvIHBvcHVsYXRlIGlucHV0IHN0cnVjdHVyZSBpbnN0ZWFkIApvZiBhdXRvbWF0aWMgZGVjb2RpbmcuIFRoaXMgYWxsb3dzIGxvdyBsZXZlbCBjb250cm9sIGZvciBjYXNlcyB0aGF0IG5lZWQgaXQuCgo8ZGV0YWlscz4KPHN1bW1hcnk+UmVxdWVzdCBkZWNvZGVyIGNhbiBiZSB1c2VkIHN0YW5kYWxvbmUsIGluIGFscmVhZHkgZXhpc3RpbmcgYFNlcnZlSFRUUGAuPC9zdW1tYXJ5PgoKYGBgZ28KdHlwZSBNeVJlcXVlc3Qgc3RydWN0IHsKICAgIEZvbyBpbnQgICAgYGhlYWRlcjoiWC1Gb28iYAogICAgQmFyIHN0cmluZyBgZm9ybURhdGE6ImJhciJgCiAgICBCYXogYm9vbCAgIGBxdWVyeToiYmF6ImAKfQoKLy8gQSBkZWNvZGVyIGZvciBwYXJ0aWN1bGFyIHN0cnVjdHVyZSwgY2FuIGJlIHJldXNlZCBmb3IgbXVsdGlwbGUgSFRUUCByZXF1ZXN0cy4KbXlEZWNvZGVyIDo9IHJlcXVlc3QuTmV3RGVjb2RlckZhY3RvcnkoKS5NYWtlRGVjb2RlcihodHRwLk1ldGhvZFBvc3QsIG5ldyhNeVJlcXVlc3QpLCBuaWwpCgovLyBSZXF1ZXN0IGFuZCByZXNwb25zZSB3cml0ZXIgZnJvbSBTZXJ2ZUhUVFAuCnZhciAoCiAgICBydyAgaHR0cC5SZXNwb25zZVdyaXRlcgogICAgcmVxICpodHRwLlJlcXVlc3QKKQoKLy8gVGhpcyBjb2RlIHdvdWxkIHByZXN1bWFibHkgbGl2ZSBpbiBTZXJ2ZUhUVFAuCnZhciBteVJlcSBNeVJlcXVlc3QKCmlmIGVyciA6PSBteURlY29kZXIuRGVjb2RlKHJlcSwgJm15UmVxLCBuaWwpOyBlcnIgIT0gbmlsIHsKICAgIGh0dHAuRXJyb3IocncsIGVyci5FcnJvcigpLCBodHRwLlN0YXR1c0JhZFJlcXVlc3QpCn0KYGBgCjwvZGV0YWlscz4KCiMjIyBSZXNwb25zZSBFbmNvZGVyCgpHbyBzdHJ1Y3Qgd2l0aCBmaWVsZCB0YWdzIGRlZmluZXMgb3V0cHV0IHBvcnQuClJlc3BvbnNlIGVuY29kZXIgd3JpdGVzIGRhdGEgZnJvbSBvdXRwdXQgdG8gYGh0dHAuUmVzcG9uc2VXcml0ZXJgIGFmdGVyIHVzZSBjYXNlIGludGVyYWN0b3IgaW52b2NhdGlvbiBmaW5pc2hlcy4KCmBgYGdvCi8vIERlY2xhcmUgb3V0cHV0IHBvcnQgdHlwZS4KdHlwZSBoZWxsb091dHB1dCBzdHJ1Y3QgewogICAgTm93ICAgICB0aW1lLlRpbWUgYGhlYWRlcjoiWC1Ob3ciIGpzb246Ii0iYAogICAgTWVzc2FnZSBzdHJpbmcgICAgYGpzb246Im1lc3NhZ2UiYAogICAgU2VzcyAgICBzdHJpbmcgICAgYGNvb2tpZToic2VzcyxodHRwb25seSxzZWN1cmUsbWF4LWFnZT04NjQwMCxzYW1lc2l0ZT1sYXgiYAp9CmBgYAoKT3V0cHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CiogYGpzb25gIGZvciByZXNwb25zZSBib2R5IHdpdGggYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQsCiogYGhlYWRlcmAgZm9yIHZhbHVlcyBpbiByZXNwb25zZSBoZWFkZXIsCiogYGNvb2tpZWAgZm9yIGNvb2tpZSB2YWx1ZXMsIGNvb2tpZSBmaWVsZHMgY2FuIGhhdmUgY29uZmlndXJhdGlvbiBpbiBmaWVsZCB0YWcgKHNhbWUgYXMgaW4gYWN0dWFsIGNvb2tpZSwgYnV0IHdpdGggY29tbWEgc2VwYXJhdGlvbikuCgpGb3IgbW9yZSBleHBsaWNpdCBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zIGJldHdlZW4gdXNlIGNhc2UgYW5kIHRyYW5zcG9ydCBpdCBpcyBwb3NzaWJsZSB0byBwcm92aWRlIHJlc3BvbnNlIGhlYWRlciBtYXBwaW5nIApzZXBhcmF0ZWx5IHdoZW4gaW5pdGlhbGl6aW5nIGhhbmRsZXIuCgpgYGBnbwovLyBEZWNsYXJlIG91dHB1dCBwb3J0IHR5cGUuCnR5cGUgaGVsbG9PdXRwdXQgc3RydWN0IHsKICAgIE5vdyAgICAgdGltZS5UaW1lIGBqc29uOiItImAKICAgIE1lc3NhZ2Ugc3RyaW5nICAgIGBqc29uOiJtZXNzYWdlImAKfQpgYGAKCmBgYGdvCi8vIEFkZCB1c2UgY2FzZSBoYW5kbGVyIHdpdGggY3VzdG9tIG91dHB1dCBoZWFkZXJzIG1hcHBpbmcgdG8gcm91dGVyLgpyLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi9oZWxsby97bmFtZX0iLCBuZXRodHRwLk5ld0hhbmRsZXIodSwKICAgIG5ldGh0dHAuUmVzcG9uc2VIZWFkZXJNYXBwaW5nKG5ldyhzdHJ1Y3QgewogICAgICAgIE5vdyAgICAgdGltZS5UaW1lIGBoZWFkZXI6IlgtTm93ImAKICAgIH0pKSwKKSkKYGBgCgpBZGRpdGlvbmFsIGZpZWxkIHRhZ3MgZGVzY3JpYmUgSlNPTiBzY2hlbWEgY29uc3RyYWludHMsIHBsZWFzZSBjaGVjayAKW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L2pzb25zY2hlbWEtZ28jUmVmbGVjdG9yLlJlZmxlY3QpLgoKIyMjIENyZWF0aW5nIFVzZSBDYXNlIEludGVyYWN0b3IKCkhUVFAgdHJhbnNwb3J0IGlzIGRlY291cGxlZCBmcm9tIGJ1c2luZXNzIGxvZ2ljIGJ5IGFkYXB0aW5nClt1c2UgY2FzZSBpbnRlcmFjdG9yc10oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSNJbnRlcmFjdG9yKS4KClVzZSBjYXNlIGludGVyYWN0b3IgY2FuIGRlZmluZSBpbnB1dCBhbmQgb3V0cHV0IHBvcnRzIHRoYXQgYXJlIHVzZWQgdG8gbWFwIGRhdGEgYmV0d2VlbiBHbyB2YWx1ZXMgYW5kIHRyYW5zcG9ydC4KSXQgY2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgaXRzZWxmIHRoYXQgd2lsbCBiZSBleHBvc2VkIGluIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLgoKYGBgZ28KLy8gQ3JlYXRlIHVzZSBjYXNlIGludGVyYWN0b3Igd2l0aCByZWZlcmVuY2VzIHRvIGlucHV0L291dHB1dCB0eXBlcyBhbmQgaW50ZXJhY3Rpb24gZnVuY3Rpb24uCnUgOj0gdXNlY2FzZS5OZXdJbnRlcmFjdG9yKGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgaW5wdXQgaGVsbG9JbnB1dCwgb3V0cHV0ICpoZWxsb091dHB1dCkgZXJyb3IgewogICAgbXNnLCBhdmFpbGFibGUgOj0gbWVzc2FnZXNbaW5wdXQuTG9jYWxlXQogICAgaWYgIWF2YWlsYWJsZSB7CiAgICAgICAgcmV0dXJuIHN0YXR1cy5XcmFwKGVycm9ycy5OZXcoInVua25vd24gbG9jYWxlIiksIHN0YXR1cy5JbnZhbGlkQXJndW1lbnQpCiAgICB9CgogICAgb3V0cHV0Lk1lc3NhZ2UgPSBmbXQuU3ByaW50Zihtc2csIGlucHV0Lk5hbWUpCiAgICBvdXRwdXQuTm93ID0gdGltZS5Ob3coKQoKICAgIHJldHVybiBuaWwKfSkKYGBgCgpGb3IgbW9kdWxhcml0eSBwYXJ0aWN1bGFyIHVzZSBjYXNlIGludGVyYWN0b3IgaW5zdGFuY2UgY2FuIGJlIGFzc2VtYmxlZCBieSBlbWJlZGRpbmcgcmVsZXZhbnQgdHJhaXRzIGluIGEgc3RydWN0LApmb3IgZXhhbXBsZSB5b3UgY2FuIHNraXAgYWRkaW5nIGB1c2VjYXNlLldpdGhJbnB1dGAgaWYgeW91ciB1c2UgY2FzZSBkb2VzIG5vdCBpbXBseSBhbnkgaW5wdXQuCgpgYGBnbwovLyBDcmVhdGUgdXNlIGNhc2UgaW50ZXJhY3Rvci4KdSA6PSBzdHJ1Y3QgewogICAgdXNlY2FzZS5JbmZvCiAgICB1c2VjYXNlLkludGVyYWN0b3IKICAgIHVzZWNhc2UuV2l0aElucHV0CiAgICB1c2VjYXNlLldpdGhPdXRwdXQKfXt9CgovLyBEZXNjcmliZSB1c2UgY2FzZSBpbnRlcmFjdG9yLgp1LlNldFRpdGxlKCJHcmVldGVyIikKdS5TZXREZXNjcmlwdGlvbigiR3JlZXRlciBncmVldHMgeW91LiIpCnUuSW5wdXQgPSBuZXcoaGVsbG9JbnB1dCkKdS5PdXRwdXQgPSBuZXcoaGVsbG9PdXRwdXQpCnUuSW50ZXJhY3RvciA9IHVzZWNhc2UuSW50ZXJhY3QoZnVuYyhjdHggY29udGV4dC5Db250ZXh0LCBpbnB1dCwgb3V0cHV0IGludGVyZmFjZXt9KSBlcnJvciB7CiAgICAvLyBEbyBzb21ldGhpbmcgYWJvdXQgaW5wdXQgdG8gcHJlcGFyZSBvdXRwdXQuCiAgICByZXR1cm4gbmlsCn0pCmBgYAoKIyMjIEluaXRpYWxpemluZyBXZWIgU2VydmljZQoKW1dlYiBTZXJ2aWNlXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L3dlYiNEZWZhdWx0U2VydmljZSkgaXMgYW4gaW5zdHJ1bWVudGVkIGZhY2FkZSBpbiBmcm9udCBvZiAKcm91dGVyLCBpdCBzaW1wbGlmaWVzIGNvbmZpZ3VyYXRpb24gYW5kIHByb3ZpZGVzIG1vcmUgY29tcGFjdCBBUEkgdG8gYWRkIHVzZSBjYXNlcy4KCmBgYGdvCi8vIFNlcnZpY2UgaW5pdGlhbGl6ZXMgcm91dGVyIHdpdGggcmVxdWlyZWQgbWlkZGxld2FyZXMuCnNlcnZpY2UgOj0gd2ViLkRlZmF1bHRTZXJ2aWNlKCkKCi8vIEl0IGFsbG93cyBPcGVuQVBJIGNvbmZpZ3VyYXRpb24uCnNlcnZpY2UuT3BlbkFQSS5JbmZvLlRpdGxlID0gIkFsYnVtcyBBUEkiCnNlcnZpY2UuT3BlbkFQSS5JbmZvLldpdGhEZXNjcmlwdGlvbigiVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIEFQSSB0byBtYW5hZ2UgYWxidW1zLiIpCnNlcnZpY2UuT3BlbkFQSS5JbmZvLlZlcnNpb24gPSAidjEuMC4wIgoKLy8gQWRkaXRpb25hbCBtaWRkbGV3YXJlcyBjYW4gYmUgYWRkZWQuCnNlcnZpY2UuVXNlKAogICAgbWlkZGxld2FyZS5TdHJpcFNsYXNoZXMsCgogICAgLy8gY29ycy5BbGxvd0FsbCgpLkhhbmRsZXIsIC8vICJnaXRodWIuY29tL3JzL2NvcnMiLCAzcmQtcGFydHkgQ09SUyBtaWRkbGV3YXJlIGNhbiBhbHNvIGJlIGNvbmZpZ3VyZWQgaGVyZS4KKQoKLy8gVXNlIGNhc2VzIGNhbiBiZSBtb3VudGVkIHVzaW5nIHNob3J0IHN5bnRheCAuPE1ldGhvZD4oLi4uKS4Kc2VydmljZS5Qb3N0KCIvYWxidW1zIiwgcG9zdEFsYnVtcygpLCBuZXRodHRwLlN1Y2Nlc3NTdGF0dXMoaHR0cC5TdGF0dXNDcmVhdGVkKSkKCmxvZy5QcmludGxuKCJTdGFydGluZyBzZXJ2aWNlIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIpCgppZiBlcnIgOj0gaHR0cC5MaXN0ZW5BbmRTZXJ2ZSgibG9jYWxob3N0OjgwODAiLCBzZXJ2aWNlKTsgZXJyICE9IG5pbCB7CiAgICBsb2cuRmF0YWwoZXJyKQp9CgpgYGAKClVzdWFsbHksIGB3ZWIuU2VydmljZWAgQVBJIGlzIHN1ZmZpY2llbnQsIGJ1dCBpZiBpdCBpcyBub3QsIHJvdXRlciBjYW4gYmUgY29uZmlndXJlZCBtYW51YWxseSwgcGxlYXNlIGNoZWNrIAp0aGUgZG9jdW1lbnRhdGlvbiBiZWxvdy4KCiMjIyBBZGRpbmcgdXNlIGNhc2UgdG8gcm91dGVyCgpgYGBnbwovLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB0byByb3V0ZXIuCnIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL2hlbGxvL3tuYW1lfSIsIG5ldGh0dHAuTmV3SGFuZGxlcih1KSkKYGBgCgojIyBBUEkgU2NoZW1hIENvbGxlY3RvcgoKT3BlbkFQSSBzY2hlbWEgc2hvdWxkIGJlIGluaXRpYWxpemVkIHdpdGggZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCBSRVNUIEFQSS4KCkl0IHVzZXMgW3R5cGUtc2FmZSBtYXBwaW5nXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nbykgZm9yIHRoZSBjb25maWd1cmF0aW9uLCAKc28gYW55IElERSB3aWxsIGhlbHAgd2l0aCBhdmFpbGFibGUgZmllbGRzLiAKCmBgYGdvCi8vIEluaXQgQVBJIGRvY3VtZW50YXRpb24gc2NoZW1hLgphcGlTY2hlbWEgOj0gJm9wZW5hcGkuQ29sbGVjdG9ye30KYXBpU2NoZW1hLlJlZmxlY3RvcigpLlNwZWNFbnMoKS5JbmZvLlRpdGxlID0gIkJhc2ljIEV4YW1wbGUiCmFwaVNjaGVtYS5SZWZsZWN0b3IoKS5TcGVjRW5zKCkuSW5mby5XaXRoRGVzY3JpcHRpb24oIlRoaXMgYXBwIHNob3djYXNlcyBhIHRyaXZpYWwgUkVTVCBBUEkuIikKYXBpU2NoZW1hLlJlZmxlY3RvcigpLlNwZWNFbnMoKS5JbmZvLlZlcnNpb24gPSAidjEuMi4zIgpgYGAKCiMjIFJvdXRlciBTZXR1cAoKUkVTVCByb3V0ZXIgaXMgYmFzZWQgb24gW2BnaXRodWIuY29tL2dvLWNoaS9jaGlgXShodHRwczovL2dpdGh1Yi5jb20vZ28tY2hpL2NoaSksIHdyYXBwZXIgYWxsb3dzIHVud3JhcHBpbmcgaW5zdHJ1bWVudGVkCmhhbmRsZXIgaW4gbWlkZGxld2FyZS4KClRoZXNlIG1pZGRsZXdhcmVzIGFyZSByZXF1aXJlZDoKKiBgbmV0aHR0cC5PcGVuQVBJTWlkZGxld2FyZShhcGlTY2hlbWEpYCwgCiogYHJlcXVlc3QuRGVjb2Rlck1pZGRsZXdhcmUoZGVjb2RlckZhY3RvcnkpYCwKKiBgcmVzcG9uc2UuRW5jb2Rlck1pZGRsZXdhcmVgLgoKT3B0aW9uYWxseSB5b3UgY2FuIGFkZCBtb3JlIG1pZGRsZXdhcmVzIHdpdGggc29tZSBwZXJmb3JtYW5jZSBpbXBhY3Q6CiogYHJlcXVlc3QuVmFsaWRhdG9yTWlkZGxld2FyZSh2YWxpZGF0b3JGYWN0b3J5KWAgKHJlcXVlc3QgdmFsaWRhdGlvbiwgcmVjb21tZW5kZWQpCiogYHJlc3BvbnNlLlZhbGlkYXRvck1pZGRsZXdhcmUodmFsaWRhdG9yRmFjdG9yeSlgCiogYGd6aXAuTWlkZGxld2FyZWAKCllvdSBjYW4gYWxzbyBhZGQgYW55IG90aGVyIDNyZCBwYXJ0eSBtaWRkbGV3YXJlcyBjb21wYXRpYmxlIHdpdGggYG5ldC9odHRwYCBhdCB5b3VyIGRpc2NyZXRpb24uCgpgYGBnbwovLyBTZXR1cCByZXF1ZXN0IGRlY29kZXIgYW5kIHZhbGlkYXRvci4KdmFsaWRhdG9yRmFjdG9yeSA6PSBqc29uc2NoZW1hLk5ld0ZhY3RvcnkoYXBpU2NoZW1hLCBhcGlTY2hlbWEpCmRlY29kZXJGYWN0b3J5IDo9IHJlcXVlc3QuTmV3RGVjb2RlckZhY3RvcnkoKQpkZWNvZGVyRmFjdG9yeS5TZXREZWNvZGVyRnVuYyhyZXN0LlBhcmFtSW5QYXRoLCBjaGlyb3V0ZXIuUGF0aFRvVVJMVmFsdWVzKQoKLy8gQ3JlYXRlIHJvdXRlci4KciA6PSBjaGlyb3V0ZXIuTmV3V3JhcHBlcihjaGkuTmV3Um91dGVyKCkpCgovLyBTZXR1cCBtaWRkbGV3YXJlcy4Kci5Vc2UoCiAgICBtaWRkbGV3YXJlLlJlY292ZXJlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhbmljIHJlY292ZXJ5LgogICAgbmV0aHR0cC5PcGVuQVBJTWlkZGxld2FyZShhcGlTY2hlbWEpLCAgICAgICAgICAvLyBEb2N1bWVudGF0aW9uIGNvbGxlY3Rvci4KICAgIHJlcXVlc3QuRGVjb2Rlck1pZGRsZXdhcmUoZGVjb2RlckZhY3RvcnkpLCAgICAgLy8gUmVxdWVzdCBkZWNvZGVyIHNldHVwLgogICAgcmVxdWVzdC5WYWxpZGF0b3JNaWRkbGV3YXJlKHZhbGlkYXRvckZhY3RvcnkpLCAvLyBSZXF1ZXN0IHZhbGlkYXRvciBzZXR1cC4KICAgIHJlc3BvbnNlLkVuY29kZXJNaWRkbGV3YXJlLCAgICAgICAgICAgICAgICAgICAgLy8gUmVzcG9uc2UgZW5jb2RlciBzZXR1cC4KICAgIGd6aXAuTWlkZGxld2FyZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzcG9uc2UgY29tcHJlc3Npb24gd2l0aCBzdXBwb3J0IGZvciBkaXJlY3QgZ3ppcCBwYXNzIHRocm91Z2guCikKYGBgCgpSZWdpc3RlciBTd2FnZ2VyIFVJIHRvIHNlcnZlIGRvY3VtZW50YXRpb24gYXQgYC9kb2NzYC4KCmBgYGdvCi8vIFN3YWdnZXIgVUkgZW5kcG9pbnQgYXQgL2RvY3MuCnIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL2RvY3Mvb3BlbmFwaS5qc29uIiwgYXBpU2NoZW1hKQpyLk1vdW50KCIvZG9jcyIsIHYzY2RuLk5ld0hhbmRsZXIoYXBpU2NoZW1hLlJlZmxlY3RvcigpLlNwZWMuSW5mby5UaXRsZSwKICAgICIvZG9jcy9vcGVuYXBpLmpzb24iLCAiL2RvY3MiKSkKYGBgCgojIyBTZWN1cml0eSBTZXR1cAoKYGBgZ28KLy8gUHJlcGFyZSBtaWRkbGV3YXJlIHdpdGggc3VpdGFibGUgc2VjdXJpdHkgc2NoZW1hLgovLyBJdCB3aWxsIHBlcmZvcm0gYWN0dWFsIHNlY3VyaXR5IGNoZWNrIGZvciBldmVyeSByZWxldmFudCByZXF1ZXN0LgphZG1pbkF1dGggOj0gbWlkZGxld2FyZS5CYXNpY0F1dGgoIkFkbWluIEFjY2VzcyIsIG1hcFtzdHJpbmddc3RyaW5neyJhZG1pbiI6ICJhZG1pbiJ9KQoKLy8gUHJlcGFyZSBBUEkgc2NoZW1hIHVwZGF0ZXIgbWlkZGxld2FyZS4KLy8gSXQgd2lsbCBhbm5vdGF0ZSBoYW5kbGVyIGRvY3VtZW50YXRpb24gd2l0aCBzZWN1cml0eSBzY2hlbWEuCmFkbWluU2VjdXJpdHlTY2hlbWEgOj0gbmV0aHR0cC5IVFRQQmFzaWNTZWN1cml0eU1pZGRsZXdhcmUoYXBpU2NoZW1hLCAiQWRtaW4iLCAiQWRtaW4gYWNjZXNzIikKCi8vIEVuZHBvaW50cyB3aXRoIGFkbWluIGFjY2Vzcy4Kci5Sb3V0ZSgiL2FkbWluIiwgZnVuYyhyIGNoaS5Sb3V0ZXIpIHsKICAgIHIuR3JvdXAoZnVuYyhyIGNoaS5Sb3V0ZXIpIHsKICAgICAgICByLldyYXAoYWRtaW5BdXRoLCBhZG1pblNlY3VyaXR5U2NoZW1hKSAvLyBBZGQgYm90aCBtaWRkbGV3YXJlcyB0byByb3V0aW5nIGdyb3VwIHRvIGVuZm9yY2UgYW5kIGRvY3VtZW50IHNlY3VyaXR5LgogICAgICAgIHIuTWV0aG9kKGh0dHAuTWV0aG9kUHV0LCAiL2hlbGxvL3tuYW1lfSIsIG5ldGh0dHAuTmV3SGFuZGxlcih1KSkKICAgIH0pCn0pCmBgYAoKU2VlIFtleGFtcGxlXSguL19leGFtcGxlcy90YXNrLWFwaS9pbnRlcm5hbC9pbmZyYS9uZXRodHRwL3JvdXRlci5nbykuCgojIyBIYW5kbGVyIFNldHVwCgpIYW5kbGVyIGlzIGEgZ2VuZXJhbGl6ZWQgYWRhcHRlciBmb3IgdXNlIGNhc2UgaW50ZXJhY3Rvciwgc28gdXN1YWxseSBzZXR1cCBpcyB0cml2aWFsLgoKYGBgZ28KLy8gQWRkIHVzZSBjYXNlIGhhbmRsZXIgdG8gcm91dGVyLgpyLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi9oZWxsby97bmFtZX0iLCBuZXRodHRwLk5ld0hhbmRsZXIodSkpCmBgYAoKIyMgRXhhbXBsZQoKRm9yIG5vbi1nZW5lcmljIHVzZSBjYXNlLCBzZWUgYW5vdGhlciBbZXhhbXBsZV0oLi9fZXhhbXBsZXMvYmFzaWMvbWFpbi5nbykuCgpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiY29udGV4dCIKCSJlcnJvcnMiCgkiZm10IgoJImxvZyIKCSJuZXQvaHR0cCIKCSJ0aW1lIgoKCSJnaXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvcmVzcG9uc2UvZ3ppcCIKCSJnaXRodWIuY29tL3N3YWdnZXN0L3Jlc3Qvd2ViIgoJc3dndWkgImdpdGh1Yi5jb20vc3dhZ2dlc3Qvc3dndWkvdjRlbWIiCgkiZ2l0aHViLmNvbS9zd2FnZ2VzdC91c2VjYXNlIgoJImdpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZS9zdGF0dXMiCikKCmZ1bmMgbWFpbigpIHsKCXMgOj0gd2ViLkRlZmF1bHRTZXJ2aWNlKCkKCgkvLyBJbml0IEFQSSBkb2N1bWVudGF0aW9uIHNjaGVtYS4KCXMuT3BlbkFQSS5JbmZvLlRpdGxlID0gIkJhc2ljIEV4YW1wbGUiCglzLk9wZW5BUEkuSW5mby5XaXRoRGVzY3JpcHRpb24oIlRoaXMgYXBwIHNob3djYXNlcyBhIHRyaXZpYWwgUkVTVCBBUEkuIikKCXMuT3BlbkFQSS5JbmZvLlZlcnNpb24gPSAidjEuMi4zIgoKCS8vIFNldHVwIG1pZGRsZXdhcmVzLgoJcy5XcmFwKAoJCWd6aXAuTWlkZGxld2FyZSwgLy8gUmVzcG9uc2UgY29tcHJlc3Npb24gd2l0aCBzdXBwb3J0IGZvciBkaXJlY3QgZ3ppcCBwYXNzIHRocm91Z2guCgkpCgoJLy8gRGVjbGFyZSBpbnB1dCBwb3J0IHR5cGUuCgl0eXBlIGhlbGxvSW5wdXQgc3RydWN0IHsKCQlMb2NhbGUgc3RyaW5nIGBxdWVyeToibG9jYWxlIiBkZWZhdWx0OiJlbi1VUyIgcGF0dGVybjoiXlthLXpdezJ9LVtBLVpdezJ9JCIgZW51bToicnUtUlUsZW4tVVMiYAoJCU5hbWUgICBzdHJpbmcgYHBhdGg6Im5hbWUiIG1pbkxlbmd0aDoiMyJgIC8vIEZpZWxkIHRhZ3MgZGVmaW5lIHBhcmFtZXRlciBsb2NhdGlvbiBhbmQgSlNPTiBzY2hlbWEgY29uc3RyYWludHMuCgoJCS8vIEZpZWxkIHRhZ3Mgb2YgdW5uYW1lZCBmaWVsZHMgYXJlIGFwcGxpZWQgdG8gcGFyZW50IHNjaGVtYS4KCQkvLyB0aGV5IGFyZSBvcHRpb25hbCBhbmQgY2FuIGJlIHVzZWQgdG8gZGlzYWxsb3cgdW5rbm93biBwYXJhbWV0ZXJzLgoJCS8vIEZvciBub24tYm9keSBwYXJhbXMsIG5hbWUgdGFnIG11c3QgYmUgcHJvdmlkZWQgZXhwbGljaXRseS4KCQkvLyBFLmcuIGhlcmUgbm8gdW5rbm93biBgcXVlcnlgIGFuZCBgY29va2llYCBwYXJhbWV0ZXJzIGFsbG93ZWQsCgkJLy8gdW5rbm93biBgaGVhZGVyYCBwYXJhbXMgYXJlIG9rLgoJCV8gc3RydWN0e30gYHF1ZXJ5OiJfIiBjb29raWU6Il8iIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiJmYWxzZSJgCgl9CgoJLy8gRGVjbGFyZSBvdXRwdXQgcG9ydCB0eXBlLgoJdHlwZSBoZWxsb091dHB1dCBzdHJ1Y3QgewoJCU5vdyAgICAgdGltZS5UaW1lIGBoZWFkZXI6IlgtTm93IiBqc29uOiItImAKCQlNZXNzYWdlIHN0cmluZyAgICBganNvbjoibWVzc2FnZSJgCgl9CgoJbWVzc2FnZXMgOj0gbWFwW3N0cmluZ11zdHJpbmd7CgkJImVuLVVTIjogIkhlbGxvLCAlcyEiLAoJCSJydS1SVSI6ICLQn9GA0LjQstC10YIsICVzISIsCgl9CgoJLy8gQ3JlYXRlIHVzZSBjYXNlIGludGVyYWN0b3Igd2l0aCByZWZlcmVuY2VzIHRvIGlucHV0L291dHB1dCB0eXBlcyBhbmQgaW50ZXJhY3Rpb24gZnVuY3Rpb24uCgl1IDo9IHVzZWNhc2UuTmV3SW50ZXJhY3RvcihmdW5jKGN0eCBjb250ZXh0LkNvbnRleHQsIGlucHV0IGhlbGxvSW5wdXQsIG91dHB1dCAqaGVsbG9PdXRwdXQpIGVycm9yIHsKCQltc2csIGF2YWlsYWJsZSA6PSBtZXNzYWdlc1tpbnB1dC5Mb2NhbGVdCgkJaWYgIWF2YWlsYWJsZSB7CgkJCXJldHVybiBzdGF0dXMuV3JhcChlcnJvcnMuTmV3KCJ1bmtub3duIGxvY2FsZSIpLCBzdGF0dXMuSW52YWxpZEFyZ3VtZW50KQoJCX0KCgkJb3V0cHV0Lk1lc3NhZ2UgPSBmbXQuU3ByaW50Zihtc2csIGlucHV0Lk5hbWUpCgkJb3V0cHV0Lk5vdyA9IHRpbWUuTm93KCkKCgkJcmV0dXJuIG5pbAoJfSkKCgkvLyBEZXNjcmliZSB1c2UgY2FzZSBpbnRlcmFjdG9yLgoJdS5TZXRUaXRsZSgiR3JlZXRlciIpCgl1LlNldERlc2NyaXB0aW9uKCJHcmVldGVyIGdyZWV0cyB5b3UuIikKCgl1LlNldEV4cGVjdGVkRXJyb3JzKHN0YXR1cy5JbnZhbGlkQXJndW1lbnQpCgoJLy8gQWRkIHVzZSBjYXNlIGhhbmRsZXIgdG8gcm91dGVyLgoJcy5HZXQoIi9oZWxsby97bmFtZX0iLCB1KQoKCS8vIFN3YWdnZXIgVUkgZW5kcG9pbnQgYXQgL2RvY3MuCglzLkRvY3MoIi9kb2NzIiwgc3dndWkuTmV3KQoKCS8vIFN0YXJ0IHNlcnZlci4KCWxvZy5QcmludGxuKCJodHRwOi8vbG9jYWxob3N0OjgwMTEvZG9jcyIpCglpZiBlcnIgOj0gaHR0cC5MaXN0ZW5BbmRTZXJ2ZSgiOjgwMTEiLCBzKTsgZXJyICE9IG5pbCB7CgkJbG9nLkZhdGFsKGVycikKCX0KfQoKYGBgCgohW0RvY3VtZW50YXRpb24gUGFnZV0oLi9fZXhhbXBsZXMvYmFzaWMvc2NyZWVuLnBuZykKCiMjIEFkZGl0aW9uYWwgSW50ZWdyYXRpb25zCgoqIFtgZ2l0aHViLmNvbS9nb3JpbGxhL211eGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCksIHNlZSBbZXhhbXBsZV0oLi9nb3JpbGxhbXV4L2V4YW1wbGVfb3BlbmFwaV9jb2xsZWN0b3JfdGVzdC5nbykuCgojIyBQZXJmb3JtYW5jZSBPcHRpbWl6YXRpb24KCklmIHRvcCBwZXJmb3JtYW5jZSBpcyBjcml0aWNhbCBmb3IgdGhlIHNlcnZpY2Ugb3IgcGFydGljdWxhciBlbmRwb2ludHMsIHlvdSBjYW4gdHJhZGUgCnNpbXBsaWNpdHkgZm9yIHBlcmZvcm1hbmNlIGJ5IGltcGxlbWVudGluZyBtYW51YWwgcmVxdWVzdCBsb2FkZXIgb24gaW5wdXQgdHlwZS4KCmBgYGdvCmZ1bmMgKGkgKm15SW5wdXQpIExvYWRGcm9tSFRUUFJlcXVlc3QociAqaHR0cC5SZXF1ZXN0KSAoZXJyIGVycm9yKSB7CglpLkhlYWRlciA9IHIuSGVhZGVyLkdldCgiWC1IZWFkZXIiKQoKCXJldHVybiBuaWwKfQpgYGAKCklmIGByZXF1ZXN0LkxvYWRlcmAgaXMgaW1wbGVtZW50ZWQsIGl0IHdpbGwgYmUgY2FsbGVkIGluc3RlYWQgb2YgYm90aCBhdXRvbWF0aWMgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb24uCgpDaGVjayBhZHZhbmNlZCBbZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvYmxvYi92MC4yLjI5L19leGFtcGxlcy9hZHZhbmNlZC1nZW5lcmljL2pzb25fYm9keV9tYW51YWwuZ28jTDU4KS4KClRvIGZ1cnRoZXIgaW1wcm92ZSBwZXJmb3JtYW5jZSB5b3UgbWF5IHRyeSB0byB1c2UgYGZhc3RodHRwYCBpbnN0ZWFkIG9mIGBuZXQvaHR0cGAgd2l0aCAKW2ByZXN0LWZhc3RodHRwYF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QtZmFzdGh0dHApIGZvcmsuCgojIyBWZXJzaW9uaW5nCgpUaGlzIHByb2plY3QgYWRoZXJlcyB0byBbU2VtYW50aWMgVmVyc2lvbmluZ10oaHR0cHM6Ly9zZW12ZXIub3JnLyNzZW1hbnRpYy12ZXJzaW9uaW5nLTIwMCkuCgpCZWZvcmUgdmVyc2lvbiBgMS4wLjBgLCBicmVha2luZyBjaGFuZ2VzIGFyZSB0YWdnZWQgd2l0aCBgTUlOT1JgIGJ1bXAsIGZlYXR1cmVzIGFuZCBmaXhlcyBhcmUgdGFnZ2VkIHdpdGggYFBBVENIYCBidW1wLgpBZnRlciB2ZXJzaW9uIGAxLjAuMGAsIGJyZWFraW5nIGNoYW5nZXMgYXJlIHRhZ2dlZCB3aXRoIGBNQUpPUmAgYnVtcC4KCkJyZWFraW5nIGNoYW5nZXMgYXJlIGRlc2NyaWJlZCBpbiBbVVBHUkFERS5tZF0oLi9VUEdSQURFLm1kKS4K - readmeEtag: '"381b2cb8f8cf174250131ff35712b8c73d9ef05681ec4bc37f25fda12b5ea153"' - readmeLastModified: Thu, 03 Aug 2023 14:20:32 GMT + IyBSRVNUIHdpdGggQ2xlYW4gQXJjaGl0ZWN0dXJlIGZvciBHbwoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC93b3JrZmxvd3MvdGVzdC11bml0L2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L2FjdGlvbnM/cXVlcnk9YnJhbmNoJTNBbWFzdGVyK3dvcmtmbG93JTNBdGVzdC11bml0KQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY29kZWNvdi5pby9naC9zd2FnZ2VzdC9yZXN0L2JyYW5jaC9tYXN0ZXIvZ3JhcGgvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L3Jlc3QpClshW0dvRGV2RG9jXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2Rldi1kb2MtMDBBREQ4P2xvZ289Z28pXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0KQpbIVtUaW1lIFRyYWNrZXJdKGh0dHBzOi8vd2FrYXRpbWUuY29tL2JhZGdlL2dpdGh1Yi9zd2FnZ2VzdC9yZXN0LnN2ZyldKGh0dHBzOi8vd2FrYXRpbWUuY29tL2JhZGdlL2dpdGh1Yi9zd2FnZ2VzdC9yZXN0KQohW0NvZGUgbGluZXNdKGh0dHBzOi8vc2xvYy54eXovZ2l0aHViL3N3YWdnZXN0L3Jlc3QvP2NhdGVnb3J5PWNvZGUpCiFbQ29tbWVudHNdKGh0dHBzOi8vc2xvYy54eXovZ2l0aHViL3N3YWdnZXN0L3Jlc3QvP2NhdGVnb3J5PWNvbW1lbnRzKQoKVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBIVFRQIHRyYW5zcG9ydCBsZXZlbCBmb3IgW2BnaXRodWIuY29tL3N3YWdnZXN0L3VzZWNhc2VgXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSkgCnRvIGJ1aWxkIFJFU1Qgc2VydmljZXMuCgojIyBHb2FscwoKKiBNYWludGFpbiBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBkb2N1bWVudGF0aW9uLCB2YWxpZGF0aW9uIGFuZCBpbnB1dC9vdXRwdXQgb2YgSFRUUCBBUEkuCiogQXZvaWQgZGVwZW5kZW5jeSBvbiBjb21waWxlIHRpbWUgY29kZSBnZW5lcmF0aW9uLgoqIEltcHJvdmUgcHJvZHVjdGl2aXR5IGFuZCByZWxpYWJpbGl0eSBieSBhYnN0cmFjdGluZyBIVFRQIGRldGFpbHMgd2l0aCBzaW1wbGUgQVBJIGZvciBjb21tb24gY2FzZS4KKiBBbGxvdyBsb3ctbGV2ZWwgY3VzdG9taXphdGlvbnMgZm9yIGFkdmFuY2VkIGNhc2VzLgoqIE1haW50YWluIHJlYXNvbmFibGUgcGVyZm9ybWFuY2Ugd2l0aCBsb3cgR0MgaW1wYWN0LgoKIyMgTm9uLUdvYWxzCgoqIFN1cHBvcnQgZm9yIGxlZ2FjeSBkb2N1bWVudGF0aW9uIHNjaGVtYXMgbGlrZSBTd2FnZ2VyIDIuMCBvciBSQU1MLgoqIFplcm8gYWxsb2NhdGlvbnMuCiogRXhwbGljaXQgc3VwcG9ydCBmb3IgWE1MIGluIHJlcXVlc3Qgb3IgcmVzcG9uc2UgYm9kaWVzLgoKIyMgRmVhdHVyZXMKCiogQ29tcGF0aWJsZSB3aXRoIGBuZXQvaHR0cGAuCiogQnVpbHQgd2l0aCBbYGdpdGh1Yi5jb20vZ28tY2hpL2NoaWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1jaGkvY2hpKSByb3V0ZXIuCiogTW9kdWxhciBmbGV4aWJsZSBzdHJ1Y3R1cmUuCiogSFRUUCBbcmVxdWVzdCBtYXBwaW5nXSgjcmVxdWVzdC1kZWNvZGVyKSBpbnRvIEdvIHZhbHVlIGJhc2VkIG9uIGZpZWxkIHRhZ3MuCiogRGVjb3VwbGVkIGJ1c2luZXNzIGxvZ2ljIHdpdGggQ2xlYW4gQXJjaGl0ZWN0dXJlIHVzZSBjYXNlcy4KKiBBdXRvbWF0aWMgdHlwZS1zYWZlIE9wZW5BUEkgMy4wLzMuMSBkb2N1bWVudGF0aW9uIHdpdGggW2BnaXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ29gXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nbykuCiogU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGRvY3VtZW50YXRpb24gYW5kIGVuZHBvaW50IGludGVyZmFjZS4KKiBBdXRvbWF0aWMgcmVxdWVzdC9yZXNwb25zZSBKU09OIHNjaGVtYSB2YWxpZGF0aW9uIHdpdGggW2BnaXRodWIuY29tL3NhbnRob3NoLXRla3VyaS9qc29uc2NoZW1hYF0oaHR0cHM6Ly9naXRodWIuY29tL3NhbnRob3NoLXRla3VyaS9qc29uc2NoZW1hKS4KKiBEeW5hbWljIGd6aXAgY29tcHJlc3Npb24gYW5kIGZhc3QgcGFzcyB0aHJvdWdoIG1vZGUuCiogT3B0aW1pemVkIHBlcmZvcm1hbmNlLgoqIEVtYmVkZGVkIFtTd2FnZ2VyIFVJXShodHRwczovL3N3YWdnZXIuaW8vdG9vbHMvc3dhZ2dlci11aS8pLgoqIEdlbmVyaWMgaW50ZXJmYWNlIGZvciBbdXNlIGNhc2UgaW50ZXJhY3RvcnNdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3VzZWNhc2UjTmV3SW50ZXJhY3RvcikuIAoKIyMgVXNhZ2UKClBsZWFzZSBjaGVjayB0aGlzIFt0dXRvcmlhbF0oaHR0cHM6Ly9kZXYudG8vdmVhcnV0b3AvdHV0b3JpYWwtZGV2ZWxvcGluZy1hLXJlc3RmdWwtYXBpLXdpdGgtZ28tanNvbi1zY2hlbWEtdmFsaWRhdGlvbi1hbmQtb3BlbmFwaS1kb2NzLTI0OTApIGZvciBlbmQtdG8tZW5kIHVzYWdlIGV4YW1wbGUuCgojIyMgUmVxdWVzdCBEZWNvZGVyCgpHbyBzdHJ1Y3Qgd2l0aCBmaWVsZCB0YWdzIGRlZmluZXMgaW5wdXQgcG9ydC4gClJlcXVlc3QgZGVjb2RlciBwb3B1bGF0ZXMgZmllbGQgdmFsdWVzIGZyb20gYGh0dHAuUmVxdWVzdGAgZGF0YSBiZWZvcmUgdXNlIGNhc2UgaW50ZXJhY3RvciBpcyBpbnZva2VkLiAKCmBgYGdvCi8vIERlY2xhcmUgaW5wdXQgcG9ydCB0eXBlLgp0eXBlIGhlbGxvSW5wdXQgc3RydWN0IHsKICAgIExvY2FsZSBzdHJpbmcgYHF1ZXJ5OiJsb2NhbGUiIGRlZmF1bHQ6ImVuLVVTIiBwYXR0ZXJuOiJeW2Etel17Mn0tW0EtWl17Mn0kIiBlbnVtOiJydS1SVSxlbi1VUyJgCiAgICBOYW1lICAgc3RyaW5nIGBwYXRoOiJuYW1lIiBtaW5MZW5ndGg6IjMiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgoKICAgIC8vIEZpZWxkIHRhZ3Mgb2YgdW5uYW1lZCBmaWVsZHMgYXJlIGFwcGxpZWQgdG8gcGFyZW50IHNjaGVtYSwgCgkvLyB0aGV5IGFyZSBvcHRpb25hbCBhbmQgY2FuIGJlIHVzZWQgdG8gZGlzYWxsb3cgdW5rbm93biBwYXJhbWV0ZXJzLgogICAgLy8gRm9yIG5vbi1ib2R5IHBhcmFtcywgbmFtZSB0YWcgbXVzdCBiZSBwcm92aWRlZCBleHBsaWNpdGx5LgogICAgLy8gRS5nLiBoZXJlIG5vIHVua25vd24gYHF1ZXJ5YCBhbmQgYGNvb2tpZWAgcGFyYW1ldGVycyBhbGxvd2VkLAogICAgLy8gdW5rbm93biBgaGVhZGVyYCBwYXJhbXMgYXJlIG9rLgogICAgXyBzdHJ1Y3R7fSBgcXVlcnk6Il8iIGNvb2tpZToiXyIgYWRkaXRpb25hbFByb3BlcnRpZXM6ImZhbHNlImAKfQpgYGAKCklucHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CiogYHBhdGhgIHBhcmFtZXRlciBpbiByZXF1ZXN0IFVSSSwgZS5nLiBgL3VzZXJzL3tuYW1lfWAsCiogYHF1ZXJ5YCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBVUkksIGUuZy4gYC91c2Vycz9sb2NhbGU9ZW4tVVNgLAoqIGBmb3JtRGF0YWAgcGFyYW1ldGVyIGluIHJlcXVlc3QgYm9keSB3aXRoIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIG9yIGBtdWx0aXBhcnQvZm9ybS1kYXRhYCBjb250ZW50LAoqIGBmb3JtYCBwYXJhbWV0ZXIgYWN0cyBhcyBgZm9ybURhdGFgIG9yIGBxdWVyeWAsCiogYGpzb25gIHBhcmFtZXRlciBpbiByZXF1ZXN0IGJvZHkgd2l0aCBgYXBwbGljYXRpb24vanNvbmAgY29udGVudCwKKiBgY29va2llYCBwYXJhbWV0ZXIgaW4gcmVxdWVzdCBjb29raWUsCiogYGhlYWRlcmAgcGFyYW1ldGVyIGluIHJlcXVlc3QgaGVhZGVyLgoKRm9yIG1vcmUgZXhwbGljaXQgc2VwYXJhdGlvbiBvZiBjb25jZXJucyBiZXR3ZWVuIHVzZSBjYXNlIGFuZCB0cmFuc3BvcnQgaXQgaXMgcG9zc2libGUgdG8gcHJvdmlkZSByZXF1ZXN0IG1hcHBpbmcgCnNlcGFyYXRlbHkgd2hlbiBpbml0aWFsaXppbmcgaGFuZGxlciAocGxlYXNlIG5vdGUsIHN1Y2ggbWFwcGluZyBpcyBbbm90IGFwcGxpZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L2lzc3Vlcy82MSNpc3N1ZWNvbW1lbnQtMTA1OTg1MTU1MykgdG8gYGpzb25gIGJvZHkpLgoKYGBgZ28KLy8gRGVjbGFyZSBpbnB1dCBwb3J0IHR5cGUuCnR5cGUgaGVsbG9JbnB1dCBzdHJ1Y3QgewogICAgTG9jYWxlIHN0cmluZyBgZGVmYXVsdDoiZW4tVVMiIHBhdHRlcm46Il5bYS16XXsyfS1bQS1aXXsyfSQiYAogICAgTmFtZSAgIHN0cmluZyBgbWluTGVuZ3RoOiIzImAgLy8gRmllbGQgdGFncyBkZWZpbmUgcGFyYW1ldGVyIGxvY2F0aW9uIGFuZCBKU09OIHNjaGVtYSBjb25zdHJhaW50cy4KfQpgYGAKCmBgYGdvCi8vIEFkZCB1c2UgY2FzZSBoYW5kbGVyIHdpdGggY3VzdG9tIGlucHV0IG1hcHBpbmcgdG8gcm91dGVyLgpyLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi9oZWxsby97bmFtZX0iLCBuZXRodHRwLk5ld0hhbmRsZXIodSwKICAgIG5ldGh0dHAuUmVxdWVzdE1hcHBpbmcobmV3KHN0cnVjdCB7CiAgICAgICBMb2NhbGUgc3RyaW5nIGBxdWVyeToibG9jYWxlImAKICAgICAgIE5hbWUgICBzdHJpbmcgYHBhdGg6Im5hbWUiYCAvLyBGaWVsZCB0YWdzIGRlZmluZSBwYXJhbWV0ZXIgbG9jYXRpb24gYW5kIEpTT04gc2NoZW1hIGNvbnN0cmFpbnRzLgogICAgfSkpLAopKQpgYGAKCkFkZGl0aW9uYWwgZmllbGQgdGFncyBkZXNjcmliZSBKU09OIHNjaGVtYSBjb25zdHJhaW50cywgcGxlYXNlIGNoZWNrIApbZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNSZWZsZWN0b3IuUmVmbGVjdCkuCgpNb3JlIHNjaGVtYSBjdXN0b21pemF0aW9ucyBhcmUgcG9zc2libGUgd2l0aCBbYGdpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyBpbnRlcmZhY2VzYF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L2pzb25zY2hlbWEtZ28jaW1wbGVtZW50aW5nLWludGVyZmFjZXMtb24tYS10eXBlKS4KCkJ5IGRlZmF1bHQgYGRlZmF1bHRgIHRhZ3MgYXJlIG9ubHkgY29udHJpYnV0aW5nIHRvIGRvY3VtZW50YXRpb24sIAppZiBbYHJlcXVlc3QuRGVjb2RlckZhY3RvcnkuQXBwbHlEZWZhdWx0c2BdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvcmVxdWVzdCNEZWNvZGVyRmFjdG9yeSkgaXMgCnNldCB0byBgdHJ1ZWAsIGZpZWxkcyBvZiByZXF1ZXN0IHN0cnVjdHVyZSB0aGF0IGRvbid0IGhhdmUgZXhwbGljaXQgdmFsdWUgYnV0IGhhdmUgYGRlZmF1bHRgIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggCmRlZmF1bHQgdmFsdWUuCgpJZiBpbnB1dCBzdHJ1Y3R1cmUgaW1wbGVtZW50cyBbYHJlcXVlc3QuTG9hZGVyYF0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvcmVzdC9yZXF1ZXN0I0xvYWRlciksICAKdGhlbiBgTG9hZEZyb21IVFRQUmVxdWVzdChyICpodHRwLlJlcXVlc3QpIGVycm9yYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIHRvIHBvcHVsYXRlIGlucHV0IHN0cnVjdHVyZSBpbnN0ZWFkIApvZiBhdXRvbWF0aWMgZGVjb2RpbmcuIFRoaXMgYWxsb3dzIGxvdyBsZXZlbCBjb250cm9sIGZvciBjYXNlcyB0aGF0IG5lZWQgaXQuCgo8ZGV0YWlscz4KPHN1bW1hcnk+UmVxdWVzdCBkZWNvZGVyIGNhbiBiZSB1c2VkIHN0YW5kYWxvbmUsIGluIGFscmVhZHkgZXhpc3RpbmcgYFNlcnZlSFRUUGAuPC9zdW1tYXJ5PgoKYGBgZ28KdHlwZSBNeVJlcXVlc3Qgc3RydWN0IHsKICAgIEZvbyBpbnQgICAgYGhlYWRlcjoiWC1Gb28iYAogICAgQmFyIHN0cmluZyBgZm9ybURhdGE6ImJhciJgCiAgICBCYXogYm9vbCAgIGBxdWVyeToiYmF6ImAKfQoKLy8gQSBkZWNvZGVyIGZvciBwYXJ0aWN1bGFyIHN0cnVjdHVyZSwgY2FuIGJlIHJldXNlZCBmb3IgbXVsdGlwbGUgSFRUUCByZXF1ZXN0cy4KbXlEZWNvZGVyIDo9IHJlcXVlc3QuTmV3RGVjb2RlckZhY3RvcnkoKS5NYWtlRGVjb2RlcihodHRwLk1ldGhvZFBvc3QsIG5ldyhNeVJlcXVlc3QpLCBuaWwpCgovLyBSZXF1ZXN0IGFuZCByZXNwb25zZSB3cml0ZXIgZnJvbSBTZXJ2ZUhUVFAuCnZhciAoCiAgICBydyAgaHR0cC5SZXNwb25zZVdyaXRlcgogICAgcmVxICpodHRwLlJlcXVlc3QKKQoKLy8gVGhpcyBjb2RlIHdvdWxkIHByZXN1bWFibHkgbGl2ZSBpbiBTZXJ2ZUhUVFAuCnZhciBteVJlcSBNeVJlcXVlc3QKCmlmIGVyciA6PSBteURlY29kZXIuRGVjb2RlKHJlcSwgJm15UmVxLCBuaWwpOyBlcnIgIT0gbmlsIHsKICAgIGh0dHAuRXJyb3IocncsIGVyci5FcnJvcigpLCBodHRwLlN0YXR1c0JhZFJlcXVlc3QpCn0KYGBgCjwvZGV0YWlscz4KCiMjIyBSZXNwb25zZSBFbmNvZGVyCgpHbyBzdHJ1Y3Qgd2l0aCBmaWVsZCB0YWdzIGRlZmluZXMgb3V0cHV0IHBvcnQuClJlc3BvbnNlIGVuY29kZXIgd3JpdGVzIGRhdGEgZnJvbSBvdXRwdXQgdG8gYGh0dHAuUmVzcG9uc2VXcml0ZXJgIGFmdGVyIHVzZSBjYXNlIGludGVyYWN0b3IgaW52b2NhdGlvbiBmaW5pc2hlcy4KCmBgYGdvCi8vIERlY2xhcmUgb3V0cHV0IHBvcnQgdHlwZS4KdHlwZSBoZWxsb091dHB1dCBzdHJ1Y3QgewogICAgTm93ICAgICB0aW1lLlRpbWUgYGhlYWRlcjoiWC1Ob3ciIGpzb246Ii0iYAogICAgTWVzc2FnZSBzdHJpbmcgICAgYGpzb246Im1lc3NhZ2UiYAogICAgU2VzcyAgICBzdHJpbmcgICAgYGNvb2tpZToic2VzcyxodHRwb25seSxzZWN1cmUsbWF4LWFnZT04NjQwMCxzYW1lc2l0ZT1sYXgiYAp9CmBgYAoKT3V0cHV0IGRhdGEgY2FuIGJlIGxvY2F0ZWQgaW46CiogYGpzb25gIGZvciByZXNwb25zZSBib2R5IHdpdGggYGFwcGxpY2F0aW9uL2pzb25gIGNvbnRlbnQsCiogYGhlYWRlcmAgZm9yIHZhbHVlcyBpbiByZXNwb25zZSBoZWFkZXIsCiogYGNvb2tpZWAgZm9yIGNvb2tpZSB2YWx1ZXMsIGNvb2tpZSBmaWVsZHMgY2FuIGhhdmUgY29uZmlndXJhdGlvbiBpbiBmaWVsZCB0YWcgKHNhbWUgYXMgaW4gYWN0dWFsIGNvb2tpZSwgYnV0IHdpdGggY29tbWEgc2VwYXJhdGlvbikuCgpGb3IgbW9yZSBleHBsaWNpdCBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zIGJldHdlZW4gdXNlIGNhc2UgYW5kIHRyYW5zcG9ydCBpdCBpcyBwb3NzaWJsZSB0byBwcm92aWRlIHJlc3BvbnNlIGhlYWRlciBtYXBwaW5nIApzZXBhcmF0ZWx5IHdoZW4gaW5pdGlhbGl6aW5nIGhhbmRsZXIuCgpgYGBnbwovLyBEZWNsYXJlIG91dHB1dCBwb3J0IHR5cGUuCnR5cGUgaGVsbG9PdXRwdXQgc3RydWN0IHsKICAgIE5vdyAgICAgdGltZS5UaW1lIGBqc29uOiItImAKICAgIE1lc3NhZ2Ugc3RyaW5nICAgIGBqc29uOiJtZXNzYWdlImAKfQpgYGAKCmBgYGdvCi8vIEFkZCB1c2UgY2FzZSBoYW5kbGVyIHdpdGggY3VzdG9tIG91dHB1dCBoZWFkZXJzIG1hcHBpbmcgdG8gcm91dGVyLgpyLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi9oZWxsby97bmFtZX0iLCBuZXRodHRwLk5ld0hhbmRsZXIodSwKICAgIG5ldGh0dHAuUmVzcG9uc2VIZWFkZXJNYXBwaW5nKG5ldyhzdHJ1Y3QgewogICAgICAgIE5vdyAgICAgdGltZS5UaW1lIGBoZWFkZXI6IlgtTm93ImAKICAgIH0pKSwKKSkKYGBgCgpBZGRpdGlvbmFsIGZpZWxkIHRhZ3MgZGVzY3JpYmUgSlNPTiBzY2hlbWEgY29uc3RyYWludHMsIHBsZWFzZSBjaGVjayAKW2RvY3VtZW50YXRpb25dKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L2pzb25zY2hlbWEtZ28jUmVmbGVjdG9yLlJlZmxlY3QpLgoKIyMjIENyZWF0aW5nIFVzZSBDYXNlIEludGVyYWN0b3IKCkhUVFAgdHJhbnNwb3J0IGlzIGRlY291cGxlZCBmcm9tIGJ1c2luZXNzIGxvZ2ljIGJ5IGFkYXB0aW5nClt1c2UgY2FzZSBpbnRlcmFjdG9yc10oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSNJbnRlcmFjdG9yKS4KClVzZSBjYXNlIGludGVyYWN0b3IgY2FuIGRlZmluZSBpbnB1dCBhbmQgb3V0cHV0IHBvcnRzIHRoYXQgYXJlIHVzZWQgdG8gbWFwIGRhdGEgYmV0d2VlbiBHbyB2YWx1ZXMgYW5kIHRyYW5zcG9ydC4KSXQgY2FuIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgaXRzZWxmIHRoYXQgd2lsbCBiZSBleHBvc2VkIGluIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLgoKYGBgZ28KLy8gQ3JlYXRlIHVzZSBjYXNlIGludGVyYWN0b3Igd2l0aCByZWZlcmVuY2VzIHRvIGlucHV0L291dHB1dCB0eXBlcyBhbmQgaW50ZXJhY3Rpb24gZnVuY3Rpb24uCnUgOj0gdXNlY2FzZS5OZXdJbnRlcmFjdG9yKGZ1bmMoY3R4IGNvbnRleHQuQ29udGV4dCwgaW5wdXQgaGVsbG9JbnB1dCwgb3V0cHV0ICpoZWxsb091dHB1dCkgZXJyb3IgewogICAgbXNnLCBhdmFpbGFibGUgOj0gbWVzc2FnZXNbaW5wdXQuTG9jYWxlXQogICAgaWYgIWF2YWlsYWJsZSB7CiAgICAgICAgcmV0dXJuIHN0YXR1cy5XcmFwKGVycm9ycy5OZXcoInVua25vd24gbG9jYWxlIiksIHN0YXR1cy5JbnZhbGlkQXJndW1lbnQpCiAgICB9CgogICAgb3V0cHV0Lk1lc3NhZ2UgPSBmbXQuU3ByaW50Zihtc2csIGlucHV0Lk5hbWUpCiAgICBvdXRwdXQuTm93ID0gdGltZS5Ob3coKQoKICAgIHJldHVybiBuaWwKfSkKYGBgCgojIyMgSW5pdGlhbGl6aW5nIFdlYiBTZXJ2aWNlCgpbV2ViIFNlcnZpY2VdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3Qvd2ViI0RlZmF1bHRTZXJ2aWNlKSBpcyBhbiBpbnN0cnVtZW50ZWQgZmFjYWRlIGluIGZyb250IG9mIApyb3V0ZXIsIGl0IHNpbXBsaWZpZXMgY29uZmlndXJhdGlvbiBhbmQgcHJvdmlkZXMgbW9yZSBjb21wYWN0IEFQSSB0byBhZGQgdXNlIGNhc2VzLgoKYGBgZ28KLy8gU2VydmljZSBpbml0aWFsaXplcyByb3V0ZXIgd2l0aCByZXF1aXJlZCBtaWRkbGV3YXJlcy4Kc2VydmljZSA6PSB3ZWIuTmV3U2VydmljZShvcGVuYXBpMzEuTmV3UmVmbGVjdG9yKCkpCgovLyBJdCBhbGxvd3MgT3BlbkFQSSBjb25maWd1cmF0aW9uLgpzZXJ2aWNlLk9wZW5BUElTY2hlbWEoKS5TZXRUaXRsZSgiQWxidW1zIEFQSSIpCnNlcnZpY2UuT3BlbkFQSVNjaGVtYSgpLlNldERlc2NyaXB0aW9uKCJUaGlzIHNlcnZpY2UgcHJvdmlkZXMgQVBJIHRvIG1hbmFnZSBhbGJ1bXMuIikKc2VydmljZS5PcGVuQVBJU2NoZW1hKCkuU2V0VmVyc2lvbigidjEuMC4wIikKCi8vIEFkZGl0aW9uYWwgbWlkZGxld2FyZXMgY2FuIGJlIGFkZGVkLgpzZXJ2aWNlLlVzZSgKICAgIG1pZGRsZXdhcmUuU3RyaXBTbGFzaGVzLAoKICAgIC8vIGNvcnMuQWxsb3dBbGwoKS5IYW5kbGVyLCAvLyAiZ2l0aHViLmNvbS9ycy9jb3JzIiwgM3JkLXBhcnR5IENPUlMgbWlkZGxld2FyZSBjYW4gYWxzbyBiZSBjb25maWd1cmVkIGhlcmUuCikKCi8vIFVzZSBjYXNlcyBjYW4gYmUgbW91bnRlZCB1c2luZyBzaG9ydCBzeW50YXggLjxNZXRob2Q+KC4uLikuCnNlcnZpY2UuUG9zdCgiL2FsYnVtcyIsIHBvc3RBbGJ1bXMoKSwgbmV0aHR0cC5TdWNjZXNzU3RhdHVzKGh0dHAuU3RhdHVzQ3JlYXRlZCkpCgpsb2cuUHJpbnRsbigiU3RhcnRpbmcgc2VydmljZSBhdCBodHRwOi8vbG9jYWxob3N0OjgwODAiKQoKaWYgZXJyIDo9IGh0dHAuTGlzdGVuQW5kU2VydmUoImxvY2FsaG9zdDo4MDgwIiwgc2VydmljZSk7IGVyciAhPSBuaWwgewogICAgbG9nLkZhdGFsKGVycikKfQoKYGBgCgpVc3VhbGx5LCBgd2ViLlNlcnZpY2VgIEFQSSBpcyBzdWZmaWNpZW50LCBidXQgaWYgaXQgaXMgbm90LCByb3V0ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgbWFudWFsbHksIHBsZWFzZSBjaGVjayAKdGhlIGRvY3VtZW50YXRpb24gYmVsb3cuCgoKIyMgU2VjdXJpdHkgU2V0dXAKCkV4YW1wbGUgd2l0aCBIVFRQIEJhc2ljIEF1dGguCgpgYGBnbwovLyBQcmVwYXJlIG1pZGRsZXdhcmUgd2l0aCBzdWl0YWJsZSBzZWN1cml0eSBzY2hlbWEuCi8vIEl0IHdpbGwgcGVyZm9ybSBhY3R1YWwgc2VjdXJpdHkgY2hlY2sgZm9yIGV2ZXJ5IHJlbGV2YW50IHJlcXVlc3QuCmFkbWluQXV0aCA6PSBtaWRkbGV3YXJlLkJhc2ljQXV0aCgiQWRtaW4gQWNjZXNzIiwgbWFwW3N0cmluZ11zdHJpbmd7ImFkbWluIjogImFkbWluIn0pCgovLyBQcmVwYXJlIEFQSSBzY2hlbWEgdXBkYXRlciBtaWRkbGV3YXJlLgovLyBJdCB3aWxsIGFubm90YXRlIGhhbmRsZXIgZG9jdW1lbnRhdGlvbiB3aXRoIHNlY3VyaXR5IHNjaGVtYS4KYWRtaW5TZWN1cml0eVNjaGVtYSA6PSBuZXRodHRwLkhUVFBCYXNpY1NlY3VyaXR5TWlkZGxld2FyZShhcGlTY2hlbWEsICJBZG1pbiIsICJBZG1pbiBhY2Nlc3MiKQoKLy8gRW5kcG9pbnRzIHdpdGggYWRtaW4gYWNjZXNzLgpyLlJvdXRlKCIvYWRtaW4iLCBmdW5jKHIgY2hpLlJvdXRlcikgewogICAgci5Hcm91cChmdW5jKHIgY2hpLlJvdXRlcikgewogICAgICAgIHIuVXNlKGFkbWluQXV0aCwgYWRtaW5TZWN1cml0eVNjaGVtYSkgLy8gQWRkIGJvdGggbWlkZGxld2FyZXMgdG8gcm91dGluZyBncm91cCB0byBlbmZvcmNlIGFuZCBkb2N1bWVudCBzZWN1cml0eS4KICAgICAgICByLk1ldGhvZChodHRwLk1ldGhvZFB1dCwgIi9oZWxsby97bmFtZX0iLCBuZXRodHRwLk5ld0hhbmRsZXIodSkpCiAgICB9KQp9KQpgYGAKCkV4YW1wbGUgd2l0aCBjb29raWUuCgpgYGBnbwovLyBTZWN1cml0eSBtaWRkbGV3YXJlcy4KLy8gIC0gc2Vzc01XIGlzIHRoZSBhY3R1YWwgcmVxdWVzdC1sZXZlbCBwcm9jZXNzb3IsCi8vICAtIHNlc3NEb2MgaXMgYSBoYW5kbGVyLWxldmVsIHdyYXBwZXIgdG8gZXhwb3NlIGRvY3MuCnNlc3NNVyA6PSBmdW5jKGhhbmRsZXIgaHR0cC5IYW5kbGVyKSBodHRwLkhhbmRsZXIgewogICAgcmV0dXJuIGh0dHAuSGFuZGxlckZ1bmMoZnVuYyh3IGh0dHAuUmVzcG9uc2VXcml0ZXIsIHIgKmh0dHAuUmVxdWVzdCkgewogICAgICAgIGlmIGMsIGVyciA6PSByLkNvb2tpZSgic2Vzc2lkIik7IGVyciA9PSBuaWwgewogICAgICAgICAgICByID0gci5XaXRoQ29udGV4dChjb250ZXh0LldpdGhWYWx1ZShyLkNvbnRleHQoKSwgInNlc3Npb25JRCIsIGMuVmFsdWUpKQogICAgICAgIH0KCiAgICAgICAgaGFuZGxlci5TZXJ2ZUhUVFAodywgcikKICAgIH0pCn0KCnNlc3NEb2MgOj0gbmV0aHR0cC5BUElLZXlTZWN1cml0eU1pZGRsZXdhcmUocy5PcGVuQVBJQ29sbGVjdG9yLCAiVXNlciIsCiAgICAic2Vzc2lkIiwgb2FwaS5JbkNvb2tpZSwgIlNlc3Npb24gY29va2llLiIpCgovLyBTZWN1cml0eSBzY2hlbWEgaXMgY29uZmlndXJlZCBmb3IgYSBzaW5nbGUgdG9wLWxldmVsIHJvdXRlLgpzLldpdGgoc2Vzc01XLCBzZXNzRG9jKS5NZXRob2QoaHR0cC5NZXRob2RHZXQsICIvcm9vdC13aXRoLXNlc3Npb24iLCBuZXRodHRwLk5ld0hhbmRsZXIoZHVtbXkoKSkpCgovLyBTZWN1cml0eSBzY2hlbWEgaXMgY29uZmlndXJlZCBvbiBhIHN1Yi1yb3V0ZXIuCnMuUm91dGUoIi9kZWVwZXItd2l0aC1zZXNzaW9uIiwgZnVuYyhyIGNoaS5Sb3V0ZXIpIHsKICAgIHIuR3JvdXAoZnVuYyhyIGNoaS5Sb3V0ZXIpIHsKICAgICAgICByLlVzZShzZXNzTVcsIHNlc3NEb2MpCgogICAgICAgIHIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL29uZSIsIG5ldGh0dHAuTmV3SGFuZGxlcihkdW1teSgpKSkKICAgICAgICByLk1ldGhvZChodHRwLk1ldGhvZEdldCwgIi90d28iLCBuZXRodHRwLk5ld0hhbmRsZXIoZHVtbXkoKSkpCiAgICB9KQp9KQoKYGBgCgpTZWUgW2V4YW1wbGVdKC4vX2V4YW1wbGVzL3Rhc2stYXBpL2ludGVybmFsL2luZnJhL25ldGh0dHAvcm91dGVyLmdvKS4KCiMjIEhhbmRsZXIgU2V0dXAKCkhhbmRsZXIgaXMgYSBnZW5lcmFsaXplZCBhZGFwdGVyIGZvciB1c2UgY2FzZSBpbnRlcmFjdG9yLCBzbyB1c3VhbGx5IHNldHVwIGlzIHRyaXZpYWwuCgpgYGBnbwovLyBBZGQgdXNlIGNhc2UgaGFuZGxlciB0byByb3V0ZXIuCnIuTWV0aG9kKGh0dHAuTWV0aG9kR2V0LCAiL2hlbGxvL3tuYW1lfSIsIG5ldGh0dHAuTmV3SGFuZGxlcih1KSkKYGBgCgojIyBFeGFtcGxlCgpGb3Igbm9uLWdlbmVyaWMgdXNlIGNhc2UsIHNlZSBhbm90aGVyIFtleGFtcGxlXSguL19leGFtcGxlcy9iYXNpYy9tYWluLmdvKS4KCmBgYGdvCnBhY2thZ2UgbWFpbgoKaW1wb3J0ICgKCSJjb250ZXh0IgoJImVycm9ycyIKCSJmbXQiCgkibG9nIgoJIm5ldC9odHRwIgoJInRpbWUiCgoJImdpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby9vcGVuYXBpMzEiCgkiZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L3Jlc3BvbnNlL2d6aXAiCgkiZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0L3dlYiIKCXN3Z3VpICJnaXRodWIuY29tL3N3YWdnZXN0L3N3Z3VpL3Y1ZW1iIgoJImdpdGh1Yi5jb20vc3dhZ2dlc3QvdXNlY2FzZSIKCSJnaXRodWIuY29tL3N3YWdnZXN0L3VzZWNhc2Uvc3RhdHVzIgopCgpmdW5jIG1haW4oKSB7CglzIDo9IHdlYi5OZXdTZXJ2aWNlKG9wZW5hcGkzMS5OZXdSZWZsZWN0b3IoKSkKCgkvLyBJbml0IEFQSSBkb2N1bWVudGF0aW9uIHNjaGVtYS4KCXMuT3BlbkFQSVNjaGVtYSgpLlNldFRpdGxlKCJCYXNpYyBFeGFtcGxlIikKCXMuT3BlbkFQSVNjaGVtYSgpLlNldERlc2NyaXB0aW9uKCJUaGlzIGFwcCBzaG93Y2FzZXMgYSB0cml2aWFsIFJFU1QgQVBJLiIpCglzLk9wZW5BUElTY2hlbWEoKS5TZXRWZXJzaW9uKCJ2MS4yLjMiKQoKCS8vIFNldHVwIG1pZGRsZXdhcmVzLgoJcy5XcmFwKAoJCWd6aXAuTWlkZGxld2FyZSwgLy8gUmVzcG9uc2UgY29tcHJlc3Npb24gd2l0aCBzdXBwb3J0IGZvciBkaXJlY3QgZ3ppcCBwYXNzIHRocm91Z2guCgkpCgoJLy8gRGVjbGFyZSBpbnB1dCBwb3J0IHR5cGUuCgl0eXBlIGhlbGxvSW5wdXQgc3RydWN0IHsKCQlMb2NhbGUgc3RyaW5nIGBxdWVyeToibG9jYWxlIiBkZWZhdWx0OiJlbi1VUyIgcGF0dGVybjoiXlthLXpdezJ9LVtBLVpdezJ9JCIgZW51bToicnUtUlUsZW4tVVMiYAoJCU5hbWUgICBzdHJpbmcgYHBhdGg6Im5hbWUiIG1pbkxlbmd0aDoiMyJgIC8vIEZpZWxkIHRhZ3MgZGVmaW5lIHBhcmFtZXRlciBsb2NhdGlvbiBhbmQgSlNPTiBzY2hlbWEgY29uc3RyYWludHMuCgoJCS8vIEZpZWxkIHRhZ3Mgb2YgdW5uYW1lZCBmaWVsZHMgYXJlIGFwcGxpZWQgdG8gcGFyZW50IHNjaGVtYS4KCQkvLyB0aGV5IGFyZSBvcHRpb25hbCBhbmQgY2FuIGJlIHVzZWQgdG8gZGlzYWxsb3cgdW5rbm93biBwYXJhbWV0ZXJzLgoJCS8vIEZvciBub24tYm9keSBwYXJhbXMsIG5hbWUgdGFnIG11c3QgYmUgcHJvdmlkZWQgZXhwbGljaXRseS4KCQkvLyBFLmcuIGhlcmUgbm8gdW5rbm93biBgcXVlcnlgIGFuZCBgY29va2llYCBwYXJhbWV0ZXJzIGFsbG93ZWQsCgkJLy8gdW5rbm93biBgaGVhZGVyYCBwYXJhbXMgYXJlIG9rLgoJCV8gc3RydWN0e30gYHF1ZXJ5OiJfIiBjb29raWU6Il8iIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiJmYWxzZSJgCgl9CgoJLy8gRGVjbGFyZSBvdXRwdXQgcG9ydCB0eXBlLgoJdHlwZSBoZWxsb091dHB1dCBzdHJ1Y3QgewoJCU5vdyAgICAgdGltZS5UaW1lIGBoZWFkZXI6IlgtTm93IiBqc29uOiItImAKCQlNZXNzYWdlIHN0cmluZyAgICBganNvbjoibWVzc2FnZSJgCgl9CgoJbWVzc2FnZXMgOj0gbWFwW3N0cmluZ11zdHJpbmd7CgkJImVuLVVTIjogIkhlbGxvLCAlcyEiLAoJCSJydS1SVSI6ICLQn9GA0LjQstC10YIsICVzISIsCgl9CgoJLy8gQ3JlYXRlIHVzZSBjYXNlIGludGVyYWN0b3Igd2l0aCByZWZlcmVuY2VzIHRvIGlucHV0L291dHB1dCB0eXBlcyBhbmQgaW50ZXJhY3Rpb24gZnVuY3Rpb24uCgl1IDo9IHVzZWNhc2UuTmV3SW50ZXJhY3RvcihmdW5jKGN0eCBjb250ZXh0LkNvbnRleHQsIGlucHV0IGhlbGxvSW5wdXQsIG91dHB1dCAqaGVsbG9PdXRwdXQpIGVycm9yIHsKCQltc2csIGF2YWlsYWJsZSA6PSBtZXNzYWdlc1tpbnB1dC5Mb2NhbGVdCgkJaWYgIWF2YWlsYWJsZSB7CgkJCXJldHVybiBzdGF0dXMuV3JhcChlcnJvcnMuTmV3KCJ1bmtub3duIGxvY2FsZSIpLCBzdGF0dXMuSW52YWxpZEFyZ3VtZW50KQoJCX0KCgkJb3V0cHV0Lk1lc3NhZ2UgPSBmbXQuU3ByaW50Zihtc2csIGlucHV0Lk5hbWUpCgkJb3V0cHV0Lk5vdyA9IHRpbWUuTm93KCkKCgkJcmV0dXJuIG5pbAoJfSkKCgkvLyBEZXNjcmliZSB1c2UgY2FzZSBpbnRlcmFjdG9yLgoJdS5TZXRUaXRsZSgiR3JlZXRlciIpCgl1LlNldERlc2NyaXB0aW9uKCJHcmVldGVyIGdyZWV0cyB5b3UuIikKCgl1LlNldEV4cGVjdGVkRXJyb3JzKHN0YXR1cy5JbnZhbGlkQXJndW1lbnQpCgoJLy8gQWRkIHVzZSBjYXNlIGhhbmRsZXIgdG8gcm91dGVyLgoJcy5HZXQoIi9oZWxsby97bmFtZX0iLCB1KQoKCS8vIFN3YWdnZXIgVUkgZW5kcG9pbnQgYXQgL2RvY3MuCglzLkRvY3MoIi9kb2NzIiwgc3dndWkuTmV3KQoKCS8vIFN0YXJ0IHNlcnZlci4KCWxvZy5QcmludGxuKCJodHRwOi8vbG9jYWxob3N0OjgwMTEvZG9jcyIpCglpZiBlcnIgOj0gaHR0cC5MaXN0ZW5BbmRTZXJ2ZSgibG9jYWxob3N0OjgwMTEiLCBzKTsgZXJyICE9IG5pbCB7CgkJbG9nLkZhdGFsKGVycikKCX0KfQoKYGBgCgohW0RvY3VtZW50YXRpb24gUGFnZV0oLi9fZXhhbXBsZXMvYmFzaWMvc2NyZWVuLnBuZykKCiMjIEFkZGl0aW9uYWwgSW50ZWdyYXRpb25zCgoqIFtgZ2l0aHViLmNvbS9nb3JpbGxhL211eGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCksIHNlZSBbZXhhbXBsZV0oLi9nb3JpbGxhbXV4L2V4YW1wbGVfb3BlbmFwaV9jb2xsZWN0b3JfdGVzdC5nbykuCgojIyBQZXJmb3JtYW5jZSBPcHRpbWl6YXRpb24KCklmIHRvcCBwZXJmb3JtYW5jZSBpcyBjcml0aWNhbCBmb3IgdGhlIHNlcnZpY2Ugb3IgcGFydGljdWxhciBlbmRwb2ludHMsIHlvdSBjYW4gdHJhZGUgCnNpbXBsaWNpdHkgZm9yIHBlcmZvcm1hbmNlIGJ5IGltcGxlbWVudGluZyBtYW51YWwgcmVxdWVzdCBsb2FkZXIgb24gaW5wdXQgdHlwZS4KCmBgYGdvCmZ1bmMgKGkgKm15SW5wdXQpIExvYWRGcm9tSFRUUFJlcXVlc3QociAqaHR0cC5SZXF1ZXN0KSAoZXJyIGVycm9yKSB7CglpLkhlYWRlciA9IHIuSGVhZGVyLkdldCgiWC1IZWFkZXIiKQoKCXJldHVybiBuaWwKfQpgYGAKCklmIGByZXF1ZXN0LkxvYWRlcmAgaXMgaW1wbGVtZW50ZWQsIGl0IHdpbGwgYmUgY2FsbGVkIGluc3RlYWQgb2YgYm90aCBhdXRvbWF0aWMgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb24uCgpDaGVjayBhZHZhbmNlZCBbZXhhbXBsZV0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QvYmxvYi92MC4yLjI5L19leGFtcGxlcy9hZHZhbmNlZC1nZW5lcmljL2pzb25fYm9keV9tYW51YWwuZ28jTDU4KS4KClRvIGZ1cnRoZXIgaW1wcm92ZSBwZXJmb3JtYW5jZSB5b3UgbWF5IHRyeSB0byB1c2UgYGZhc3RodHRwYCBpbnN0ZWFkIG9mIGBuZXQvaHR0cGAgd2l0aCAKW2ByZXN0LWZhc3RodHRwYF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QtZmFzdGh0dHApIGZvcmsuCgojIyBWZXJzaW9uaW5nCgpUaGlzIHByb2plY3QgYWRoZXJlcyB0byBbU2VtYW50aWMgVmVyc2lvbmluZ10oaHR0cHM6Ly9zZW12ZXIub3JnLyNzZW1hbnRpYy12ZXJzaW9uaW5nLTIwMCkuCgpCZWZvcmUgdmVyc2lvbiBgMS4wLjBgLCBicmVha2luZyBjaGFuZ2VzIGFyZSB0YWdnZWQgd2l0aCBgTUlOT1JgIGJ1bXAsIGZlYXR1cmVzIGFuZCBmaXhlcyBhcmUgdGFnZ2VkIHdpdGggYFBBVENIYCBidW1wLgpBZnRlciB2ZXJzaW9uIGAxLjAuMGAsIGJyZWFraW5nIGNoYW5nZXMgYXJlIHRhZ2dlZCB3aXRoIGBNQUpPUmAgYnVtcC4KCkJyZWFraW5nIGNoYW5nZXMgYXJlIGRlc2NyaWJlZCBpbiBbVVBHUkFERS5tZF0oLi9VUEdSQURFLm1kKS4KCiMjIEFkdmFuY2VkIFVzYWdlCgpbQWR2YW5jZWQgVXNhZ2VdKC4vQURWQU5DRUQubWQp + readmeEtag: '"d4936e8d81d76882877bfea947e90c91f0ded50f5deb3f47a55503a7844efc0a"' + readmeLastModified: Tue, 08 Aug 2023 23:19:10 GMT repositoryId: 306110879 description: Web services with OpenAPI and JSON Schema done quick in Go created: '2020-10-21T18:16:16Z' - updated: '2023-08-07T21:34:15Z' + updated: '2023-08-08T15:39:34Z' language: Go archived: false - stars: 233 + stars: 234 watchers: 4 forks: 13 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT - repoEtag: '"f2f07f6577aaec62121e5db277a5592125fce3e90e8c50a2e9f0de235699881d"' - repoLastModified: Mon, 07 Aug 2023 21:34:15 GMT + repoEtag: '"9becb5c05c97818eac2184b689e489e3416f4e55d2d55568e0c11f857094a7e9"' + repoLastModified: Tue, 08 Aug 2023 15:39:34 GMT foundInMaster: true id: ecd2fef7bb4079bda209503f9fb9820b - source: @@ -8187,9 +8187,9 @@ id: c3406002d5ded68b23a583a8173c775e repositoryMetadata: base64Readme: >- - IyBBcGlDYXQKCkVuZ2xpc2ggfCBb566A5L2T5Lit5paHXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9ibG9iL21hc3Rlci9SRUFETUUtQ04ubWQpCgpBcGlDYXQgaXMgYW4gQVBJIGRldmVsb3BtZW50IHRvb2wgYmFzZWQgb24gQUkgdGVjaG5vbG9neSwgd2hpY2ggYWltcyB0byBoZWxwIGRldmVsb3BlcnMgZGV2ZWxvcCBBUElzIG1vcmUgcXVpY2tseSBhbmQgZWZmaWNpZW50bHkgdGhyb3VnaCBhdXRvbWF0aW9uIGFuZCBpbnRlbGxpZ2VuY2UuIEFwaUNhdCBzdXBwb3J0cyB0aGUgaW1wb3J0IGFuZCBleHBvcnQgb2YgT3BlbkFQSSBhbmQgU3dhZ2dlciBkYXRhIGZpbGVzLCBhbmQgY2FuIGFuYWx5emUgYW5kIGlkZW50aWZ5IHRoZSBBUEkgcmVxdWlyZW1lbnRzIGVudGVyZWQgYnkgdXNlcnMsIGFuZCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGNvcnJlc3BvbmRpbmcgQVBJIGRvY3VtZW50cyBhbmQgY29kZXMuCgpZb3UgY2FuIHZpc2l0IG91ciBbT25saW5lIERlbW9dKGh0dHA6Ly9kZW1vLmFwaWNhdC5uZXQpIHRvIHRyeSBpdCBvdXQuCgpBcGlDYXQgaXMgc3RpbGwgaW4gaXRzIGVhcmx5IHN0YWdlcywgU3RhciBhbmQgV2F0Y2ggYXJlIHdlbGNvbWUgdG8gZm9sbG93IHRoZSBsYXRlc3QgZGV2ZWxvcG1lbnRzIG9mIHRoZSBwcm9qZWN0LgoKIyMgRmVhdHVyZXMKCiMjIyBEZW1vCgohW0FJLWdlbmVyYXRlLXNjaGVtYV0oaHR0cHM6Ly9jZG4uYXBpY2F0Lm5ldC91cGxvYWRzLzBjMzUxOGMxYmZjNDIxZmM0ZjNmODZjMDg1ZjM1M2QyLmdpZikKCiFbQUktZ2VuZXJhdGUtYXBpLWJ5LXNjaGVtYV0oaHR0cHM6Ly9jZG4uYXBpY2F0Lm5ldC91cGxvYWRzL2JiY2FlODM1MTFkNzk3ZDIyMDc3ZDA1ZDE3YzI2MmNjLmdpZikKCiFbQUktZ2VuZXJhdGUtYXBpXShodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvY2Y2MTdiNTZmYTE4Njk2MGMyMjhjNzk0ODdjZjZjNWUuZ2lmKQoKIyMjIE92ZXJ2aWV3CgotIFN1cHBvcnQgT3BlbkFQSSBhbmQgU3dhZ2dlciBkYXRhIGZpbGUgaW1wb3J0IGFuZCBleHBvcnQsIHdoaWNoIGlzIGNvbnZlbmllbnQgZm9yIGRldmVsb3BlcnMgdG8gZGVzY3JpYmUgYW5kIG1hbmFnZSBBUEkgc3BlY2lmaWNhdGlvbnMuCi0gVGhyb3VnaCBBSSB0ZWNobm9sb2d5LCB0aGUgcmVxdWlyZW1lbnRzIGFuZCBzdHJ1Y3R1cmUgb2YgdGhlIEFQSSBjYW4gYmUgYXV0b21hdGljYWxseSBpZGVudGlmaWVkLCBhbmQgY29ycmVzcG9uZGluZyBBUEkgZG9jdW1lbnRzIGFuZCBjb2RlcyBjYW4gYmUgZ2VuZXJhdGVkIHRvIGltcHJvdmUgZGV2ZWxvcG1lbnQgZWZmaWNpZW5jeSBhbmQgcXVhbGl0eS4KCiMjIEluc3RhbGxhdGlvbiBhbmQgZGVwbG95bWVudAoKIyMjIEdldCBDb2RlCgpgYGAKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9hcGljYXQvYXBpY2F0LmdpdApgYGAKCiMjIyBDb21waWxlIGFuZCBzdGFydCB0aGUgc2VydmljZQoKYGBgCiMgRW50ZXIgcHJvamVjdApjZCBhcGljYXQKCiMgQ29tcGlsZSB0aGUgZnJvbnQtZW5kIGNvZGUKY2QgZnJvbnRlbmQgCnBucG0gaW5zdGFsbApwbnBtIGJ1aWxkCgojIFVwZGF0ZSBjb2xsYXRpb24gZGVwZW5kZW5jaWVzCmdvIG1vZCB0aWR5CgojIENvbXBpbGUgcHJvamVjdApnbyBidWlsZAoKIyBNb2RpZnkgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQojIFlvdSBjYW4gY29weSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRlbnQgb2YgY29uZmlnL3NldHRpbmcuZGVmYXVsdC55YW1sIGZvciBjb25maWd1cmF0aW9uIG1vZGlmaWNhdGlvbgpjcCAuL2NvbmZpZy9zZXR0aW5nLmRlZmF1bHQueWFtbCAuLwp2aW0gLi9zZXR0aW5nLmRlZmF1bHQueWFtbAoKIyBzdGFydCBzZXJ2aWNlKGRlZmF1bHQgY29uZmlndXJhdGlvbikKLi9hcGljYXQKIyBzdGFydCBzZXJ2aWNlKGN1c3RvbSBjb25maWd1cmF0aW9uKQouL2FwaWNhdCAtYyBzZXR0aW5nLmRlZmF1bHQueWFtbApgYGAKCiMjIENvbnRhY3QKClRoZSBncm93dGggb2YgQXBpQ2F0IGlzIGluc2VwYXJhYmxlIGZyb20gZWFjaCBvZiBpdHMgdXNlcnMuIElmIHlvdSBoYXZlIGFueSBjb250ZW50IHRoYXQgeW91IHdhbnQgdG8gZGlzY3VzcyB3aXRoIHVzLCBwbGVhc2UgY29udGFjdCB1cyBhbmQgam9pbiBvdXIgV2VDaGF0IGRpc2N1c3Npb24gZ3JvdXAgdGhyb3VnaCB0aGUgUVIgY29kZSBiZWxvdy4KCiFbV2VjaGF0IEdyb3VwXShodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMDFiZmIyMzgwMmNkZmFkNDlmMGQ1NjBlZTgwZmM1ZTMucG5nKQoKIyMgTGljZW5zZQoKW01JVF0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQvYmxvYi9tYWluL0xJQ0VOU0Up - readmeEtag: '"cd0edc4b2b9b41b30d011bfa3e9097f8d4144c31b6c7c1750115d7ee791452d6"' - readmeLastModified: Fri, 26 May 2023 14:34:43 GMT + PGRpdiBhbGlnbj0iY2VudGVyIj4KICAgIDxpbWcgYWx0PSJBcGlDYXQiIHdpZHRoPSIzNTBweCIgc3JjPSJodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMmQwMmZmMmY2YjE5ZDNkNmQzZjEzNGMxODcyNDg0YWEucG5nIi8+CjwvZGl2PgoKIyBBcGlDYXQKCkVuZ2xpc2ggfCBb566A5L2T5Lit5paHXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9ibG9iL21hc3Rlci9SRUFETUUtQ04ubWQpCgpBcGlDYXQgaXMgYW4gQUktcG93ZXJlZCBBUEkgZGV2ZWxvcG1lbnQgdG9vbCB0aGF0IGFpbXMgdG8gYXNzaXN0IGRldmVsb3BlcnMgaW4gYnVpbGRpbmcgQVBJcyBtb3JlIHF1aWNrbHkgYW5kIGVmZmljaWVudGx5IHRocm91Z2ggYXV0b21hdGlvbiBhbmQgaW50ZWxsaWdlbmNlLiBCeSB1dGlsaXppbmcgQXBpQ2F0LCBkZXZlbG9wZXJzIGNhbiBzYXZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHRpbWUgaW4gdGhlIGRldmVsb3BtZW50IGFuZCBtYW5hZ2VtZW50IG9mIEFQSXMuCgpZb3UgY2FuIHZpc2l0IG91ciBbT25saW5lIERlbW9dKGh0dHBzOi8vYXBpY2F0LnplYWJ1ci5hcHApIHRvIHRyeSBpdCBvdXQuCgojIyBGZWF0dXJlcwoKLSAqKkFQSSBkb2N1bWVudGF0aW9uOioqIFlvdSBjYW4gZWFzaWx5IGNyZWF0ZSBhbmQgbWFuYWdlIHlvdXIgQVBJIGRvY3VtZW50YXRpb24KLSAqKkFJIHN1cHBvcnQ6KiogWW91IGNhbiB1c2UgQUkgdG8gaGVscCB5b3UgcXVpY2tseSBnZW5lcmF0ZSBBUEkgZG9jdW1lbnRhdGlvbiwgbW9kZWxzLCByZXNwb25zZXMsIGFuZCBvdGhlciBjb250ZW50Ci0gKipNb2NrOioqIFRoZSB1c2VyLWZyaWVuZGx5IE1vY2sgZmVhdHVyZSBtYWtlcyBBUEkgZGV2ZWxvcG1lbnQgZmFzdGVyIGFuZCBtb3JlIGVmZmljaWVudAotICoqSXRlcmF0aW9uOioqIEhhdmluZyBhIGNsZWFyIGl0ZXJhdGlvbiBwbGFuIGVuYWJsZXMgdGhlIHRlYW0gdG8gZGVmaW5lIHRoZSBzY29wZSBvZiBBUEkgY2hhbmdlcywgZW5zdXJpbmcgZWZmaWNpZW5jeSBhbmQgcXVhbGl0eSBpbiBlYWNoIGRldmVsb3BtZW50IHRhc2suCi0gKipEYXRhIGltcG9ydCBhbmQgZXhwb3J0OioqIEFQSSBkYXRhIGNhbiBiZSBpbXBvcnRlZCBpbiBpdHMgZW50aXJldHkgaW50byBhbnkgc29mdHdhcmUgdGhhdCBzdXBwb3J0cyBPcGVuQVBJIG9yIFN3YWdnZXIsIGFuZCBjYW4gYWxzbyBiZSByZXZlcnNlIGltcG9ydGVkIGludG8gQXBpQ2F0LgoKIyMgSW5zdGFsbGF0aW9uIGFuZCBkZXBsb3ltZW50CgojIyMgRml2ZSBpbnN0YWxsYXRpb24gYW5kIGRlcGxveW1lbnQgbWV0aG9kcwoKIyMjIyAxLiBEb3dubG9hZCB0aGUgZXhlY3V0YWJsZSBmaWxlIGZvciBkZXBsb3ltZW50CgojIyMjIyBTdGVwIDE6IERvd25sb2FkIHRoZSBwcmUtcGFja2FnZWQgZXhlY3V0YWJsZSBmaWxlCgpEb3dubG9hZCB0aGUgcHJlLXBhY2thZ2VkIGV4ZWN1dGFibGUgZmlsZSBbcmVsZWFzZSBhZGRyZXNzXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9yZWxlYXNlcykKCiMjIyMjIFN0ZXAgMjogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYAojIFN0YXJ0IHRoZSBzZXJ2aWNlIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIG9yIGxvYWQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbgouL2FwaWNhdAojIFN0YXJ0IHRoZSBzZXJ2aWNlIGJ5IHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlCi4vYXBpY2F0IC1jIHNldHRpbmcuZXhhbXBsZS55YW1sCmBgYAoKIyMjIyAyLiBEb2NrZXJIdWIgaW5zdGFsbAoKIyMjIyMgU3RlcCAxOiBQdWxsIGltYWdlCgpgYGAKZG9ja2VyIHB1bGwgbmF0dW8vYXBpY2F0OmxhdGVzdApgYGAKCiMjIyMjIFN0ZXAgMjogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYApkb2NrZXIgcnVuIC0tbmFtZSBhcGljYXQtc2VydmVyIC1wIDgwMDA6ODAwMCAtZCAtLWxpbmsgbXlzcWwgbmF0dW8vYXBpY2F0OmxhdGVzdCAtYyAvYXBwL3NldHRpbmcuZGVmYXVsdC55YW1sCmBgYAoKIyMjIyAzLiBJbnN0YWxsIG9uIFplYWJ1cgoKU2lnbiB1cCBmb3IgYSBaZWFidXIgYWNjb3VudCBbWmVhYnVyXShodHRwczovL3plYWJ1ci5jb20vKSwgZmluZCBBcGlDYXQgb25lLWNsaWNrIGRlcGxveW1lbnQgb24gdGhlIE1hcmtldHBsYWNlLgoKIyMjIyA0LiBDb21waWxlIHRoZSBEb2NrZXIgaW1hZ2UgbG9jYWxseQoKIyMjIyMgU3RlcCAxOiBQdWxsIGNvZGUgZnJvbSBnaXRodWIKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQuZ2l0CmBgYAoKIyMjIyMgU3RlcCAyOiBCdWlsZCBhIGxvY2FsIGltYWdlCgpgYGAKZG9ja2VyIGJ1aWxkIC10IGFwaWNhdDpsYXRlc3QgLgpgYGAKCiMjIyMjIFN0ZXAgMzogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYApkb2NrZXIgcnVuIC0tbmFtZSBhcGljYXQtc2VydmVyIC1wIDgwMDA6ODAwMCAtZCAtLWxpbmsgbXlzcWwgbmF0dW8vYXBpY2F0OmxhdGVzdCAtYyAvYXBwL3NldHRpbmcuZGVmYXVsdC55YW1sCmBgYAoKIyMjIyA1LiBJbnN0YWxsIGFuZCBkZXBsb3kgZnJvbSBzb3VyY2UgY29kZQoKIyMjIyMgU3RlcCAxOiBQdWxsIGNvZGUgZnJvbSBnaXRodWIKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQuZ2l0CmBgYAoKIyMjIyMgU3RlcCAyOiBDb21waWxlIHRoZSBmcm9udC1lbmQgY29kZQoKYGBgCmNkIGZyb250ZW5kCnBucG0gaQpwbnBtIGJ1aWxkCmBgYAoKIyMjIyMgU3RlcCAzOiBDb21waWxlIHRoZSBiYWNrZW5kIGNvZGUKCmBgYApnbyBtb2QgdGlkeQpnbyBidWlsZApgYGAKCiMjIyMjIFN0ZXAgNDogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYAojIFN0YXJ0IHRoZSBzZXJ2aWNlIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIG9yIGxvYWQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbgouL2FwaWNhdAojIFN0YXJ0IHRoZSBzZXJ2aWNlIGJ5IHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlCi4vYXBpY2F0IC1jIHNldHRpbmcuZXhhbXBsZS55YW1sCmBgYAoKIyMjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBleHBsYW5hdGlvbgoKWW91IGNhbiBzdGFydCBBcGlDYXQgYW5kIGNvbmZpZ3VyZSBpdCB3aXRoIGN1c3RvbSBzZXR0aW5ncyBpbiB0d28gd2F5czoKCiMjIyMgMS4gUmVhZCB0aGUgY29uZmlndXJhdGlvbiBmaWxlCgpTZWUgdGhlIFtiYWNrZW5kL2NvbmZpZy9zZXR0aW5nLmV4YW1wbGUueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQvYmxvYi9tYWluL2JhY2tlbmQvY29uZmlnL3NldHRpbmcuZXhhbXBsZS55YW1sKQoKIyMjIyAyLiBMb2FkIGVudmlyb25tZW50IHZhcmlhYmxlCgp8IFZhcmlhYmxlIG5hbWUgfCBEZXNjcmlwdGlvbiB8IEV4YW1wbGUgfAp8IC0tLS0tLS0gfCAtLS0gfCAtLS0tIHwKfCBBUElDQVRfQVBQX05BTUUgfCBBUFAgbmFtZSB8IEFwaUNhdCB8CnwgQVBJQ0FUX0FQUF9IT1NUIHwgQm91bmQgSVAgYWRkcmVzcywgRGVmYXVsdDogMC4wLjAuMCB8IDAuMC4wLjAgfAp8IEFQSUNBVF9BUFBfUE9SVCB8IEJvdW5kIHBvcnQsIERlZmF1bHQ6IDgwMDAgfCA4MDAwIHwKfCBBUElDQVRfTE9HX1BBVEggfCBMb2cgZmlsZSBwYXRoLCBPdXRwdXQgdG8gc3Rkb3V0IGlzIGVtcHR5IHwgbG9ncy8gfAp8IEFQSUNBVF9MT0dfTEVWRUwgfCBMb2cgbGV2ZWwgfCBkZWJ1ZyB8CnwgQVBJQ0FUX0RCX0hPU1QgfCBNeVNRTCBJUCBhZGRyZXNzLCByZXF1aXJlZCB8IDEyNy4wLjAuMSB8CnwgQVBJQ0FUX0RCX1BPUlQgfCBNeVNRTCBQb3J0LCByZXF1aXJlZCB8IDMzMDYgfAp8IEFQSUNBVF9EQl9VU0VSIHwgTXlTUUwgdXNlcm5hbWUsIHJlcXVpcmVkIHwgcm9vdCB8CnwgQVBJQ0FUX0RCX1BBU1NXT1JEIHwgTXlTUUwgcGFzc3dvcmQsIHJlcXVpcmVkIHwgMTIzNDU2IHwKfCBBUElDQVRfREJfTkFNRSB8IE15U1FMIGRhdGFiYXNlIG5hbWUsIHJlcXVpcmVkIHwgYXBpY2F0IHwKfCBBUElDQVRfT1BFTkFJX0tFWSB8IE9wZW5BSSBLZXkgfCBzay14eHh4eHggfAoKIyMgQ29udGFjdAoKSWYgeW91IGhhdmUgYW55IHRvcGljcyB5b3Ugd291bGQgbGlrZSB0byBkaXNjdXNzIG9yIGNvbW11bmljYXRlIHdpdGggdXMsIGZlZWwgZnJlZSB0byBqb2luIG91ciBXZUNoYXQgZGlzY3Vzc2lvbiBncm91cC4KCiFbV2VjaGF0IEdyb3VwXShodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMDFiZmIyMzgwMmNkZmFkNDlmMGQ1NjBlZTgwZmM1ZTMucG5nKQoKIyMgU2NyZWVuc2hvdAoKIVtBSS1nZW5lcmF0ZS1zY2hlbWFdKGh0dHBzOi8vY2RuLmFwaWNhdC5uZXQvdXBsb2Fkcy8wYzM1MThjMWJmYzQyMWZjNGYzZjg2YzA4NWYzNTNkMi5naWYpCgohW0FJLWdlbmVyYXRlLWFwaS1ieS1zY2hlbWFdKGh0dHBzOi8vY2RuLmFwaWNhdC5uZXQvdXBsb2Fkcy9iYmNhZTgzNTExZDc5N2QyMjA3N2QwNWQxN2MyNjJjYy5naWYpCgohW0FJLWdlbmVyYXRlLWFwaV0oaHR0cHM6Ly9jZG4uYXBpY2F0Lm5ldC91cGxvYWRzL2NmNjE3YjU2ZmExODY5NjBjMjI4Yzc5NDg3Y2Y2YzVlLmdpZikKCiMjIExpY2Vuc2UKCltNSVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGljYXQvYXBpY2F0L2Jsb2IvbWFpbi9MSUNFTlNFKQ== + readmeEtag: '"feba1cc93f9fd3451aa620d835af9ab4e5496121896110ce4dafcb14ad9f2cfa"' + readmeLastModified: Tue, 08 Aug 2023 07:25:53 GMT repositoryId: 488860709 description: >- ApiCat is an API development tool based on AI technology. It analyzes and @@ -8197,17 +8197,17 @@ corresponding API documents and codes to help developers develop APIs more quickly and efficiently. created: '2022-05-05T06:44:36Z' - updated: '2023-08-01T06:07:51Z' + updated: '2023-08-08T09:57:55Z' language: Go archived: false - stars: 197 + stars: 198 watchers: 6 forks: 24 owner: apicat logo: https://avatars.githubusercontent.com/u/64158984?v=4 license: MIT - repoEtag: '"29b3d8dae4e116529ad743068b37622cdf40e2842fa6e98d67d5a780e6770352"' - repoLastModified: Tue, 01 Aug 2023 06:07:51 GMT + repoEtag: '"cb28aa7579865d98fbf64b530aff99ee0a0c4016bcf4349e2fb305c3acbe00f5"' + repoLastModified: Tue, 08 Aug 2023 09:57:55 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -8353,25 +8353,25 @@ id: 8525db62087986733db0fc4221c4b719 repositoryMetadata: base64Readme: >- - WyFbQXN5bmNBUEkgTW9kZWxpbmFdKC4vZG9jcy9pbWcvcmVhZG1lLWJhbm5lci5wbmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW2JsYWNrYm94IHBpcGVsaW5lIHN0YXR1c10oPGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2FzeW5jYXBpL21vZGVsaW5hL2JsYWNrYm94LXRlc3RpbmcueW1sP2xhYmVsPWJsYWNrYm94JTIwdGVzdGluZz4pXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYWN0aW9ucy93b3JrZmxvd3MvYmxhY2tib3gtdGVzdGluZy55bWw/cXVlcnk9YnJhbmNoJTNBbWFzdGVyKyspClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hP2JyYW5jaD1tYXN0ZXIpClshW1Byb2plY3QgU3RhdHVzOiBBY3RpdmUg4oCTIFRoZSBwcm9qZWN0IGhhcyByZWFjaGVkIGEgc3RhYmxlLCB1c2FibGUgc3RhdGUgYW5kIGlzIGJlaW5nIGFjdGl2ZWx5IGRldmVsb3BlZC5dKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnL2JhZGdlcy9sYXRlc3QvYWN0aXZlLnN2ZyldKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnLyNhY3RpdmUpCiFbTWFpbnRlbmFuY2Ugc2NvcmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtcy1pby9tYWludGVuYW5jZS1zY29yZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW05wbSBsYXRlc3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbbGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2FzeW5jYXBpL21vZGVsaW5hKV0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHMvbWFzdGVyKQpbIVtEaXNjdXNzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZGlzY3Vzc2lvbnMvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvZGlzY3Vzc2lvbnMpClshW1dlYnNpdGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD13ZWJzaXRlJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW1BsYXlncm91bmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD1wbGF5Z3JvdW5kJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmclMkZwbGF5Z3JvdW5kKV0oaHR0cHM6Ly93d3cubW9kZWxpbmEub3JnL3BsYXlncm91bmQpIDwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTYwLW9yYW5nZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXSgjY29udHJpYnV0b3JzLSkKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOkVORCAtLT4KCllvdXIgb25lLXN0b3AgdG9vbCBmb3IgZ2VuZXJhdGluZyBhY2N1cmF0ZSBhbmQgd2VsbC10ZXN0ZWQgbW9kZWxzIGZvciByZXByZXNlbnRpbmcgdGhlIG1lc3NhZ2UgcGF5bG9hZHMuIFVzZSBpdCBhcyBhIHRvb2wgaW4geW91ciBkZXZlbG9wbWVudCB3b3JrZmxvdywgb3IgYSBsaWJyYXJ5IGluIGEgbGFyZ2VyIGludGVncmF0aW9ucywgZW50aXJlbHkgaW4geW91ciBjb250cm9sLgoKLS0tCgo8IS0tIHRvYyBpcyBnZW5lcmF0ZWQgd2l0aCBHaXRIdWIgQWN0aW9ucyBkbyBub3QgcmVtb3ZlIHRvYyBtYXJrZXJzIC0tPgoKPCEtLSB0b2MgLS0+CgotIFtJbnN0YWxsaW5nIE1vZGVsaW5hXSgjaW5zdGFsbGluZy1tb2RlbGluYSkKLSBbQXN5bmNBUEkgQ0xJXSgjYXN5bmNhcGktY2xpKQotIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQotIFtSb2FkbWFwXSgjcm9hZG1hcCkKLSBbUmVxdWlyZW1lbnRzXSgjcmVxdWlyZW1lbnRzKQotIFtEb2N1bWVudGF0aW9uXSgjZG9jdW1lbnRhdGlvbikKLSBbRXhhbXBsZXNdKCNleGFtcGxlcykKLSBbVmVyc2lvbmluZyBhbmQgbWFpbnRlbmFuY2VdKCN2ZXJzaW9uaW5nLWFuZC1tYWludGVuYW5jZSkKLSBbRGV2ZWxvcG1lbnRdKCNkZXZlbG9wbWVudCkKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQotIFtDb250cmlidXRvcnNdKCNjb250cmlidXRvcnMpCgo8IS0tIHRvY3N0b3AgLS0+CgojIyBJbnN0YWxsaW5nIE1vZGVsaW5hCgpSdW4gdGhpcyBjb21tYW5kIHRvIGluc3RhbGwgTW9kZWxpbmEgaW4geW91ciBwcm9qZWN0OgoKYGBgYmFzaApucG0gaW5zdGFsbCBAYXN5bmNhcGkvbW9kZWxpbmEKYGBgCgojIyBBc3luY0FQSSBDTEkKCklmIHlvdSBoYXZlIHRoZSBbQXN5bmNBUEkgQ0xJIGluc3RhbGxlZF0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL2NsaSNpbnN0YWxsYXRpb24pIChPTkxZIHN1cHBvcnQgQXN5bmNBUEkgaW5wdXRzKSwgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHVzZSBbTW9kZWxpbmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9jbGkjdXNhZ2UpOgoKYGBgYmFzaAphc3luY2FwaSBnZW5lcmF0ZSBtb2RlbHMgPGxhbmd1YWdlPiAuL2FzeW5jYXBpLmpzb24KYGBgCgo8aDIgYWxpZ249ImNlbnRlciI+V2hhdCBEb2VzIE1vZGVsaW5hIERvPzwvaDI+Cgo8cCBhbGlnbj0iY2VudGVyIj5Nb2RlbGluYSBwdXQgWU9VIGluIGNvbnRyb2wgb2YgeW91ciBkYXRhIG1vZGVscywgaGVyZSBpcyBob3cuLi48L3A+Cgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0cj4KICAgIDx0ZD48Yj5Nb2RlbGluYSBsZXRzIHlvdSBnZW5lcmF0ZSBkYXRhIG1vZGVscyBmcm9tIG1hbnkgdHlwZXMgb2YgPGEgaHJlZj0iI2lucHV0cyI+aW5wdXRzPC9hPjwvYj48L3RkPgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGFzeW5jYXBpID0gLi4uCmNvbnN0IGpzb25zY2hlbWEgPSAuLi4KY29uc3Qgb3BlbmFwaSA9IC4uLiAKY29uc3QgbWV0YW1vZGVsID0gLi4uIAouLi4KY29uc3QgbW9kZWxzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlKAogIGFzeW5jYXBpIHwganNvbnNjaGVtYSB8IG9wZW5hcGkgfCBtZXRhbW9kZWwKKTsKYGBgCjwvdGQ+CiAgPC90cj4KICAgIDx0cj4KICAgIDx0ZD48Yj5Vc2UgdGhlIHNhbWUgaW5wdXRzIGFjcm9zcyBhIHJhbmdlIG9mIGRpZmZlcmVudCA8YSBocmVmPSIjb3V0cHV0cyI+Z2VuZXJhdG9yczwvYT48L2I+PC90ZD4KPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSBuZXcgVHlwZVNjcmlwdEdlbmVyYXRvcigpOwpjb25zdCBnZW5lcmF0b3IgPSBuZXcgQ3NoYXJwR2VuZXJhdG9yKCk7CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBKYXZhR2VuZXJhdG9yKCk7CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBSdXN0R2VuZXJhdG9yKCk7Ci4uLgpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpgYGAKPC90ZD4KICA8L3RyPgogICAgPHRyPgogICAgPHRkPjxiPkVhc2lseSBsZXQgeW91IGludGVyYWN0IHdpdGggdGhlIGdlbmVyYXRlZCBtb2RlbHMuPC9iPiAKCi0gV2FudCB0byBzaG93IHRoZSBnZW5lcmF0ZWQgbW9kZWxzIG9uIGEgd2Vic2l0ZT8gU3VyZSEgCi0gV2FudCB0byBnZW5lcmF0ZSB0aGUgbW9kZWxzIGludG8gZmlsZXM/IFN1cmUhIAotIFdhbnQgdG8gY29tYmluZSBhbGwgdGhlIG1vZGVscyBpbnRvIG9uZSBzaW5nbGUgZmlsZT8gU3VyZSEgCgpXaGF0ZXZlciBpbnRlcmFjdGlvbiB5b3UgbmVlZCwgeW91IGNhbiBjcmVhdGUuPC90ZD4KPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpmb3IgKGNvbnN0IG1vZGVsIGluIG1vZGVscykgeyAKICBjb25zdCBnZW5lcmF0ZWRDb2RlID0gZ2VuZXJhdGVkTW9kZWwucmVzdWx0OwogIGNvbnN0IGRlcGVuZGVuY2llcyA9IGdlbmVyYXRlZE1vZGVsLmRlcGVuZGVuY2llczsKICBjb25zdCBtb2RlbHR5cGUgPSBnZW5lcmF0ZWRNb2RlbC5tb2RlbC50eXBlOwogIGNvbnN0IG1vZGVsTmFtZSA9IGdlbmVyYXRlZE1vZGVsLm1vZGVsTmFtZTsKICAuLi4KfQpgYGAKPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48Yj5FYXNpbHkgbW9kaWZ5IGhvdyBtb2RlbHMgYXJlIDxhIGhyZWY9Ii4vZG9jcy9jb25zdHJhaW50cy5tZCI+Y29uc3RyYWluZWQ8L2E+IGludG8gdGhlIG91dHB1dDwvYj48L3RkPgoKPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSBuZXcgVHlwZVNjcmlwdEdlbmVyYXRvcih7CiAgY29uc3RyYWludHM6IHsKICAgIG1vZGVsTmFtZTogKHttb2RlbE5hbWV9KSA9PiB7CiAgICAgIC8vIEltcGxlbWVudCB5b3VyIG93biBjb25zdHJhaW5pbmcgbG9naWMKICAgICAgcmV0dXJuIG1vZGVsTmFtZTsKICAgIH0KICB9Cn0pOwpgYGAKPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48Yj5TZWFtbGVzc2x5IGxheWVyIGFkZGl0aW9uYWwgb3IgcmVwbGFjZW1lbnQgY29kZSA8YSBocmVmPSIuL2RvY3MvcHJlc2V0cy5tZCI+b24gdG9wIG9mIGVhY2ggb3RoZXIgdG8gY3VzdG9taXplIHRoZSBtb2RlbHM8L2E+IHRvIHlvdXIgdXNlLWNhc2U8L2I+PC90ZD4KCjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFR5cGVTY3JpcHRHZW5lcmF0b3IoewogIHByZXNldHM6IFsKICAgIHsKICAgICAgY2xhc3M6IHsKICAgICAgICBhZGRpdGlvbmFsQ29udGVudCh7IGNvbnRlbnQgfSkgewogICAgICAgICAgcmV0dXJuIGAke2NvbnRlbnR9CnB1YmxpYyBteUN1c3RvbUZ1bmN0aW9uKCk6IHN0cmluZyB7CiAgcmV0dXJuICdBIGN1c3RvbSBmdW5jdGlvbiBmb3IgZWFjaCBjbGFzcyc7Cn1gOwogICAgICAgIH0sCiAgICAgIH0KICAgIH0KICBdCn0pOwpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpgYGAKPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48Yj5TZWFtbGVzc2x5IGxldHMgeW91IDxhIGhyZWY9Ii4vZG9jcy9wcmVzZXRzLm1kIj5jb21iaW5lIG11bHRpcGxlIGxheWVycyBvZiBhZGRpdGlvbmFsIG9yIHJlcGxhY2VtZW50IGNvZGU8L2E+PC9iPjwvdGQ+Cgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IG15Q3VzdG9tRnVuY3Rpb24xID0gewogIGNsYXNzOiB7CiAgICBhZGRpdGlvbmFsQ29udGVudCh7IGNvbnRlbnQgfSkgewogICAgICByZXR1cm4gYCR7Y29udGVudH0KcHVibGljIG15Q3VzdG9tRnVuY3Rpb24oKTogc3RyaW5nIHsKcmV0dXJuICdBIGN1c3RvbSBmdW5jdGlvbiBmb3IgZWFjaCBjbGFzcyc7Cn1gOwogICAgfSwKICB9Cn07CmNvbnN0IG15Q3VzdG9tRnVuY3Rpb24yID0gey4uLn07CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBUeXBlU2NyaXB0R2VuZXJhdG9yKHsKICBwcmVzZXRzOiBbCiAgICBteUN1c3RvbUZ1bmN0aW9uMSwKICAgIG15Q3VzdG9tRnVuY3Rpb24yCiAgXQp9KTsKY29uc3QgbW9kZWxzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlKGlucHV0KTsKYGBgCjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCiMjIEZlYXR1cmVzCgpUaGUgZm9sbG93aW5nIHRhYmxlIHByb3ZpZGVzIGEgc2hvcnQgc3VtbWFyeSBvZiBhdmFpbGFibGUgZmVhdHVyZXMgZm9yIHN1cHBvcnRlZCBvdXRwdXQgbGFuZ3VhZ2VzLiBUbyBzZWUgdGhlIGNvbXBsZXRlIGZlYXR1cmUgbGlzdCBmb3IgZWFjaCBsYW5ndWFnZSwgcGxlYXNlIGNsaWNrIHRoZSBpbmRpdmlkdWFsIGxpbmtzIGZvciBlYWNoIGxhbmd1YWdlLgoKPGEgaWQ9ImlucHV0cyI+PC9hPgoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGg+U3VwcG9ydGVkIGlucHV0czwvdGg+CiAgICA8dGg+PC90aD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWxzLWZyb20tYXN5bmNhcGktZG9jdW1lbnRzIj5Bc3luY0FQSTwvYT48L3RkPgogICAgPHRkPldlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBBc3luY0FQSSB2ZXJzaW9uczogPGVtPjIuMC4wIC0+IDIuNi4wPC9lbT4sIHdoaWNoIGdlbmVyYXRlcyBtb2RlbHMgZm9yIGFsbCB0aGUgZGVmaW5lZCBtZXNzYWdlIHBheWxvYWRzLiBJdCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHNjaGVtYUZvcm1hdHMgQXN5bmNBUEkgU2NoZW1hIG9iamVjdCwgSlNPTiBTY2hlbWEgZHJhZnQgNywgPGEgaHJlZj0iLi9leGFtcGxlcy9hc3luY2FwaS1hdnJvLXNjaGVtYSI+QVZSTyAxLjk8L2E+LCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLXJhbWwtc2NoZW1hIj5SQU1MIDEuMCBkYXRhIHR5cGU8L2E+LCBhbmQgPGEgaHJlZj0iLi9leGFtcGxlcy9hc3luY2FwaS1vcGVuYXBpLXNjaGVtYSI+T3BlbkFQSSAzLjAgU2NoZW1hPC9hPi48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1qc29uLXNjaGVtYS1kb2N1bWVudHMiPkpTT04gU2NoZW1hPC9hPjwvdGQ+CiAgICA8dGQ+V2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIEpTT04gU2NoZW1hIHZlcnNpb25zOiA8ZW0+RHJhZnQtNCwgRHJhZnQtNiBhbmQgRHJhZnQtNzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5PcGVuQVBJPC90ZD4KICAgIDx0ZD5XZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgT3BlbkFQSSB2ZXJzaW9uczogPGVtPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1zd2FnZ2VyLTIwLWRvY3VtZW50cyI+U3dhZ2dlciAyLjA8L2E+IGFuZCA8YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWxzLWZyb20tb3BlbmFwaS1kb2N1bWVudHMiPk9wZW5BUEkgMy4wPC9hPjwvZW0+LCB3aGljaCBnZW5lcmF0ZXMgbW9kZWxzIGZvciBhbGwgdGhlIGRlZmluZWQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcGF5bG9hZHMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWwtZnJvbS10eXBlc2NyaXB0LXR5cGUtZmlsZXMiPlR5cGVTY3JpcHQ8L2E+PC90ZD4KICAgIDx0ZD5XZSBjdXJyZW50bHkgc3VwcG9ydCBUeXBlU2NyaXB0IHR5cGVzIGFzIGZpbGUgaW5wdXQgZm9yIG1vZGVsIGdlbmVyYXRpb248L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1tZXRhLW1vZGVscyI+TWV0YSBtb2RlbDwvYT48L3RkPgogICAgPHRkPlRoaXMgaXMgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9kZWwgZm9yIE1vZGVsaW5hLCBpdCBpcyB3aGF0IGlucHV0cyBnZXRzIGNvbnZlcnRlZCB0bywgYW5kIHdoYXQgZ2VuZXJhdG9ycyBhcmUgcHJvdmlkZWQgdG8gZ2VuZXJhdGUgY29kZS4gSW5zdGVhZCBvZiByZWx5aW5nIG9uIGFuIGlucHV0IHByb2Nlc3NvciwgeW91IGNhbiBjcmVhdGUgeW91ciBvd24gbW9kZWxzIGZyb20gc2NyYXRjaCBhbmQgc3RpbGwgdGFrZSBhZHZhbnRhZ2Ugb24gdGhlIGdlbmVyYXRvcnMgYW5kIHRoZSBmZWF0dXJlcy48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8YSBpZD0ib3V0cHV0cyI+PC9hPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0cj4KICAgIDx0aD5TdXBwb3J0ZWQgb3V0cHV0czwvdGg+CiAgICA8dGg+PC90aD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtamF2YS1tb2RlbHMiPkphdmE8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Z2VuZXJhdGlvbiBvZiBlcXVhbHMsIGhhc2hDb2RlLCB0b1N0cmluZywgSmFja3NvbiBhbm5vdGF0aW9uLCBjdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS10eXBlc2NyaXB0LW1vZGVscyI+VHlwZVNjcmlwdDwvYT48L3RkPgogICAgPHRkPkNsYXNzLCBpbnRlcmZhY2UgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmdlbmVyYXRpb24gb2YgZXhhbXBsZSBjb2RlLCB1bi9tYXJzaGFsIGZ1bmN0aW9ucywgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtYyMtbW9kZWxzIj5DIzwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGV4YW1wbGUgY29kZSwgc2VyaWFsaXplciBhbmQgZGVzZXJpYWxpemVyIGZ1bmN0aW9ucywgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtZ28tbW9kZWxzIj5HbzwvYT48L3RkPgogICAgPHRkPlN0cnVjdCBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWphdmFzY3JpcHQtbW9kZWxzIj5KYXZhU2NyaXB0PC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWRhcnQtbW9kZWxzIj5EYXJ0PC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjoganNvbl9hbm5vdGF0aW9uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcnVzdC1tb2RlbHMiPlJ1c3Q8L2E+PC90ZD4KICAgIDx0ZD5TdHJ1Y3QvdHVwbGUgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmdlbmVyYXRpb24gb2YgYGltcGxlbWVudCBEZWZhdWx0YCwgZ2VuZXJhdGUgc2VyZGUgbWFjcm9zLCBjdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1weXRob24tbW9kZWxzIj5QeXRob248L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWtvdGxpbi1tb2RlbHMiPktvdGxpbjwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT51c2Ugb2YgZGF0YSBjbGFzc2VzIHdoZXJlIGFwcHJvcHJpYXRlLCBjdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtY3BsdXNwbHVzLW1vZGVscyI+QysrPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1waHAtbW9kZWxzIj5QSFA8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGRlc2NyaXB0aW9ucywgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgUm9hZG1hcApUaGlzIGlzIHRoZSByb2FkbWFwIHRoYXQgaXMgY3VycmVudGx5IGluIGZvY3VzIGJ5IHRoZSBbQ09ERU9XTkVSU10oLi9DT0RFT1dORVJTKQoKLSBbMSB5ZWFyIHJvYWRtYXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9taWxlc3RvbmUvNCkKCiMjIFJlcXVpcmVtZW50cwpUaGUgZm9sbG93aW5nIGFyZSBhIHJlcXVpcmVtZW50IGluIG9yZGVyIHRvIHVzZSBNb2RlbGluYS4KCi0gW05vZGVKU10oaHR0cHM6Ly9ub2RlanMub3JnL2VuLykgPj0gMTQKCiMjIERvY3VtZW50YXRpb24KQSBmZWF0dXJlIGluIE1vZGVsaW5hIGNhbm5vdCBleGlzdHMgd2l0aG91dCBhbiBleGFtcGxlIGFuZCBkb2N1bWVudGF0aW9uIGZvciBpdC4gWW91IGNhbiBmaW5kIGFsbCB0aGUgW2RvY3VtZW50YXRpb24gaGVyZV0oLi9kb2NzL1JFQURNRS5tZCkuCgojIyBFeGFtcGxlcwpEbyB5b3UgbmVlZCB0byBrbm93IGhvdyB0byB1c2UgdGhlIGxpYnJhcnkgaW4gY2VydGFpbiBzY2VuYXJpb3M/IAoKV2UgaGF2ZSBnYXRoZXJlZCBhbGwgdGhlIGV4YW1wbGVzIGluIGEgc2VwYXJhdGUgZm9sZGVyIGFuZCB0aGV5IGNhbiBiZSBmb3VuZCB1bmRlciB0aGUgW2V4YW1wbGVzIGZvbGRlcl0oLi9leGFtcGxlcykuIAoKIyMgVmVyc2lvbmluZyBhbmQgbWFpbnRlbmFuY2UKQXMgb2YgdmVyc2lvbiAxLCBNb2RlbGluYSBoYXMgYSB2ZXJ5IHN0cmljdCBzZXQgb2YgY2hhbmdlcyB3ZSBhcmUgYWxsb3dlZCB0byBkbyBiZWZvcmUgaXQgcmVxdWlyZXMgYSBtYWpvciB2ZXJzaW9uIGNoYW5nZS4gSW4gc2hvcnQsIGFueSBjaGFuZ2VzIHRoYXQgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgb3V0Y29tZSBhcmUgbm90IGFsbG93ZWQgYXMgaXQncyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgdGhlIGNvbnN1bWVyIG9mIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiAKCkhlcmUgaXMgYSBsaXN0IG9mIGNoYW5nZXMgd2UgYXJlIGFsbG93ZWQgdG8gZG8gdGhhdCB3b3VsZCBub3QgcmVxdWlyZSBhIGJyZWFraW5nIGNoYW5nZToKLSBBZGRpbmcgbmV3IGZlYXR1cmVzICh0aGF0IGRvIG5vdCBjaGFuZ2UgZXhpc3Rpbmcgb3V0cHV0KSwgc3VjaCBhcyBnZW5lcmF0b3JzLCBwcmVzZXRzLCBpbnB1dCBwcm9jZXNzb3JzLCBldGMuCi0gQ2hhbmdlIGV4aXN0aW5nIGZlYXR1cmVzLCBieSBwcm92aWRpbmcgb3B0aW9ucyB0aGF0IGRlZmF1bHQgdG8gY3VycmVudCBiZWhhdmlvci4gVGhpcyBjb3VsZCBiZSBhIHByZXNldCB0aGF0IGFkYXB0cyB0aGUgb3V0cHV0IGJhc2VkIG9uIG9wdGlvbnMsIGFzIGxvbmcgYXMgdGhlIEFQSSBvZiBNb2RlbGluYSBhbmQgdGhlIEFQSSBvZiB0aGUgZ2VuZXJhdGVkIG1vZGVscyBkb2VzIG5vdCBoYXZlIGFueSBicmVha2luZyBjaGFuZ2VzLgotIEJ1ZyBmaXhlcyB3aGVyZSB0aGUgZ2VuZXJhdGVkIGNvZGUgaXMgb3RoZXJ3aXNlIHVudXNhYmxlIChzeW50YXggZXJyb3JzLCBldGMpLgoKQnJlYWtpbmcgY2hhbmdlcyBhcmUgYWxsb3dlZCBhbmQgZXhwZWN0ZWQgYXQgYSBmcmVxdWVudCByYXRlLCBvZiBjb3Vyc2Ugd2hlcmUgaXQgbWFrZXMgc2Vuc2Ugd2Ugd2lsbCB0cnkgdG8gYnVuZGxlIG11bHRpcGxlIGNoYW5nZXMgdG9nZXRoZXIuCgpXZSBvZiBjb3Vyc2Ugd2lsbCBkbyBvdXIgYmVzdCB0byB1cGhvbGQgdGhpcywgYnV0IG1pc3Rha2VzIGNhbiBoYXBwZW4sIGFuZCBpZiB5b3Ugbm90aWNlIGFueSBicmVha2luZyBjaGFuZ2VzIHBsZWFzZSBsZXQgdXMga25vdyEKCkJlY2F1c2Ugb2YgdGhlIG51bWJlciBvZiB0aGUgbGltaXRlZCBudW1iZXIgb2YgY2hhbXBpb25zLCBvbmx5IHRoZSBtb3N0IHJlY2VudCBtYWpvciB2ZXJzaW9uIHdpbGwgYmUgbWFpbnRhaW5lZC4KCk1ham9yIHZlcnNpb25zIGFyZSBjdXJyZW50bHkgaGFwcGVuaW5nIGF0IGEgMy1tb250aCBjYWRlbmNlIChpbiBhIHNpbWlsYXIgZmFzaGlvbiBhcyB0aGUgQXN5bmNBUEkgc3BlY2lmaWNhdGlvbiksIHRoaXMgd2lsbCBoYXBwZW4gaW4gSmFudWFyeSwgQXByaWwsIEp1bmUsIGFuZCBTZXB0ZW1iZXIuIAoKIyMgRGV2ZWxvcG1lbnQKV2UgdHJ5IHRvIG1ha2UgaXQgYXMgZWFzeSBmb3IgeW91IGFzIHBvc3NpYmxlIHRvIHNldCB1cCB5b3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRvIGNvbnRyaWJ1dGUgdG8gTW9kZWxpbmEuIFlvdSBjYW4gZmluZCB0aGUgZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbiBbaGVyZV0oLi9kb2NzL2RldmVsb3BtZW50Lm1kKS4KCiMjIENvbnRyaWJ1dGluZwpXaXRob3V0IGNvbnRyaWJ1dGlvbnMsIE1vZGVsaW5hIHdvdWxkIG5vdCBleGlzdCwgaXQncyBhIGNvbW11bml0eSBwcm9qZWN0IHdlIGJ1aWxkIHRvZ2V0aGVyIHRvIGNyZWF0ZSB0aGUgYmVzdCBwb3NzaWJsZSBidWlsZGluZyBibG9ja3MsIGFuZCB3ZSBkbyB0aGlzIHRocm91Z2ggW2NoYW1waW9uc10oLi9kb2NzL2NoYW1waW9ucy5tZCkuCgpXZSBoYXZlIG1hZGUgcXVpdGUgYSBbY29tcHJlaGVuc2l2ZSBjb250cmlidXRpb24gZ3VpZGVdKC4vZG9jcy9jb250cmlidXRpbmcubWQpIHRvIGdpdmUgeW91IGEgbGVuZGluZyBoYW5kIGluIGhvdyBkaWZmZXJlbnQgZmVhdHVyZXMgYW5kIGNoYW5nZXMgYXJlIGludHJvZHVjZWQuCgpJZiBubyBkb2N1bWVudGF0aW9uIGhlbHBzIHlvdSwgaGVyZSBpcyBob3cgeW91IGNhbiByZWFjaCBvdXQgdG8gZ2V0IGhlbHA6Ci0gT24gdGhlIFtvZmZpY2lhbCBBc3ljbkFQSSBzbGFja10oaHR0cHM6Ly9hc3luY2FwaS5jb20vc2xhY2staW52aXRlKSB1bmRlciB0aGUgYCMwNF90b29saW5nYCBjaGFubmVsCi0gVGFnIGEgc3BlY2lmaWMgW0NPREVPV05FUl0oLi9DT0RFT1dORVJTKSBpbiB5b3VyIFBSCi0gR2VuZXJhbGx5LCBpdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBkbyBldmVyeXRoaW5nIGluIHB1YmxpYywgYnV0IGluIHNvbWUgY2FzZXMsIGl0IG1pZ2h0IG5vdCBiZSBwb3NzaWJsZS4gSW4gdGhvc2UgY2lyY3Vtc3RhbmNlcyB5b3UgY2FuIGNvbnRhY3QgdGhlIGZvbGxvd2luZzogCiAgLSBbam9uYXNsYWdvbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25hc2xhZ29uaSkgKG9uIFtBc3luY0FQSSBTbGFja10oaHR0cHM6Ly9hc3luY2FwaS5jb20vc2xhY2staW52aXRlKSwgW1R3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vam9uYXNsYWdvbmkpLCBbRW1haWxdKG1haWx0bzpqb25hcy1sdEBsaXZlLmRrKSwgW0xpbmtlZEluXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vam9uYXNsYWdvbmkvKSkKCiMjIENvbnRyaWJ1dG9ycyAKClRoYW5rcyBnbyBvdXQgdG8gdGhlc2Ugd29uZGVyZnVsIHBlb3BsZSAoW2Vtb2ppIGtleV0oaHR0cHM6Ly9hbGxjb250cmlidXRvcnMub3JnL2RvY3MvZW4vZW1vamkta2V5KSk6Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dGJvZHk+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21hZ2ljbWF0YXRqYWh1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIwNDA0OTQ1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYWNpZWogVXJiYcWEY3p5ayIvPjxiciAvPjxzdWI+PGI+TWFjaWVqIFVyYmHFhGN6eWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FtYWdpY21hdGF0amFodSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFnaWNtYXRhdGphaHUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFnaWNtYXRhdGphaHUiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjaWRlYXMtbWFnaWNtYXRhdGphaHUiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1tYWdpY21hdGF0amFodSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSIjcXVlc3Rpb24tbWFnaWNtYXRhdGphaHUiIHRpdGxlPSJBbnN3ZXJpbmcgUXVlc3Rpb25zIj7wn5KsPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFnaWNtYXRhdGphaHUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBbWFnaWNtYXRhdGphaHUiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2N6bG93aWVrNDg4Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM0NjIwMTA5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJjemxvd2llazQ4OCIvPjxiciAvPjxzdWI+PGI+Y3psb3dpZWs0ODg8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0Fjemxvd2llazQ4OCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBY3psb3dpZWs0ODgiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSIjaWRlYXMtY3psb3dpZWs0ODgiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc21veWEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA4MzI5Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2VyZ2lvIE1veWEiLz48YnIgLz48c3ViPjxiPlNlcmdpbyBNb3lhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBc21veWEiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNtb3lhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNtb3lhIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNtb3lhIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQXNtb3lhIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb25hc2xhZ29uaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzM5NjE4OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSm9uYXMgTGFnb25pIi8+PGJyIC8+PHN1Yj48Yj5Kb25hcyBMYWdvbmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0Fqb25hc2xhZ29uaSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9am9uYXNsYWdvbmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9am9uYXNsYWdvbmkiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjaWRlYXMtam9uYXNsYWdvbmkiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1qb25hc2xhZ29uaSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSIjcXVlc3Rpb24tam9uYXNsYWdvbmkiIHRpdGxlPSJBbnN3ZXJpbmcgUXVlc3Rpb25zIj7wn5KsPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9am9uYXNsYWdvbmkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBam9uYXNsYWdvbmkiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXYudG8vZGVyYmVyZyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82OTk1OTI3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMdWthc3ogR29ybmlja2kiLz48YnIgLz48c3ViPjxiPkx1a2FzeiBHb3JuaWNraTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQWRlcmJlcmciIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBZGVyYmVyZyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGVyYmVyZyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJqdW5nYXJnMDciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTMwMDk3MjI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFyanVuIEdhcmciLz48YnIgLz48c3ViPjxiPkFyanVuIEdhcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcmp1bmdhcmcwNyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vd3d3LmZtdmlsYXMuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI0MjExOT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRnJhbiBNw6luZGV6Ii8+PGJyIC8+PHN1Yj48Yj5GcmFuIE3DqW5kZXo8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FmbXZpbGFzIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQmxha2VsaXN0NyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDUyNTk2MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS2Fud2FsIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5LYW53YWwgU2luZ2g8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1CbGFrZWxpc3Q3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93d3cuYWxlamFuZHJhcXVldHphbGxpLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xOTk2NDQwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQWxlamFuZHJhIFF1ZXR6YWxsaSAiLz48YnIgLz48c3ViPjxiPkFsZWphbmRyYSBRdWV0emFsbGkgPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBYWxlcXVldHphbGxpIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFsZXF1ZXR6YWxsaSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWQtc2FpZi1odXNhaW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzA2ODI5Njg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1EIFNBSUYgIEhVU0FJTiIvPjxiciAvPjxzdWI+PGI+TUQgU0FJRiAgSFVTQUlOPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZXhhbXBsZS1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWQtc2FpZi1odXNhaW4iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWQtc2FpZi1odXNhaW4iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWQtc2FpZi1odXNhaW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9zdWRpcHRvLmdob3NoLnBybyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTIzMjk0MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU3VkaXB0byBHaG9zaCIvPjxiciAvPjxzdWI+PGI+U3VkaXB0byBHaG9zaDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtc3VkaXB0b2c4MSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c3VkaXB0b2c4MSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1zdWRpcHRvZzgxIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wYW53YXV1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYyNTk3MjIzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJwYW53YXV1Ii8+PGJyIC8+PHN1Yj48Yj5wYW53YXV1PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cGFud2F1dSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcGFud2F1dSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cGFud2F1dSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FwYW53YXV1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vc3RlZmFuZW1heWVyLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTAzMTk1MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU3RlZmFuIEUuIE1heWVyIi8+PGJyIC8+PHN1Yj48Yj5TdGVmYW4gRS4gTWF5ZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzdGVmYW5lcndpbm1heWVyIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSGFzaFRhbG1peiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NTAxODI4MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVGFsbWl6IEFobWVkIi8+PGJyIC8+PHN1Yj48Yj5UYWxtaXogQWhtZWQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1IYXNoVGFsbWl6IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhc2hUYWxtaXoiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1IYXNoVGFsbWl6IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1RoYW5rc0ZvckFsbFRoZUZpc2giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjE2OTY1NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTWFyY28iLz48YnIgLz48c3ViPjxiPk1hcmNvPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBVGhhbmtzRm9yQWxsVGhlRmlzaCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3F1YWRycmVtIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzg0NTA4NzM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InF1YWRycmVtIi8+PGJyIC8+PHN1Yj48Yj5xdWFkcnJlbTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXF1YWRycmVtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXF1YWRycmVtIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8va2Fta28uZGV2Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3MDc0Mzc1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLYW1pbCBKYW5lxI1layIvPjxiciAvPjxzdWI+PGI+S2FtaWwgSmFuZcSNZWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rYW1rbyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FrYW1rbyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2Fta28iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21haGFrcG9yd2FsMDIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTY0ODY2ODI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Im1haGFrcG9yd2FsMDIiLz48YnIgLz48c3ViPjxiPm1haGFrcG9yd2FsMDI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLW1haGFrcG9yd2FsMDIiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1haGFrcG9yd2FsMDIiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFoYWtwb3J3YWwwMiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWhha3BvcndhbDAyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb24tZGViYWp5b3RpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIyNTcxNjY0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEZWJhanlvdGkgSGFsZGVyIi8+PGJyIC8+PHN1Yj48Yj5EZWJhanlvdGkgSGFsZGVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm9uLWRlYmFqeW90aSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yb24tZGViYWp5b3RpIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJvbi1kZWJhanlvdGkiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1yb24tZGViYWp5b3RpIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1yb24tZGViYWp5b3RpIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3JpdGlrMzA3LmdpdGh1Yi5pby9wb3J0Zm9saW8vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIyMzc0ODI5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSaXRpayBSYXdhbCIvPjxiciAvPjxzdWI+PGI+Uml0aWsgUmF3YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yaXRpazMwNyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yaXRpazMwNyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yaXRpazMwNyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLXJpdGlrMzA3IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSXNoYW4tU2FpbmkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ1MjU2MDI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IklzaGFuIi8+PGJyIC8+PHN1Yj48Yj5Jc2hhbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUlzaGFuLVNhaW5pIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUlzaGFuLVNhaW5pIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3NhbXJpZGhpLTk4LmdpdGh1Yi5pby9Qb3J0Zm9saW8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ0NjYwNDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlNhbXJpZGRoaSIvPjxiciAvPjxzdWI+PGI+U2FtcmlkZGhpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2FtcmlkaGktOTgiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2FtcmlkaGktOTgiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2FtcmlkaGktOTgiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1TYW1yaWRoaS05OCIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSIjbWFpbnRlbmFuY2UtU2FtcmlkaGktOTgiIHRpdGxlPSJNYWludGVuYW5jZSI+8J+apzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9nYWJvcm1hZ3lhciI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MzM5NzMwMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iR8OhYm9yIE1hZ3lhciIvPjxiciAvPjxzdWI+PGI+R8OhYm9yIE1hZ3lhcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWdhYm9ybWFneWFyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWdhYm9ybWFneWFyIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWdhYm9ybWFneWFyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtZ2Fib3JtYWd5YXIiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9pYmVybmFiZXVkZXYiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzQyMTUwNzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImliZXJuYWJldWRldiIvPjxiciAvPjxzdWI+PGI+aWJlcm5hYmV1ZGV2PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aWJlcm5hYmV1ZGV2IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWliZXJuYWJldWRldiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLWliZXJuYWJldWRldiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aWJlcm5hYmV1ZGV2IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zbG93aWtvd3NraWFya2FkaXVzeiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85NzUwODkzMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXJrYWRpdXN6IFPFgm93aWtvd3NraSIvPjxiciAvPjxzdWI+PGI+QXJrYWRpdXN6IFPFgm93aWtvd3NraTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNsb3dpa293c2tpYXJrYWRpdXN6IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNsb3dpa293c2tpYXJrYWRpdXN6IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtc2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNsb3dpa293c2tpYXJrYWRpdXN6IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5Z2VucyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNTgyMzE4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJXaWxsZW0gR2lsbGlzIi8+PGJyIC8+PHN1Yj48Yj5XaWxsZW0gR2lsbGlzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UG9seWdlbnMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UG9seWdlbnMiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBUG9seWdlbnMiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ybWFzYXJvdmljIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1MjI4MzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InJtYXNhcm92aWMiLz48YnIgLz48c3ViPjxiPnJtYXNhcm92aWM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ybWFzYXJvdmljIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJtYXNhcm92aWMiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm1hc2Fyb3ZpYyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLXJtYXNhcm92aWMiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vd2FpczM0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3MjM4NzU5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJPd2FpcyBIYXNuYXRoIEFobWVkIi8+PGJyIC8+PHN1Yj48Yj5Pd2FpcyBIYXNuYXRoIEFobWVkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b3dhaXMzNCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1vd2FpczM0IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW93YWlzMzQiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9QYW5NYW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTc4NTAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJQYW5NYW4iLz48YnIgLz48c3ViPjxiPlBhbk1hbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVBhbk1hbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJ0dXItY2lvY2FudSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDMxOTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImFydHVyLWNpb2NhbnUiLz48YnIgLz48c3ViPjxiPmFydHVyLWNpb2NhbnU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcnR1ci1jaW9jYW51IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWFydHVyLWNpb2NhbnUiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbWljcm8tanVtYm8uZXUvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNTExNjk3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJDeXByaWFuIEdyYWN6Ii8+PGJyIC8+PHN1Yj48Yj5DeXByaWFuIEdyYWN6PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWljcm8tanVtYm8iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWljcm8tanVtYm8iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBbWljcm8tanVtYm8iIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnByaW50bmFubnkuYWkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjYwMTgxOT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTGVpZ2ggSm9obnNvbiIvPjxiciAvPjxzdWI+PGI+TGVpZ2ggSm9obnNvbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWxlaWdoLWpvaG5zb24iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLWxlaWdoLWpvaG5zb24iIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWxlaWdoLWpvaG5zb24iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjbWFpbnRlbmFuY2UtbGVpZ2gtam9obnNvbiIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBbGVpZ2gtam9obnNvbiIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbml0aW50ZWp1amEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTUzNDc5MjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5pdGluIFRlanVqYSIvPjxiciAvPjxzdWI+PGI+Tml0aW4gVGVqdWphPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bml0aW50ZWp1amEiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1uaXRpbnRlanVqYSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2tlbm5ldGhhYXNhbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDM3Mzk0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLZW5uZXRoIEFhc2FuIi8+PGJyIC8+PHN1Yj48Yj5LZW5uZXRoIEFhc2FuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWtlbm5ldGhhYXNhbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1rZW5uZXRoYWFzYW4iIHRpdGxlPSJNYWludGVuYW5jZSI+8J+apzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWtlbm5ldGhhYXNhbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW1pdC1rc2giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTE5NDcwMzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFtaXQgS3VtYXIgU2hhcm1hIi8+PGJyIC8+PHN1Yj48Yj5BbWl0IEt1bWFyIFNoYXJtYTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFtaXQta3NoIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFtaXQta3NoIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtYW1pdC1rc2giIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vemF5dHNldmFuZCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MjA3NzQ4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbmRyZXkgWmF5dHNldiIvPjxiciAvPjxzdWI+PGI+QW5kcmV5IFpheXRzZXY8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj16YXl0c2V2YW5kIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtemF5dHNldmFuZCIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9emF5dHNldmFuZCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj16YXl0c2V2YW5kIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jb2Rpbmd0ZW5zaGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE2Mzc3NjMwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUZW5zaGkgQ29kZXMiLz48YnIgLz48c3ViPjxiPlRlbnNoaSBDb2RlczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2luZnJhLWNvZGluZ3RlbnNoaSIgdGl0bGU9IkluZnJhc3RydWN0dXJlIChIb3N0aW5nLCBCdWlsZC1Ub29scywgZXRjKSI+8J+ahzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly95dXNoaW9tb3RlLm9yZy8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzczMzkxNT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iWXVzaGkgT01PVEUiLz48YnIgLz48c3ViPjxiPll1c2hpIE9NT1RFPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBWXVzaGlPTU9URSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9WXVzaGlPTU9URSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21hbGNoZXJjenlrLnBsIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3NTM0NTA0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJaYmlnbmlldyBNYWxjaGVyY3p5ayIvPjxiciAvPjxzdWI+PGI+WmJpZ25pZXcgTWFsY2hlcmN6eWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FGZXJyb3IiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iI2luZnJhLUZlcnJvciIgdGl0bGU9IkluZnJhc3RydWN0dXJlIChIb3N0aW5nLCBCdWlsZC1Ub29scywgZXRjKSI+8J+ahzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUZlcnJvciIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNleGFtcGxlLUZlcnJvciIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9RmVycm9yIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQUZlcnJvciIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vMjAwUHVscyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82OTE4MzYwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIyMDBQdWxzIi8+PGJyIC8+PHN1Yj48Yj4yMDBQdWxzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9MjAwUHVscyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj0yMDBQdWxzIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbGlua3RyLmVlL2FuYXlzYXJrYXI3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUzMzQxMTgxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbmF5IFNhcmthciIvPjxiciAvPjxzdWI+PGI+QW5heSBTYXJrYXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLWFuYXlzYXJrYXI3IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hbmF5c2Fya2FyNyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hbmF5c2Fya2FyNyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTG91aXNYaGFmZXJpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyMzk3Njc3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMb3VpcyBYaGFmZXJpIi8+PGJyIC8+PHN1Yj48Yj5Mb3VpcyBYaGFmZXJpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9TG91aXNYaGFmZXJpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2FtYmhhdmd1cHRhMDcwNSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84MTg3MDg2Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2FtYmhhdiBHdXB0YSIvPjxiciAvPjxzdWI+PGI+U2FtYmhhdiBHdXB0YTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNhbWJoYXZndXB0YTA3MDUiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBc2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9IiNkZXNpZ24tc2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkRlc2lnbiI+8J+OqDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNhbWJoYXZndXB0YTA3MDUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBc2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3ByYXl1dHN1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NjM2NTI1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBYmhheSBHYXJnIi8+PGJyIC8+PHN1Yj48Yj5BYmhheSBHYXJnPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cHJheXV0c3UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS1wcmF5dXRzdSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cHJheXV0c3UiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cHJheXV0c3UiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hlbnJpa2pvbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNzIxMjIzMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iaGVucmlram9uIi8+PGJyIC8+PHN1Yj48Yj5oZW5yaWtqb248L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1oZW5yaWtqb24iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGVucmlram9uIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWhlbnJpa2pvbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLWhlbnJpa2pvbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly95YXNpcmRldmVsb3Blci5uZXRsaWZ5LmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzQ2MDA3NDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1vaGFtbWFkIFlhc2lyIi8+PGJyIC8+PHN1Yj48Yj5Nb2hhbW1hZCBZYXNpcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVlhc2lyNzYxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TYXZpbzYyOSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTM2MjU4OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2F2aW8gRGlhcyIvPjxiciAvPjxzdWI+PGI+U2F2aW8gRGlhczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNhdmlvNjI5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2luZnJhLVNhdmlvNjI5IiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBU2F2aW82MjkiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9pc2hhYW44MTIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzAxOTA1MzM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IklzaGFhbiBTaGFoIi8+PGJyIC8+PHN1Yj48Yj5Jc2hhYW4gU2hhaDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWlzaGFhbjgxMiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU2hyZXlhczA0MTAiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzA3OTU4Njc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlNocmV5YXMwNDEwIi8+PGJyIC8+PHN1Yj48Yj5TaHJleWFzMDQxMDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNocmV5YXMwNDEwIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmVrdS1lcGl0b21lIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNTE1MTUxMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYmVrdS1lcGl0b21lIi8+PGJyIC8+PHN1Yj48Yj5iZWt1LWVwaXRvbWU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1iZWt1LWVwaXRvbWUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBYmVrdS1lcGl0b21lIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJla3UtZXBpdG9tZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3dvcmRtYXN0ZXIyayI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMzU0MDE2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb3NodWEgTWljaGFlbCBEYWx5Ii8+PGJyIC8+PHN1Yj48Yj5Kb3NodWEgTWljaGFlbCBEYWx5PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBc3dvcmRtYXN0ZXIyayIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Rsa2oiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjQzMDU5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEYW5pZWwgS0oiLz48YnIgLz48c3ViPjxiPkRhbmllbCBLSjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWRsa2oiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGxraiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLWRsa2oiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQWRsa2oiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9jb2RleXQuY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MzAzMzUxMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQmhhdmlrIEFnYXJ3YWwiLz48YnIgLz48c3ViPjxiPkJoYXZpayBBZ2Fyd2FsPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZGVzaWduLUJoYXZpay1hZyIgdGl0bGU9IkRlc2lnbiI+8J+OqDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rYXVzaGlrLXJpc2hpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyNDk4NjE3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSaXNoaSIvPjxiciAvPjxzdWI+PGI+UmlzaGk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rYXVzaGlrLXJpc2hpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2Rlc2lnbi1rYXVzaGlrLXJpc2hpIiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9yb2hpdGhib3BwZXkubmV0bGlmeS5hcHAiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzM1Mzg5NzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJvaGl0aCBCb3BwZXkiLz48YnIgLz48c3ViPjxiPlJvaGl0aCBCb3BwZXk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Sb2hpdGhCb3BwZXkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZGVzaWduLVJvaGl0aEJvcHBleSIgdGl0bGU9IkRlc2lnbiI+8J+OqDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9hc2hpc2hwYWRoeS5saXZlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwMDQ4NDQwMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXNoaXNoIFBhZGh5Ii8+PGJyIC8+PHN1Yj48Yj5Bc2hpc2ggUGFkaHk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TaHVydHUtZ2FsIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNodXJ0dS1nYWwiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjaW5mcmEtU2h1cnR1LWdhbCIgdGl0bGU9IkluZnJhc3RydWN0dXJlIChIb3N0aW5nLCBCdWlsZC1Ub29scywgZXRjKSI+8J+ahzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vamZjb3RlLmdpdGh1Yi5pbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDMzNjkwMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSmVhbi1GcmFuw6dvaXMgQ8O0dMOpIi8+PGJyIC8+PHN1Yj48Yj5KZWFuLUZyYW7Dp29pcyBDw7R0w6k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1KRkNvdGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SkZDb3RlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtSkZDb3RlIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1KRkNvdGUiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1N1bWFudHhEIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY1ODEwNDI0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdW1hbnQueEQiLz48YnIgLz48c3ViPjxiPlN1bWFudC54RDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVN1bWFudHhEIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2luZnJhLVN1bWFudHhEIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U3VtYW50eEQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FyeWFuYXMxNTkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE0MzMwOTMxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBcnlhbiBTaW5naCIvPjxiciAvPjxzdWI+PGI+QXJ5YW4gU2luZ2g8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcnlhbmFzMTU5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9tYXJrdXMucG9lcnNjaGtlLm5ydyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjIyMzc3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYXJrdXMgUG9lcnNjaGtlIi8+PGJyIC8+PHN1Yj48Yj5NYXJrdXMgUG9lcnNjaGtlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1hcmt1c3BvZXJzY2hrZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgIDwvdHI+CiAgPC90Ym9keT4KPC90YWJsZT4KCjwhLS0gbWFya2Rvd25saW50LXJlc3RvcmUgLS0+CjwhLS0gcHJldHRpZXItaWdub3JlLWVuZCAtLT4KCjwhLS0gQUxMLUNPTlRSSUJVVE9SUy1MSVNUOkVORCAtLT4KClRoaXMgcHJvamVjdCBmb2xsb3dzIHRoZSBbYWxsLWNvbnRyaWJ1dG9yc10oaHR0cHM6Ly9naXRodWIuY29tL2FsbC1jb250cmlidXRvcnMvYWxsLWNvbnRyaWJ1dG9ycykgc3BlY2lmaWNhdGlvbi4gQ29udHJpYnV0aW9ucyBvZiBhbnkga2luZCBhcmUgd2VsY29tZSEK - readmeEtag: '"374a4b7e7f53d6e640cce6b1ef406a4bd4b62516fcfc1d91801bc9d3bab45784"' - readmeLastModified: Mon, 07 Aug 2023 21:50:26 GMT + WyFbQXN5bmNBUEkgTW9kZWxpbmFdKC4vZG9jcy9pbWcvcmVhZG1lLWJhbm5lci5wbmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW2JsYWNrYm94IHBpcGVsaW5lIHN0YXR1c10oPGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2FzeW5jYXBpL21vZGVsaW5hL2JsYWNrYm94LXRlc3RpbmcueW1sP2xhYmVsPWJsYWNrYm94JTIwdGVzdGluZz4pXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYWN0aW9ucy93b3JrZmxvd3MvYmxhY2tib3gtdGVzdGluZy55bWw/cXVlcnk9YnJhbmNoJTNBbWFzdGVyKyspClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hL2JhZGdlLnN2Zz9icmFuY2g9bWFzdGVyKV0oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2FzeW5jYXBpL21vZGVsaW5hP2JyYW5jaD1tYXN0ZXIpClshW1Byb2plY3QgU3RhdHVzOiBBY3RpdmUg4oCTIFRoZSBwcm9qZWN0IGhhcyByZWFjaGVkIGEgc3RhYmxlLCB1c2FibGUgc3RhdGUgYW5kIGlzIGJlaW5nIGFjdGl2ZWx5IGRldmVsb3BlZC5dKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnL2JhZGdlcy9sYXRlc3QvYWN0aXZlLnN2ZyldKGh0dHBzOi8vd3d3LnJlcG9zdGF0dXMub3JnLyNhY3RpdmUpCiFbTWFpbnRlbmFuY2Ugc2NvcmVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtcy1pby9tYWludGVuYW5jZS1zY29yZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW05wbSBsYXRlc3QgdmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdi9AYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AYXN5bmNhcGkvbW9kZWxpbmEpClshW0xpY2Vuc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xpY2Vuc2UvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvYmxvYi9tYXN0ZXIvTElDRU5TRSkKWyFbbGFzdCBjb21taXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2xhc3QtY29tbWl0L2FzeW5jYXBpL21vZGVsaW5hKV0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHMvbWFzdGVyKQpbIVtEaXNjdXNzaW9uc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvZGlzY3Vzc2lvbnMvYXN5bmNhcGkvbW9kZWxpbmEpXShodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvZGlzY3Vzc2lvbnMpClshW1dlYnNpdGVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD13ZWJzaXRlJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmcpXShodHRwczovL3d3dy5tb2RlbGluYS5vcmcpClshW1BsYXlncm91bmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vd2Vic2l0ZT9sYWJlbD1wbGF5Z3JvdW5kJnVybD1odHRwcyUzQSUyRiUyRnd3dy5tb2RlbGluYS5vcmclMkZwbGF5Z3JvdW5kKV0oaHR0cHM6Ly93d3cubW9kZWxpbmEub3JnL3BsYXlncm91bmQpIDwhLS0gQUxMLUNPTlRSSUJVVE9SUy1CQURHRTpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KWyFbQWxsIENvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9hbGxfY29udHJpYnV0b3JzLTYyLW9yYW5nZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXSgjY29udHJpYnV0b3JzLSkKPCEtLSBBTEwtQ09OVFJJQlVUT1JTLUJBREdFOkVORCAtLT4KCllvdXIgb25lLXN0b3AgdG9vbCBmb3IgZ2VuZXJhdGluZyBhY2N1cmF0ZSBhbmQgd2VsbC10ZXN0ZWQgbW9kZWxzIGZvciByZXByZXNlbnRpbmcgdGhlIG1lc3NhZ2UgcGF5bG9hZHMuIFVzZSBpdCBhcyBhIHRvb2wgaW4geW91ciBkZXZlbG9wbWVudCB3b3JrZmxvdywgb3IgYSBsaWJyYXJ5IGluIGEgbGFyZ2VyIGludGVncmF0aW9ucywgZW50aXJlbHkgaW4geW91ciBjb250cm9sLgoKLS0tCgo8IS0tIHRvYyBpcyBnZW5lcmF0ZWQgd2l0aCBHaXRIdWIgQWN0aW9ucyBkbyBub3QgcmVtb3ZlIHRvYyBtYXJrZXJzIC0tPgoKPCEtLSB0b2MgLS0+CgotIFtJbnN0YWxsaW5nIE1vZGVsaW5hXSgjaW5zdGFsbGluZy1tb2RlbGluYSkKLSBbQXN5bmNBUEkgQ0xJXSgjYXN5bmNhcGktY2xpKQotIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQotIFtSb2FkbWFwXSgjcm9hZG1hcCkKLSBbUmVxdWlyZW1lbnRzXSgjcmVxdWlyZW1lbnRzKQotIFtEb2N1bWVudGF0aW9uXSgjZG9jdW1lbnRhdGlvbikKLSBbRXhhbXBsZXNdKCNleGFtcGxlcykKLSBbVmVyc2lvbmluZyBhbmQgbWFpbnRlbmFuY2VdKCN2ZXJzaW9uaW5nLWFuZC1tYWludGVuYW5jZSkKLSBbRGV2ZWxvcG1lbnRdKCNkZXZlbG9wbWVudCkKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQotIFtDb250cmlidXRvcnNdKCNjb250cmlidXRvcnMpCgo8IS0tIHRvY3N0b3AgLS0+CgojIyBJbnN0YWxsaW5nIE1vZGVsaW5hCgpSdW4gdGhpcyBjb21tYW5kIHRvIGluc3RhbGwgTW9kZWxpbmEgaW4geW91ciBwcm9qZWN0OgoKYGBgYmFzaApucG0gaW5zdGFsbCBAYXN5bmNhcGkvbW9kZWxpbmEKYGBgCgojIyBBc3luY0FQSSBDTEkKCklmIHlvdSBoYXZlIHRoZSBbQXN5bmNBUEkgQ0xJIGluc3RhbGxlZF0oaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL2NsaSNpbnN0YWxsYXRpb24pIChPTkxZIHN1cHBvcnQgQXN5bmNBUEkgaW5wdXRzKSwgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHVzZSBbTW9kZWxpbmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9jbGkjdXNhZ2UpOgoKYGBgYmFzaAphc3luY2FwaSBnZW5lcmF0ZSBtb2RlbHMgPGxhbmd1YWdlPiAuL2FzeW5jYXBpLmpzb24KYGBgCgo8aDIgYWxpZ249ImNlbnRlciI+V2hhdCBEb2VzIE1vZGVsaW5hIERvPzwvaDI+Cgo8cCBhbGlnbj0iY2VudGVyIj5Nb2RlbGluYSBwdXQgWU9VIGluIGNvbnRyb2wgb2YgeW91ciBkYXRhIG1vZGVscywgaGVyZSBpcyBob3cuLi48L3A+Cgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0cj4KICAgIDx0ZD48Yj5Nb2RlbGluYSBsZXRzIHlvdSBnZW5lcmF0ZSBkYXRhIG1vZGVscyBmcm9tIG1hbnkgdHlwZXMgb2YgPGEgaHJlZj0iI2lucHV0cyI+aW5wdXRzPC9hPjwvYj48L3RkPgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IGFzeW5jYXBpID0gLi4uCmNvbnN0IGpzb25zY2hlbWEgPSAuLi4KY29uc3Qgb3BlbmFwaSA9IC4uLiAKY29uc3QgbWV0YW1vZGVsID0gLi4uIAouLi4KY29uc3QgbW9kZWxzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlKAogIGFzeW5jYXBpIHwganNvbnNjaGVtYSB8IG9wZW5hcGkgfCBtZXRhbW9kZWwKKTsKYGBgCjwvdGQ+CiAgPC90cj4KICAgIDx0cj4KICAgIDx0ZD48Yj5Vc2UgdGhlIHNhbWUgaW5wdXRzIGFjcm9zcyBhIHJhbmdlIG9mIGRpZmZlcmVudCA8YSBocmVmPSIjb3V0cHV0cyI+Z2VuZXJhdG9yczwvYT48L2I+PC90ZD4KPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSBuZXcgVHlwZVNjcmlwdEdlbmVyYXRvcigpOwpjb25zdCBnZW5lcmF0b3IgPSBuZXcgQ3NoYXJwR2VuZXJhdG9yKCk7CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBKYXZhR2VuZXJhdG9yKCk7CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBSdXN0R2VuZXJhdG9yKCk7Ci4uLgpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpgYGAKPC90ZD4KICA8L3RyPgogICAgPHRyPgogICAgPHRkPjxiPkVhc2lseSBsZXQgeW91IGludGVyYWN0IHdpdGggdGhlIGdlbmVyYXRlZCBtb2RlbHMuPC9iPiAKCi0gV2FudCB0byBzaG93IHRoZSBnZW5lcmF0ZWQgbW9kZWxzIG9uIGEgd2Vic2l0ZT8gU3VyZSEgCi0gV2FudCB0byBnZW5lcmF0ZSB0aGUgbW9kZWxzIGludG8gZmlsZXM/IFN1cmUhIAotIFdhbnQgdG8gY29tYmluZSBhbGwgdGhlIG1vZGVscyBpbnRvIG9uZSBzaW5nbGUgZmlsZT8gU3VyZSEgCgpXaGF0ZXZlciBpbnRlcmFjdGlvbiB5b3UgbmVlZCwgeW91IGNhbiBjcmVhdGUuPC90ZD4KPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpmb3IgKGNvbnN0IG1vZGVsIGluIG1vZGVscykgeyAKICBjb25zdCBnZW5lcmF0ZWRDb2RlID0gZ2VuZXJhdGVkTW9kZWwucmVzdWx0OwogIGNvbnN0IGRlcGVuZGVuY2llcyA9IGdlbmVyYXRlZE1vZGVsLmRlcGVuZGVuY2llczsKICBjb25zdCBtb2RlbHR5cGUgPSBnZW5lcmF0ZWRNb2RlbC5tb2RlbC50eXBlOwogIGNvbnN0IG1vZGVsTmFtZSA9IGdlbmVyYXRlZE1vZGVsLm1vZGVsTmFtZTsKICAuLi4KfQpgYGAKPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48Yj5FYXNpbHkgbW9kaWZ5IGhvdyBtb2RlbHMgYXJlIDxhIGhyZWY9Ii4vZG9jcy9jb25zdHJhaW50cy5tZCI+Y29uc3RyYWluZWQ8L2E+IGludG8gdGhlIG91dHB1dDwvYj48L3RkPgoKPHRkPgoKYGBgdHlwZXNjcmlwdApjb25zdCBnZW5lcmF0b3IgPSBuZXcgVHlwZVNjcmlwdEdlbmVyYXRvcih7CiAgY29uc3RyYWludHM6IHsKICAgIG1vZGVsTmFtZTogKHttb2RlbE5hbWV9KSA9PiB7CiAgICAgIC8vIEltcGxlbWVudCB5b3VyIG93biBjb25zdHJhaW5pbmcgbG9naWMKICAgICAgcmV0dXJuIG1vZGVsTmFtZTsKICAgIH0KICB9Cn0pOwpgYGAKPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48Yj5TZWFtbGVzc2x5IGxheWVyIGFkZGl0aW9uYWwgb3IgcmVwbGFjZW1lbnQgY29kZSA8YSBocmVmPSIuL2RvY3MvcHJlc2V0cy5tZCI+b24gdG9wIG9mIGVhY2ggb3RoZXIgdG8gY3VzdG9taXplIHRoZSBtb2RlbHM8L2E+IHRvIHlvdXIgdXNlLWNhc2U8L2I+PC90ZD4KCjx0ZD4KCmBgYHR5cGVzY3JpcHQKY29uc3QgZ2VuZXJhdG9yID0gbmV3IFR5cGVTY3JpcHRHZW5lcmF0b3IoewogIHByZXNldHM6IFsKICAgIHsKICAgICAgY2xhc3M6IHsKICAgICAgICBhZGRpdGlvbmFsQ29udGVudCh7IGNvbnRlbnQgfSkgewogICAgICAgICAgcmV0dXJuIGAke2NvbnRlbnR9CnB1YmxpYyBteUN1c3RvbUZ1bmN0aW9uKCk6IHN0cmluZyB7CiAgcmV0dXJuICdBIGN1c3RvbSBmdW5jdGlvbiBmb3IgZWFjaCBjbGFzcyc7Cn1gOwogICAgICAgIH0sCiAgICAgIH0KICAgIH0KICBdCn0pOwpjb25zdCBtb2RlbHMgPSBhd2FpdCBnZW5lcmF0b3IuZ2VuZXJhdGUoaW5wdXQpOwpgYGAKPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48Yj5TZWFtbGVzc2x5IGxldHMgeW91IDxhIGhyZWY9Ii4vZG9jcy9wcmVzZXRzLm1kIj5jb21iaW5lIG11bHRpcGxlIGxheWVycyBvZiBhZGRpdGlvbmFsIG9yIHJlcGxhY2VtZW50IGNvZGU8L2E+PC9iPjwvdGQ+Cgo8dGQ+CgpgYGB0eXBlc2NyaXB0CmNvbnN0IG15Q3VzdG9tRnVuY3Rpb24xID0gewogIGNsYXNzOiB7CiAgICBhZGRpdGlvbmFsQ29udGVudCh7IGNvbnRlbnQgfSkgewogICAgICByZXR1cm4gYCR7Y29udGVudH0KcHVibGljIG15Q3VzdG9tRnVuY3Rpb24oKTogc3RyaW5nIHsKcmV0dXJuICdBIGN1c3RvbSBmdW5jdGlvbiBmb3IgZWFjaCBjbGFzcyc7Cn1gOwogICAgfSwKICB9Cn07CmNvbnN0IG15Q3VzdG9tRnVuY3Rpb24yID0gey4uLn07CmNvbnN0IGdlbmVyYXRvciA9IG5ldyBUeXBlU2NyaXB0R2VuZXJhdG9yKHsKICBwcmVzZXRzOiBbCiAgICBteUN1c3RvbUZ1bmN0aW9uMSwKICAgIG15Q3VzdG9tRnVuY3Rpb24yCiAgXQp9KTsKY29uc3QgbW9kZWxzID0gYXdhaXQgZ2VuZXJhdG9yLmdlbmVyYXRlKGlucHV0KTsKYGBgCjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCiMjIEZlYXR1cmVzCgpUaGUgZm9sbG93aW5nIHRhYmxlIHByb3ZpZGVzIGEgc2hvcnQgc3VtbWFyeSBvZiBhdmFpbGFibGUgZmVhdHVyZXMgZm9yIHN1cHBvcnRlZCBvdXRwdXQgbGFuZ3VhZ2VzLiBUbyBzZWUgdGhlIGNvbXBsZXRlIGZlYXR1cmUgbGlzdCBmb3IgZWFjaCBsYW5ndWFnZSwgcGxlYXNlIGNsaWNrIHRoZSBpbmRpdmlkdWFsIGxpbmtzIGZvciBlYWNoIGxhbmd1YWdlLgoKPGEgaWQ9ImlucHV0cyI+PC9hPgoKPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dHI+CiAgICA8dGg+U3VwcG9ydGVkIGlucHV0czwvdGg+CiAgICA8dGg+PC90aD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWxzLWZyb20tYXN5bmNhcGktZG9jdW1lbnRzIj5Bc3luY0FQSTwvYT48L3RkPgogICAgPHRkPldlIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBBc3luY0FQSSB2ZXJzaW9uczogPGVtPjIuMC4wIC0+IDIuNi4wPC9lbT4sIHdoaWNoIGdlbmVyYXRlcyBtb2RlbHMgZm9yIGFsbCB0aGUgZGVmaW5lZCBtZXNzYWdlIHBheWxvYWRzLiBJdCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHNjaGVtYUZvcm1hdHMgQXN5bmNBUEkgU2NoZW1hIG9iamVjdCwgSlNPTiBTY2hlbWEgZHJhZnQgNywgPGEgaHJlZj0iLi9leGFtcGxlcy9hc3luY2FwaS1hdnJvLXNjaGVtYSI+QVZSTyAxLjk8L2E+LCA8YSBocmVmPSIuL2V4YW1wbGVzL2FzeW5jYXBpLXJhbWwtc2NoZW1hIj5SQU1MIDEuMCBkYXRhIHR5cGU8L2E+LCBhbmQgPGEgaHJlZj0iLi9leGFtcGxlcy9hc3luY2FwaS1vcGVuYXBpLXNjaGVtYSI+T3BlbkFQSSAzLjAgU2NoZW1hPC9hPi48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1qc29uLXNjaGVtYS1kb2N1bWVudHMiPkpTT04gU2NoZW1hPC9hPjwvdGQ+CiAgICA8dGQ+V2Ugc3VwcG9ydCB0aGUgZm9sbG93aW5nIEpTT04gU2NoZW1hIHZlcnNpb25zOiA8ZW0+RHJhZnQtNCwgRHJhZnQtNiBhbmQgRHJhZnQtNzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5PcGVuQVBJPC90ZD4KICAgIDx0ZD5XZSBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgT3BlbkFQSSB2ZXJzaW9uczogPGVtPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1zd2FnZ2VyLTIwLWRvY3VtZW50cyI+U3dhZ2dlciAyLjA8L2E+IGFuZCA8YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWxzLWZyb20tb3BlbmFwaS1kb2N1bWVudHMiPk9wZW5BUEkgMy4wPC9hPjwvZW0+LCB3aGljaCBnZW5lcmF0ZXMgbW9kZWxzIGZvciBhbGwgdGhlIGRlZmluZWQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcGF5bG9hZHMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtbW9kZWwtZnJvbS10eXBlc2NyaXB0LXR5cGUtZmlsZXMiPlR5cGVTY3JpcHQ8L2E+PC90ZD4KICAgIDx0ZD5XZSBjdXJyZW50bHkgc3VwcG9ydCBUeXBlU2NyaXB0IHR5cGVzIGFzIGZpbGUgaW5wdXQgZm9yIG1vZGVsIGdlbmVyYXRpb248L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1tb2RlbHMtZnJvbS1tZXRhLW1vZGVscyI+TWV0YSBtb2RlbDwvYT48L3RkPgogICAgPHRkPlRoaXMgaXMgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgbW9kZWwgZm9yIE1vZGVsaW5hLCBpdCBpcyB3aGF0IGlucHV0cyBnZXRzIGNvbnZlcnRlZCB0bywgYW5kIHdoYXQgZ2VuZXJhdG9ycyBhcmUgcHJvdmlkZWQgdG8gZ2VuZXJhdGUgY29kZS4gSW5zdGVhZCBvZiByZWx5aW5nIG9uIGFuIGlucHV0IHByb2Nlc3NvciwgeW91IGNhbiBjcmVhdGUgeW91ciBvd24gbW9kZWxzIGZyb20gc2NyYXRjaCBhbmQgc3RpbGwgdGFrZSBhZHZhbnRhZ2Ugb24gdGhlIGdlbmVyYXRvcnMgYW5kIHRoZSBmZWF0dXJlcy48L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8YSBpZD0ib3V0cHV0cyI+PC9hPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1zdGFydCAtLT4KPCEtLSBtYXJrZG93bmxpbnQtZGlzYWJsZSAtLT4KPHRhYmxlPgogIDx0cj4KICAgIDx0aD5TdXBwb3J0ZWQgb3V0cHV0czwvdGg+CiAgICA8dGg+PC90aD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtamF2YS1tb2RlbHMiPkphdmE8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Z2VuZXJhdGlvbiBvZiBlcXVhbHMsIGhhc2hDb2RlLCB0b1N0cmluZywgSmFja3NvbiBhbm5vdGF0aW9uLCBjdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS10eXBlc2NyaXB0LW1vZGVscyI+VHlwZVNjcmlwdDwvYT48L3RkPgogICAgPHRkPkNsYXNzLCBpbnRlcmZhY2UgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmdlbmVyYXRpb24gb2YgZXhhbXBsZSBjb2RlLCB1bi9tYXJzaGFsIGZ1bmN0aW9ucywgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtYyMtbW9kZWxzIj5DIzwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT5nZW5lcmF0aW9uIG9mIGV4YW1wbGUgY29kZSwgc2VyaWFsaXplciBhbmQgZGVzZXJpYWxpemVyIGZ1bmN0aW9ucywgY3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YzwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtZ28tbW9kZWxzIj5HbzwvYT48L3RkPgogICAgPHRkPlN0cnVjdCBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWphdmFzY3JpcHQtbW9kZWxzIj5KYXZhU2NyaXB0PC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGM8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWRhcnQtbW9kZWxzIj5EYXJ0PC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjoganNvbl9hbm5vdGF0aW9uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtcnVzdC1tb2RlbHMiPlJ1c3Q8L2E+PC90ZD4KICAgIDx0ZD5TdHJ1Y3QvdHVwbGUgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmdlbmVyYXRpb24gb2YgYGltcGxlbWVudCBEZWZhdWx0YCwgZ2VuZXJhdGUgc2VyZGUgbWFjcm9zLCBjdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1weXRob24tbW9kZWxzIj5QeXRob248L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGV0YyA8L2VtPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+PGEgaHJlZj0iLi9kb2NzL3VzYWdlLm1kI2dlbmVyYXRlLWtvdGxpbi1tb2RlbHMiPktvdGxpbjwvYT48L3RkPgogICAgPHRkPkNsYXNzIGFuZCBlbnVtIGdlbmVyYXRpb246IDxlbT51c2Ugb2YgZGF0YSBjbGFzc2VzIHdoZXJlIGFwcHJvcHJpYXRlLCBjdXN0b20gaW5kZW50YXRpb24gdHlwZSBhbmQgc2l6ZSwgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD48YSBocmVmPSIuL2RvY3MvdXNhZ2UubWQjZ2VuZXJhdGUtY3BsdXNwbHVzLW1vZGVscyI+QysrPC9hPjwvdGQ+CiAgICA8dGQ+Q2xhc3MgYW5kIGVudW0gZ2VuZXJhdGlvbjogPGVtPmN1c3RvbSBpbmRlbnRhdGlvbiB0eXBlIGFuZCBzaXplLCBldGMgPC9lbT48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPjxhIGhyZWY9Ii4vZG9jcy91c2FnZS5tZCNnZW5lcmF0ZS1waHAtbW9kZWxzIj5QSFA8L2E+PC90ZD4KICAgIDx0ZD5DbGFzcyBhbmQgZW51bSBnZW5lcmF0aW9uOiA8ZW0+Y3VzdG9tIGluZGVudGF0aW9uIHR5cGUgYW5kIHNpemUsIGRlc2NyaXB0aW9ucywgZXRjIDwvZW0+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKIyMgUm9hZG1hcApUaGlzIGlzIHRoZSByb2FkbWFwIHRoYXQgaXMgY3VycmVudGx5IGluIGZvY3VzIGJ5IHRoZSBbQ09ERU9XTkVSU10oLi9DT0RFT1dORVJTKQoKLSBbMSB5ZWFyIHJvYWRtYXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9taWxlc3RvbmUvNCkKCiMjIFJlcXVpcmVtZW50cwpUaGUgZm9sbG93aW5nIGFyZSBhIHJlcXVpcmVtZW50IGluIG9yZGVyIHRvIHVzZSBNb2RlbGluYS4KCi0gW05vZGVKU10oaHR0cHM6Ly9ub2RlanMub3JnL2VuLykgPj0gMTQKCiMjIERvY3VtZW50YXRpb24KQSBmZWF0dXJlIGluIE1vZGVsaW5hIGNhbm5vdCBleGlzdHMgd2l0aG91dCBhbiBleGFtcGxlIGFuZCBkb2N1bWVudGF0aW9uIGZvciBpdC4gWW91IGNhbiBmaW5kIGFsbCB0aGUgW2RvY3VtZW50YXRpb24gaGVyZV0oLi9kb2NzL1JFQURNRS5tZCkuCgojIyBFeGFtcGxlcwpEbyB5b3UgbmVlZCB0byBrbm93IGhvdyB0byB1c2UgdGhlIGxpYnJhcnkgaW4gY2VydGFpbiBzY2VuYXJpb3M/IAoKV2UgaGF2ZSBnYXRoZXJlZCBhbGwgdGhlIGV4YW1wbGVzIGluIGEgc2VwYXJhdGUgZm9sZGVyIGFuZCB0aGV5IGNhbiBiZSBmb3VuZCB1bmRlciB0aGUgW2V4YW1wbGVzIGZvbGRlcl0oLi9leGFtcGxlcykuIAoKIyMgVmVyc2lvbmluZyBhbmQgbWFpbnRlbmFuY2UKQXMgb2YgdmVyc2lvbiAxLCBNb2RlbGluYSBoYXMgYSB2ZXJ5IHN0cmljdCBzZXQgb2YgY2hhbmdlcyB3ZSBhcmUgYWxsb3dlZCB0byBkbyBiZWZvcmUgaXQgcmVxdWlyZXMgYSBtYWpvciB2ZXJzaW9uIGNoYW5nZS4gSW4gc2hvcnQsIGFueSBjaGFuZ2VzIHRoYXQgY2hhbmdlIHRoZSBnZW5lcmF0ZWQgb3V0Y29tZSBhcmUgbm90IGFsbG93ZWQgYXMgaXQncyBhIGJyZWFraW5nIGNoYW5nZSBmb3IgdGhlIGNvbnN1bWVyIG9mIHRoZSBnZW5lcmF0ZWQgbW9kZWxzLiAKCkhlcmUgaXMgYSBsaXN0IG9mIGNoYW5nZXMgd2UgYXJlIGFsbG93ZWQgdG8gZG8gdGhhdCB3b3VsZCBub3QgcmVxdWlyZSBhIGJyZWFraW5nIGNoYW5nZToKLSBBZGRpbmcgbmV3IGZlYXR1cmVzICh0aGF0IGRvIG5vdCBjaGFuZ2UgZXhpc3Rpbmcgb3V0cHV0KSwgc3VjaCBhcyBnZW5lcmF0b3JzLCBwcmVzZXRzLCBpbnB1dCBwcm9jZXNzb3JzLCBldGMuCi0gQ2hhbmdlIGV4aXN0aW5nIGZlYXR1cmVzLCBieSBwcm92aWRpbmcgb3B0aW9ucyB0aGF0IGRlZmF1bHQgdG8gY3VycmVudCBiZWhhdmlvci4gVGhpcyBjb3VsZCBiZSBhIHByZXNldCB0aGF0IGFkYXB0cyB0aGUgb3V0cHV0IGJhc2VkIG9uIG9wdGlvbnMsIGFzIGxvbmcgYXMgdGhlIEFQSSBvZiBNb2RlbGluYSBhbmQgdGhlIEFQSSBvZiB0aGUgZ2VuZXJhdGVkIG1vZGVscyBkb2VzIG5vdCBoYXZlIGFueSBicmVha2luZyBjaGFuZ2VzLgotIEJ1ZyBmaXhlcyB3aGVyZSB0aGUgZ2VuZXJhdGVkIGNvZGUgaXMgb3RoZXJ3aXNlIHVudXNhYmxlIChzeW50YXggZXJyb3JzLCBldGMpLgoKQnJlYWtpbmcgY2hhbmdlcyBhcmUgYWxsb3dlZCBhbmQgZXhwZWN0ZWQgYXQgYSBmcmVxdWVudCByYXRlLCBvZiBjb3Vyc2Ugd2hlcmUgaXQgbWFrZXMgc2Vuc2Ugd2Ugd2lsbCB0cnkgdG8gYnVuZGxlIG11bHRpcGxlIGNoYW5nZXMgdG9nZXRoZXIuCgpXZSBvZiBjb3Vyc2Ugd2lsbCBkbyBvdXIgYmVzdCB0byB1cGhvbGQgdGhpcywgYnV0IG1pc3Rha2VzIGNhbiBoYXBwZW4sIGFuZCBpZiB5b3Ugbm90aWNlIGFueSBicmVha2luZyBjaGFuZ2VzIHBsZWFzZSBsZXQgdXMga25vdyEKCkJlY2F1c2Ugb2YgdGhlIG51bWJlciBvZiB0aGUgbGltaXRlZCBudW1iZXIgb2YgY2hhbXBpb25zLCBvbmx5IHRoZSBtb3N0IHJlY2VudCBtYWpvciB2ZXJzaW9uIHdpbGwgYmUgbWFpbnRhaW5lZC4KCk1ham9yIHZlcnNpb25zIGFyZSBjdXJyZW50bHkgaGFwcGVuaW5nIGF0IGEgMy1tb250aCBjYWRlbmNlIChpbiBhIHNpbWlsYXIgZmFzaGlvbiBhcyB0aGUgQXN5bmNBUEkgc3BlY2lmaWNhdGlvbiksIHRoaXMgd2lsbCBoYXBwZW4gaW4gSmFudWFyeSwgQXByaWwsIEp1bmUsIGFuZCBTZXB0ZW1iZXIuIAoKIyMgRGV2ZWxvcG1lbnQKV2UgdHJ5IHRvIG1ha2UgaXQgYXMgZWFzeSBmb3IgeW91IGFzIHBvc3NpYmxlIHRvIHNldCB1cCB5b3VyIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRvIGNvbnRyaWJ1dGUgdG8gTW9kZWxpbmEuIFlvdSBjYW4gZmluZCB0aGUgZGV2ZWxvcG1lbnQgZG9jdW1lbnRhdGlvbiBbaGVyZV0oLi9kb2NzL2RldmVsb3BtZW50Lm1kKS4KCiMjIENvbnRyaWJ1dGluZwpXaXRob3V0IGNvbnRyaWJ1dGlvbnMsIE1vZGVsaW5hIHdvdWxkIG5vdCBleGlzdCwgaXQncyBhIGNvbW11bml0eSBwcm9qZWN0IHdlIGJ1aWxkIHRvZ2V0aGVyIHRvIGNyZWF0ZSB0aGUgYmVzdCBwb3NzaWJsZSBidWlsZGluZyBibG9ja3MsIGFuZCB3ZSBkbyB0aGlzIHRocm91Z2ggW2NoYW1waW9uc10oLi9kb2NzL2NoYW1waW9ucy5tZCkuCgpXZSBoYXZlIG1hZGUgcXVpdGUgYSBbY29tcHJlaGVuc2l2ZSBjb250cmlidXRpb24gZ3VpZGVdKC4vZG9jcy9jb250cmlidXRpbmcubWQpIHRvIGdpdmUgeW91IGEgbGVuZGluZyBoYW5kIGluIGhvdyBkaWZmZXJlbnQgZmVhdHVyZXMgYW5kIGNoYW5nZXMgYXJlIGludHJvZHVjZWQuCgpJZiBubyBkb2N1bWVudGF0aW9uIGhlbHBzIHlvdSwgaGVyZSBpcyBob3cgeW91IGNhbiByZWFjaCBvdXQgdG8gZ2V0IGhlbHA6Ci0gT24gdGhlIFtvZmZpY2lhbCBBc3ljbkFQSSBzbGFja10oaHR0cHM6Ly9hc3luY2FwaS5jb20vc2xhY2staW52aXRlKSB1bmRlciB0aGUgYCMwNF90b29saW5nYCBjaGFubmVsCi0gVGFnIGEgc3BlY2lmaWMgW0NPREVPV05FUl0oLi9DT0RFT1dORVJTKSBpbiB5b3VyIFBSCi0gR2VuZXJhbGx5LCBpdCdzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBkbyBldmVyeXRoaW5nIGluIHB1YmxpYywgYnV0IGluIHNvbWUgY2FzZXMsIGl0IG1pZ2h0IG5vdCBiZSBwb3NzaWJsZS4gSW4gdGhvc2UgY2lyY3Vtc3RhbmNlcyB5b3UgY2FuIGNvbnRhY3QgdGhlIGZvbGxvd2luZzogCiAgLSBbam9uYXNsYWdvbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25hc2xhZ29uaSkgKG9uIFtBc3luY0FQSSBTbGFja10oaHR0cHM6Ly9hc3luY2FwaS5jb20vc2xhY2staW52aXRlKSwgW1R3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vam9uYXNsYWdvbmkpLCBbRW1haWxdKG1haWx0bzpqb25hcy1sdEBsaXZlLmRrKSwgW0xpbmtlZEluXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vam9uYXNsYWdvbmkvKSkKCiMjIENvbnRyaWJ1dG9ycyAKClRoYW5rcyBnbyBvdXQgdG8gdGhlc2Ugd29uZGVyZnVsIHBlb3BsZSAoW2Vtb2ppIGtleV0oaHR0cHM6Ly9hbGxjb250cmlidXRvcnMub3JnL2RvY3MvZW4vZW1vamkta2V5KSk6Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpTVEFSVCAtIERvIG5vdCByZW1vdmUgb3IgbW9kaWZ5IHRoaXMgc2VjdGlvbiAtLT4KPCEtLSBwcmV0dGllci1pZ25vcmUtc3RhcnQgLS0+CjwhLS0gbWFya2Rvd25saW50LWRpc2FibGUgLS0+Cjx0YWJsZT4KICA8dGJvZHk+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21hZ2ljbWF0YXRqYWh1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIwNDA0OTQ1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYWNpZWogVXJiYcWEY3p5ayIvPjxiciAvPjxzdWI+PGI+TWFjaWVqIFVyYmHFhGN6eWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FtYWdpY21hdGF0amFodSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFnaWNtYXRhdGphaHUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFnaWNtYXRhdGphaHUiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjaWRlYXMtbWFnaWNtYXRhdGphaHUiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1tYWdpY21hdGF0amFodSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSIjcXVlc3Rpb24tbWFnaWNtYXRhdGphaHUiIHRpdGxlPSJBbnN3ZXJpbmcgUXVlc3Rpb25zIj7wn5KsPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFnaWNtYXRhdGphaHUiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBbWFnaWNtYXRhdGphaHUiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2N6bG93aWVrNDg4Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM0NjIwMTA5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJjemxvd2llazQ4OCIvPjxiciAvPjxzdWI+PGI+Y3psb3dpZWs0ODg8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0Fjemxvd2llazQ4OCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBY3psb3dpZWs0ODgiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSIjaWRlYXMtY3psb3dpZWs0ODgiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc21veWEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA4MzI5Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2VyZ2lvIE1veWEiLz48YnIgLz48c3ViPjxiPlNlcmdpbyBNb3lhPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBc21veWEiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNtb3lhIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNtb3lhIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNtb3lhIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQXNtb3lhIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qb25hc2xhZ29uaSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzM5NjE4OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSm9uYXMgTGFnb25pIi8+PGJyIC8+PHN1Yj48Yj5Kb25hcyBMYWdvbmk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0Fqb25hc2xhZ29uaSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9am9uYXNsYWdvbmkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9am9uYXNsYWdvbmkiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjaWRlYXMtam9uYXNsYWdvbmkiIHRpdGxlPSJJZGVhcywgUGxhbm5pbmcsICYgRmVlZGJhY2siPvCfpJQ8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1qb25hc2xhZ29uaSIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSIjcXVlc3Rpb24tam9uYXNsYWdvbmkiIHRpdGxlPSJBbnN3ZXJpbmcgUXVlc3Rpb25zIj7wn5KsPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9am9uYXNsYWdvbmkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBam9uYXNsYWdvbmkiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXYudG8vZGVyYmVyZyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82OTk1OTI3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMdWthc3ogR29ybmlja2kiLz48YnIgLz48c3ViPjxiPkx1a2FzeiBHb3JuaWNraTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQWRlcmJlcmciIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBZGVyYmVyZyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGVyYmVyZyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJqdW5nYXJnMDciPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTMwMDk3MjI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFyanVuIEdhcmciLz48YnIgLz48c3ViPjxiPkFyanVuIEdhcmc8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcmp1bmdhcmcwNyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vd3d3LmZtdmlsYXMuY29tIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzI0MjExOT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iRnJhbiBNw6luZGV6Ii8+PGJyIC8+PHN1Yj48Yj5GcmFuIE3DqW5kZXo8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9wdWxscz9xPWlzJTNBcHIrcmV2aWV3ZWQtYnklM0FmbXZpbGFzIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vQmxha2VsaXN0NyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NDUyNTk2MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iS2Fud2FsIFNpbmdoIi8+PGJyIC8+PHN1Yj48Yj5LYW53YWwgU2luZ2g8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1CbGFrZWxpc3Q3IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly93d3cuYWxlamFuZHJhcXVldHphbGxpLmNvbSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xOTk2NDQwMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQWxlamFuZHJhIFF1ZXR6YWxsaSAiLz48YnIgLz48c3ViPjxiPkFsZWphbmRyYSBRdWV0emFsbGkgPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBYWxlcXVldHphbGxpIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFsZXF1ZXR6YWxsaSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWQtc2FpZi1odXNhaW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzA2ODI5Njg/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1EIFNBSUYgIEhVU0FJTiIvPjxiciAvPjxzdWI+PGI+TUQgU0FJRiAgSFVTQUlOPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZXhhbXBsZS1tZC1zYWlmLWh1c2FpbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWQtc2FpZi1odXNhaW4iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWQtc2FpZi1odXNhaW4iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWQtc2FpZi1odXNhaW4iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9zdWRpcHRvLmdob3NoLnBybyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTIzMjk0MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU3VkaXB0byBHaG9zaCIvPjxiciAvPjxzdWI+PGI+U3VkaXB0byBHaG9zaDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2V4YW1wbGUtc3VkaXB0b2c4MSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9c3VkaXB0b2c4MSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1zdWRpcHRvZzgxIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wYW53YXV1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzYyNTk3MjIzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJwYW53YXV1Ii8+PGJyIC8+PHN1Yj48Yj5wYW53YXV1PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cGFud2F1dSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1wYW53YXV1IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtcGFud2F1dSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cGFud2F1dSIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FwYW53YXV1IiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vc3RlZmFuZW1heWVyLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTAzMTk1MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU3RlZmFuIEUuIE1heWVyIi8+PGJyIC8+PHN1Yj48Yj5TdGVmYW4gRS4gTWF5ZXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FzdGVmYW5lcndpbm1heWVyIiB0aXRsZT0iQnVnIHJlcG9ydHMiPvCfkJs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSGFzaFRhbG1peiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NTAxODI4MD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iVGFsbWl6IEFobWVkIi8+PGJyIC8+PHN1Yj48Yj5UYWxtaXogQWhtZWQ8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1IYXNoVGFsbWl6IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUhhc2hUYWxtaXoiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1IYXNoVGFsbWl6IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgIDwvdHI+CiAgICA8dHI+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1RoYW5rc0ZvckFsbFRoZUZpc2giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjE2OTY1NT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTWFyY28iLz48YnIgLz48c3ViPjxiPk1hcmNvPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBVGhhbmtzRm9yQWxsVGhlRmlzaCIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3F1YWRycmVtIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzg0NTA4NzM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InF1YWRycmVtIi8+PGJyIC8+PHN1Yj48Yj5xdWFkcnJlbTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXF1YWRycmVtIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXF1YWRycmVtIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8va2Fta28uZGV2Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3MDc0Mzc1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLYW1pbCBKYW5lxI1layIvPjxiciAvPjxzdWI+PGI+S2FtaWwgSmFuZcSNZWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rYW1rbyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FrYW1rbyIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2Fta28iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21haGFrcG9yd2FsMDIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTY0ODY2ODI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Im1haGFrcG9yd2FsMDIiLz48YnIgLz48c3ViPjxiPm1haGFrcG9yd2FsMDI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLW1haGFrcG9yd2FsMDIiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1haGFrcG9yd2FsMDIiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFoYWtwb3J3YWwwMiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1tYWhha3BvcndhbDAyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9yb24tZGViYWp5b3RpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIyNTcxNjY0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEZWJhanlvdGkgSGFsZGVyIi8+PGJyIC8+PHN1Yj48Yj5EZWJhanlvdGkgSGFsZGVyPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm9uLWRlYmFqeW90aSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yb24tZGViYWp5b3RpIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJvbi1kZWJhanlvdGkiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1yb24tZGViYWp5b3RpIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1yb24tZGViYWp5b3RpIiB0aXRsZT0iTWFpbnRlbmFuY2UiPvCfmqc8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3JpdGlrMzA3LmdpdGh1Yi5pby9wb3J0Zm9saW8vIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIyMzc0ODI5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSaXRpayBSYXdhbCIvPjxiciAvPjxzdWI+PGI+Uml0aWsgUmF3YWw8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yaXRpazMwNyIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yaXRpazMwNyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1yaXRpazMwNyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLXJpdGlrMzA3IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSXNoYW4tU2FpbmkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ1MjU2MDI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IklzaGFuIi8+PGJyIC8+PHN1Yj48Yj5Jc2hhbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUlzaGFuLVNhaW5pIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUlzaGFuLVNhaW5pIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL3NhbXJpZGhpLTk4LmdpdGh1Yi5pby9Qb3J0Zm9saW8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTQ0NjYwNDE/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlNhbXJpZGRoaSIvPjxiciAvPjxzdWI+PGI+U2FtcmlkZGhpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2FtcmlkaGktOTgiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2FtcmlkaGktOTgiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U2FtcmlkaGktOTgiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1TYW1yaWRoaS05OCIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSIjbWFpbnRlbmFuY2UtU2FtcmlkaGktOTgiIHRpdGxlPSJNYWludGVuYW5jZSI+8J+apzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9nYWJvcm1hZ3lhciI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MzM5NzMwMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iR8OhYm9yIE1hZ3lhciIvPjxiciAvPjxzdWI+PGI+R8OhYm9yIE1hZ3lhcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWdhYm9ybWFneWFyIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWdhYm9ybWFneWFyIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWdhYm9ybWFneWFyIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtZ2Fib3JtYWd5YXIiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9pYmVybmFiZXVkZXYiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzQyMTUwNzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImliZXJuYWJldWRldiIvPjxiciAvPjxzdWI+PGI+aWJlcm5hYmV1ZGV2PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aWJlcm5hYmV1ZGV2IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWliZXJuYWJldWRldiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLWliZXJuYWJldWRldiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aWJlcm5hYmV1ZGV2IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zbG93aWtvd3NraWFya2FkaXVzeiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85NzUwODkzMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXJrYWRpdXN6IFPFgm93aWtvd3NraSIvPjxiciAvPjxzdWI+PGI+QXJrYWRpdXN6IFPFgm93aWtvd3NraTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNsb3dpa293c2tpYXJrYWRpdXN6IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNsb3dpa293c2tpYXJrYWRpdXN6IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtc2xvd2lrb3dza2lhcmthZGl1c3oiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNsb3dpa293c2tpYXJrYWRpdXN6IiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9Qb2x5Z2VucyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNTgyMzE4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJXaWxsZW0gR2lsbGlzIi8+PGJyIC8+PHN1Yj48Yj5XaWxsZW0gR2lsbGlzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UG9seWdlbnMiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9UG9seWdlbnMiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBUG9seWdlbnMiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ybWFzYXJvdmljIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1MjI4MzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9InJtYXNhcm92aWMiLz48YnIgLz48c3ViPjxiPnJtYXNhcm92aWM8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1ybWFzYXJvdmljIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXJtYXNhcm92aWMiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cm1hc2Fyb3ZpYyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLXJtYXNhcm92aWMiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9vd2FpczM0Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzM3MjM4NzU5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJPd2FpcyBIYXNuYXRoIEFobWVkIi8+PGJyIC8+PHN1Yj48Yj5Pd2FpcyBIYXNuYXRoIEFobWVkPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9b3dhaXMzNCIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1vd2FpczM0IiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW93YWlzMzQiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICA8L3RyPgogICAgPHRyPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9QYW5NYW4iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTc4NTAxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJQYW5NYW4iLz48YnIgLz48c3ViPjxiPlBhbk1hbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVBhbk1hbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJ0dXItY2lvY2FudSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83NDMxOTI/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9ImFydHVyLWNpb2NhbnUiLz48YnIgLz48c3ViPjxiPmFydHVyLWNpb2NhbnU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcnR1ci1jaW9jYW51IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2lzc3Vlcz9xPWF1dGhvciUzQWFydHVyLWNpb2NhbnUiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbWljcm8tanVtYm8uZXUvIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNTExNjk3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJDeXByaWFuIEdyYWN6Ii8+PGJyIC8+PHN1Yj48Yj5DeXByaWFuIEdyYWN6PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWljcm8tanVtYm8iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWljcm8tanVtYm8iIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBbWljcm8tanVtYm8iIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnByaW50bmFubnkuYWkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjYwMTgxOT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iTGVpZ2ggSm9obnNvbiIvPjxiciAvPjxzdWI+PGI+TGVpZ2ggSm9obnNvbjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWxlaWdoLWpvaG5zb24iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bGVpZ2gtam9obnNvbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLWxlaWdoLWpvaG5zb24iIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWxlaWdoLWpvaG5zb24iIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSIjbWFpbnRlbmFuY2UtbGVpZ2gtam9obnNvbiIgdGl0bGU9Ik1haW50ZW5hbmNlIj7wn5qnPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBbGVpZ2gtam9obnNvbiIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbml0aW50ZWp1amEiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTUzNDc5MjQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik5pdGluIFRlanVqYSIvPjxiciAvPjxzdWI+PGI+Tml0aW4gVGVqdWphPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bml0aW50ZWp1amEiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjZXhhbXBsZS1uaXRpbnRlanVqYSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2tlbm5ldGhhYXNhbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDM3Mzk0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJLZW5uZXRoIEFhc2FuIi8+PGJyIC8+PHN1Yj48Yj5LZW5uZXRoIEFhc2FuPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9a2VubmV0aGFhc2FuIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWtlbm5ldGhhYXNhbiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNtYWludGVuYW5jZS1rZW5uZXRoYWFzYW4iIHRpdGxlPSJNYWludGVuYW5jZSI+8J+apzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWtlbm5ldGhhYXNhbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYW1pdC1rc2giPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTE5NDcwMzc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IkFtaXQgS3VtYXIgU2hhcm1hIi8+PGJyIC8+PHN1Yj48Yj5BbWl0IEt1bWFyIFNoYXJtYTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFtaXQta3NoIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWFtaXQta3NoIiB0aXRsZT0iRG9jdW1lbnRhdGlvbiI+8J+TljwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtYW1pdC1rc2giIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vemF5dHNldmFuZCI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MjA3NzQ4P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbmRyZXkgWmF5dHNldiIvPjxiciAvPjxzdWI+PGI+QW5kcmV5IFpheXRzZXY8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj16YXl0c2V2YW5kIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtemF5dHNldmFuZCIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9emF5dHNldmFuZCIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj16YXl0c2V2YW5kIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jb2Rpbmd0ZW5zaGkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE2Mzc3NjMwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJUZW5zaGkgQ29kZXMiLz48YnIgLz48c3ViPjxiPlRlbnNoaSBDb2RlczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iI2luZnJhLWNvZGluZ3RlbnNoaSIgdGl0bGU9IkluZnJhc3RydWN0dXJlIChIb3N0aW5nLCBCdWlsZC1Ub29scywgZXRjKSI+8J+ahzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly95dXNoaW9tb3RlLm9yZy8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzczMzkxNT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iWXVzaGkgT01PVEUiLz48YnIgLz48c3ViPjxiPll1c2hpIE9NT1RFPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBWXVzaGlPTU9URSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9WXVzaGlPTU9URSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL21hbGNoZXJjenlrLnBsIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3NTM0NTA0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJaYmlnbmlldyBNYWxjaGVyY3p5ayIvPjxiciAvPjxzdWI+PGI+WmJpZ25pZXcgTWFsY2hlcmN6eWs8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0FGZXJyb3IiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT4gPGEgaHJlZj0iI2luZnJhLUZlcnJvciIgdGl0bGU9IkluZnJhc3RydWN0dXJlIChIb3N0aW5nLCBCdWlsZC1Ub29scywgZXRjKSI+8J+ahzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPUZlcnJvciIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9IiNleGFtcGxlLUZlcnJvciIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9RmVycm9yIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQUZlcnJvciIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vMjAwUHVscyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82OTE4MzYwP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSIyMDBQdWxzIi8+PGJyIC8+PHN1Yj48Yj4yMDBQdWxzPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9MjAwUHVscyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj0yMDBQdWxzIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vbGlua3RyLmVlL2FuYXlzYXJrYXI3Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUzMzQxMTgxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBbmF5IFNhcmthciIvPjxiciAvPjxzdWI+PGI+QW5heSBTYXJrYXI8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9IiNleGFtcGxlLWFuYXlzYXJrYXI3IiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hbmF5c2Fya2FyNyIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hbmF5c2Fya2FyNyIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTG91aXNYaGFmZXJpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyMzk3Njc3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJMb3VpcyBYaGFmZXJpIi8+PGJyIC8+PHN1Yj48Yj5Mb3VpcyBYaGFmZXJpPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9TG91aXNYaGFmZXJpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2FtYmhhdmd1cHRhMDcwNSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84MTg3MDg2Nj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2FtYmhhdiBHdXB0YSIvPjxiciAvPjxzdWI+PGI+U2FtYmhhdiBHdXB0YTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNhbWJoYXZndXB0YTA3MDUiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBc2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IlJldmlld2VkIFB1bGwgUmVxdWVzdHMiPvCfkYA8L2E+IDxhIGhyZWY9IiNkZXNpZ24tc2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkRlc2lnbiI+8J+OqDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPXNhbWJoYXZndXB0YTA3MDUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBc2FtYmhhdmd1cHRhMDcwNSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3ByYXl1dHN1Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NjM2NTI1P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBYmhheSBHYXJnIi8+PGJyIC8+PHN1Yj48Yj5BYmhheSBHYXJnPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cHJheXV0c3UiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZXhhbXBsZS1wcmF5dXRzdSIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cHJheXV0c3UiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9cHJheXV0c3UiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hlbnJpa2pvbiI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yNzIxMjIzMj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iaGVucmlram9uIi8+PGJyIC8+PHN1Yj48Yj5oZW5yaWtqb248L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1oZW5yaWtqb24iIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9aGVucmlram9uIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWhlbnJpa2pvbiIgdGl0bGU9IkRvY3VtZW50YXRpb24iPvCfk5Y8L2E+IDxhIGhyZWY9IiNleGFtcGxlLWhlbnJpa2pvbiIgdGl0bGU9IkV4YW1wbGVzIj7wn5KhPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly95YXNpcmRldmVsb3Blci5uZXRsaWZ5LmFwcC8iPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzQ2MDA3NDU/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9Ik1vaGFtbWFkIFlhc2lyIi8+PGJyIC8+PHN1Yj48Yj5Nb2hhbW1hZCBZYXNpcjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVlhc2lyNzYxIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TYXZpbzYyOSI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTM2MjU4OT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iU2F2aW8gRGlhcyIvPjxiciAvPjxzdWI+PGI+U2F2aW8gRGlhczwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNhdmlvNjI5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2luZnJhLVNhdmlvNjI5IiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBU2F2aW82MjkiIHRpdGxlPSJCdWcgcmVwb3J0cyI+8J+QmzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9pc2hhYW44MTIiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzAxOTA1MzM/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IklzaGFhbiBTaGFoIi8+PGJyIC8+PHN1Yj48Yj5Jc2hhYW4gU2hhaDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWlzaGFhbjgxMiIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU2hyZXlhczA0MTAiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzA3OTU4Njc/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlNocmV5YXMwNDEwIi8+PGJyIC8+PHN1Yj48Yj5TaHJleWFzMDQxMDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNocmV5YXMwNDEwIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYmVrdS1lcGl0b21lIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzExNTE1MTUxMz92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iYmVrdS1lcGl0b21lIi8+PGJyIC8+PHN1Yj48Yj5iZWt1LWVwaXRvbWU8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1iZWt1LWVwaXRvbWUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvcHVsbHM/cT1pcyUzQXByK3Jldmlld2VkLWJ5JTNBYmVrdS1lcGl0b21lIiB0aXRsZT0iUmV2aWV3ZWQgUHVsbCBSZXF1ZXN0cyI+8J+RgDwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWJla3UtZXBpdG9tZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc3dvcmRtYXN0ZXIyayI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMzU0MDE2P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJKb3NodWEgTWljaGFlbCBEYWx5Ii8+PGJyIC8+PHN1Yj48Yj5Kb3NodWEgTWljaGFlbCBEYWx5PC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvaXNzdWVzP3E9YXV0aG9yJTNBc3dvcmRtYXN0ZXIyayIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2Rsa2oiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjQzMDU5P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJEYW5pZWwgS0oiLz48YnIgLz48c3ViPjxiPkRhbmllbCBLSjwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWRsa2oiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9ZGxraiIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+IDxhIGhyZWY9IiNleGFtcGxlLWRsa2oiIHRpdGxlPSJFeGFtcGxlcyI+8J+SoTwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL3B1bGxzP3E9aXMlM0FwcityZXZpZXdlZC1ieSUzQWRsa2oiIHRpdGxlPSJSZXZpZXdlZCBQdWxsIFJlcXVlc3RzIj7wn5GAPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9jb2RleXQuY29tLyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83MzAzMzUxMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQmhhdmlrIEFnYXJ3YWwiLz48YnIgLz48c3ViPjxiPkJoYXZpayBBZ2Fyd2FsPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSIjZGVzaWduLUJoYXZpay1hZyIgdGl0bGU9IkRlc2lnbiI+8J+OqDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rYXVzaGlrLXJpc2hpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzUyNDk4NjE3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJSaXNoaSIvPjxiciAvPjxzdWI+PGI+UmlzaGk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1rYXVzaGlrLXJpc2hpIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iI2Rlc2lnbi1rYXVzaGlrLXJpc2hpIiB0aXRsZT0iRGVzaWduIj7wn46oPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9yb2hpdGhib3BwZXkubmV0bGlmeS5hcHAiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzM1Mzg5NzQ/dj00P3M9MTAwIiB3aWR0aD0iMTAwcHg7IiBhbHQ9IlJvaGl0aCBCb3BwZXkiLz48YnIgLz48c3ViPjxiPlJvaGl0aCBCb3BwZXk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1Sb2hpdGhCb3BwZXkiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSIjZGVzaWduLVJvaGl0aEJvcHBleSIgdGl0bGU9IkRlc2lnbiI+8J+OqDwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9hc2hpc2hwYWRoeS5saXZlIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwMDQ4NDQwMT92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iQXNoaXNoIFBhZGh5Ii8+PGJyIC8+PHN1Yj48Yj5Bc2hpc2ggUGFkaHk8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1TaHVydHUtZ2FsIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVNodXJ0dS1nYWwiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPiA8YSBocmVmPSIjaW5mcmEtU2h1cnR1LWdhbCIgdGl0bGU9IkluZnJhc3RydWN0dXJlIChIb3N0aW5nLCBCdWlsZC1Ub29scywgZXRjKSI+8J+ahzwvYT48L3RkPgogICAgPC90cj4KICAgIDx0cj4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwOi8vamZjb3RlLmdpdGh1Yi5pbyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDMzNjkwMD92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSmVhbi1GcmFuw6dvaXMgQ8O0dMOpIi8+PGJyIC8+PHN1Yj48Yj5KZWFuLUZyYW7Dp29pcyBDw7R0w6k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1KRkNvdGUiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9SkZDb3RlIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2V4YW1wbGUtSkZDb3RlIiB0aXRsZT0iRXhhbXBsZXMiPvCfkqE8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1KRkNvdGUiIHRpdGxlPSJEb2N1bWVudGF0aW9uIj7wn5OWPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1N1bWFudHhEIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY1ODEwNDI0P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJTdW1hbnQueEQiLz48YnIgLz48c3ViPjxiPlN1bWFudC54RDwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPVN1bWFudHhEIiB0aXRsZT0iVGVzdHMiPuKaoO+4jzwvYT4gPGEgaHJlZj0iI2luZnJhLVN1bWFudHhEIiB0aXRsZT0iSW5mcmFzdHJ1Y3R1cmUgKEhvc3RpbmcsIEJ1aWxkLVRvb2xzLCBldGMpIj7wn5qHPC9hPiA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9U3VtYW50eEQiIHRpdGxlPSJDb2RlIj7wn5K7PC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FyeWFuYXMxNTkiPjxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE0MzMwOTMxP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJBcnlhbiBTaW5naCIvPjxiciAvPjxzdWI+PGI+QXJ5YW4gU2luZ2g8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1hcnlhbmFzMTU5IiB0aXRsZT0iQ29kZSI+8J+SuzwvYT48L3RkPgogICAgICA8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHdpZHRoPSIxNC4yOCUiPjxhIGhyZWY9Imh0dHA6Ly9tYXJrdXMucG9lcnNjaGtlLm5ydyI+PGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjIyMzc3P3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJNYXJrdXMgUG9lcnNjaGtlIi8+PGJyIC8+PHN1Yj48Yj5NYXJrdXMgUG9lcnNjaGtlPC9iPjwvc3ViPjwvYT48YnIgLz48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXN5bmNhcGkvbW9kZWxpbmEvY29tbWl0cz9hdXRob3I9bWFya3VzcG9lcnNjaGtlIiB0aXRsZT0iQ29kZSI+8J+SuzwvYT4gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPW1hcmt1c3BvZXJzY2hrZSIgdGl0bGU9IlRlc3RzIj7imqDvuI88L2E+PC90ZD4KICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMTQuMjglIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vamFtZXNtb2V5Ij48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ1NzQ3Mj92PTQ/cz0xMDAiIHdpZHRoPSIxMDBweDsiIGFsdD0iSmFtZXMgTW9leSIvPjxiciAvPjxzdWI+PGI+SmFtZXMgTW9leTwvYj48L3N1Yj48L2E+PGJyIC8+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FzeW5jYXBpL21vZGVsaW5hL2NvbW1pdHM/YXV0aG9yPWphbWVzbW9leSIgdGl0bGU9IkNvZGUiPvCfkrs8L2E+IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9jb21taXRzP2F1dGhvcj1qYW1lc21vZXkiIHRpdGxlPSJUZXN0cyI+4pqg77iPPC9hPjwvdGQ+CiAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjE0LjI4JSI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RvbXdvbGFuc2tpIj48aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzY4MDg1NjUzP3Y9ND9zPTEwMCIgd2lkdGg9IjEwMHB4OyIgYWx0PSJ0b213b2xhbnNraSIvPjxiciAvPjxzdWI+PGI+dG9td29sYW5za2k8L2I+PC9zdWI+PC9hPjxiciAvPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hc3luY2FwaS9tb2RlbGluYS9pc3N1ZXM/cT1hdXRob3IlM0F0b213b2xhbnNraSIgdGl0bGU9IkJ1ZyByZXBvcnRzIj7wn5CbPC9hPjwvdGQ+CiAgICA8L3RyPgogIDwvdGJvZHk+CjwvdGFibGU+Cgo8IS0tIG1hcmtkb3dubGludC1yZXN0b3JlIC0tPgo8IS0tIHByZXR0aWVyLWlnbm9yZS1lbmQgLS0+Cgo8IS0tIEFMTC1DT05UUklCVVRPUlMtTElTVDpFTkQgLS0+CgpUaGlzIHByb2plY3QgZm9sbG93cyB0aGUgW2FsbC1jb250cmlidXRvcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGwtY29udHJpYnV0b3JzL2FsbC1jb250cmlidXRvcnMpIHNwZWNpZmljYXRpb24uIENvbnRyaWJ1dGlvbnMgb2YgYW55IGtpbmQgYXJlIHdlbGNvbWUhCg== + readmeEtag: '"cfb19fa9e472b7dbd8ab90cc67622719fd5dfcc5e90619b52c934b55d9916482"' + readmeLastModified: Tue, 08 Aug 2023 09:50:01 GMT repositoryId: 331620831 description: >- A library for generating data models based on inputs such as AsyncAPI, OpenAPI, or JSON Schema documents. created: '2021-01-21T12:27:51Z' - updated: '2023-08-04T15:29:42Z' + updated: '2023-08-08T11:42:44Z' language: TypeScript archived: false - stars: 183 + stars: 185 watchers: 6 forks: 109 owner: asyncapi logo: https://avatars.githubusercontent.com/u/16401334?v=4 license: Apache-2.0 - repoEtag: '"4ad749b5e016eee5f19c9934afa6790cba70019c170484315c9f17f3146e7f1f"' - repoLastModified: Fri, 04 Aug 2023 15:29:42 GMT + repoEtag: '"354e315ffc20658d409598191d7e6b12564cabd31369349cac060d3ec58d5638"' + repoLastModified: Tue, 08 Aug 2023 11:42:44 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/cornutum/tcases @@ -8645,17 +8645,17 @@ repositoryId: 479982630 description: Clean Architecture Example using FastAPI framework created: '2022-04-10T10:23:51Z' - updated: '2023-07-31T02:26:01Z' + updated: '2023-08-08T04:55:02Z' language: Python archived: false - stars: 157 + stars: 158 watchers: 2 forks: 36 owner: 0xTheProDev logo: https://avatars.githubusercontent.com/u/14367736?v=4 license: MIT - repoEtag: '"51a2020396747a0285c21b636f4a458a6a25e7c23a537e3bb6d188577e988af9"' - repoLastModified: Mon, 31 Jul 2023 02:26:01 GMT + repoEtag: '"8d19eeb5575f2513b7329e4e2afd039c3964efd8cfbd0953117f571094c55d42"' + repoLastModified: Tue, 08 Aug 2023 04:55:02 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -8896,23 +8896,23 @@ v3: true repositoryMetadata: base64Readme: >- - IyBPcGVuQVBJIHN0cnVjdHVyZXMgZm9yIEdvCgo8aW1nIGFsaWduPSJyaWdodCIgd2lkdGg9IjI1MHB4IiBzcmM9Ii9yZXNvdXJjZXMvbG9nby5wbmciPgoKVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIEdvIHN0cnVjdHVyZXMgdG8gbWFyc2hhbC91bm1hcnNoYWwgYW5kIHJlZmxlY3QgW09wZW5BUEkgU2NoZW1hXShodHRwczovL3N3YWdnZXIuaW8vcmVzb3VyY2VzL29wZW4tYXBpLykgZG9jdW1lbnRzLgoKRm9yIGF1dG9tYXRlZCBIVFRQIFJFU1Qgc2VydmljZSBmcmFtZXdvcmsgYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnkgcGxlYXNlIGNoZWNrIFtgZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0YF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QpLgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby93b3JrZmxvd3MvdGVzdC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby9hY3Rpb25zP3F1ZXJ5PWJyYW5jaCUzQW1hc3Rlcit3b3JrZmxvdyUzQXRlc3QpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L29wZW5hcGktZ28vYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3dhZ2dlc3Qvb3BlbmFwaS1nbykKWyFbR29EZXZEb2NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGV2LWRvYy0wMEFERDg/bG9nbz1nbyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ28pClshW3RpbWUgdHJhY2tlcl0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L29wZW5hcGktZ28uc3ZnKV0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L29wZW5hcGktZ28pCiFbQ29kZSBsaW5lc10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3Qvb3BlbmFwaS1nby8/Y2F0ZWdvcnk9Y29kZSkKIVtDb21tZW50c10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3Qvb3BlbmFwaS1nby8/Y2F0ZWdvcnk9Y29tbWVudHMpCgojIyBGZWF0dXJlcwoKKiBUeXBlIHNhZmUgbWFwcGluZyBvZiBPcGVuQVBJIDMgZG9jdW1lbnRzIHdpdGggR28gc3RydWN0dXJlcyBnZW5lcmF0ZWQgZnJvbSBzY2hlbWEuCiogVHlwZS1iYXNlZCByZWZsZWN0aW9uIG9mIEdvIHN0cnVjdHVyZXMgdG8gT3BlbkFQSSAzIHNjaGVtYS4KKiBTY2hlbWEgY29udHJvbCB3aXRoIGZpZWxkIHRhZ3MKICAgICogYGpzb25gIGZvciByZXF1ZXN0IGJvZGllcyBhbmQgcmVzcG9uc2VzIGluIEpTT04KICAgICogYHF1ZXJ5YCwgYHBhdGhgIGZvciBwYXJhbWV0ZXJzIGluIFVSTAogICAgKiBgaGVhZGVyYCwgYGNvb2tpZWAsIGBmb3JtRGF0YWAsIGBmaWxlYCBmb3Igb3RoZXIgcGFyYW1ldGVycwogICAgKiBgZm9ybWAgYWN0cyBhcyBgcXVlcnlgIGFuZCBgZm9ybURhdGFgCiAgICAqIFtmaWVsZCB0YWdzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNmaWVsZC10YWdzKSBuYW1lZCBhZnRlciBKU09OIFNjaGVtYS9PcGVuQVBJIDMgU2NoZW1hIGNvbnN0cmFpbnRzCiAgICAqIGBjb2xsZWN0aW9uRm9ybWF0YCB0byB1bnBhY2sgc2xpY2VzIGZyb20gc3RyaW5nCiAgICAgICAgKiBgY3N2YCBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLAogICAgICAgICogYHNzdmAgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcywKICAgICAgICAqIGBwaXBlc2AgcGlwZS1zZXBhcmF0ZWQgdmFsdWVzIChgfGApLAogICAgICAgICogYG11bHRpYCBhbXBlcnNhbmQtc2VwYXJhdGVkIHZhbHVlcyAoYCZgKSwgCiogRmxleGlibGUgc2NoZW1hIGNvbnRyb2wgd2l0aCBbYGpzb25zY2hlbWEtZ29gXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNpbXBsZW1lbnRpbmctaW50ZXJmYWNlcy1vbi1hLXR5cGUpCgojIyBFeGFtcGxlCgpbT3RoZXIgZXhhbXBsZXNdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ28vb3BlbmFwaTMjcGtnLWV4YW1wbGVzKS4KCmBgYGdvCnJlZmxlY3RvciA6PSBvcGVuYXBpMy5SZWZsZWN0b3J7fQpyZWZsZWN0b3IuU3BlYyA9ICZvcGVuYXBpMy5TcGVje09wZW5hcGk6ICIzLjAuMyJ9CnJlZmxlY3Rvci5TcGVjLkluZm8uCiAgICBXaXRoVGl0bGUoIlRoaW5ncyBBUEkiKS4KICAgIFdpdGhWZXJzaW9uKCIxLjIuMyIpLgogICAgV2l0aERlc2NyaXB0aW9uKCJQdXQgc29tZXRoaW5nIGhlcmUiKQoKdHlwZSByZXEgc3RydWN0IHsKICAgIElEICAgICBzdHJpbmcgYHBhdGg6ImlkIiBleGFtcGxlOiJYWFgtWFhYWFgiYAogICAgTG9jYWxlIHN0cmluZyBgcXVlcnk6ImxvY2FsZSIgcGF0dGVybjoiXlthLXpdezJ9LVtBLVpdezJ9JCJgCiAgICBUaXRsZSAgc3RyaW5nIGBqc29uOiJzdHJpbmciYAogICAgQW1vdW50IHVpbnQgICBganNvbjoiYW1vdW50ImAKICAgIEl0ZW1zICBbXXN0cnVjdCB7CiAgICAgICAgQ291bnQgdWludCAgIGBqc29uOiJjb3VudCJgCiAgICAgICAgTmFtZSAgc3RyaW5nIGBqc29uOiJuYW1lImAKICAgIH0gYGpzb246Iml0ZW1zImAKfQoKdHlwZSByZXNwIHN0cnVjdCB7CiAgICBJRCAgICAgc3RyaW5nIGBqc29uOiJpZCIgZXhhbXBsZToiWFhYLVhYWFhYImAKICAgIEFtb3VudCB1aW50ICAgYGpzb246ImFtb3VudCJgCiAgICBJdGVtcyAgW11zdHJ1Y3QgewogICAgICAgIENvdW50IHVpbnQgICBganNvbjoiY291bnQiYAogICAgICAgIE5hbWUgIHN0cmluZyBganNvbjoibmFtZSJgCiAgICB9IGBqc29uOiJpdGVtcyJgCiAgICBVcGRhdGVkQXQgdGltZS5UaW1lIGBqc29uOiJ1cGRhdGVkX2F0ImAKfQoKcHV0T3AgOj0gb3BlbmFwaTMuT3BlcmF0aW9ue30KCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TZXRSZXF1ZXN0KCZwdXRPcCwgbmV3KHJlcSksIGh0dHAuTWV0aG9kUHV0KSkKaGFuZGxlRXJyb3IocmVmbGVjdG9yLlNldEpTT05SZXNwb25zZSgmcHV0T3AsIG5ldyhyZXNwKSwgaHR0cC5TdGF0dXNPSykpCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TZXRKU09OUmVzcG9uc2UoJnB1dE9wLCBuZXcoW11yZXNwKSwgaHR0cC5TdGF0dXNDb25mbGljdCkpCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TcGVjLkFkZE9wZXJhdGlvbihodHRwLk1ldGhvZFB1dCwgIi90aGluZ3Mve2lkfSIsIHB1dE9wKSkKCmdldE9wIDo9IG9wZW5hcGkzLk9wZXJhdGlvbnt9CgpoYW5kbGVFcnJvcihyZWZsZWN0b3IuU2V0UmVxdWVzdCgmZ2V0T3AsIG5ldyhyZXEpLCBodHRwLk1ldGhvZEdldCkpCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TZXRKU09OUmVzcG9uc2UoJmdldE9wLCBuZXcocmVzcCksIGh0dHAuU3RhdHVzT0spKQpoYW5kbGVFcnJvcihyZWZsZWN0b3IuU3BlYy5BZGRPcGVyYXRpb24oaHR0cC5NZXRob2RHZXQsICIvdGhpbmdzL3tpZH0iLCBnZXRPcCkpCgpzY2hlbWEsIGVyciA6PSByZWZsZWN0b3IuU3BlYy5NYXJzaGFsWUFNTCgpCmlmIGVyciAhPSBuaWwgewogICAgbG9nLkZhdGFsKGVycikKfQoKZm10LlByaW50bG4oc3RyaW5nKHNjaGVtYSkpCmBgYAoKT3V0cHV0OgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwppbmZvOgogIGRlc2NyaXB0aW9uOiBQdXQgc29tZXRoaW5nIGhlcmUKICB0aXRsZTogVGhpbmdzIEFQSQogIHZlcnNpb246IDEuMi4zCnBhdGhzOgogIC90aGluZ3Mve2lkfToKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBpbjogcXVlcnkKICAgICAgICBuYW1lOiBsb2NhbGUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICBwYXR0ZXJuOiBeW2Etel17Mn0tW0EtWl17Mn0kCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBpbjogcGF0aAogICAgICAgIG5hbWU6IGlkCiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICBleGFtcGxlOiBYWFgtWFhYWFgKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9PcGVuYXBpM1Rlc3RSZXNwJwogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICBwdXQ6CiAgICAgIHBhcmFtZXRlcnM6CiAgICAgIC0gaW46IHF1ZXJ5CiAgICAgICAgbmFtZTogbG9jYWxlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgcGF0dGVybjogXlthLXpdezJ9LVtBLVpdezJ9JAogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIC0gaW46IHBhdGgKICAgICAgICBuYW1lOiBpZAogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgZXhhbXBsZTogWFhYLVhYWFhYCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgY29udGVudDoKICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvT3BlbmFwaTNUZXN0UmVxJwogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9PcGVuYXBpM1Rlc3RSZXNwJwogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgIjQwOSI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvT3BlbmFwaTNUZXN0UmVzcCcKICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICBkZXNjcmlwdGlvbjogQ29uZmxpY3QKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgT3BlbmFwaTNUZXN0UmVxOgogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGFtb3VudDoKICAgICAgICAgIG1pbmltdW06IDAKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBpdGVtczoKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgIGNvdW50OgogICAgICAgICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgIHN0cmluZzoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICB0eXBlOiBvYmplY3QKICAgIE9wZW5hcGkzVGVzdFJlc3A6CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgYW1vdW50OgogICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgIGlkOgogICAgICAgICAgZXhhbXBsZTogWFhYLVhYWFhYCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBpdGVtczoKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgIGNvdW50OgogICAgICAgICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgIHVwZGF0ZWRfYXQ6CiAgICAgICAgICBmb3JtYXQ6IGRhdGUtdGltZQogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIHR5cGU6IG9iamVjdApgYGAK - readmeEtag: '"39e65f12ce27b7843aa3ffc7c82d25a7c99a0d0809e856595488230b1993c6cc"' - readmeLastModified: Tue, 01 Aug 2023 11:06:08 GMT + IyBPcGVuQVBJIHN0cnVjdHVyZXMgZm9yIEdvCgo8aW1nIGFsaWduPSJyaWdodCIgd2lkdGg9IjI1MHB4IiBzcmM9Ii9yZXNvdXJjZXMvbG9nby5wbmciPgoKVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIEdvIHN0cnVjdHVyZXMgdG8gbWFyc2hhbC91bm1hcnNoYWwgYW5kIHJlZmxlY3QgW09wZW5BUEkgU2NoZW1hXShodHRwczovL3N3YWdnZXIuaW8vcmVzb3VyY2VzL29wZW4tYXBpLykgZG9jdW1lbnRzLgoKRm9yIGF1dG9tYXRlZCBIVFRQIFJFU1Qgc2VydmljZSBmcmFtZXdvcmsgYnVpbHQgd2l0aCB0aGlzIGxpYnJhcnkgcGxlYXNlIGNoZWNrIFtgZ2l0aHViLmNvbS9zd2FnZ2VzdC9yZXN0YF0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXN0L3Jlc3QpLgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby93b3JrZmxvd3MvdGVzdC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3Qvb3BlbmFwaS1nby9hY3Rpb25zP3F1ZXJ5PWJyYW5jaCUzQW1hc3Rlcit3b3JrZmxvdyUzQXRlc3QpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb2RlY292LmlvL2doL3N3YWdnZXN0L29wZW5hcGktZ28vYnJhbmNoL21hc3Rlci9ncmFwaC9iYWRnZS5zdmcpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3dhZ2dlc3Qvb3BlbmFwaS1nbykKWyFbR29EZXZEb2NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZGV2LWRvYy0wMEFERDg/bG9nbz1nbyldKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ28pClshW3RpbWUgdHJhY2tlcl0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L29wZW5hcGktZ28uc3ZnKV0oaHR0cHM6Ly93YWthdGltZS5jb20vYmFkZ2UvZ2l0aHViL3N3YWdnZXN0L29wZW5hcGktZ28pCiFbQ29kZSBsaW5lc10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3Qvb3BlbmFwaS1nby8/Y2F0ZWdvcnk9Y29kZSkKIVtDb21tZW50c10oaHR0cHM6Ly9zbG9jLnh5ei9naXRodWIvc3dhZ2dlc3Qvb3BlbmFwaS1nby8/Y2F0ZWdvcnk9Y29tbWVudHMpCgojIyBGZWF0dXJlcwoKKiBUeXBlIHNhZmUgbWFwcGluZyBvZiBPcGVuQVBJIDMgZG9jdW1lbnRzIHdpdGggR28gc3RydWN0dXJlcyBnZW5lcmF0ZWQgZnJvbSBzY2hlbWEuCiogVHlwZS1iYXNlZCByZWZsZWN0aW9uIG9mIEdvIHN0cnVjdHVyZXMgdG8gT3BlbkFQSSAzLjAgb3IgMy4xIHNjaGVtYS4KKiBTY2hlbWEgY29udHJvbCB3aXRoIGZpZWxkIHRhZ3MKICAgICogYGpzb25gIGZvciByZXF1ZXN0IGJvZGllcyBhbmQgcmVzcG9uc2VzIGluIEpTT04KICAgICogYHF1ZXJ5YCwgYHBhdGhgIGZvciBwYXJhbWV0ZXJzIGluIFVSTAogICAgKiBgaGVhZGVyYCwgYGNvb2tpZWAsIGBmb3JtRGF0YWAsIGBmaWxlYCBmb3Igb3RoZXIgcGFyYW1ldGVycwogICAgKiBgZm9ybWAgYWN0cyBhcyBgcXVlcnlgIGFuZCBgZm9ybURhdGFgCiAgICAqIFtmaWVsZCB0YWdzXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNmaWVsZC10YWdzKSBuYW1lZCBhZnRlciBKU09OIFNjaGVtYS9PcGVuQVBJIDMgU2NoZW1hIGNvbnN0cmFpbnRzCiAgICAqIGBjb2xsZWN0aW9uRm9ybWF0YCB0byB1bnBhY2sgc2xpY2VzIGZyb20gc3RyaW5nCiAgICAgICAgKiBgY3N2YCBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzLAogICAgICAgICogYHNzdmAgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcywKICAgICAgICAqIGBwaXBlc2AgcGlwZS1zZXBhcmF0ZWQgdmFsdWVzIChgfGApLAogICAgICAgICogYG11bHRpYCBhbXBlcnNhbmQtc2VwYXJhdGVkIHZhbHVlcyAoYCZgKSwgCiogRmxleGlibGUgc2NoZW1hIGNvbnRyb2wgd2l0aCBbYGpzb25zY2hlbWEtZ29gXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlc3QvanNvbnNjaGVtYS1nbyNpbXBsZW1lbnRpbmctaW50ZXJmYWNlcy1vbi1hLXR5cGUpCgojIyBFeGFtcGxlCgpbT3RoZXIgZXhhbXBsZXNdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3N3YWdnZXN0L29wZW5hcGktZ28vb3BlbmFwaTMjcGtnLWV4YW1wbGVzKS4KCmBgYGdvCnJlZmxlY3RvciA6PSBvcGVuYXBpMy5SZWZsZWN0b3J7fQpyZWZsZWN0b3IuU3BlYyA9ICZvcGVuYXBpMy5TcGVje09wZW5hcGk6ICIzLjAuMyJ9CnJlZmxlY3Rvci5TcGVjLkluZm8uCiAgICBXaXRoVGl0bGUoIlRoaW5ncyBBUEkiKS4KICAgIFdpdGhWZXJzaW9uKCIxLjIuMyIpLgogICAgV2l0aERlc2NyaXB0aW9uKCJQdXQgc29tZXRoaW5nIGhlcmUiKQoKdHlwZSByZXEgc3RydWN0IHsKICAgIElEICAgICBzdHJpbmcgYHBhdGg6ImlkIiBleGFtcGxlOiJYWFgtWFhYWFgiYAogICAgTG9jYWxlIHN0cmluZyBgcXVlcnk6ImxvY2FsZSIgcGF0dGVybjoiXlthLXpdezJ9LVtBLVpdezJ9JCJgCiAgICBUaXRsZSAgc3RyaW5nIGBqc29uOiJzdHJpbmciYAogICAgQW1vdW50IHVpbnQgICBganNvbjoiYW1vdW50ImAKICAgIEl0ZW1zICBbXXN0cnVjdCB7CiAgICAgICAgQ291bnQgdWludCAgIGBqc29uOiJjb3VudCJgCiAgICAgICAgTmFtZSAgc3RyaW5nIGBqc29uOiJuYW1lImAKICAgIH0gYGpzb246Iml0ZW1zImAKfQoKdHlwZSByZXNwIHN0cnVjdCB7CiAgICBJRCAgICAgc3RyaW5nIGBqc29uOiJpZCIgZXhhbXBsZToiWFhYLVhYWFhYImAKICAgIEFtb3VudCB1aW50ICAgYGpzb246ImFtb3VudCJgCiAgICBJdGVtcyAgW11zdHJ1Y3QgewogICAgICAgIENvdW50IHVpbnQgICBganNvbjoiY291bnQiYAogICAgICAgIE5hbWUgIHN0cmluZyBganNvbjoibmFtZSJgCiAgICB9IGBqc29uOiJpdGVtcyJgCiAgICBVcGRhdGVkQXQgdGltZS5UaW1lIGBqc29uOiJ1cGRhdGVkX2F0ImAKfQoKcHV0T3AgOj0gb3BlbmFwaTMuT3BlcmF0aW9ue30KCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TZXRSZXF1ZXN0KCZwdXRPcCwgbmV3KHJlcSksIGh0dHAuTWV0aG9kUHV0KSkKaGFuZGxlRXJyb3IocmVmbGVjdG9yLlNldEpTT05SZXNwb25zZSgmcHV0T3AsIG5ldyhyZXNwKSwgaHR0cC5TdGF0dXNPSykpCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TZXRKU09OUmVzcG9uc2UoJnB1dE9wLCBuZXcoW11yZXNwKSwgaHR0cC5TdGF0dXNDb25mbGljdCkpCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TcGVjLkFkZE9wZXJhdGlvbihodHRwLk1ldGhvZFB1dCwgIi90aGluZ3Mve2lkfSIsIHB1dE9wKSkKCmdldE9wIDo9IG9wZW5hcGkzLk9wZXJhdGlvbnt9CgpoYW5kbGVFcnJvcihyZWZsZWN0b3IuU2V0UmVxdWVzdCgmZ2V0T3AsIG5ldyhyZXEpLCBodHRwLk1ldGhvZEdldCkpCmhhbmRsZUVycm9yKHJlZmxlY3Rvci5TZXRKU09OUmVzcG9uc2UoJmdldE9wLCBuZXcocmVzcCksIGh0dHAuU3RhdHVzT0spKQpoYW5kbGVFcnJvcihyZWZsZWN0b3IuU3BlYy5BZGRPcGVyYXRpb24oaHR0cC5NZXRob2RHZXQsICIvdGhpbmdzL3tpZH0iLCBnZXRPcCkpCgpzY2hlbWEsIGVyciA6PSByZWZsZWN0b3IuU3BlYy5NYXJzaGFsWUFNTCgpCmlmIGVyciAhPSBuaWwgewogICAgbG9nLkZhdGFsKGVycikKfQoKZm10LlByaW50bG4oc3RyaW5nKHNjaGVtYSkpCmBgYAoKT3V0cHV0OgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwppbmZvOgogIGRlc2NyaXB0aW9uOiBQdXQgc29tZXRoaW5nIGhlcmUKICB0aXRsZTogVGhpbmdzIEFQSQogIHZlcnNpb246IDEuMi4zCnBhdGhzOgogIC90aGluZ3Mve2lkfToKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBpbjogcXVlcnkKICAgICAgICBuYW1lOiBsb2NhbGUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICBwYXR0ZXJuOiBeW2Etel17Mn0tW0EtWl17Mn0kCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgLSBpbjogcGF0aAogICAgICAgIG5hbWU6IGlkCiAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICBzY2hlbWE6CiAgICAgICAgICBleGFtcGxlOiBYWFgtWFhYWFgKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9PcGVuYXBpM1Rlc3RSZXNwJwogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICBwdXQ6CiAgICAgIHBhcmFtZXRlcnM6CiAgICAgIC0gaW46IHF1ZXJ5CiAgICAgICAgbmFtZTogbG9jYWxlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgcGF0dGVybjogXlthLXpdezJ9LVtBLVpdezJ9JAogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIC0gaW46IHBhdGgKICAgICAgICBuYW1lOiBpZAogICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgc2NoZW1hOgogICAgICAgICAgZXhhbXBsZTogWFhYLVhYWFhYCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgcmVxdWVzdEJvZHk6CiAgICAgICAgY29udGVudDoKICAgICAgICAgIGFwcGxpY2F0aW9uL2pzb246CiAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvT3BlbmFwaTNUZXN0UmVxJwogICAgICByZXNwb25zZXM6CiAgICAgICAgIjIwMCI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9PcGVuYXBpM1Rlc3RSZXNwJwogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgIjQwOSI6CiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvT3BlbmFwaTNUZXN0UmVzcCcKICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICBkZXNjcmlwdGlvbjogQ29uZmxpY3QKY29tcG9uZW50czoKICBzY2hlbWFzOgogICAgT3BlbmFwaTNUZXN0UmVxOgogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIGFtb3VudDoKICAgICAgICAgIG1pbmltdW06IDAKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICBpdGVtczoKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgIGNvdW50OgogICAgICAgICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgIHN0cmluZzoKICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICB0eXBlOiBvYmplY3QKICAgIE9wZW5hcGkzVGVzdFJlc3A6CiAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgYW1vdW50OgogICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgIGlkOgogICAgICAgICAgZXhhbXBsZTogWFhYLVhYWFhYCiAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICBpdGVtczoKICAgICAgICAgIGl0ZW1zOgogICAgICAgICAgICBwcm9wZXJ0aWVzOgogICAgICAgICAgICAgIGNvdW50OgogICAgICAgICAgICAgICAgbWluaW11bTogMAogICAgICAgICAgICAgICAgdHlwZTogaW50ZWdlcgogICAgICAgICAgICAgIG5hbWU6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICB0eXBlOiBhcnJheQogICAgICAgIHVwZGF0ZWRfYXQ6CiAgICAgICAgICBmb3JtYXQ6IGRhdGUtdGltZQogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgIHR5cGU6IG9iamVjdApgYGAK + readmeEtag: '"e7661fc44783161843353b7790226678cb35c34b0f787364d8d9c6127d981d31"' + readmeLastModified: Tue, 08 Aug 2023 23:13:20 GMT repositoryId: 232207964 description: OpenAPI structures for Go created: '2020-01-07T00:07:41Z' - updated: '2023-08-07T03:32:20Z' + updated: '2023-08-08T10:18:38Z' language: Go archived: false - stars: 129 + stars: 130 watchers: 3 forks: 17 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT - repoEtag: '"11254d63df907184b7a9ad1895fe5b7739daf77448899f6c2b2bfb00e26c297a"' - repoLastModified: Mon, 07 Aug 2023 03:32:20 GMT + repoEtag: '"e3acbd68810f1e152de8516561bf79d0faaf91679a01cd5c8d0974173b2b928f"' + repoLastModified: Tue, 08 Aug 2023 10:18:38 GMT foundInMaster: true id: 042e78fafa5f6cb0dbca01c64778ab3f - source: openapi3 tags @@ -8987,7 +8987,7 @@ owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 - repoEtag: '"73ea974215815defa89252927c7b4b33a1c0baa2ebae64a4406350c956340fe2"' + repoEtag: '"a985a5b0ab7879d6d3901347c1f6c51bea8948bd117621a4243c9f1e820e39e0"' repoLastModified: Fri, 12 May 2023 16:46:14 GMT foundInMaster: true category: @@ -9000,9 +9000,9 @@ id: 30d6812808d99b1b58b61c10028cb8de repositoryMetadata: base64Readme: >- - WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2diMmRvZTN0Z3dqdDQ3Y24vYnJhbmNoL21hc3Rlcj9zdmc9dHJ1ZSldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9icmFuY2gvbWFzdGVyKQohW0NMSSBUb29sXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi93b3JrZmxvd3MvQ0xJJTIwVG9vbC9iYWRnZS5zdmcpCiFbVlNJWF0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTSVgvYmFkZ2Uuc3ZnKQohW1ZTIE1hY10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTJTIwTWFjL2JhZGdlLnN2ZykKIVtTbW9rZSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1Ntb2tlJTIwVGVzdHMvYmFkZ2Uuc3ZnKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQoKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3YvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yP2xhYmVsPU1hcmtldHBsYWNlKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikgClshW0Rvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL2QvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yP2xhYmVsPVZTJTIwMjAxOSldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IpClshW1JhdGluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3N0YXJzL0NocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IpClshW0Rvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL2QvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yMjAyMj9sYWJlbD1WUyUyMDIwMjIpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yMjAyMikgClshW1JhdGluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3N0YXJzL0NocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yMjAyMikKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9yYXBpY2dlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvZHQvcmFwaWNnZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmxhYmVsPW51Z2V0KV0oaHR0cDovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvcmFwaWNnZW4pCgpbIVtidXltZWFjb2ZmZWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYnV5JTIwbWUlMjBhJTIwY29mZmVlLWRvbmF0ZS15ZWxsb3cuc3ZnKV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9jaHJpc3RpYW5oZWxsZSkKWyFbSm9pbiB0aGUgY2hhdCBhdCBodHRwczovL2dpdHRlci5pbS9hcGljbGllbnRjb2RlZ2VuL2NvbW11bml0eV0oaHR0cHM6Ly9iYWRnZXMuZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5LnN2ZyldKGh0dHBzOi8vZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5P3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvcgpBIGNvbGxlY3Rpb24gb2YgVmlzdWFsIFN0dWRpbyBDIyBjdXN0b20gdG9vbCBjb2RlIGdlbmVyYXRvcnMgZm9yIFN3YWdnZXIgLyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMKCiMjIyMgRG93bmxvYWQKCi0gKipbVmlzdWFsIFN0dWRpbyAyMDIyXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMikqKgotICoqW1Zpc3VhbCBTdHVkaW8gMjAxOV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcikqKgotICoqW1Zpc3VhbCBTdHVkaW8gMjAxN10oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMTcpKioKLSAqKltWaXN1YWwgU3R1ZGlvIGZvciBNYWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9hcGljbGllbnRjb2RlZ2VuL3JlbGVhc2VzL2xhdGVzdCkqKi4gRm9sbG93ICoqW3RoZXNlIGluc3RydWN0aW9uc10oI3Zpc3VhbC1zdHVkaW8tZm9yLW1hYy0xKSoqIGZvciB1cGRhdGUgY29udmVuaWVuY2Ugb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0cyBWaXN1YWwgU3R1ZGlvIDIwMTcsIDIwMTksIDIwMjIsIGFuZCBbVmlzdWFsIFN0dWRpbyBmb3IgTWFjXSgjdmlzdWFsLXN0dWRpby1mb3ItbWFjLTEpCi0gQWRkIE5ldyBSRVNUIEFQSSBDbGllbnQgdG8gYSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIFVSTCAoZS5nIGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24pIHVzaW5nIFtBdXRvUmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0KSwgW05Td2FnXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnKSwgW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbiksIG9yIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKLSBEZWZpbmUgY3VzdG9tIG5hbWVzcGFjZSBmb3IgdGhlIGdlbmVyYXRlZCBmaWxlCi0gQXV0by11cGRhdGluZyBvZiBnZW5lcmF0ZWQgY29kZSBmaWxlIHdoZW4gY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIEpTT04gb3IgWUFNTCBmaWxlCi0gR2VuZXJhdGUgY29kZSB1c2luZyBhbiBbTlN3YWdTdHVkaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9OU3dhZ1N0dWRpbykgc3BlY2lmaWNhdGlvbiBmaWxlIGJ5IGluY2x1ZGluZyBpdCBpbiB0aGUgcHJvamVjdCBhbmQgdXNpbmcgdGhlICoqR2VuZXJhdGUgd2l0aCBOU3dhZyoqIGNvbnRleHQgbWVudQoKCiMjIyBDdXN0b20gVG9vbHMKCi0gKioqTlN3YWdDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBbTlN3YWcuQ29kZUdlbmVyYXRpb24uQ1NoYXJwXShodHRwczovL2dpdGh1Yi5jb20vUlN1dGVyL05Td2FnL3dpa2kvQ1NoYXJwQ2xpZW50R2VuZXJhdG9yKSBbbnVnZXQgcGFja2FnZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycC8pICoqdjEzLjE5LjAqKgoKLSAqKipPcGVuQXBpQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKltPcGVuQVBJIEdlbmVyYXRvciB2Ny4wLjAtYmV0YV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjcuMC4wLWJldGEpKiouClRoZSBvdXRwdXQgZmlsZSBpcyB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYWxsIHRoZSBmaWxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIHRvb2wgd2l0aDoKYCBnZW5lcmF0ZSAtZyBjc2hhcnAgLS1pbnB1dC1zcGVjIFtzd2FnZ2VyIGZpbGVdIC0tb3V0cHV0IFtvdXRwdXQgZmlsZV0gLURhcGlUZXN0cz1mYWxzZSAtRG1vZGVsVGVzdHM9ZmFsc2UgLURwYWNrYWdlTmFtZT1bZGVmYXVsdCBuYW1lc3BhY2VdIC0tc2tpcC1vdmVyd3JpdGVgCgotICoqKktpb3RhQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgTWljcm9zb2Z0IHByb2plY3QgKipbS2lvdGEgdjEuNS4wXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvb3BlbmFwaS9raW90YS8pKiogZ2VuZXJhdG9yLiAKVGhlIG91dHB1dCBmaWxlIGlzIHRoZSByZXN1bHQgb2YgbWVyZ2luZyBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZCB1c2luZyB0aGUgS2lvdGEgZG90bmV0IHRvb2wgd2l0aDoKYCBnZW5lcmF0ZSAtbCBDU2hhcnAgLWQgW3N3YWdnZXIgZmlsZV0gLW8gW291dHB1dCBmaWxlXSAtbiBbZGVmYXVsdCBuYW1lc3BhY2VdYAoKLSAqKipTd2FnZ2VyQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKlN3YWdnZXIgQ29kZWdlbiBDTEkgdjMuMC4zNCoqLgpUaGUgb3V0cHV0IGZpbGUgaXMgdGhlIHJlc3VsdCBvZiBtZXJnaW5nIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBTd2FnZ2VyIENvZGVnZW4gQ0xJIHRvb2wgd2l0aDoKYCBnZW5lcmF0ZSAtbCBjc2hhcnAgLS1pbnB1dC1zcGVjIFtzd2FnZ2VyIGZpbGVdIC0tb3V0cHV0IFtvdXRwdXQgZmlsZV0gLURhcGlUZXN0cz1mYWxzZSAtRG1vZGVsVGVzdHM9ZmFsc2UgLURwYWNrYWdlTmFtZT1bZGVmYXVsdCBuYW1lc3BhY2VdIC0tc2tpcC1vdmVyd3JpdGVgCgotICoqKkF1dG9SZXN0Q29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKkF1dG9SZXN0IHYzLjAuMC1iZXRhLjIwMjEwNTA0LjIqKiBmb3IgT3BlbkFQSSB2MyBhbmQgKipBdXRvUmVzdCB2Mi4wLjQ0MTcqKiBmb3IgT3BlbkFQSSB2Mi4gClRoZSByZXN1bHRpbmcgZmlsZSBpcyB0aGUgZXF1aXZhbGVudCBvZiB1c2luZyB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgd2l0aDorCmAgLS1jc2hhcnAgLS1pbnB1dC1maWxlPVtzd2FnZ2VyIGZpbGVdIC0tb3V0cHV0LWZpbGU9W291dHB1dCBmaWxlXSAtLW5hbWVzcGFjZT1bZGVmYXVsdCBuYW1lc3BhY2VdIC0tYWRkLWNyZWRlbnRpYWxzYAoKLSAqKipSZWZpdHRlckNvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgaW50ZWZhY2UgZm9yIFtSZWZpdF0oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0aXZldWkvcmVmaXQpIHVzaW5nIFtSZWZpdHRlci5Db3JlXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIFtudWdldCBwYWNrYWdlXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUmVmaXR0ZXIuQ29yZS8pICoqdjAuNy4xKiouClRoZSBvdXRwdXQgZmlsZSBjb250YWlucyBhIFJlZml0IGludGVyZmFjZSBnZW5lcmF0ZWQgYnkgW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIGFuZCBjb250cmFjdHMgZ2VuZXJhdGVkIHVzaW5nIFtOU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnBdKGh0dHBzOi8vZ2l0aHViLmNvbS9SU3V0ZXIvTlN3YWcvd2lraS9DU2hhcnBDbGllbnRHZW5lcmF0b3IpIFtudWdldCBwYWNrYWdlXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTlN3YWcuQ29kZUdlbmVyYXRpb24uQ1NoYXJwLykKCgojIyMgRGVwZW5kZW5jaWVzCgpUaGUgY3VzdG9tIHRvb2wgY29kZSBnZW5lcmF0b3JzIHBpZ2d5IGJhY2sgb24gdG9wIG9mIHdlbGwga25vd24gT3BlbiBBUEkgY2xpZW50IGNvZGUgZ2VuZXJhdG9ycyBsaWtlICoqQXV0b1Jlc3QqKiwgKipOU3dhZyoqLCAqKk9wZW5BUEkgR2VuZXJhdG9yKiosICoqTWljcm9zb2Z0IEtpb3RhKiosICoqUmVmaXR0ZXIqKiwgYW5kICoqU3dhZ2dlciBDb2RlZ2VuIENMSSoqLiBUaGVzZSB0b29scyByZXF1aXJlIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhbmQgdGhlIFtKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnRdKGh0dHBzOi8vamF2YS5jb20vZW4vZG93bmxvYWQvbWFudWFsLmpzcCkgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSBkZXZlbG9wZXJzIG1hY2hpbmUuIEFsdGVybmF0aXZlIEphdmEgU0RLIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIHRoZSBbT3BlbkpES10oaHR0cHM6Ly9hZG9wdG9wZW5qZGsubmV0KSB3b3JrcyBmaW5lIHdpdGggdGhpcyBleHRlbnNpb24uIEJ5IGRlZmF1bHQsIHRoZSBwYXRoIHRvICoqamF2YS5leGUqKiBpcyByZWFkIGZyb20gdGhlICoqSkFWQV9IT01FKiogZW52aXJvbm1lbnQgdmFyaWFibGUsIGJ1dCBpcyBhbHNvIGNvbmZpZ3VyYWJsZSBpbiB0aGUgU2V0dGluZ3Mgc2NyZWVuCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogYW5kICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBhcmUgZGlzdHJpYnV0ZWQgYXMgSkFSIGZpbGVzIGFuZCBhcmUgZG93bmxvYWRlZCBvbiBkZW1hbmQgYnV0IHJlcXVpcmVzIHRoZSBKYXZhIFNESyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIG1hY2hpbmUuICoqQXV0b1Jlc3QqKiBpcyBpbnN0YWxsZWQgb24tZGVtYW5kIHZpYSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYXMgYSBnbG9iYWwgdG9vbCBhbmQgdXNlcyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uLiAqKk1pY3Jvc29mdCBLaW90YSoqIGlzIGluc3RhbGxlZCBvbi1kZW1hbmQgYXMgYSAuTkVUIFRvb2wgYW5kIHJlcXVpcmVzIC5ORVQgNy4wLiBUaGlzIG1lYW5zIHRoYXQgdXNpbmcgdGhlc2UgY3VzdG9tIHRvb2xzIGhhdmUgYW4gaW5pdGlhbCBkZWxheSB1cG9uIGZpcnN0IHRpbWUgdXNlLiAKCioqTlN3YWdTdHVkaW8qKiBpcyBzdGFuZCBhbG9uZSBVSSB0b29sIGZvciBlZGl0aW5nIGEgKioubnN3YWcqKiBzcGVjaWZpY2F0aW9uIGZpbGUgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyB0b29sIGlzIG9wdGlvbmFsIHRvIGluc3RhbGwgYW5kIG9mZmljaWFsIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgW05Td2FnIFdpa2kgb24gR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pLiBJZiAqKk5Td2FnU3R1ZGlvKiogaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgbWFjaGluZSB0aGVuIHRoZSBWaXN1YWwgU3R1ZGlvIEV4dGVuc2lvbiB3aWxsIGluc3RhbGwgdGhlICoqTlN3YWcgQ0xJKiogdmlhIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhcyBhIGdsb2JhbCB0b29sIHVzaW5nIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24uIAoKVGhlICoqTlN3YWcqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2UKClRoZSAqKlJlZml0dGVyKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZWZpdF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0LzcuMC4wKSBOdUdldCBwYWNrYWdlCgpUaGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXM6Ci0gW1Jlc3RTaGFycF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1Jlc3RTaGFycC8xMDguMC4yKQotIFtKc29uU3ViVHlwZXNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Kc29uU3ViVHlwZXMvMi4wLjEpCi0gW1BvbGx5XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUG9sbHkvNy4yLjQpCi0gW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpCgpUaGUgcHJvamVjdCAqKktpb3RhKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyBOdUdldCBwYWNrYWdlcwotIFtNaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLkFic3RyYWN0aW9ucy8xLjMuMCkKLSBbTWljcm9zb2Z0Lktpb3RhLkh0dHAuSHR0cENsaWVudExpYnJhcnldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuSHR0cC5IdHRwQ2xpZW50TGlicmFyeS8xLjAuNikKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uRm9ybV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLkZvcm0vMS4wLjEpCi0gW01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5UZXh0LzEuMC4zKQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uSnNvbi8xLjAuOCkKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uTXVsdGlwYXJ0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uTXVsdGlwYXJ0LzEuMC4wKQotIFtNaWNyb3NvZnQuS2lvdGEuQXV0aGVudGljYXRpb24uQXp1cmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuQXV0aGVudGljYXRpb24uQXp1cmUvMS4wLjMpCi0gW0F6dXJlLklkZW50aXR5XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvQXp1cmUuSWRlbnRpdHkvMS45LjApCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZXN0U2hhcnBdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZXN0U2hhcnAvMTA1LjEuMCkgYW5kIFtKc29uU3ViVHlwZXNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Kc29uU3ViVHlwZXMvMS4yLjApIE51R2V0IHBhY2thZ2VzCgpUaGUgKipBdXRvUmVzdCoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBbTWljcm9zb2Z0LlJlc3QuQ2xpZW50UnVudGltZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5SZXN0LkNsaWVudFJ1bnRpbWUvMi4zLjI0KSBhbmQgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2VzCgpUaGlzIFZpc3VhbCBTdHVkaW8gRXh0ZW5zaW9uIHdpbGwgYXV0b21hdGljYWxseSBhZGQgdGhlIHJlcXVpcmVkIE51R2V0IHBhY2thZ2VzIHRoYXQgdGhlIGdlbmVyYXRlZCBjb2RlIGRlcGVuZHMgb24KCgojIyBTY3JlZW5zaG90cwoKIVtBZGQgLSBBUEkgQ2xpZW50IGZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShpbWFnZXMvYWRkLW5ldy1tZW51LnBuZykKCiFbRW50ZXIgVVJMIHRvIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL2FkZC1uZXctZGlhbG9nLnBuZykKCiFbU29sdXRpb24gRXhwbG9yZXIgQ29udGV4dCBNZW51c10oaW1hZ2VzL3NvbHV0aW9uLWV4cGxvcmVyLWNvbnRleHQtbWVudS5qcGcpCgohW05Td2FnIFN0dWRpbyBDb250ZXh0IE1lbnVdKGltYWdlcy9uc3dhZ3N0dWRpby1jb250ZXh0LW1lbnUuanBnKQoKCiMjIyBTZXR0aW5ncwoKVGhpcyBleHRlbnNpb24gd2lsbCBieSBkZWZhdWx0IG1ha2Ugc29tZSBhc3N1bXB0aW9ucyBvbiB0aGUgaW5zdGFsbGF0aW9uIHBhdGhzIGZvciAqKkphdmEqKiwgKipOU3dhZyoqIGFuZCAqKk5QTSoqIGJ1dCBhbHNvIHByb3ZpZGVzIG9wdGlvbiBwYWdlcyBmb3IgY29uZmlndXJpbmcgdGhpcy4gVGhlICoqU3dhZ2dlciBDb2RlZ2VuIENMSSoqIGFuZCB0aGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIEpBUiBmaWxlcyBhcmUgYnkgZGVmYXVsdCBkb3dubG9hZGVkIHRvIHRoZSB1c2VyIFRFTVAgZm9sZGVyIGJ1dCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgdG8gdXNlIGV4aXN0aW5nIEpBUiBmaWxlcwoKIVtPcHRpb25zIC0gR2VuZXJhbF0oaW1hZ2VzL29wdGlvbnMtZ2VuZXJhbC5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgQXV0b1Jlc3QgZ2VuZXJhdGVzIGNvZGUgYmFzZWQgb24gdGhlIEMjIGdlbmVyYXRvciBzZXR0aW5ncyB0aGF0IHRoZSBBdXRvUmVzdCBDTEkgdG9vbCBwcm92aWRlcwoKIVtPcHRpb25zIC0gQXV0b1Jlc3RdKGltYWdlcy9vcHRpb25zLWF1dG9yZXN0LnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBOU3dhZyBnZW5lcmF0ZXMgY29kZSB1c2luZyB0aGUgcHJvcGVydGllcyBleHBvc2VkIGJ5IHRoZSBOU3dhZyBOdUdldCBwYWNrYWdlCgohW09wdGlvbnMgLSBOU3dhZ10oaW1hZ2VzL29wdGlvbnMtbnN3YWcucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IHRoZSAqKi5uc3dhZyoqIGZpbGUgaXMgZ2VuZXJhdGVkIHVzaW5nIGEgc3Vic2V0IG9mIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbiBOU3dhZyBTdHVkaW8KCiFbT3B0aW9ucyAtIE5Td2FnIFN0dWRpb10oaW1hZ2VzL29wdGlvbnMtbnN3YWdzdHVkaW8ucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IE9wZW5BUEkgR2VuZXJhdG9yIGdlbmVyYXRlcyBjb2RlIHVzaW5nIHRoZSBhZGRpdGlvbmFsIG9wdGlvbmFsIHByb3BlcnRpZXMgdGhhdCB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgQ0xJIHRvb2wgcHJvdmlkZXMKCiFbT3B0aW9ucyAtIE9wZW5BUEkgR2VuZXJhdG9yXShpbWFnZXMvb3B0aW9ucy1vcGVuYXBpZ2VuZXJhdG9yLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBSZWZpdHRlciBnZW5lcmF0ZXMgdGhlIFJlZml0IGludGVyZmFjZS4gVGhpcyBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSB3aGV0aGVyIHRvIHJldHVybiB0aGUgdHlwZSBkaXJlY3RseSBvciB3cmFwIGl0IGluc2lkZSBhbiBgSUFwaVJlc3BvbnNlPFQ+YC4gWW91IGNhbiBhbHNvIGRpc2FibGUgZ2VuZXJhdGluZyBjb250cmFjdHMgb3IgWE1MIGRvYyBzdHlsZSBjb21tZW50cwoKIVtPcHRpb25zIC0gUmVmaXR0ZXJdKGltYWdlcy9yZWZpdHRlci1vcHRpb25zLnBuZykKClRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGVycm9ycyBhbmQgdHJhY2tzIGZlYXR1cmUgdXNhZ2VzIHRvIGEgc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20pIGFuZCBbQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9hcHAtaW5zaWdodHMtb3ZlcnZpZXc/V1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpLiBUaGlzIGlzIGRvbmUgYW5vbnltb3VzbHkgdXNpbmcgYSBzdXBwb3J0IGtleSBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggb2YgdXNlcm5hbWVAaG9zdAoKIVtPcHRpb25zIC0gQW5hbHl0aWNzXShpbWFnZXMvc3VwcG9ydC1rZXkucG5nKQoKCiMjIyBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKCiFbQWRkIC0gQVBJIENsaWVudCBmcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL3ZzbWFjLWFkZC1uZXctbWVudS5wbmcpCgohW0VudGVyIFVSTCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy92c21hYy1hZGQtbmV3LWRpYWxvZy5wbmcpCgohW1NvbHV0aW9uIEV4cGxvcmVyIENvbnRleHQgTWVudXNdKGltYWdlcy92c21hYy1nZW5lcmF0ZS1jb2RlLnBuZykKCiFbTlN3YWcgU3R1ZGlvIENvbnRleHQgTWVudV0oaW1hZ2VzL3ZzbWFjLW5zd2FnLXN0dWRpby5wbmcpCgoKIyBJbnN0YWxsYXRpb24KClRoZSBWaXN1YWwgU3R1ZGlvIGV4dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gVmlzdWFsIFN0dWRpbyAyMDE5IGFuZCAyMDIyIHZpYSB0aGUgKipFeHRlbnNpb25zIERpYWxvZyBCb3gqKi4gVGhlIHByb2Nlc3MgaXMgYmVzdCBkZXNjcmliZWQgaW4gdGhlIG9mZmljaWFsIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGZvciBbTWFuYWdpbmcgZXh0ZW5zaW9ucyBmb3IgVmlzdWFsIFN0dWRpb10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdmlzdWFsc3R1ZGlvL2lkZS9maW5kaW5nLWFuZC11c2luZy12aXN1YWwtc3R1ZGlvLWV4dGVuc2lvbnM/dmlldz12cy0yMDE5JldULm1jX2lkPURULU1WUC01MDA0ODIyKQoKIyMgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgpUaGlzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGZvciAqKlZpc3VhbCBTdHVkaW8gZm9yIE1hYyoqIGlzIGN1cnJlbnRseSBhIGJpdCB0cm91Ymxlc29tZSBhcyB0aGUgTW9ub0RldmVsb3AgQWRkaW4gUmVwb3NpdG9yeSBpcyBjdXJyZW50bHkgbm90IGFjY2VwdGluZyBuZXcgdXNlcnMgc28gSSBjYW4ndCByZWFsbHkgcmVnaXN0ZXIgYW5kIHNldHVwIG15IGV4dGVuc2lvbi4KClRoZXJlIGFyZSAyIHdheXMgb2YgaW5zdGFsbGluZyBteSBleHRlbnNpb24gb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjOiBBZGRpbmcgYSBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkgb3IgSW5zdGFsbGluZyB0aGUgKioubXBhY2sqKiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIEV4dGVuc2lvbnMgTWFuYWdlcgoKIyMjIEFkZGluZyBhIG5ldyBleHRlbnNpb24gcmVwb3NpdG9yeQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86CgotIE9wZW4gdGhlIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyAqKkV4dGVuc2lvbiBNYW5hZ2VyKioKLSBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIFNlbGVjdCB0aGUgKipHYWxsZXJ5KiogVGFiCi0gRXhwYW5kIHRoZSBSZXBvc2l0b3J5IGRyb3AgZG93biBib3ggYW5kIHNlbGVjdCAqKk1hbmFnZSBSZXBvc2l0b3JpZXMqKgoKIVtNYW5hZ2UgUmVwb3NpdG9yaWVzXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tYW5hZ2UtcmVwb3NpdG9yaWVzLnBuZykKCi0gUHJlc3Mgb24gdGhlICoqQWRkKiogYnV0dG9uIHRvIGFkZCBhIG5ldyBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkKCiFbTWFuYWdlIFJlcG9zaXRvcmllc10oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtcmVwb3NpdG9yaWVzLnBuZykKCi0gUmVnaXN0ZXIgYW4gb25saW5lIHJlcG9zaXRvcnkgYXQgKipodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbS92c21hYy9tYWluLm1yZXAqKgotIENsaWNrICoqT0sqKgoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtYWRkLXJlcG9zaXRvcnkucG5nKQoKLSBOb3cgbXkgZXh0ZW5zaW9uIHJlcG9zaXRvcnkgaXMgYWRkZWQgdG8gdGhlIGxpc3QKLSBNYWtlIHN1cmUgdGhhdCB0aGlzIGlzIGVuYWJsZWQgKGluZGljYXRlZCBieSBhIGNoZWNrIGJveCkKCiFbQWRkIFJlcG9zaXRvcnkgRGlhbG9nXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1hZGRlZC1yZXBvc2l0b3J5LnBuZykKCi0gWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBzZWUgbXkgZXh0ZW5zaW9ucyBmcm9tIHRoZSAqKkdhbGxlcnkqKiB0YWIKCiFbQWRkZWQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtZ2FsbGVyeS5wbmcpCgotIEJ5IGFkZGluZyBteSBleHRlbnNpb24gcmVwb3NpdG9yeSB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNvbnZlbmllbnRseSB1cGRhdGUgbXkgZXh0ZW5zaW9uIHVzaW5nIHRoZSBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgRXh0ZW5zaW9uIE1hbmFnZXIKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGVzLnBuZykKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGUtaW5zdGFsbC5wbmcpCgohW0FkZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtdXBkYXRlLWluc3RhbGwtcHJvZ3Jlc3MucG5nKQoKIyMjIEluc3RhbGxpbmcgdGhlICoqLm1wYWNrKiogZmlsZSBkaXJlY3RseQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0gRG93bmxvYWQgdGhlIGxhdGVzdCAqKi5tcGFjayBmaWxlKiogZnJvbSB0aGUgW0xhdGVzdCBHaXRodWIgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vcmVsZWFzZXMvbGF0ZXN0KQotIE5vdyBmcm9tIHdpdGhpbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgeW91IG5lZWQgdG8gbGF1bmNoIHRoZSAqKkV4dGVuc2lvbnMgRGlhbG9nIEJveCoqLiBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIENsaWNrIG9uIHRoZSAqKkluc3RhbGwgZnJvbSBGaWxlKiogYnV0dG9uCgohW01hbnVhbGx5IGluc3RhbGwgLm1wYWNrIGZpbGVdKGltYWdlcy92c21hYy1leHRlbnNpb25zLWluc3RhbGwucG5nKQoKLSBCcm93c2UgdG8gdGhlIC5tcGFjayBmaWxlIGFuZCBzZWxlY3QgaXQuIFlvdSB3aWxsIGJlIHByb21wdGVkIHdpdGggYSBjb25maXJtYXRpb24gZGlhbG9nCgohW0NvbmZpcm0gLm1wYWNrIGZpbGUgaW5zdGFsbF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtaW5zdGFsbC1jb25maXJtLnBuZykKCi0gQ2xpY2sgKipJbnN0YWxsKiogYW5kIHJlc3RhcnQgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCi0gVG8gVmVyaWZ5IHRoYXQgdGhlIEFkZC1pbiB3YXMgaW5zdGFsbGVkIHlvdSBjYW4gcmUtb3BlbiB0aGUgRXh0ZW5zaW9ucyBEaWFsb2cgQm94LCBzZWxlY3QgdGhlICoqSW5zdGFsbGVkKiogdGFiIGFuZCBleHBhbmQgdGhlICoqSURFIEV4dGVuc2lvbnMqKi4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aGUgKipSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IqKi4KCi0gVW5pbnN0YWxsaW5nIHRoZSBBZGQtaW4gaXMgZG9uZSBpbiB0aGlzIHNhbWUgZGlhbG9nIGJveCBieSBjbGlja2luZyB0aGUgKipVbmluc3RhbGwqKiBidXR0b24KCiFbTWFudWFsbHkgdW5pbnN0YWxsIEFkZC1pbl0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtdW5pbnN0YWxsLnBuZykKCgojIENyb3NzIFBsYXRmb3JtIENvbW1hbmQgTGluZSBUb29sCkFsbCBjdXN0b20gdG9vbHMgbWVudGlvbmVkIGFib3ZlIGFyZSBhbHNvIGltcGxlbWVudGVkIGluIGEgY3Jvc3MgcGxhdGZvcm0gY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uCgojIyMjIFJlcXVpcmVtZW50cwotIC5ORVQgNi4wIHJ1bnRpbWUKLSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQKLSBOUE0KCiMjIyBJbnN0YWxsYXRpb24KVGhlIHRvb2wgY2FuIGJlIGluc3RhbGxlZCBhcyBhIC5ORVQgQ29yZSBnbG9iYWwgdG9vbCB0aGF0IHlvdSBjYW4gY2FsbCBmcm9tIHRoZSBzaGVsbCAvIGNvbW1hbmQgbGluZQpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKb3IgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgW2hlcmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdG9vbAoKIyMjIFVzYWdlClNpbmNlIHRoZSB0b29sIGlzIHB1Ymxpc2hlZCBhcyBhIC5ORVQgQ29yZSBUb29sLCBpdCBjYW4gYmUgbGF1bmNoZWQgZnJvbSBhbnl3aGVyZSB1c2luZyBhbnkgY29tbWFuZCBsaW5lIGludGVyZmFjZSBieSBjYWxsaW5nICoqcmFwaWNnZW4qKi4KVGhlIGhlbHAgaW5mb3JtYXRpb24gaXMgZGlzcGxheWVkIHdoZW4gbm90IHNwZWNpZnlpbmcgYW55IGFyZ3VtZW50cyB0byAqKnJhcGljZ2VuKioKCmBgYApVc2FnZTogcmFwaWNnZW4gW2NvbW1hbmRdIFtvcHRpb25zXQoKT3B0aW9uczoKICAtdnwtLXZlcmJvc2UgICAgICAgU2hvdyB2ZXJib3NlIG91dHB1dAogIC0/fC1ofC0taGVscCAgICAgICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBjc2hhcnAgICAgICAgICAgICAgR2VuZXJhdGUgQyMgQVBJIGNsaWVudHMKICBqbWV0ZXIgICAgICAgICAgICAgR2VuZXJhdGUgQXBhY2hlIEpNZXRlciB0ZXN0IHBsYW5zCiAgb3BlbmFwaS1nZW5lcmF0b3IgIEdlbmVyYXRlIGNvZGUgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjAuMC1iZXRhKS4KICAgICAgICAgICAgICAgICAgICAgU2VlIHN1cHBvcnRlZCBnZW5lcmF0b3JzIGF0IGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2dlbmVyYXRvcnMvCiAgdHlwZXNjcmlwdCAgICAgICAgIEdlbmVyYXRlIFR5cGVTY3JpcHQgQVBJIGNsaWVudHMKClJ1biAncmFwaWNnZW4gW2NvbW1hbmRdIC0/fC1ofC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLgpgYGAKClNvbWUgaGVscCBpbmZvcm1hdGlvbiBpcyBhbHNvIHByb3ZpZGVkIHBlciBjb21tYW5kIGFuZCBjYW4gYmUgbGF1bmNoZWQgYnkgCgpgYGAKcmFwaWNnZW4gW2NvbW1hbmQgbmFtZV0gLT8KYGBgCgpvcgoKYGBgCnJhcGljZ2VuIFtjb21tYW5kIG5hbWVdIFtzdWIgY29tbWFuZCBuYW1lXSAtPwpgYGAKCkZvciBleGFtcGxlOgoKYGBgCnJhcGljZ2VuIGNzaGFycCAtPwpgYGAgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIEMjIEFQSSBjbGllbnRzCgpVc2FnZTogcmFwaWNnZW4gY3NoYXJwIFtjb21tYW5kXSBbb3B0aW9uc10KCk9wdGlvbnM6CiAgLT98LWh8LS1oZWxwICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBhdXRvcmVzdCAgICAgIEF1dG9SZXN0ICh2My4wLjAtYmV0YS4yMDIxMDUwNC4yKQogIGtpb3RhICAgICAgICAgTWljcm9zb2Z0IEtpb3RhICh2MS41LjApCiAgbnN3YWcgICAgICAgICBOU3dhZyAodjEzLjE5LjApCiAgb3BlbmFwaSAgICAgICBPcGVuQVBJIEdlbmVyYXRvciAodjcuMC4wLWJldGEpCiAgcmVmaXR0ZXIgICAgICBSZWZpdHRlciAodjAuNy4xKQogIHN3YWdnZXIgICAgICAgU3dhZ2dlciBDb2RlZ2VuIENMSSAodjMuMC4zNCkKClJ1biAnY3NoYXJwIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KCmBgYAoKYW5kCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGF1dG9yZXN0IC0/CmBgYAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBTd2FnZ2VyIC8gT3BlbiBBUEkgY2xpZW50IHVzaW5nIEF1dG9SZXN0CgpVc2FnZTogcnVuIGF1dG9yZXN0IFtvcHRpb25zXSA8c3dhZ2dlckZpbGU+IDxuYW1lc3BhY2U+IDxvdXRwdXRGaWxlPgoKQXJndW1lbnRzOgogIHN3YWdnZXJGaWxlICAgUGF0aCB0byB0aGUgU3dhZ2dlciAvIE9wZW4gQVBJIHNwZWNpZmljYXRpb24gZmlsZQogIG5hbWVzcGFjZSAgICAgRGVmYXVsdCBuYW1lc3BhY2UgdG8gaW4gdGhlIGdlbmVyYXRlZCBjb2RlCiAgb3V0cHV0RmlsZSAgICBPdXRwdXQgZmlsZW5hbWUgdG8gd3JpdGUgdGhlIGdlbmVyYXRlZCBjb2RlIHRvLiBEZWZhdWx0IGlzIHRoZSBzd2FnZ2VyRmlsZSAuY3MKCk9wdGlvbnM6CiAgLT98LWh8LS1oZWxwICBTaG93IGhlbHAgaW5mb3JtYXRpb24KYGBgCgpvciAKCmBgYApyYXBpY2dlbiB0eXBlc2NyaXB0IC0/CmBgYAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnQKClVzYWdlOiByYXBpY2dlbiB0eXBlc2NyaXB0IFtvcHRpb25zXSA8Z2VuZXJhdG9yPiA8c3dhZ2dlckZpbGU+IDxvdXRwdXRQYXRoPgoKQXJndW1lbnRzOgogIGdlbmVyYXRvciAgICAgICAgIFRoZSB0ZWNoIHN0YWNrIHRvIHVzZSBmb3IgdGhlIGdlbmVyYXRlZCBjbGllbnQgbGlicmFyeQogICAgICAgICAgICAgICAgICAgIEFsbG93ZWQgdmFsdWVzIGFyZTogQW5ndWxhciwgQXVyZWxpYSwgQXhpb3MsIEZldGNoLCBJbnZlcnNpZnksIEpRdWVyeSwgTmVzdEpTLCBOb2RlLCBSZWR1eFF1ZXJ5LAogICAgICAgICAgICAgICAgICAgIFJ4anMuCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZSBpczogQW5ndWxhci4KICBzd2FnZ2VyRmlsZSAgICAgICBQYXRoIHRvIHRoZSBTd2FnZ2VyIC8gT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmaWxlCiAgb3V0cHV0UGF0aCAgICAgICAgT3V0cHV0IGZvbGRlciB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8KICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlIGlzOiB0eXBlc2NyaXB0LWdlbmVyYXRlZC1jb2RlLgoKT3B0aW9uczoKICAtbmx8LS1uby1sb2dnaW5nICBEaXNhYmxlcyBBbmFseXRpY3MgYW5kIEVycm9yIFJlcG9ydGluZwogIC0/fC1ofC0taGVscCAgICAgIFNob3cgaGVscCBpbmZvcm1hdGlvbi4KYGBgCgojIyBVc2FnZSBFeGFtcGxlczoKCkxldCdzIHNheSB3ZSBoYXZlIGEgT3BlbkFQSSBTcGVjaWZpY2F0aW9ucyBkb2N1bWVudCBjYWxsZWQgKipTd2FnZ2VyLmpzb24qKgoKRm9yIHN0YXJ0ZXJzLCB3ZSBjYW4gdXNlIHRoZSBTd2FnZ2VyIFBldHN0b3JlIHNwZWMuIEhlcmUncyBhbiBleGFtcGxlIHBvd2Vyc2hlbGwgc2NyaXB0IGZvciBkb3dubG9hZGluZyBpdAoKYGBgCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YzL3N3YWdnZXIuanNvbiAtT3V0RmlsZSBTd2FnZ2VyLmpzb24KYGBgCgpJbiBjYXNlIHlvdSBkb24ndCBoYXZlIHRoZSBDTEkgdG9vbCBpbnN0YWxsZWQgeW91IGNhbiBpbnN0YWxsIGl0IGJ5CgpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqQXV0b1Jlc3QqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBhdXRvcmVzdCBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL0F1dG9SZXN0T3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipLaW90YSoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGtpb3RhIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vT3BlbkFwaU91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqTlN3YWcqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBuc3dhZyBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL05Td2FnT3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKioKCmBgYApyYXBpY2dlbiBjc2hhcnAgc3dhZ2dlciBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL1N3YWdnZXJPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKk9wZW5BUEkgR2VuZXJhdG9yKioKCmBgYApyYXBpY2dlbiBjc2hhcnAgb3BlbmFwaSBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL09wZW5BcGlPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSAqKkpNZXRlcioqIHRlc3QgcGxhbnMKCmBgYApyYXBpY2dlbiBqbWV0ZXIgU3dhZ2dlci5qc29uCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgZm9yICoqVHlwZVNjcmlwdCoqCgpgYGAKcmFwaWNnZW4gdHlwZXNjcmlwdCBBbmd1bGFyIFN3YWdnZXIuanNvbgpgYGAKCiMKCkZvciB0aXBzIGFuZCB0cmlja3Mgb24gc29mdHdhcmUgZGV2ZWxvcG1lbnQsIGNoZWNrIG91dCBbbXkgYmxvZ10oaHR0cHM6Ly9jaHJpc3RpYW5oZWxsZS5jb20pCgpJZiB5b3UgZmluZCB0aGlzIHVzZWZ1bCBhbmQgZmVlbCBhIGJpdCBnZW5lcm91cyB0aGVuIGZlZWwgZnJlZSB0byBbYnV5IG1lIGEgY29mZmVlIOKYlV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9jaHJpc3RpYW5oZWxsZSkKCg== - readmeEtag: '"888856dad72b02f2582ee2b8ec7ceb7438934472a5cf4ed5edd4df00fef5e4df"' - readmeLastModified: Fri, 04 Aug 2023 19:21:35 GMT + WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2diMmRvZTN0Z3dqdDQ3Y24vYnJhbmNoL21hc3Rlcj9zdmc9dHJ1ZSldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9icmFuY2gvbWFzdGVyKQohW0NMSSBUb29sXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi93b3JrZmxvd3MvQ0xJJTIwVG9vbC9iYWRnZS5zdmcpCiFbVlNJWF0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTSVgvYmFkZ2Uuc3ZnKQohW1ZTIE1hY10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTJTIwTWFjL2JhZGdlLnN2ZykKIVtTbW9rZSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1Ntb2tlJTIwVGVzdHMvYmFkZ2Uuc3ZnKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQoKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3YvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yP2xhYmVsPU1hcmtldHBsYWNlKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikgClshW0Rvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL2QvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yP2xhYmVsPVZTJTIwMjAxOSldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IpClshW1JhdGluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3N0YXJzL0NocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IpClshW0Rvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL2QvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yMjAyMj9sYWJlbD1WUyUyMDIwMjIpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yMjAyMikgClshW1JhdGluZ10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3N0YXJzL0NocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BUElDbGllbnRDb2RlR2VuZXJhdG9yMjAyMikKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvdi9yYXBpY2dlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikKWyFbTnVHZXRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnVnZXQvZHQvcmFwaWNnZW4uc3ZnP3N0eWxlPWZsYXQtc3F1YXJlJmxhYmVsPW51Z2V0KV0oaHR0cDovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvcmFwaWNnZW4pCgpbIVtidXltZWFjb2ZmZWVdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvYnV5JTIwbWUlMjBhJTIwY29mZmVlLWRvbmF0ZS15ZWxsb3cuc3ZnKV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9jaHJpc3RpYW5oZWxsZSkKWyFbSm9pbiB0aGUgY2hhdCBhdCBodHRwczovL2dpdHRlci5pbS9hcGljbGllbnRjb2RlZ2VuL2NvbW11bml0eV0oaHR0cHM6Ly9iYWRnZXMuZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5LnN2ZyldKGh0dHBzOi8vZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5P3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvcgpBIGNvbGxlY3Rpb24gb2YgVmlzdWFsIFN0dWRpbyBDIyBjdXN0b20gdG9vbCBjb2RlIGdlbmVyYXRvcnMgZm9yIFN3YWdnZXIgLyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMKCiMjIyMgRG93bmxvYWQKCi0gKipbVmlzdWFsIFN0dWRpbyAyMDIyXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9Q2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMikqKgotICoqW1Zpc3VhbCBTdHVkaW8gMjAxOV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcikqKgotICoqW1Zpc3VhbCBTdHVkaW8gMjAxN10oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMTcpKioKLSAqKltWaXN1YWwgU3R1ZGlvIGZvciBNYWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9hcGljbGllbnRjb2RlZ2VuL3JlbGVhc2VzL2xhdGVzdCkqKi4gRm9sbG93ICoqW3RoZXNlIGluc3RydWN0aW9uc10oI3Zpc3VhbC1zdHVkaW8tZm9yLW1hYy0xKSoqIGZvciB1cGRhdGUgY29udmVuaWVuY2Ugb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgojIyBGZWF0dXJlcwoKLSBTdXBwb3J0cyBWaXN1YWwgU3R1ZGlvIDIwMTcsIDIwMTksIDIwMjIsIGFuZCBbVmlzdWFsIFN0dWRpbyBmb3IgTWFjXSgjdmlzdWFsLXN0dWRpby1mb3ItbWFjLTEpCi0gQWRkIE5ldyBSRVNUIEFQSSBDbGllbnQgdG8gYSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIFVSTCAoZS5nIGh0dHBzOi8vcGV0c3RvcmUuc3dhZ2dlci5pby92Mi9zd2FnZ2VyLmpzb24pIHVzaW5nIFtBdXRvUmVzdF0oaHR0cHM6Ly9naXRodWIuY29tL0F6dXJlL2F1dG9yZXN0KSwgW05Td2FnXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnKSwgW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbiksIG9yIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKLSBEZWZpbmUgY3VzdG9tIG5hbWVzcGFjZSBmb3IgdGhlIGdlbmVyYXRlZCBmaWxlCi0gQXV0by11cGRhdGluZyBvZiBnZW5lcmF0ZWQgY29kZSBmaWxlIHdoZW4gY2hhbmdlcyBhcmUgbWFkZSB0byB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIEpTT04gb3IgWUFNTCBmaWxlCi0gR2VuZXJhdGUgY29kZSB1c2luZyBhbiBbTlN3YWdTdHVkaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcvd2lraS9OU3dhZ1N0dWRpbykgc3BlY2lmaWNhdGlvbiBmaWxlIGJ5IGluY2x1ZGluZyBpdCBpbiB0aGUgcHJvamVjdCBhbmQgdXNpbmcgdGhlICoqR2VuZXJhdGUgd2l0aCBOU3dhZyoqIGNvbnRleHQgbWVudQoKCiMjIyBDdXN0b20gVG9vbHMKCi0gKioqTlN3YWdDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBbTlN3YWcuQ29kZUdlbmVyYXRpb24uQ1NoYXJwXShodHRwczovL2dpdGh1Yi5jb20vUlN1dGVyL05Td2FnL3dpa2kvQ1NoYXJwQ2xpZW50R2VuZXJhdG9yKSBbbnVnZXQgcGFja2FnZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycC8pICoqdjEzLjE5LjAqKgoKLSAqKipPcGVuQXBpQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKltPcGVuQVBJIEdlbmVyYXRvciB2Ny4wLjAtYmV0YV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjcuMC4wLWJldGEpKiouClRoZSBvdXRwdXQgZmlsZSBpcyB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYWxsIHRoZSBmaWxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIHRvb2wgd2l0aDoKYCBnZW5lcmF0ZSAtZyBjc2hhcnAgLS1pbnB1dC1zcGVjIFtzd2FnZ2VyIGZpbGVdIC0tb3V0cHV0IFtvdXRwdXQgZmlsZV0gLURhcGlUZXN0cz1mYWxzZSAtRG1vZGVsVGVzdHM9ZmFsc2UgLURwYWNrYWdlTmFtZT1bZGVmYXVsdCBuYW1lc3BhY2VdIC0tc2tpcC1vdmVyd3JpdGVgCgotICoqKktpb3RhQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgTWljcm9zb2Z0IHByb2plY3QgKipbS2lvdGEgdjEuNS4wXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvb3BlbmFwaS9raW90YS8pKiogZ2VuZXJhdG9yLiAKVGhlIG91dHB1dCBmaWxlIGlzIHRoZSByZXN1bHQgb2YgbWVyZ2luZyBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZCB1c2luZyB0aGUgS2lvdGEgZG90bmV0IHRvb2wgd2l0aDoKYCBnZW5lcmF0ZSAtbCBDU2hhcnAgLWQgW3N3YWdnZXIgZmlsZV0gLW8gW291dHB1dCBmaWxlXSAtbiBbZGVmYXVsdCBuYW1lc3BhY2VdYAoKLSAqKipTd2FnZ2VyQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKlN3YWdnZXIgQ29kZWdlbiBDTEkgdjMuMC4zNCoqLgpUaGUgb3V0cHV0IGZpbGUgaXMgdGhlIHJlc3VsdCBvZiBtZXJnaW5nIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBTd2FnZ2VyIENvZGVnZW4gQ0xJIHRvb2wgd2l0aDoKYCBnZW5lcmF0ZSAtbCBjc2hhcnAgLS1pbnB1dC1zcGVjIFtzd2FnZ2VyIGZpbGVdIC0tb3V0cHV0IFtvdXRwdXQgZmlsZV0gLURhcGlUZXN0cz1mYWxzZSAtRG1vZGVsVGVzdHM9ZmFsc2UgLURwYWNrYWdlTmFtZT1bZGVmYXVsdCBuYW1lc3BhY2VdIC0tc2tpcC1vdmVyd3JpdGVgCgotICoqKkF1dG9SZXN0Q29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKkF1dG9SZXN0IHYzLjAuMC1iZXRhLjIwMjEwNTA0LjIqKiBmb3IgT3BlbkFQSSB2MyBhbmQgKipBdXRvUmVzdCB2Mi4wLjQ0MTcqKiBmb3IgT3BlbkFQSSB2Mi4gClRoZSByZXN1bHRpbmcgZmlsZSBpcyB0aGUgZXF1aXZhbGVudCBvZiB1c2luZyB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgd2l0aDorCmAgLS1jc2hhcnAgLS1pbnB1dC1maWxlPVtzd2FnZ2VyIGZpbGVdIC0tb3V0cHV0LWZpbGU9W291dHB1dCBmaWxlXSAtLW5hbWVzcGFjZT1bZGVmYXVsdCBuYW1lc3BhY2VdIC0tYWRkLWNyZWRlbnRpYWxzYAoKLSAqKipSZWZpdHRlckNvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgaW50ZWZhY2UgZm9yIFtSZWZpdF0oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0aXZldWkvcmVmaXQpIHVzaW5nIFtSZWZpdHRlci5Db3JlXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIFtudWdldCBwYWNrYWdlXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUmVmaXR0ZXIuQ29yZS8pICoqdjAuNy4yKiouClRoZSBvdXRwdXQgZmlsZSBjb250YWlucyBhIFJlZml0IGludGVyZmFjZSBnZW5lcmF0ZWQgYnkgW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpIGFuZCBjb250cmFjdHMgZ2VuZXJhdGVkIHVzaW5nIFtOU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnBdKGh0dHBzOi8vZ2l0aHViLmNvbS9SU3V0ZXIvTlN3YWcvd2lraS9DU2hhcnBDbGllbnRHZW5lcmF0b3IpIFtudWdldCBwYWNrYWdlXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTlN3YWcuQ29kZUdlbmVyYXRpb24uQ1NoYXJwLykKCgojIyMgRGVwZW5kZW5jaWVzCgpUaGUgY3VzdG9tIHRvb2wgY29kZSBnZW5lcmF0b3JzIHBpZ2d5IGJhY2sgb24gdG9wIG9mIHdlbGwga25vd24gT3BlbiBBUEkgY2xpZW50IGNvZGUgZ2VuZXJhdG9ycyBsaWtlICoqQXV0b1Jlc3QqKiwgKipOU3dhZyoqLCAqKk9wZW5BUEkgR2VuZXJhdG9yKiosICoqTWljcm9zb2Z0IEtpb3RhKiosICoqUmVmaXR0ZXIqKiwgYW5kICoqU3dhZ2dlciBDb2RlZ2VuIENMSSoqLiBUaGVzZSB0b29scyByZXF1aXJlIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhbmQgdGhlIFtKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnRdKGh0dHBzOi8vamF2YS5jb20vZW4vZG93bmxvYWQvbWFudWFsLmpzcCkgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSBkZXZlbG9wZXJzIG1hY2hpbmUuIEFsdGVybmF0aXZlIEphdmEgU0RLIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIHRoZSBbT3BlbkpES10oaHR0cHM6Ly9hZG9wdG9wZW5qZGsubmV0KSB3b3JrcyBmaW5lIHdpdGggdGhpcyBleHRlbnNpb24uIEJ5IGRlZmF1bHQsIHRoZSBwYXRoIHRvICoqamF2YS5leGUqKiBpcyByZWFkIGZyb20gdGhlICoqSkFWQV9IT01FKiogZW52aXJvbm1lbnQgdmFyaWFibGUsIGJ1dCBpcyBhbHNvIGNvbmZpZ3VyYWJsZSBpbiB0aGUgU2V0dGluZ3Mgc2NyZWVuCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogYW5kICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBhcmUgZGlzdHJpYnV0ZWQgYXMgSkFSIGZpbGVzIGFuZCBhcmUgZG93bmxvYWRlZCBvbiBkZW1hbmQgYnV0IHJlcXVpcmVzIHRoZSBKYXZhIFNESyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIG1hY2hpbmUuICoqQXV0b1Jlc3QqKiBpcyBpbnN0YWxsZWQgb24tZGVtYW5kIHZpYSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYXMgYSBnbG9iYWwgdG9vbCBhbmQgdXNlcyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uLiAqKk1pY3Jvc29mdCBLaW90YSoqIGlzIGluc3RhbGxlZCBvbi1kZW1hbmQgYXMgYSAuTkVUIFRvb2wgYW5kIHJlcXVpcmVzIC5ORVQgNy4wLiBUaGlzIG1lYW5zIHRoYXQgdXNpbmcgdGhlc2UgY3VzdG9tIHRvb2xzIGhhdmUgYW4gaW5pdGlhbCBkZWxheSB1cG9uIGZpcnN0IHRpbWUgdXNlLiAKCioqTlN3YWdTdHVkaW8qKiBpcyBzdGFuZCBhbG9uZSBVSSB0b29sIGZvciBlZGl0aW5nIGEgKioubnN3YWcqKiBzcGVjaWZpY2F0aW9uIGZpbGUgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyB0b29sIGlzIG9wdGlvbmFsIHRvIGluc3RhbGwgYW5kIG9mZmljaWFsIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgW05Td2FnIFdpa2kgb24gR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pLiBJZiAqKk5Td2FnU3R1ZGlvKiogaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgbWFjaGluZSB0aGVuIHRoZSBWaXN1YWwgU3R1ZGlvIEV4dGVuc2lvbiB3aWxsIGluc3RhbGwgdGhlICoqTlN3YWcgQ0xJKiogdmlhIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhcyBhIGdsb2JhbCB0b29sIHVzaW5nIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24uIAoKVGhlICoqTlN3YWcqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2UKClRoZSAqKlJlZml0dGVyKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZWZpdF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0LzcuMC4wKSBOdUdldCBwYWNrYWdlCgpUaGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXM6Ci0gW1Jlc3RTaGFycF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1Jlc3RTaGFycC8xMDguMC4yKQotIFtKc29uU3ViVHlwZXNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Kc29uU3ViVHlwZXMvMi4wLjEpCi0gW1BvbGx5XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvUG9sbHkvNy4yLjQpCi0gW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpCgpUaGUgcHJvamVjdCAqKktpb3RhKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyBOdUdldCBwYWNrYWdlcwotIFtNaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLkFic3RyYWN0aW9ucy8xLjMuMCkKLSBbTWljcm9zb2Z0Lktpb3RhLkh0dHAuSHR0cENsaWVudExpYnJhcnldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuSHR0cC5IdHRwQ2xpZW50TGlicmFyeS8xLjAuNikKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uRm9ybV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLkZvcm0vMS4wLjEpCi0gW01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5UZXh0LzEuMC4zKQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uSnNvbi8xLjAuOCkKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uTXVsdGlwYXJ0XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uTXVsdGlwYXJ0LzEuMC4wKQotIFtNaWNyb3NvZnQuS2lvdGEuQXV0aGVudGljYXRpb24uQXp1cmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuQXV0aGVudGljYXRpb24uQXp1cmUvMS4wLjMpCi0gW0F6dXJlLklkZW50aXR5XShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvQXp1cmUuSWRlbnRpdHkvMS45LjApCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZXN0U2hhcnBdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZXN0U2hhcnAvMTA1LjEuMCkgYW5kIFtKc29uU3ViVHlwZXNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9Kc29uU3ViVHlwZXMvMS4yLjApIE51R2V0IHBhY2thZ2VzCgpUaGUgKipBdXRvUmVzdCoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBbTWljcm9zb2Z0LlJlc3QuQ2xpZW50UnVudGltZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5SZXN0LkNsaWVudFJ1bnRpbWUvMi4zLjI0KSBhbmQgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2VzCgpUaGlzIFZpc3VhbCBTdHVkaW8gRXh0ZW5zaW9uIHdpbGwgYXV0b21hdGljYWxseSBhZGQgdGhlIHJlcXVpcmVkIE51R2V0IHBhY2thZ2VzIHRoYXQgdGhlIGdlbmVyYXRlZCBjb2RlIGRlcGVuZHMgb24KCgojIyBTY3JlZW5zaG90cwoKIVtBZGQgLSBBUEkgQ2xpZW50IGZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShpbWFnZXMvYWRkLW5ldy1tZW51LnBuZykKCiFbRW50ZXIgVVJMIHRvIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL2FkZC1uZXctZGlhbG9nLnBuZykKCiFbU29sdXRpb24gRXhwbG9yZXIgQ29udGV4dCBNZW51c10oaW1hZ2VzL3NvbHV0aW9uLWV4cGxvcmVyLWNvbnRleHQtbWVudS5qcGcpCgohW05Td2FnIFN0dWRpbyBDb250ZXh0IE1lbnVdKGltYWdlcy9uc3dhZ3N0dWRpby1jb250ZXh0LW1lbnUuanBnKQoKCiMjIyBTZXR0aW5ncwoKVGhpcyBleHRlbnNpb24gd2lsbCBieSBkZWZhdWx0IG1ha2Ugc29tZSBhc3N1bXB0aW9ucyBvbiB0aGUgaW5zdGFsbGF0aW9uIHBhdGhzIGZvciAqKkphdmEqKiwgKipOU3dhZyoqIGFuZCAqKk5QTSoqIGJ1dCBhbHNvIHByb3ZpZGVzIG9wdGlvbiBwYWdlcyBmb3IgY29uZmlndXJpbmcgdGhpcy4gVGhlICoqU3dhZ2dlciBDb2RlZ2VuIENMSSoqIGFuZCB0aGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIEpBUiBmaWxlcyBhcmUgYnkgZGVmYXVsdCBkb3dubG9hZGVkIHRvIHRoZSB1c2VyIFRFTVAgZm9sZGVyIGJ1dCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgdG8gdXNlIGV4aXN0aW5nIEpBUiBmaWxlcwoKIVtPcHRpb25zIC0gR2VuZXJhbF0oaW1hZ2VzL29wdGlvbnMtZ2VuZXJhbC5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgQXV0b1Jlc3QgZ2VuZXJhdGVzIGNvZGUgYmFzZWQgb24gdGhlIEMjIGdlbmVyYXRvciBzZXR0aW5ncyB0aGF0IHRoZSBBdXRvUmVzdCBDTEkgdG9vbCBwcm92aWRlcwoKIVtPcHRpb25zIC0gQXV0b1Jlc3RdKGltYWdlcy9vcHRpb25zLWF1dG9yZXN0LnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBOU3dhZyBnZW5lcmF0ZXMgY29kZSB1c2luZyB0aGUgcHJvcGVydGllcyBleHBvc2VkIGJ5IHRoZSBOU3dhZyBOdUdldCBwYWNrYWdlCgohW09wdGlvbnMgLSBOU3dhZ10oaW1hZ2VzL29wdGlvbnMtbnN3YWcucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IHRoZSAqKi5uc3dhZyoqIGZpbGUgaXMgZ2VuZXJhdGVkIHVzaW5nIGEgc3Vic2V0IG9mIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbiBOU3dhZyBTdHVkaW8KCiFbT3B0aW9ucyAtIE5Td2FnIFN0dWRpb10oaW1hZ2VzL29wdGlvbnMtbnN3YWdzdHVkaW8ucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IE9wZW5BUEkgR2VuZXJhdG9yIGdlbmVyYXRlcyBjb2RlIHVzaW5nIHRoZSBhZGRpdGlvbmFsIG9wdGlvbmFsIHByb3BlcnRpZXMgdGhhdCB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgQ0xJIHRvb2wgcHJvdmlkZXMKCiFbT3B0aW9ucyAtIE9wZW5BUEkgR2VuZXJhdG9yXShpbWFnZXMvb3B0aW9ucy1vcGVuYXBpZ2VuZXJhdG9yLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBSZWZpdHRlciBnZW5lcmF0ZXMgdGhlIFJlZml0IGludGVyZmFjZS4gVGhpcyBhbGxvd3MgeW91IHRvIGNvbmZpZ3VyZSB3aGV0aGVyIHRvIHJldHVybiB0aGUgdHlwZSBkaXJlY3RseSBvciB3cmFwIGl0IGluc2lkZSBhbiBgSUFwaVJlc3BvbnNlPFQ+YC4gWW91IGNhbiBhbHNvIGRpc2FibGUgZ2VuZXJhdGluZyBjb250cmFjdHMgb3IgWE1MIGRvYyBzdHlsZSBjb21tZW50cwoKIVtPcHRpb25zIC0gUmVmaXR0ZXJdKGltYWdlcy9yZWZpdHRlci1vcHRpb25zLnBuZykKClRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGVycm9ycyBhbmQgdHJhY2tzIGZlYXR1cmUgdXNhZ2VzIHRvIGEgc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20pIGFuZCBbQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9hcHAtaW5zaWdodHMtb3ZlcnZpZXc/V1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpLiBUaGlzIGlzIGRvbmUgYW5vbnltb3VzbHkgdXNpbmcgYSBzdXBwb3J0IGtleSBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggb2YgdXNlcm5hbWVAaG9zdAoKIVtPcHRpb25zIC0gQW5hbHl0aWNzXShpbWFnZXMvc3VwcG9ydC1rZXkucG5nKQoKCiMjIyBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKCiFbQWRkIC0gQVBJIENsaWVudCBmcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL3ZzbWFjLWFkZC1uZXctbWVudS5wbmcpCgohW0VudGVyIFVSTCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy92c21hYy1hZGQtbmV3LWRpYWxvZy5wbmcpCgohW1NvbHV0aW9uIEV4cGxvcmVyIENvbnRleHQgTWVudXNdKGltYWdlcy92c21hYy1nZW5lcmF0ZS1jb2RlLnBuZykKCiFbTlN3YWcgU3R1ZGlvIENvbnRleHQgTWVudV0oaW1hZ2VzL3ZzbWFjLW5zd2FnLXN0dWRpby5wbmcpCgoKIyBJbnN0YWxsYXRpb24KClRoZSBWaXN1YWwgU3R1ZGlvIGV4dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gVmlzdWFsIFN0dWRpbyAyMDE5IGFuZCAyMDIyIHZpYSB0aGUgKipFeHRlbnNpb25zIERpYWxvZyBCb3gqKi4gVGhlIHByb2Nlc3MgaXMgYmVzdCBkZXNjcmliZWQgaW4gdGhlIG9mZmljaWFsIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGZvciBbTWFuYWdpbmcgZXh0ZW5zaW9ucyBmb3IgVmlzdWFsIFN0dWRpb10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdmlzdWFsc3R1ZGlvL2lkZS9maW5kaW5nLWFuZC11c2luZy12aXN1YWwtc3R1ZGlvLWV4dGVuc2lvbnM/dmlldz12cy0yMDE5JldULm1jX2lkPURULU1WUC01MDA0ODIyKQoKIyMgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgpUaGlzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGZvciAqKlZpc3VhbCBTdHVkaW8gZm9yIE1hYyoqIGlzIGN1cnJlbnRseSBhIGJpdCB0cm91Ymxlc29tZSBhcyB0aGUgTW9ub0RldmVsb3AgQWRkaW4gUmVwb3NpdG9yeSBpcyBjdXJyZW50bHkgbm90IGFjY2VwdGluZyBuZXcgdXNlcnMgc28gSSBjYW4ndCByZWFsbHkgcmVnaXN0ZXIgYW5kIHNldHVwIG15IGV4dGVuc2lvbi4KClRoZXJlIGFyZSAyIHdheXMgb2YgaW5zdGFsbGluZyBteSBleHRlbnNpb24gb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjOiBBZGRpbmcgYSBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkgb3IgSW5zdGFsbGluZyB0aGUgKioubXBhY2sqKiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIEV4dGVuc2lvbnMgTWFuYWdlcgoKIyMjIEFkZGluZyBhIG5ldyBleHRlbnNpb24gcmVwb3NpdG9yeQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86CgotIE9wZW4gdGhlIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyAqKkV4dGVuc2lvbiBNYW5hZ2VyKioKLSBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIFNlbGVjdCB0aGUgKipHYWxsZXJ5KiogVGFiCi0gRXhwYW5kIHRoZSBSZXBvc2l0b3J5IGRyb3AgZG93biBib3ggYW5kIHNlbGVjdCAqKk1hbmFnZSBSZXBvc2l0b3JpZXMqKgoKIVtNYW5hZ2UgUmVwb3NpdG9yaWVzXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tYW5hZ2UtcmVwb3NpdG9yaWVzLnBuZykKCi0gUHJlc3Mgb24gdGhlICoqQWRkKiogYnV0dG9uIHRvIGFkZCBhIG5ldyBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkKCiFbTWFuYWdlIFJlcG9zaXRvcmllc10oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtcmVwb3NpdG9yaWVzLnBuZykKCi0gUmVnaXN0ZXIgYW4gb25saW5lIHJlcG9zaXRvcnkgYXQgKipodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbS92c21hYy9tYWluLm1yZXAqKgotIENsaWNrICoqT0sqKgoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtYWRkLXJlcG9zaXRvcnkucG5nKQoKLSBOb3cgbXkgZXh0ZW5zaW9uIHJlcG9zaXRvcnkgaXMgYWRkZWQgdG8gdGhlIGxpc3QKLSBNYWtlIHN1cmUgdGhhdCB0aGlzIGlzIGVuYWJsZWQgKGluZGljYXRlZCBieSBhIGNoZWNrIGJveCkKCiFbQWRkIFJlcG9zaXRvcnkgRGlhbG9nXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1hZGRlZC1yZXBvc2l0b3J5LnBuZykKCi0gWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBzZWUgbXkgZXh0ZW5zaW9ucyBmcm9tIHRoZSAqKkdhbGxlcnkqKiB0YWIKCiFbQWRkZWQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtZ2FsbGVyeS5wbmcpCgotIEJ5IGFkZGluZyBteSBleHRlbnNpb24gcmVwb3NpdG9yeSB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNvbnZlbmllbnRseSB1cGRhdGUgbXkgZXh0ZW5zaW9uIHVzaW5nIHRoZSBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgRXh0ZW5zaW9uIE1hbmFnZXIKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGVzLnBuZykKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGUtaW5zdGFsbC5wbmcpCgohW0FkZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtdXBkYXRlLWluc3RhbGwtcHJvZ3Jlc3MucG5nKQoKIyMjIEluc3RhbGxpbmcgdGhlICoqLm1wYWNrKiogZmlsZSBkaXJlY3RseQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0gRG93bmxvYWQgdGhlIGxhdGVzdCAqKi5tcGFjayBmaWxlKiogZnJvbSB0aGUgW0xhdGVzdCBHaXRodWIgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vcmVsZWFzZXMvbGF0ZXN0KQotIE5vdyBmcm9tIHdpdGhpbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgeW91IG5lZWQgdG8gbGF1bmNoIHRoZSAqKkV4dGVuc2lvbnMgRGlhbG9nIEJveCoqLiBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIENsaWNrIG9uIHRoZSAqKkluc3RhbGwgZnJvbSBGaWxlKiogYnV0dG9uCgohW01hbnVhbGx5IGluc3RhbGwgLm1wYWNrIGZpbGVdKGltYWdlcy92c21hYy1leHRlbnNpb25zLWluc3RhbGwucG5nKQoKLSBCcm93c2UgdG8gdGhlIC5tcGFjayBmaWxlIGFuZCBzZWxlY3QgaXQuIFlvdSB3aWxsIGJlIHByb21wdGVkIHdpdGggYSBjb25maXJtYXRpb24gZGlhbG9nCgohW0NvbmZpcm0gLm1wYWNrIGZpbGUgaW5zdGFsbF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtaW5zdGFsbC1jb25maXJtLnBuZykKCi0gQ2xpY2sgKipJbnN0YWxsKiogYW5kIHJlc3RhcnQgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCi0gVG8gVmVyaWZ5IHRoYXQgdGhlIEFkZC1pbiB3YXMgaW5zdGFsbGVkIHlvdSBjYW4gcmUtb3BlbiB0aGUgRXh0ZW5zaW9ucyBEaWFsb2cgQm94LCBzZWxlY3QgdGhlICoqSW5zdGFsbGVkKiogdGFiIGFuZCBleHBhbmQgdGhlICoqSURFIEV4dGVuc2lvbnMqKi4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aGUgKipSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IqKi4KCi0gVW5pbnN0YWxsaW5nIHRoZSBBZGQtaW4gaXMgZG9uZSBpbiB0aGlzIHNhbWUgZGlhbG9nIGJveCBieSBjbGlja2luZyB0aGUgKipVbmluc3RhbGwqKiBidXR0b24KCiFbTWFudWFsbHkgdW5pbnN0YWxsIEFkZC1pbl0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtdW5pbnN0YWxsLnBuZykKCgojIENyb3NzIFBsYXRmb3JtIENvbW1hbmQgTGluZSBUb29sCkFsbCBjdXN0b20gdG9vbHMgbWVudGlvbmVkIGFib3ZlIGFyZSBhbHNvIGltcGxlbWVudGVkIGluIGEgY3Jvc3MgcGxhdGZvcm0gY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uCgojIyMjIFJlcXVpcmVtZW50cwotIC5ORVQgNi4wIHJ1bnRpbWUKLSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQKLSBOUE0KCiMjIyBJbnN0YWxsYXRpb24KVGhlIHRvb2wgY2FuIGJlIGluc3RhbGxlZCBhcyBhIC5ORVQgQ29yZSBnbG9iYWwgdG9vbCB0aGF0IHlvdSBjYW4gY2FsbCBmcm9tIHRoZSBzaGVsbCAvIGNvbW1hbmQgbGluZQpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKb3IgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgW2hlcmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdG9vbAoKIyMjIFVzYWdlClNpbmNlIHRoZSB0b29sIGlzIHB1Ymxpc2hlZCBhcyBhIC5ORVQgQ29yZSBUb29sLCBpdCBjYW4gYmUgbGF1bmNoZWQgZnJvbSBhbnl3aGVyZSB1c2luZyBhbnkgY29tbWFuZCBsaW5lIGludGVyZmFjZSBieSBjYWxsaW5nICoqcmFwaWNnZW4qKi4KVGhlIGhlbHAgaW5mb3JtYXRpb24gaXMgZGlzcGxheWVkIHdoZW4gbm90IHNwZWNpZnlpbmcgYW55IGFyZ3VtZW50cyB0byAqKnJhcGljZ2VuKioKCmBgYApVc2FnZTogcmFwaWNnZW4gW2NvbW1hbmRdIFtvcHRpb25zXQoKT3B0aW9uczoKICAtdnwtLXZlcmJvc2UgICAgICAgU2hvdyB2ZXJib3NlIG91dHB1dAogIC0/fC1ofC0taGVscCAgICAgICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBjc2hhcnAgICAgICAgICAgICAgR2VuZXJhdGUgQyMgQVBJIGNsaWVudHMKICBqbWV0ZXIgICAgICAgICAgICAgR2VuZXJhdGUgQXBhY2hlIEpNZXRlciB0ZXN0IHBsYW5zCiAgb3BlbmFwaS1nZW5lcmF0b3IgIEdlbmVyYXRlIGNvZGUgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjAuMC1iZXRhKS4KICAgICAgICAgICAgICAgICAgICAgU2VlIHN1cHBvcnRlZCBnZW5lcmF0b3JzIGF0IGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9kb2NzL2dlbmVyYXRvcnMvCiAgdHlwZXNjcmlwdCAgICAgICAgIEdlbmVyYXRlIFR5cGVTY3JpcHQgQVBJIGNsaWVudHMKClJ1biAncmFwaWNnZW4gW2NvbW1hbmRdIC0/fC1ofC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLgpgYGAKClNvbWUgaGVscCBpbmZvcm1hdGlvbiBpcyBhbHNvIHByb3ZpZGVkIHBlciBjb21tYW5kIGFuZCBjYW4gYmUgbGF1bmNoZWQgYnkgCgpgYGAKcmFwaWNnZW4gW2NvbW1hbmQgbmFtZV0gLT8KYGBgCgpvcgoKYGBgCnJhcGljZ2VuIFtjb21tYW5kIG5hbWVdIFtzdWIgY29tbWFuZCBuYW1lXSAtPwpgYGAKCkZvciBleGFtcGxlOgoKYGBgCnJhcGljZ2VuIGNzaGFycCAtPwpgYGAgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIEMjIEFQSSBjbGllbnRzCgpVc2FnZTogcmFwaWNnZW4gY3NoYXJwIFtjb21tYW5kXSBbb3B0aW9uc10KCk9wdGlvbnM6CiAgLT98LWh8LS1oZWxwICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBhdXRvcmVzdCAgICAgIEF1dG9SZXN0ICh2My4wLjAtYmV0YS4yMDIxMDUwNC4yKQogIGtpb3RhICAgICAgICAgTWljcm9zb2Z0IEtpb3RhICh2MS41LjApCiAgbnN3YWcgICAgICAgICBOU3dhZyAodjEzLjE5LjApCiAgb3BlbmFwaSAgICAgICBPcGVuQVBJIEdlbmVyYXRvciAodjcuMC4wLWJldGEpCiAgcmVmaXR0ZXIgICAgICBSZWZpdHRlciAodjAuNy4yKQogIHN3YWdnZXIgICAgICAgU3dhZ2dlciBDb2RlZ2VuIENMSSAodjMuMC4zNCkKClJ1biAnY3NoYXJwIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KCmBgYAoKYW5kCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGF1dG9yZXN0IC0/CmBgYAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBTd2FnZ2VyIC8gT3BlbiBBUEkgY2xpZW50IHVzaW5nIEF1dG9SZXN0CgpVc2FnZTogcnVuIGF1dG9yZXN0IFtvcHRpb25zXSA8c3dhZ2dlckZpbGU+IDxuYW1lc3BhY2U+IDxvdXRwdXRGaWxlPgoKQXJndW1lbnRzOgogIHN3YWdnZXJGaWxlICAgUGF0aCB0byB0aGUgU3dhZ2dlciAvIE9wZW4gQVBJIHNwZWNpZmljYXRpb24gZmlsZQogIG5hbWVzcGFjZSAgICAgRGVmYXVsdCBuYW1lc3BhY2UgdG8gaW4gdGhlIGdlbmVyYXRlZCBjb2RlCiAgb3V0cHV0RmlsZSAgICBPdXRwdXQgZmlsZW5hbWUgdG8gd3JpdGUgdGhlIGdlbmVyYXRlZCBjb2RlIHRvLiBEZWZhdWx0IGlzIHRoZSBzd2FnZ2VyRmlsZSAuY3MKCk9wdGlvbnM6CiAgLT98LWh8LS1oZWxwICBTaG93IGhlbHAgaW5mb3JtYXRpb24KYGBgCgpvciAKCmBgYApyYXBpY2dlbiB0eXBlc2NyaXB0IC0/CmBgYAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnQKClVzYWdlOiByYXBpY2dlbiB0eXBlc2NyaXB0IFtvcHRpb25zXSA8Z2VuZXJhdG9yPiA8c3dhZ2dlckZpbGU+IDxvdXRwdXRQYXRoPgoKQXJndW1lbnRzOgogIGdlbmVyYXRvciAgICAgICAgIFRoZSB0ZWNoIHN0YWNrIHRvIHVzZSBmb3IgdGhlIGdlbmVyYXRlZCBjbGllbnQgbGlicmFyeQogICAgICAgICAgICAgICAgICAgIEFsbG93ZWQgdmFsdWVzIGFyZTogQW5ndWxhciwgQXVyZWxpYSwgQXhpb3MsIEZldGNoLCBJbnZlcnNpZnksIEpRdWVyeSwgTmVzdEpTLCBOb2RlLCBSZWR1eFF1ZXJ5LAogICAgICAgICAgICAgICAgICAgIFJ4anMuCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZSBpczogQW5ndWxhci4KICBzd2FnZ2VyRmlsZSAgICAgICBQYXRoIHRvIHRoZSBTd2FnZ2VyIC8gT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmaWxlCiAgb3V0cHV0UGF0aCAgICAgICAgT3V0cHV0IGZvbGRlciB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8KICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlIGlzOiB0eXBlc2NyaXB0LWdlbmVyYXRlZC1jb2RlLgoKT3B0aW9uczoKICAtbmx8LS1uby1sb2dnaW5nICBEaXNhYmxlcyBBbmFseXRpY3MgYW5kIEVycm9yIFJlcG9ydGluZwogIC0/fC1ofC0taGVscCAgICAgIFNob3cgaGVscCBpbmZvcm1hdGlvbi4KYGBgCgojIyBVc2FnZSBFeGFtcGxlczoKCkxldCdzIHNheSB3ZSBoYXZlIGEgT3BlbkFQSSBTcGVjaWZpY2F0aW9ucyBkb2N1bWVudCBjYWxsZWQgKipTd2FnZ2VyLmpzb24qKgoKRm9yIHN0YXJ0ZXJzLCB3ZSBjYW4gdXNlIHRoZSBTd2FnZ2VyIFBldHN0b3JlIHNwZWMuIEhlcmUncyBhbiBleGFtcGxlIHBvd2Vyc2hlbGwgc2NyaXB0IGZvciBkb3dubG9hZGluZyBpdAoKYGBgCkludm9rZS1XZWJSZXF1ZXN0IC1VcmkgaHR0cHM6Ly9wZXRzdG9yZS5zd2FnZ2VyLmlvL3YzL3N3YWdnZXIuanNvbiAtT3V0RmlsZSBTd2FnZ2VyLmpzb24KYGBgCgpJbiBjYXNlIHlvdSBkb24ndCBoYXZlIHRoZSBDTEkgdG9vbCBpbnN0YWxsZWQgeW91IGNhbiBpbnN0YWxsIGl0IGJ5CgpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqQXV0b1Jlc3QqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBhdXRvcmVzdCBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL0F1dG9SZXN0T3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipLaW90YSoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGtpb3RhIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vT3BlbkFwaU91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqTlN3YWcqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBuc3dhZyBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL05Td2FnT3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKioKCmBgYApyYXBpY2dlbiBjc2hhcnAgc3dhZ2dlciBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL1N3YWdnZXJPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKk9wZW5BUEkgR2VuZXJhdG9yKioKCmBgYApyYXBpY2dlbiBjc2hhcnAgb3BlbmFwaSBTd2FnZ2VyLmpzb24gR2VuZXJhdGVkQ29kZSAuL09wZW5BcGlPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSAqKkpNZXRlcioqIHRlc3QgcGxhbnMKCmBgYApyYXBpY2dlbiBqbWV0ZXIgU3dhZ2dlci5qc29uCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgZm9yICoqVHlwZVNjcmlwdCoqCgpgYGAKcmFwaWNnZW4gdHlwZXNjcmlwdCBBbmd1bGFyIFN3YWdnZXIuanNvbgpgYGAKCiMKCkZvciB0aXBzIGFuZCB0cmlja3Mgb24gc29mdHdhcmUgZGV2ZWxvcG1lbnQsIGNoZWNrIG91dCBbbXkgYmxvZ10oaHR0cHM6Ly9jaHJpc3RpYW5oZWxsZS5jb20pCgpJZiB5b3UgZmluZCB0aGlzIHVzZWZ1bCBhbmQgZmVlbCBhIGJpdCBnZW5lcm91cyB0aGVuIGZlZWwgZnJlZSB0byBbYnV5IG1lIGEgY29mZmVlIOKYlV0oaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9jaHJpc3RpYW5oZWxsZSkKCg== + readmeEtag: '"c765df548ea7f0d517105dde9a610242e3a3addbaf513d6bb151a219997997e9"' + readmeLastModified: Tue, 08 Aug 2023 15:05:23 GMT repositoryId: 166226127 description: >- A collection of Visual Studio custom tool code generators for Swagger / @@ -9017,7 +9017,7 @@ owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: GPL-3.0 - repoEtag: '"5f8eed664f2a152d9598acfb08296848458a6e4f305c5217a721036503912e84"' + repoEtag: '"b235576c7bc986dd70376621a8c86817d5660a829862e27f6dc5d91a2cf547dc"' repoLastModified: Sun, 06 Aug 2023 04:45:41 GMT category: SDK foundInMaster: true @@ -9120,10 +9120,10 @@ archived: false stars: 101 watchers: 13 - forks: 184 + forks: 183 owner: hummingbird-me logo: https://avatars.githubusercontent.com/u/7648832?v=4 - repoEtag: '"55ee62c59a40cd9ca906fd086e39ad2f40423a32096ef7853ad2a3c6c24b3cfb"' + repoEtag: '"ef64d4b71e2412a1f00b9b9fb72d624be0f74debf16ce648f3e142226322ff8b"' repoLastModified: Thu, 15 Jun 2023 04:36:54 GMT foundInMaster: true category: Low-level Tooling @@ -9139,17 +9139,17 @@ repositoryId: 362315893 description: Generate REST API and OpenAPI documentation for your Flask project. created: '2021-04-28T02:39:57Z' - updated: '2023-08-03T12:00:27Z' + updated: '2023-08-08T07:14:35Z' language: Python archived: false - stars: 101 + stars: 102 watchers: 6 - forks: 22 + forks: 23 owner: luolingchun logo: https://avatars.githubusercontent.com/u/22740403?v=4 license: MIT - repoEtag: '"676c6504226c66f2434f25f57d5181ebb4c80b6f2c9392cbf146f726b8913e58"' - repoLastModified: Thu, 03 Aug 2023 12:00:27 GMT + repoEtag: '"a5f954049fea5da91e46b884c37d9d5696d86be9179421f3c7a81849a74a0cf0"' + repoLastModified: Tue, 08 Aug 2023 07:14:35 GMT foundInMaster: true category: Server Implementations id: 7baa4046f5397a8fd006511115871ac0 @@ -9166,17 +9166,17 @@ repositoryId: 294444776 description: OpenAPI starter repository created: '2020-09-10T15:11:31Z' - updated: '2023-08-07T16:33:55Z' + updated: '2023-08-08T22:29:10Z' language: C# archived: false - stars: 101 + stars: 102 watchers: 22 - forks: 83 + forks: 84 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"02b8032b393549661e3fd7a971fd54f18cce971f13b1b9e79285e8343ee72f0e"' - repoLastModified: Mon, 07 Aug 2023 16:33:55 GMT + repoEtag: '"9eb9cad457ea91a2b92992e7366ff812b3319f61d30605e94ab1e96508771e52"' + repoLastModified: Tue, 08 Aug 2023 22:29:10 GMT foundInMaster: true v3_1: true category: Parsers @@ -9450,7 +9450,7 @@ owner: speakeasy-api logo: https://avatars.githubusercontent.com/u/91446104?v=4 license: NOASSERTION - repoEtag: '"359c82428c2c0fa9c838c4525da7cf0fa80970a19e693c99b3ac226fb744f263"' + repoEtag: '"beddbe0cdc64264e17f892b83e31b93ae37d7b1b64a7f550f9d28b79e0db6f42"' repoLastModified: Mon, 31 Jul 2023 00:49:53 GMT category: Parsers foundInMaster: true @@ -9545,17 +9545,17 @@ API Insights is an open-source tool that helps developers improve API quality and security. created: '2022-09-06T21:40:29Z' - updated: '2023-08-07T10:51:08Z' + updated: '2023-08-08T09:16:22Z' language: Go archived: false - stars: 74 + stars: 75 watchers: 9 forks: 31 owner: cisco-developer logo: https://avatars.githubusercontent.com/u/111392027?v=4 license: Apache-2.0 - repoEtag: '"10b3b693e5bb78e7dd86de5817d11edd4c45e3f4cf92e746c5530da3283dcfc5"' - repoLastModified: Mon, 07 Aug 2023 10:51:08 GMT + repoEtag: '"0466e20f7c87a410d52c450cf9162f59a0c7ac241d99052743744111642d4e02"' + repoLastModified: Tue, 08 Aug 2023 09:16:22 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -9713,7 +9713,7 @@ owner: jellyfin logo: https://avatars.githubusercontent.com/u/45698031?v=4 license: LGPL-3.0 - repoEtag: '"ce678f4e07d6151cd885110226ec397a95b08a572e639551161ffa42d6ecc654"' + repoEtag: '"1a22a392d62334ccc5888bb5bf50694fe20a93cca596805b2308daf3b62eece9"' repoLastModified: Tue, 25 Jul 2023 14:22:28 GMT foundInMaster: true category: Testing @@ -9904,17 +9904,17 @@ repositoryId: 285621457 description: OpenAPI - Getting started, and the specification explained created: '2020-08-06T16:40:47Z' - updated: '2023-08-01T16:50:57Z' + updated: '2023-08-08T18:19:34Z' language: HTML archived: false - stars: 59 + stars: 60 watchers: 15 forks: 36 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 license: CC-BY-4.0 - repoEtag: '"35bb1634093c357e6b863966da829e9d5cc864a85eef5ee3dc27f50e77ff2394"' - repoLastModified: Tue, 01 Aug 2023 16:50:57 GMT + repoEtag: '"2d5a2c5a52a882951ab0bb6a8d44164ed5dbcccc8a5c71e4e5d783fa89b6be59"' + repoLastModified: Tue, 08 Aug 2023 18:19:34 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -10017,7 +10017,7 @@ forks: 22 owner: italia logo: https://avatars.githubusercontent.com/u/15377824?v=4 - repoEtag: '"02e45fdebacbd632eb4cd23fda4b95c7dbd582818050165cb495979ad362b17d"' + repoEtag: '"e96cf0ab629b6780bad1dd1e92e81fa23af5f7da256c106f08981c893fcb5d20"' repoLastModified: Mon, 09 Jan 2023 14:57:43 GMT foundInMaster: true category: Description Validators @@ -10304,7 +10304,7 @@ forks: 8 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 - repoEtag: '"8973a52efee942a4d289538803b8713d20a23c7c5ff57c6e2d1d28460ff01c2a"' + repoEtag: '"ff7b41ebc6cbb4505aef04839491f52b581f5d27eb230b04ae53650176cc02ad"' repoLastModified: Thu, 03 Aug 2023 08:28:30 GMT category: Parsers foundInMaster: true @@ -10511,7 +10511,7 @@ repositoryId: 598846021 description: Refit Client API Generator for OpenAPI created: '2023-02-07T23:18:12Z' - updated: '2023-08-07T17:25:25Z' + updated: '2023-08-08T22:31:37Z' language: C# archived: false stars: 40 @@ -10520,8 +10520,8 @@ owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: GPL-3.0 - repoEtag: '"20559984a3ec00babc495e129fb3e5a8a53e0a7aacaae9b6da3d9645d50d6740"' - repoLastModified: Mon, 07 Aug 2023 17:25:25 GMT + repoEtag: '"bd4d2954be93d9620c1faebc3a8f0b5470b82861089148d04824848138d5729e"' + repoLastModified: Tue, 08 Aug 2023 22:31:37 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -10544,7 +10544,7 @@ owner: SmartBear logo: https://avatars.githubusercontent.com/u/1644671?v=4 license: Apache-2.0 - repoEtag: '"f7e21c1cf8b6ba6b2cb3b7c7f3fcb2f88363996671b6e2de71185b8d62f3a3c5"' + repoEtag: '"2e2ab5036b5f5478db7cb510903231bcdd1f73c67def298fc952b8cb70667332"' repoLastModified: Mon, 03 Apr 2023 07:22:03 GMT foundInMaster: true category: Code Generators @@ -10618,16 +10618,16 @@ 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: '2023-08-08T02:40:56Z' + updated: '2023-08-08T18:44:43Z' language: JavaScript archived: false - stars: 39 + stars: 40 watchers: 8 forks: 11 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 - repoEtag: '"49c1d7cdd892ca5f834bf2d4540858bba7666cafc4034e00644bbe146490f5e5"' - repoLastModified: Tue, 08 Aug 2023 02:40:56 GMT + repoEtag: '"bde92a7e6b50756cc0a92b721f14711ee533fb8b2e419cc824f5063128a1de86"' + repoLastModified: Tue, 08 Aug 2023 18:44:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -10652,7 +10652,7 @@ owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: Apache-2.0 - repoEtag: '"5f54927daa658f5ab6960f690536226a2cab35f1456d4c34ad4332dd5027085b"' + repoEtag: '"5b38992750999da4d0d09274c91aecc124b95f6086ff50c11b1adf74a6ce893c"' repoLastModified: Wed, 14 Dec 2022 22:42:02 GMT foundInMaster: true category: @@ -10837,7 +10837,7 @@ owner: Backbase logo: https://avatars.githubusercontent.com/u/1914334?v=4 license: NOASSERTION - repoEtag: '"0ff718b7eb9f0d36c32b8d424eccfb3e9f749681e79da832c50ba28eb63a0ad9"' + repoEtag: '"d358e0d945a62efcf11c361939f7f43977490b530ee2346e05c7233f6cce0330"' repoLastModified: Wed, 21 Jun 2023 02:26:27 GMT foundInMaster: true category: SDK @@ -10916,7 +10916,7 @@ owner: JuliaComputing logo: https://avatars.githubusercontent.com/u/10258468?v=4 license: NOASSERTION - repoEtag: '"35ffc18070d5b809a72a579db139ec4361179812dd34a5c4591ffd408db5fa11"' + repoEtag: '"75ab6796d844e6c7f581f89283ebb0b0b596c367f9ca63be2ecbd03fdfbff8f4"' repoLastModified: Thu, 03 Aug 2023 14:24:10 GMT foundInMaster: true - source: openapi3 tags @@ -11117,17 +11117,17 @@ repositoryId: 609666398 description: ChatGPT for Openapi created: '2023-03-04T21:34:21Z' - updated: '2023-08-04T02:55:50Z' + updated: '2023-08-08T22:54:43Z' language: Python archived: false - stars: 29 + stars: 30 watchers: 2 forks: 4 owner: egeucak logo: https://avatars.githubusercontent.com/u/15627365?v=4 license: MIT - repoEtag: '"e14a795283511de2445fa15d2fb241c79310c304235b2fe9c5fcfc194871cbf1"' - repoLastModified: Fri, 04 Aug 2023 02:55:50 GMT + repoEtag: '"9d58b874563942c7214085dc1c018107052defab28ecd1b40b5679027bc2266e"' + repoLastModified: Tue, 08 Aug 2023 22:54:43 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -11244,23 +11244,23 @@ v3: true repositoryMetadata: base64Readme: >- - IyBPcGVuQVBJIHYzLjEgU3BlY2lmaWNhdGlvbgoKWyFbQ29kZSBBbmFseXNpc10oaHR0cHM6Ly9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2hlY2tzLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2hlY2tzLnlhbWwpClshW0dvIFJlZmVyZW5jZV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2JhZGdlL2dpdGh1Yi5jb20vc3YtdG9vbHMvb3BlbmFwaS5zdmcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9zdi10b29scy9vcGVuYXBpKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3YtdG9vbHMvb3BlbmFwaS9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmc/dG9rZW49MFhWT1REUjFDVyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9zdi10b29scy9vcGVuYXBpKQpbIVtHaXRIdWIgdGFnIChsYXRlc3QgU2VtVmVyKV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi90YWcvc3YtdG9vbHMvb3BlbmFwaT9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkvcmVsZWFzZXMpCgpUaGUgaW1wbGVtZW50YXRpb24gb2YgT3BlbkFQSSB2My4xIFNwZWNpZmljYXRpb24gZm9yIEdvIHVzaW5nIGdlbmVyaWNzLgoKIyMgU3VwcG9ydGVkIEdvIHZlcnNpb25zOgoKKiB2MS4yMAoqIHYxLjE5CiogdjEuMTgKCiMjIEZlYXR1cmVzCgoqIFRoZSBgc3BlY2AgZm9sZGVyIGNvbnRhaW5zIGZ1bGwgaW1wbGVtZW50YXRpb24gb2YgdGhlIHYzLjEgU3BlY2lmaWNhdGlvbiB1c2luZyBnZW5lcmljcywgc28gdGhlIG1pbmltdW0gc3VwcG9ydGVkIHZlcnNpb24gb2YgR28gaXMgYHYxLjE4YC4KKiBUaGUgYHZhbGlkYXRlYCBmb2xkZXIgdXNlcyBbanNvbnNjaGVtYS92NV0oaHR0cHM6Ly9naXRodWIuY29tL3NhbnRob3NoLXRla3VyaS9qc29uc2NoZW1hKSB3aXRoIGRyYWZ0IDIwMjAtMTIgdG8gdmFsaWRhdGUgdGhlIHNwZWNpZmljYXRpb25zLgoqIFRoZSBvZmZpY2lhbCB2My4wIGFuZCB2My4xIFtleGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vdHJlZS9tYWluL2V4YW1wbGVzKSBhcmUgdGVzdGVkLgogIEluIG1vc3QgY2FzZXMgdjMuMCBzcGVjaWZpY2F0aW9uIGNhbiBiZSBjb252ZXJ0ZWQgdG8gdjMuMSBieSBjaGFuZ2luZyB0aGUgdmVyc2lvbidzIHBhcmFtZXRlciBvbmx5LgogIGBgYGRpZmYKICBAQCAtMSw0ICsxLDQgQEAKICAtb3BlbmFwaTogIjMuMC4wIgogICtvcGVuYXBpOiAiMy4xLjAiCiAgYGBgCgoqKk5PVEUqKjogVGhlIGRlc2NyaXB0aW9ucyBvZiBtb3N0IHN0cnVjdHVyZXMgYW5kIHRoZWlyIGZpZWxkcyBhcmUgdGFrZW4gZnJvbSB0aGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbnMuCgojIyBMaW5rcwoKKiBPcGVuQVBJIFNwZWNpZmljYXRpb246IDxodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbj4gYW5kIDxodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjA+CiogSlNPTiBTY2hlbWE6IDxodHRwczovL2pzb24tc2NoZW1hLm9yZy91bmRlcnN0YW5kaW5nLWpzb24tc2NoZW1hL2luZGV4Lmh0bWw+IGFuZCA8aHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9qc29uLXNjaGVtYS1jb3JlLmh0bWw+CiogVGhlIGxpc3Qgb2YgbW9zdCBwb3B1bGFyIGFsdGVybmF0aXZlczogPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi9JTVBMRU1FTlRBVElPTlMubWQjbG93LWxldmVsLXRvb2xpbmc+CgojIyBMaWNlbnNlCgpNSVQgbGljZW5zZWQuIFNlZSB0aGUgYnVuZGxlZCBbTElDRU5TRV0oTElDRU5TRSkgZmlsZSBmb3IgbW9yZSBkZXRhaWxzLgo= - readmeEtag: '"8da2c3ccae56d1a6d1d8bef8a5341214f7674039306369804f6b3b780b465d4e"' - readmeLastModified: Sun, 05 Feb 2023 08:03:07 GMT + IyBPcGVuQVBJIHYzLjEgU3BlY2lmaWNhdGlvbgoKWyFbQ29kZSBBbmFseXNpc10oaHR0cHM6Ly9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2hlY2tzLnlhbWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkvYWN0aW9ucy93b3JrZmxvd3MvY2hlY2tzLnlhbWwpClshW0dvIFJlZmVyZW5jZV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2JhZGdlL2dpdGh1Yi5jb20vc3YtdG9vbHMvb3BlbmFwaS5zdmcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9zdi10b29scy9vcGVuYXBpKQpbIVtjb2RlY292XShodHRwczovL2NvZGVjb3YuaW8vZ2gvc3YtdG9vbHMvb3BlbmFwaS9icmFuY2gvbWFpbi9ncmFwaC9iYWRnZS5zdmc/dG9rZW49MFhWT1REUjFDVyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9zdi10b29scy9vcGVuYXBpKQpbIVtHaXRIdWIgdGFnIChsYXRlc3QgU2VtVmVyKV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvdi90YWcvc3YtdG9vbHMvb3BlbmFwaT9zdHlsZT1mbGF0KV0oaHR0cHM6Ly9naXRodWIuY29tL3N2LXRvb2xzL29wZW5hcGkvcmVsZWFzZXMpCgpUaGUgaW1wbGVtZW50YXRpb24gb2YgT3BlbkFQSSB2My4xIFNwZWNpZmljYXRpb24gZm9yIEdvIHVzaW5nIGdlbmVyaWNzLgoKIyMgU3VwcG9ydGVkIEdvIHZlcnNpb25zOgoKKiB2MS4yMQoqIHYxLjIwCiogdjEuMTkKKiB2MS4xOAoKIyMgRmVhdHVyZXMKCiogVGhlIGBzcGVjYCBmb2xkZXIgY29udGFpbnMgZnVsbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdjMuMSBTcGVjaWZpY2F0aW9uIHVzaW5nIGdlbmVyaWNzLCBzbyB0aGUgbWluaW11bSBzdXBwb3J0ZWQgdmVyc2lvbiBvZiBHbyBpcyBgdjEuMThgLgoqIFRoZSBgdmFsaWRhdGVgIGZvbGRlciB1c2VzIFtqc29uc2NoZW1hL3Y1XShodHRwczovL2dpdGh1Yi5jb20vc2FudGhvc2gtdGVrdXJpL2pzb25zY2hlbWEpIHdpdGggZHJhZnQgMjAyMC0xMiB0byB2YWxpZGF0ZSB0aGUgc3BlY2lmaWNhdGlvbnMuCiogVGhlIG9mZmljaWFsIHYzLjAgYW5kIHYzLjEgW2V4YW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi90cmVlL21haW4vZXhhbXBsZXMpIGFyZSB0ZXN0ZWQuCiAgSW4gbW9zdCBjYXNlcyB2My4wIHNwZWNpZmljYXRpb24gY2FuIGJlIGNvbnZlcnRlZCB0byB2My4xIGJ5IGNoYW5naW5nIHRoZSB2ZXJzaW9uJ3MgcGFyYW1ldGVyIG9ubHkuCiAgYGBgZGlmZgogIEBAIC0xLDQgKzEsNCBAQAogIC1vcGVuYXBpOiAiMy4wLjAiCiAgK29wZW5hcGk6ICIzLjEuMCIKICBgYGAKCioqTk9URSoqOiBUaGUgZGVzY3JpcHRpb25zIG9mIG1vc3Qgc3RydWN0dXJlcyBhbmQgdGhlaXIgZmllbGRzIGFyZSB0YWtlbiBmcm9tIHRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9ucy4KCiMjIExpbmtzCgoqIE9wZW5BUEkgU3BlY2lmaWNhdGlvbjogPGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uPiBhbmQgPGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMD4KKiBKU09OIFNjaGVtYTogPGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL3VuZGVyc3RhbmRpbmctanNvbi1zY2hlbWEvaW5kZXguaHRtbD4gYW5kIDxodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL2pzb24tc2NoZW1hLWNvcmUuaHRtbD4KKiBUaGUgbGlzdCBvZiBtb3N0IHBvcHVsYXIgYWx0ZXJuYXRpdmVzOiA8aHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL0lNUExFTUVOVEFUSU9OUy5tZCNsb3ctbGV2ZWwtdG9vbGluZz4KCiMjIExpY2Vuc2UKCk1JVCBsaWNlbnNlZC4gU2VlIHRoZSBidW5kbGVkIFtMSUNFTlNFXShMSUNFTlNFKSBmaWxlIGZvciBtb3JlIGRldGFpbHMuCg== + readmeEtag: '"904ca81244b40cb10e8c7ae8ef24fe26a8c163b363d00e246da7e341ea22452a"' + readmeLastModified: Wed, 09 Aug 2023 00:09:25 GMT repositoryId: 439764250 description: OpenAPI v3.1 Spec implementation in Go with generics created: '2021-12-19T03:11:04Z' - updated: '2023-07-20T19:18:30Z' + updated: '2023-08-08T10:19:48Z' language: Go archived: false - stars: 28 + stars: 29 watchers: 2 forks: 4 owner: sv-tools logo: https://avatars.githubusercontent.com/u/59230487?v=4 license: MIT - repoEtag: '"e9d8322fbae4ac31d8d594bafc11ddb62f554b6f203074fb518c3016df373d6a"' - repoLastModified: Thu, 20 Jul 2023 19:18:30 GMT + repoEtag: '"7ca16ac0c47df67ed4bcaa179d83ebee31dc96d8527aeaa16cc4a000f25d3292"' + repoLastModified: Tue, 08 Aug 2023 10:19:48 GMT foundInMaster: true category: - Low-level Tooling @@ -12090,7 +12090,7 @@ owner: hei-school logo: https://avatars.githubusercontent.com/u/88576095?v=4 license: MIT - repoEtag: '"65e8903146cee1fd74d45dca8ee6eff3edca8fc5179b0f2a9b4584a4b45cb32b"' + repoEtag: '"9cd6ec9500bff87d0ef7933f0f7d080ba54648f629061f6073c882bf63bc9b9e"' repoLastModified: Fri, 05 May 2023 16:50:08 GMT foundInMaster: true category: Code Generators @@ -12320,7 +12320,7 @@ owner: dkackman logo: https://avatars.githubusercontent.com/u/5160233?v=4 license: Apache-2.0 - repoEtag: '"2821295794552f07a3e6e753507db830f27c080bed3b9121a9709bfee3454d22"' + repoEtag: '"99437650e69707e842626b2f87cb0215e39217b6c911e508f330a252533b8626"' repoLastModified: Sat, 05 Aug 2023 18:19:16 GMT foundInMaster: true category: Server @@ -12947,16 +12947,16 @@ repositoryId: 242966436 description: Attempt to reverse-engineer the TooGoodToGo API created: '2020-02-25T09:57:17Z' - updated: '2023-06-23T08:23:38Z' + updated: '2023-08-08T14:26:31Z' language: Java archived: false - stars: 15 + stars: 16 watchers: 3 forks: 3 owner: wblondel logo: https://avatars.githubusercontent.com/u/7508531?v=4 - repoEtag: '"bd4894fe05b9ec2f87ff799c6d7b48e60932a6183eb48d882f8581aea9595172"' - repoLastModified: Fri, 23 Jun 2023 08:23:38 GMT + repoEtag: '"bc03eb3191beb5f6348deaeea84e81ebcf5ad335e1b601306f384c21bded5408"' + repoLastModified: Tue, 08 Aug 2023 14:26:31 GMT foundInMaster: true category: Server Implementations id: 85d23379e17d8db6ffff513aa15140c5 @@ -13440,7 +13440,7 @@ owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"568a5a53de05c9a022ad32a81b9bc9430167227269830a2d753868ebe3c3c61c"' + repoEtag: '"a27efb21b8e1c92bee12cf54ae6842f21d6a10801dec7220b8bc8a544ed93ebf"' repoLastModified: Mon, 10 Jul 2023 18:11:16 GMT foundInMaster: true category: Testing @@ -13852,9 +13852,9 @@ id: 2e5e94dab0e4592660585f4aecadb841 repositoryMetadata: base64Readme: >- - IyBvcGVuYXBpZnkKCiMjIyMjIyBGcmFtZXdvcmsgYWdub3N0aWMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGdlbmVyYXRpb24gZm9yIGNvZGUgbG92ZXJzCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvYWN0aW9ucykKWyFbTGF0ZXN0IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L29wZW5hcGlmeS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGlmeSkKWyFbUHl0aG9uIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL29wZW5hcGlmeS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGlmeSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1ibHVlLnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQXBhY2hlLTIuMCkKCi0tLQoKVGhpcyBsaWJyYXJ5IGlzIGRlc2lnbmVkIGZvciBjb2RlLWZpcnN0IHBlb3BsZSB3aG8gZG9uJ3Qgd2FudCB0byBib3RoZXIgZGl2aW5nCmludG8gdGhlIGRldGFpbHMKb2YgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKSwgYnV0IHdobwppbnN0ZWFkIHdhbnQgdG8gdXNlIGFkdmFudGFnZXMgb2YgUHl0aG9uIHR5cGluZyBzeXN0ZW0sIElERSBjb2RlLWNvbXBsZXRpb24gYW5kCnN0YXRpYyB0eXBlIGNoZWNrZXJzIHRvIGNvbnRpbnVvdXNseSBidWlsZCB0aGUgQVBJIGRvY3VtZW50YXRpb24gYW5kIGtlZXAgaXQKYWx3YXlzIHVwIHRvIGRhdGUuCgpPcGVuYXBpZnkgaXMgYmFzZWQgb24gdGhlIGlkZWEgb2YgYXBwbHlpbmcgZGVjb3JhdG9ycyBvbiByb3V0ZSBoYW5kbGVycy4gQW55CndlYi1mcmFtZXdvcmsgaGFzIGEgcm91dGluZyBzeXN0ZW0gdGhhdCBsZXQgdXMgbGluayBhIHJvdXRlIHRvIGEgaGFuZGxlcgooYSBoaWdoLWxldmVsIGZ1bmN0aW9uIG9yIGEgY2xhc3MgbWV0aG9kKS4gQnkgdXNpbmcgZGVjb3JhdG9ycywgd2UgY2FuIGFkZAppbmZvcm1hdGlvbiBhYm91dCByZXF1ZXN0cywgcmVzcG9uc2VzIGFuZCBvdGhlciBkZXRhaWxzIHRoYXQgd2lsbCB0aGVuIGJlIHVzZWQKdG8gY3JlYXRlIGFuIGVudGlyZSBPcGVuQVBJIGRvY3VtZW50LgoKPiBbIVdBUk5JTkddXAo+IFRoaXMgbGlicmFyeSBpcyBjdXJyZW50bHkgaW4gcHJlLXJlbGVhc2Ugc3RhZ2UgYW5kIG1heSBoYXZlIGJhY2t3YXJkCj4gaW5jb21wYXRpYmxlIGNoYW5nZXMgcHJpb3IgdG8gdmVyc2lvbiAxLjAuIFBsZWFzZSB1c2UgY2F1dGlvbiB3aGVuIHVzaW5nIHRoaXMKPiBsaWJyYXJ5IGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIGFuZCBiZSBzdXJlIHRvIHRob3JvdWdobHkgdGVzdCBhbnkgdXBkYXRlcwo+IGJlZm9yZSB1cGdyYWRpbmcgdG8gYSBuZXcgdmVyc2lvbi4KClRhYmxlIG9mIGNvbnRlbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiogW1F1aWNrc3RhcnRdKCNxdWlja3N0YXJ0KQoqIFtCdWlsZGluZyB0aGUgT3BlbkFQSSBEb2N1bWVudF0oI2J1aWxkaW5nLXRoZS1vcGVuYXBpLWRvY3VtZW50KQoqIFtJbnRlZ3JhdGlvbiB3aXRoIHdlYi1mcmFtZXdvcmtzXSgjaW50ZWdyYXRpb24td2l0aC13ZWItZnJhbWV3b3JrcykKICAgICogW2Fpb2h0dHBdKCNhaW9odHRwKQogICAgKiBbV3JpdGluZyB5b3VyIG93biBpbnRlZ3JhdGlvbl0oI3dyaXRpbmcteW91ci1vd24taW50ZWdyYXRpb24pCiogW0RlY29yYXRvcnNdKCNkZWNvcmF0b3JzKQogICAgKiBbR2VuZXJpYyBvcGVyYXRpb24gaW5mb10oI2dlbmVyaWMtb3BlcmF0aW9uLWluZm8pCiAgICAqIFtSZXF1ZXN0XSgjcmVxdWVzdCkKICAgICogW1Jlc3BvbnNlXSgjcmVzcG9uc2UpCiAgICAqIFtTZWN1cml0eSByZXF1aXJlbWVudHNdKCNzZWN1cml0eS1yZXF1aXJlbWVudHMpCiogW0VudGl0eSBzY2hlbWEgYnVpbGRlcnNdKCNlbnRpdHktc2NoZW1hLWJ1aWxkZXJzKQoKSW5zdGFsbGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpVc2UgcGlwIHRvIGluc3RhbGw6CgpgYGBzaGVsbAokIHBpcCBpbnN0YWxsIG9wZW5hcGlmeQpgYGAKClF1aWNrc3RhcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCj4gWyFOT1RFXVwKPiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHdlIHdpbGwgaW50ZW50aW9uYWxseSBkZW1vbnN0cmF0ZSB0aGUgcHJvY2VzcyBvZgo+IGNyZWF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQgd2l0aG91dCBiZWluZyB0aWVkIHRvIGEgc3BlY2lmaWMgd2ViLWZyYW1ld29yay4KPiBIb3dldmVyLCB0aGlzIHByb2Nlc3MgbWF5IGJlIGVhc2llciBvbiBhIHN1cHBvcnRlZCB3ZWItZnJhbWV3b3JrLgo+IFNlZSBbSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3Jrc10oI2ludGVncmF0aW9uLXdpdGgtd2ViLWZyYW1ld29ya3MpIGZvcgo+IG1vcmUgaW5mby4KCkxldCdzIHNlZSBob3cgdG8gYnVpbGQgYW4gT3BlbkFQSSBkb2N1bWVudCB3aXRoIG9wZW5hcGlmeS4gU3VwcG9zZSB3ZSBhcmUKd3JpdGluZyBhbiBhcHAgZm9yIGEgYm9va3N0b3JlIHRoYXQgcmV0dXJuIGEgbGlzdCBvZiBuZXcgYm9va3MuIEhlcmUgd2UgaGF2ZSBhCmRhdGFjbGFzcyBtb2RlbCBgQm9va2AgdGhhdCB3b3VsZCBiZSB1c2VkIGFzIGEgcmVzcG9uc2UgbW9kZWwgaW4gYSByZWFsLWxpZmUKc2NlbmFyaW8uIEEgZnVuY3Rpb24gYGdldF9uZXdfYm9va3NgIGlzIG91ciBoYW5kbGVyLgoKYGBgcHl0aG9uCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwoKQGRhdGFjbGFzcwpjbGFzcyBCb29rOgogICAgdGl0bGU6IHN0cgogICAgYXV0aG9yOiBzdHIKICAgIHllYXI6IGludAoKZGVmIGdldF9uZXdfYm9va3MoLi4uKToKICAgIC4uLgpgYGAKCk5vdyB3ZSB3YW50IHRvIHNheSB0aGF0IG91ciBoYW5kbGVyIHJldHVybnMgYSBqc29uIHNlcmlhbGl6ZWQgbGlzdCBvZiBib29rcwpsaW1pdGVkIGJ5IHRoZSBvcHRpb25hbCBgY291bnRgIHBhcmFtZXRlci4gV2UgdXNlIGByZXF1ZXN0X3NjaGVtYWAKYW5kIGByZXNwb25zZV9zY2hlbWFgIGRlY29yYXRvcnMgYWNjb3JkaW5nbHk6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHJlcXVlc3Rfc2NoZW1hLCByZXNwb25zZV9zY2hlbWEKCkByZXF1ZXN0X3NjaGVtYShxdWVyeV9wYXJhbXM9eyJjb3VudCI6IGludH0pCkByZXNwb25zZV9zY2hlbWEobGlzdFtCb29rXSkKZGVmIGdldF9uZXdfYm9va3MoLi4uKToKICAgIC4uLgpgYGAKCkFuZCBub3cgd2UgbmVlZCB0byBjb2xsZWN0IGFsbCB0aGUgcm91dGUgZGVmaW5pdGlvbnMgYW5kIHBhc3MgdGhlbSB0byB0aGUKYGJ1aWxkX3NwZWNgIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIGB0b195YW1sYAptZXRob2QuCgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5tb2RlbHMgaW1wb3J0IFJvdXRlRGVmCgpyb3V0ZXMgPSBbUm91dGVEZWYoIi9ib29rcyIsICJnZXQiLCBnZXRfbmV3X2Jvb2tzKV0Kc3BlYyA9IGJ1aWxkX3NwZWMocm91dGVzKQpwcmludChzcGVjLnRvX3lhbWwoKSkKYGBgCgpBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBPcGVuQVBJIGRvY3VtZW50IHdoaWNoIGNhbiBiZSByZW5kZXJlZAp1c2luZyB0b29scyBzdWNoIGFzIFN3YWdnZXIgVUk6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMS4wCmluZm86CiAgdGl0bGU6IEFQSQogIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9ib29rczoKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBuYW1lOiBjb3VudAogICAgICAgIGluOiBxdWVyeQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Jvb2snCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIEJvb2s6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICB0aXRsZTogQm9vawogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHRpdGxlOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgYXV0aG9yOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgeWVhcjoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCiAgICAgIHJlcXVpcmVkOgogICAgICAtIHRpdGxlCiAgICAgIC0gYXV0aG9yCiAgICAgIC0geWVhcgpgYGAKCkJ1aWxkaW5nIHRoZSBPcGVuQVBJIERvY3VtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoZSBmaW5hbCBnb2FsIG9mIHRoaXMgbGlicmFyeSBpcyB0byBidWlsZAp0aGUgW09wZW5BUEkgRG9jdW1lbnRdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVuYXBpLWRvY3VtZW50KQpmb3IgeW91ciB3ZWItYXBwbGljYXRpb24uIFRoaXMgZG9jdW1lbnQgY29uc2lzdHMgb2YgY29tbW9uIGluZm9ybWF0aW9uIGFib3V0CnRoZSBhcHBsaWNhdGlvbiwgc3VjaCBhcyBhIHRpdGxlIGFuZCB2ZXJzaW9uLCBhbmQgc3BlY2lmaWMgaW5mb3JtYXRpb24gdGhhdApvdXRsaW5lcyB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBBUEkuCgpTaW5jZSBvcGVuYXBpZnkgaXMgbm93IGJhc2VkCm9uIFthcGlzcGVjXShodHRwczovL2dpdGh1Yi5jb20vbWFyc2htYWxsb3ctY29kZS9hcGlzcGVjKSBsaWJyYXJ5LCB0aGUgT3BlbkFQSQpkb2N1bWVudCBpcyBwcmVzZW50ZWQgYnkgYEFQSVNwZWNgIGNsYXNzIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgdXNpbmcgdGhlCmV4aXN0aW5nIGVjb3N5c3RlbSBvZiBwbHVnaW5zLiBIb3dldmVyLCBvcGVuYXBpZnkgaGFzIGl0cyBvd24Kc3ViY2xhc3MgYE9wZW5BUElEb2N1bWVudGAgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGFkZCBzb21lIGNvbW1vbiBmaWVsZHMsCnN1Y2ggYXMgYW4gYXJyYXkKb2YgW1NlcnZlcl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NlcnZlci1vYmplY3QpIG9iamVjdHMgb3IKYXJyYXkgb2YKY29tbW9uIFtTZWN1cml0eSBTY2hlbWVdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZWN1cml0eS1zY2hlbWUtb2JqZWN0KQpvYmplY3RzLgoKVG8gYnVpbGQgdGhlIGRvY3VtZW50LCB0aGVyZSBpcyBgYnVpbGRfc3BlY2AgZnVuY3Rpb24uIFRoZSB2ZXJ5IGJhc2ljIGRvY3VtZW50CmNhbiBiZSBjcmVhdGVkIGJ5IGNhbGxpbmcgaXQgd2l0aCBhbiBlbXB0eSBsaXN0IG9mIHJvdXRlIGRlZmluaXRpb25zLCBsZWF2aW5nCmFsbCB0aGUgcGFyYW1ldGVycyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKCnByaW50KGJ1aWxkX3NwZWMoW10pLnRvX3lhbWwoKSkKYGBgCgpBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKCmBgYHlhbWwKb3BlbmFwaTogMy4xLjAKaW5mbzoKICB0aXRsZTogQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6IHt9CmBgYAoKV2UgY2FuIGNoYW5nZSB0aGUgY29tbW9uIGRvY3VtZW50IGF0dHJpYnV0ZXMgZWl0aGVyIGJ5IHBhc3NpbmcgdGhlbQp0byBgYnVpbGRfc3BlY2A6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgSFRUUFNlY3VyaXR5U2NoZW1lCgpidWlsZF9zcGVjKAogICAgcm91dGVzPVtdLAogICAgdGl0bGU9Ik15IEJvb2tzdG9yZSBBUEkiLAogICAgdmVyc2lvbj0iMS4xLjAiLAogICAgb3BlbmFwaV92ZXJzaW9uPSIzLjEuMCIsCiAgICBzZXJ2ZXJzPVsiaHR0cDovLzEyNy4wLjAuMSJdLAogICAgc2VjdXJpdHlfc2NoZW1lcz17ImJhc2ljX2F1dGgiOiBIVFRQU2VjdXJpdHlTY2hlbWUoKX0KKQpgYGAKCm9yIHVzaW5nIGEgcHJlcGFyZWQgYE9wZW5BUElEb2N1bWVudGAgb2JqZWN0OgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBPcGVuQVBJRG9jdW1lbnQsIGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgSFRUUFNlY3VyaXR5U2NoZW1lCgpzcGVjID0gT3BlbkFQSURvY3VtZW50KAogICAgdGl0bGU9Ik15IEJvb2tzdG9yZSBBUEkiLAogICAgdmVyc2lvbj0iMS4xLjAiLAogICAgb3BlbmFwaV92ZXJzaW9uPSIzLjEuMCIsCiAgICBzZXJ2ZXJzPVsiaHR0cDovLzEyNy4wLjAuMSJdLAogICAgc2VjdXJpdHlfc2NoZW1lcz17ImJhc2ljX2F1dGgiOiBIVFRQU2VjdXJpdHlTY2hlbWUoKX0sCikKYnVpbGRfc3BlYyhbXSwgc3BlYykKYGBgCgpUbyBhZGQgbWVhbmluZyB0byBvdXIgZG9jdW1lbnQsIHdlIGNhbgphZGQgW1BhdGhdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNwYXRocy1vYmplY3QpLApbQ29tcG9uZW50XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjY29tcG9uZW50cy1vYmplY3QpCmFuZCBvdGhlciBPcGVuQVBJIG9iamVjdHMgYnkgYXBwbHlpbmcgW2RlY29yYXRvcnNdKCNkZWNvcmF0b3JzKSBvbiBvdXIgcm91dGUKaGFuZGxlcnMgYW5kIGNvbnN0cnVjdGluZyByb3V0ZSBkZWZpbml0aW9ucyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgpBIHNpbmdsZSBjb21wbGV0ZSByb3V0ZSBkZWZpbml0aW9uIHByZXNlbnRlZCBieSBgUm91dGVEZWZgIGNsYXNzIGNhbiBsb29rIGxpa2UKdGhpczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlmeS5jb3JlLm1vZGVscyBpbXBvcnQgUm91dGVEZWYKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgUGFyYW1ldGVyLCBQYXJhbWV0ZXJMb2NhdGlvbgoKZGVmIGdldF9ib29rX2J5X2lkX2hhbmRsZXIoLi4uKToKICAgIC4uLgoKUm91dGVEZWYoCiAgICBwYXRoPSIvYm9vay97aWR9IiwKICAgIG1ldGhvZD0iZ2V0IiwKICAgIGhhbmRsZXI9Z2V0X2Jvb2tfYnlfaWRfaGFuZGxlciwKICAgIHN1bW1hcnk9IkdldHRpbmcgdGhlIGJvb2siLAogICAgZGVzY3JpcHRpb249IkdldHRpbmcgdGhlIGJvb2sgYnkgaWQiLAogICAgcGFyYW1ldGVycz1bCiAgICAgICAgUGFyYW1ldGVyKAogICAgICAgICAgICBuYW1lPSJpZCIsCiAgICAgICAgICAgIGxvY2F0aW9uPVBhcmFtZXRlckxvY2F0aW9uLlBBVEgsCiAgICAgICAgICAgIHJlcXVpcmVkPVRydWUsCiAgICAgICAgICAgIHNjaGVtYT17InR5cGUiOiAiaW50ZWdlciJ9LAogICAgICAgICkKICAgIF0sCiAgICB0YWdzPVsiYm9vayJdLAopCmBgYAoKQXMgd2lsbCBiZSBzaG93biBmdXJ0aGVyLCBvcHRpb25hbAphcmd1bWVudHMgYHN1bW1hcnlgLCBgZGVzY3JpcHRpb25gLCBgcGFyYW1ldGVyc2AgYW5kIGB0YWdzYCBjYW4gYmUgb3ZlcnJpZGRlbgpvciBleHRlbmRlZCBieSBgb3BlcmF0aW9uX2RvY3NgIGFuZCBgcmVxdWVzdF9zY2hlbWFgIGRlY29yYXRvcnMuCgpUaGUgY3JlYXRpbmcgb2YgdGhlc2Ugcm91dGUgZGVmaW5pdGlvbnMgY2FuIGJlIGF1dG9tYXRlZCBhbmQgYWRhcHRlZCB0byBhCnNwZWNpZmljIHdlYi1mcmFtZXdvcmssIGFuZCBvcGVuYXBpZnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGEgZmV3IG9mIHRoZW0uClNlZSBbSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3Jrc10oI2ludGVncmF0aW9uLXdpdGgtd2ViLWZyYW1ld29ya3MpIGZvcgpkZXRhaWxzLgoKSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3JrcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlcmUgaXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgYSBmZXcgd2ViLWZyYW1ld29ya3MsIHdoaWNoIG1ha2VzIGNyZWF0aW5nIHRoZQpkb2N1bWVudGF0aW9uIGV2ZW4gZWFzaWVyIGFuZCBtb3JlIGZ1bi4gQW55IG90aGVyIGZyYW1ld29ya3MgY2FuIGJlIGludGVncmF0ZWQKd2l0aCBhIGxpdHRsZSBlZmZvcnQuIElmIHlvdSBhcmUgcmVhZHkgdG8gdGFrZSBvbiB0aGlzLCB5b3UgYXJlIHZlcnkgd2VsY29tZSB0bwpjcmVhdGUgYSBbcHVsbCByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vRmF0YWwxdHkvb3BlbmFwaWZ5L3B1bGxzKS4KCiMjIyBhaW9odHRwCgpUaGUgZG9jdW1lbnRhdGlvbiBmb3IgW2Fpb2h0dHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9haW9odHRwKQp3ZWItYXBwbGljYXRpb24gY2FuIGJlIGJ1aWx0IGluIHRocmVlIHdheXM6CgoqIFVzaW5nIGFuIGFscmVhZHkgZXhpc3RpbmcgW2BhaW9odHRwLndlYi5BcHBsaWNhdGlvbmBdKGh0dHBzOi8vZG9jcy5haW9odHRwLm9yZy9lbi9zdGFibGUvd2ViX3JlZmVyZW5jZS5odG1sI2FwcGxpY2F0aW9uKSBvYmplY3QKKiBVc2luZyBhIHNldCBvZiBbYGFpb2h0dHAud2ViLlJvdXRlRGVmYF0oaHR0cHM6Ly9kb2NzLmFpb2h0dHAub3JnL2VuL3N0YWJsZS93ZWJfcmVmZXJlbmNlLmh0bWwjYWlvaHR0cC53ZWIuUm91dGVEZWYpIG9iamVjdHMKKiBVc2luZyBhIHNldCBvZiBvYmplY3RzIGltcGxlbWVudGluZyBbYEFpb0h0dHBSb3V0ZURlZmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvYmxvYi8yYmJmMmU5OWMwNmIzMWZhMmYxNDY1ZjJlYmMxMTg4ODRjZTJiYjk1L29wZW5hcGlmeS9leHQvd2ViL2Fpb2h0dHAucHkjTDQzLUw0NikgcHJvdG9jb2wKCkFsbCB3ZSBuZWVkIGlzIHRvIHBhc3MgZWl0aGVyIGFuIGFwcGxpY2F0aW9uLCBvciBhIHNldCBvZiByb3V0ZSBkZWZzIHRvCm1vZGlmaWVkIGBidWlsZF9zcGVjYCBmdW5jdGlvbi4gU2VlIHRoZSBleGFtcGxlOgpgYGBweXRob24KZnJvbSBhaW9odHRwIGltcG9ydCB3ZWIKZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHJlcXVlc3Rfc2NoZW1hLCByZXNwb25zZV9zY2hlbWEKZnJvbSBvcGVuYXBpZnkuZXh0LndlYi5haW9odHRwIGltcG9ydCBidWlsZF9zcGVjCgpyb3V0ZXMgPSB3ZWIuUm91dGVUYWJsZURlZigpCgpAcmVzcG9uc2Vfc2NoZW1hKHN0ciwgbWVkaWFfdHlwZT0idGV4dC9wbGFpbiIpCkByb3V0ZXMucG9zdCgiLyIpCmFzeW5jIGRlZiBoZWxsbyhyZXF1ZXN0KToKICAgIHJldHVybiB3ZWIuUmVzcG9uc2UodGV4dD0iSGVsbG8sIHdvcmxkIikKCmFwcCA9IHdlYi5BcHBsaWNhdGlvbigpCmFwcC5hZGRfcm91dGVzKHJvdXRlcykKCnByaW50KGJ1aWxkX3NwZWMoYXBwKS50b195YW1sKCkpCmBgYApBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKCmBgYHlhbWwKb3BlbmFwaTogMy4xLjAKaW5mbzoKICB0aXRsZTogQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgLzoKICAgIHBvc3Q6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPSwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgdGV4dC9wbGFpbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgojIyMgV3JpdGluZyB5b3VyIG93biBpbnRlZ3JhdGlvbgoK8J+apyBUbyBiZSBkZXNjcmliZWQKCkRlY29yYXRvcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk9wZW5hcGlmeSBoYXMgc2V2ZXJhbCBkZWNvcmF0b3JzIHRoYXQgZW1iZWQgbmVjZXNzYXJ5IHNwZWNpZmljIGluZm9ybWF0aW9uIGZvcgpsYXRlciB1c2Ugd2hlbiBidWlsZGluZyB0aGUgT3BlbkFQSSBkb2N1bWVudC4gSW4gZ2VuZXJhbCwgZGVjb3JhdG9ycyB3aWxsCmRlZmluZSB0aGUgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCnRoZSBbT3BlcmF0aW9uIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCndoaWNoIGRlc2NyaWJlcyBhIHNpbmdsZSBBUEkgb3BlcmF0aW9uIG9uIGEgcGF0aC4gV2Ugd2lsbCBsb29rIGF0IHdoYXQgZWFjaApkZWNvcmF0b3IgcGFyYW1ldGVyIGlzIHJlc3BvbnNpYmxlIGZvciBhbmQgaG93IGl0IGlzIHJlZmxlY3RlZCBpbiB0aGUgZmluYWwKZG9jdW1lbnQuCgojIyMgR2VuZXJpYyBvcGVyYXRpb24gaW5mbwoKRGVjb3JhdG9yIGBvcGVyYXRpb25fZG9jc2AgYWRkcyBnZW5lcmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBPcGVyYXRpb24gb2JqZWN0LAp3aGljaCBpbmNsdWRlcyBzdW1tYXJ5LCBkZXNjcmlwdGlvbiwgdGFncywgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiBhbmQKZGVwcmVjYXRpb24gbWFya2VyLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBvcGVyYXRpb25fZG9jcwpgYGAKCiMjIyMgc3VtbWFyeQoKQW4gb3B0aW9uYWwsIHN0cmluZyBzdW1tYXJ5LCBpbnRlbmRlZCB0byBhcHBseSB0byB0aGUgb3BlcmF0aW9uLiBUaGlzIGFmZmVjdHMKdGhlIHZhbHVlIG9mCnRoZSBbYHN1bW1hcnlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkgZmllbGQgb2YKdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIkdldHRpbmcgbmV3IGJvb2tzImAgfAoKIyMjIyBkZXNjcmlwdGlvbgoKQW4gb3B0aW9uYWwsIHN0cmluZyBkZXNjcmlwdGlvbiwgaW50ZW5kZWQgdG8gYXBwbHkgdG8gdGhlCm9wZXJhdGlvbi4gW0NvbW1vbk1hcmsgc3ludGF4XShodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcpIE1BWSBiZSB1c2VkIGZvcgpyaWNoIHRleHQgcmVwcmVzZW50YXRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIlJldHVybnMgYSBsaXN0IG9mIGJvb2tzImAgfAoKIyMjIyB0YWdzCgpBIGxpc3Qgb2YgdGFncyBmb3IgQVBJIGRvY3VtZW50YXRpb24gY29udHJvbC4gVGFncyBjYW4gYmUgdXNlZCBmb3IgbG9naWNhbApncm91cGluZyBvZiBvcGVyYXRpb25zIGJ5IHJlc291cmNlcyBvciBhbnkgb3RoZXIgcXVhbGlmaWVyLiBUaGlzIGFmZmVjdHMgdGhlCnZhbHVlIG9mIHRoZSBbYHRhZ3NgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzICB8IEV4YW1wbGVzICAgfAp8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfAp8IGBTZXF1ZW5jZVtzdHJdYCB8IGBbImJvb2siXWAgfAoKIyMjIyBvcGVyYXRpb25faWQKClVuaXF1ZSBzdHJpbmcgdXNlZCB0byBpZGVudGlmeSB0aGUgb3BlcmF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlCnZhbHVlIG9mCnRoZSBbYG9wZXJhdGlvbklkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgZ2V0Qm9va3NgIHwKCiMjIyMgZXh0ZXJuYWxfZG9jcwoKQWRkaXRpb25hbCBleHRlcm5hbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgb3BlcmF0aW9uLiBJdCBjYW4gYmUgYSBzaW5nbGUgdXJsIG9yCih1cmwsIGRlc2NyaXB0aW9uKSBwYWlyLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHN1bW1hcnlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkgZmllbGQgb2YKdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzICAgIHwgRXhhbXBsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgc3RyYCAgICAgICAgICAgICB8IGAiaHR0cHM6Ly9leGFtcGxlLm9yZy9kb2NzL2Jvb2tzImAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBUdXBsZVtzdHIsIHN0cl1gIHwgYCgiaHR0cHM6Ly9leGFtcGxlLm9yZy9kb2NzL2Jvb2tzIiwgIkV4dGVybmFsIGRvY3VtZW50YXRpb24gZm9yIC9ib29rcyIpYCB8CgojIyMjIGRlcHJlY2F0ZWQKCkRlY2xhcmVzIHRoZSBvcGVyYXRpb24gdG8gYmUgZGVwcmVjYXRlZC4gQ29uc3VtZXJzIFNIT1VMRCByZWZyYWluIGZyb20gdXNhZ2UKb2YgdGhlIGRlY2xhcmVkIG9wZXJhdGlvbi4gRGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BkZXByZWNhdGVkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpIGZpZWxkCm9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBib29sYCAgICAgICAgIHwgPGNvZGUgbGFuZz0icHl0aG9uIj5UcnVlPC9wcmU+IHwKCiMjIyBSZXF1ZXN0CgpEZWNvcmF0b3IgYHJlcXVlc3Rfc2NoZW1hYCBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcGVyYXRpb24gcmVxdWVzdHMuClJlcXVlc3QgY2FuIGhhdmUgYSBib2R5LCBxdWVyeSBwYXJhbWV0ZXJzLCBoZWFkZXJzIGFuZCBjb29raWVzLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCByZXF1ZXN0X3NjaGVtYQpgYGAKCiMjIyMgYm9keQoKQSByZXF1ZXN0IGJvZHkgY2FuIGJlIGRlc2NyaWJlZCBlbnRpcmVseSBieSBvbmUgYGJvZHlgIHBhcmFtZXRlciBvZiB0eXBlIGBCb2R5YApvciBwYXJ0aWFsbHkgYnkgc2VwYXJhdGUgYGJvZHlfKmAgcGFyYW1ldGVycyAoc2VlIGJlbG93KS4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIGBvcGVuYXBpZnkuY29yZS5tb2RlbHMuQm9keWAgb2JqZWN0IHRoYXQgaGFzIGFsbCB0aGUKc2VwYXJhdGUgYGJvZHlfKmAgcGFyYW1ldGVycyBpbnNpZGUuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgdGhlIHJlcXVlc3QgYm9keSBQeXRob24gZGF0YSB0eXBlIGZvciB3aGljaCB0aGUgSlNPTgpTY2hlbWEgd2lsbCBiZSBidWlsdC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXF1ZXN0Qm9keWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHNjaGVtYWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQgb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlCnRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+VHlwZTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCkJvb2sKYGBgCgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+Qm9keTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCkJvZHkoCiAgICB2YWx1ZV90eXBlPUJvb2ssCiAgICBtZWRpYV90eXBlPSJhcHBsaWNhdGlvbi9qc29uIiwKICAgIHJlcXVpcmVkPVRydWUsCiAgICBkZXNjcmlwdGlvbj0iQSBib29rIiwKICAgIGV4YW1wbGU9ewogICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICAgICAieWVhciI6IDE4NzcsCiAgICB9LAopCmBgYAoKPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMgbWVkaWFfdHlwZQoKQSBtZWRpYSB0eXBlCm9yIFttZWRpYSB0eXBlIHJhbmdlXShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzIzMSNhcHBlbmRpeC1EKSBvZiB0aGUKcmVxdWVzdCBib2R5LiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlcXVlc3RCb2R5YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIGtleQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KClRoZSBkZWZhdWx0IHZhbHVlIGlzIGAiYXBwbGljYXRpb24vanNvbiJgLgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgImFwcGxpY2F0aW9uL3htbCJgIHwKCiMjIyMgYm9keV9yZXF1aXJlZAoKRGV0ZXJtaW5lcyBpZiB0aGUgcmVxdWVzdCBib2R5IGlzIHJlcXVpcmVkIGluIHRoZSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS4KVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXF1ZXN0Qm9keWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHJlcXVpcmVkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3JlcXVlc3QtYm9keS1vYmplY3QpCmZpZWxkIG9mIFJlcXVlc3QgQm9keSBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGBib29sYCAgICAgICAgIHwgYFRydWVgICAgfAoKIyMjIyBib2R5X2Rlc2NyaXB0aW9uCgpBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSByZXF1ZXN0IGJvZHkuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZgp1c2UuIFtDb21tb25NYXJrIHN5bnRheF0oaHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnKSBNQVkgYmUgdXNlZCBmb3IgcmljaCB0ZXh0CnJlcHJlc2VudGF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlcXVlc3RCb2R5YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkKZmllbGQgb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfAp8IGBzdHJgICAgICAgICAgIHwgYCJBIGJvb2siYCB8CgojIyMjIGJvZHlfZXhhbXBsZQoKRXhhbXBsZSBvZiB0aGUgcmVxdWVzdCBib2R5LiBUaGUgZXhhbXBsZSBvYmplY3QgU0hPVUxEIGJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdAphcyBzcGVjaWZpZWQgYnkgdGhlIG1lZGlhIHR5cGUuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI21lZGlhLXR5cGUtb2JqZWN0KSBmaWVsZApvZgpNZWRpYSBUeXBlIG9iamVjdCBpbnNpZGUKdGhlIHZhbHVlCm9mIFtgY29udGVudGBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXF1ZXN0LWJvZHktb2JqZWN0KSBmaWVsZApvZiBSZXF1ZXN0IEJvZHkgb2JqZWN0LgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5Bbnk8L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICJ5ZWFyIjogMTg3NywKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGJvZHlfZXhhbXBsZXMKCkV4YW1wbGVzIG9mIHRoZSByZXF1ZXN0IGJvZHkuIEVhY2ggZXhhbXBsZSBvYmplY3QgU0hPVUxEIG1hdGNoIHRoZSBtZWRpYSB0eXBlCmFuZCBzcGVjaWZpZWQgc2NoZW1hIGlmIHByZXNlbnQuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQKb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlCnRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KClRoZSB2YWx1ZXMgb2YgdGhpcyBkaWN0aW9uYXJ5IGNvdWxkIGJlIGVpdGhlciBleGFtcGxlcyB0aGVtc2VsdmVzLApvciBgb3BlbmFwaWZ5LmNvcmUub3BlbmFwaS5tb2RlbHMuRXhhbXBsZWAgb2JqZWN0cy4gSW4gdGhlIGxhdHRlciBjYXNlLApleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCBleGFtcGxlcywgc3VjaCBhcyBhIHN1bW1hcnkgYW5kIGRlc2NyaXB0aW9uLCBjYW4gYmUKYWRkZWQgdG8gdGhlIFtFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjZXhhbXBsZS1vYmplY3QpCm9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIEFueV08L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAiQW5uYSBLYXJlbmluYSI6IHsKICAgICAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAgICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAgICAgInllYXIiOiAxODc3LAogICAgfQp9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBFeGFtcGxlXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJBbm5hIEthcmVuaW5hIjogRXhhbXBsZSgKICAgICAgICB2YWx1ZT17CiAgICAgICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAgICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAgICAgICAgICJ5ZWFyIjogMTg3NywKICAgICAgICB9LAogICAgICAgIHN1bW1hcnk9IlRoZSBib29rICdBbm5hIEthcmVuaW5hJyIsCiAgICApCn0KYGBgCgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyBxdWVyeV9wYXJhbXMKCkRpY3Rpb25hcnkgb2YgcXVlcnkgcGFyYW1ldGVycyBhcHBsaWNhYmxlIGZvciB0aGUgb3BlcmF0aW9uLCB3aGVyZSB0aGUga2V5IGlzCnRoZSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBQeXRob24gZGF0YSB0eXBlIG9yCmEgYFF1ZXJ5UGFyYW1gIG9iamVjdC4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIHRoZSBQeXRob24gZGF0YSB0eXBlIGZvciB0aGUgcXVlcnkgcGFyYW1ldGVyIGZvciB3aGljaAp0aGUgSlNPTiBTY2hlbWEgd2lsbCBiZSBidWlsdC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BwYXJhbWV0ZXJzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgc2NoZW1hYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhcmFtZXRlci1vYmplY3QpIGZpZWxkIG9mClBhcmFtZXRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5RdWVyeVBhcmFtYCBvYmplY3QgdGhhdCBjYW4KaGF2ZSBleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFyYW1ldGVyLCBzdWNoIGFzIGEgZGVmYXVsdCB2YWx1ZSwKZGVwcmVjYXRpb24gbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBUeXBlXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsiY291bnQiOiBpbnR9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBRdWVyeVBhcmFtXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJjb3VudCI6IFF1ZXJ5UGFyYW0oCiAgICAgICAgdmFsdWVfdHlwZT1pbnQsCiAgICAgICAgZGVmYXVsdD0xMCwKICAgICAgICByZXF1aXJlZD1UcnVlLAogICAgICAgIGRlc2NyaXB0aW9uPSJMaW1pdHMgdGhlIG51bWJlciBvZiBib29rcyByZXR1cm5lZCIsCiAgICAgICAgZGVwcmVjYXRlZD1GYWxzZSwKICAgICAgICBhbGxvd0VtcHR5VmFsdWU9RmFsc2UsCiAgICAgICAgZXhhbXBsZT00MiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGhlYWRlcnMKCkRpY3Rpb25hcnkgb2YgcmVxdWVzdCBoZWFkZXJzIGFwcGxpY2FibGUgZm9yIHRoZSBvcGVyYXRpb24sIHdoZXJlIHRoZSBrZXkgaXMKdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGBIZWFkZXJgIG9iamVjdC4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIHRoZSBoZWFkZXIgZGVzY3JpcHRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcGFyYW1ldGVyc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGRlc2NyaXB0aW9uYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhcmFtZXRlci1vYmplY3QpCmZpZWxkIG9mIFBhcmFtZXRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5IZWFkZXJgIG9iamVjdCB0aGF0IGNhbiBoYXZlCmV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoZWFkZXIsIHN1Y2ggYXMgYSBkZXNjcmlwdGlvbiwgZGVwcmVjYXRpb24KbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBzdHJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KeyJYLVJlcXVlc3RlZC1XaXRoIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVxdWVzdCJ9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBIZWFkZXJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgIlgtUmVxdWVzdGVkLVdpdGgiOiBIZWFkZXIoCiAgICAgICAgZGVzY3JpcHRpb249IkluZm9ybWF0aW9uIGFib3V0IHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVxdWVzdCIsCiAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKICAgICAgICB2YWx1ZV90eXBlPXN0ciwKICAgICAgICBkZXByZWNhdGVkPUZhbHNlLAogICAgICAgIGFsbG93RW1wdHlWYWx1ZT1GYWxzZSwKICAgICAgICBleGFtcGxlPSJYTUxIdHRwUmVxdWVzdCIsCiAgICApCn0KYGBgCgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyBjb29raWVzCgpEaWN0aW9uYXJ5IG9mIHJlcXVlc3QgY29va2llcyBhcHBsaWNhYmxlIGZvciB0aGUgb3BlcmF0aW9uLCB3aGVyZSB0aGUga2V5IGlzCnRoZSBjb29raWUgbmFtZSBhbmQgdGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBgQ29va2llYCBvYmplY3QuCgpJbiB0aGUgZmlyc3QgY2FzZSBpdCBpcyB0aGUgY29va2llIGRlc2NyaXB0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHBhcmFtZXRlcnNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BkZXNjcmlwdGlvbmBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNwYXJhbWV0ZXItb2JqZWN0KQpmaWVsZCBvZiBQYXJhbWV0ZXIgb2JqZWN0LgoKSW4gdGhlIHNlY29uZCBjYXNlIGl0IGlzIGBvcGVuYXBpZnkuY29yZS5tb2RlbHMuQ29va2llYCBvYmplY3QgdGhhdCBjYW4gaGF2ZQpleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29va2llLCBzdWNoIGFzIGEgZGVzY3JpcHRpb24sIGRlcHJlY2F0aW9uCm1hcmtlciwgZXhhbXBsZXMgZXRjLgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgc3RyXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsiX19nYSI6ICJBIHJhbmRvbWx5IGdlbmVyYXRlZCBudW1iZXIgYXMgYSBjbGllbnQgSUQifQpgYGAKCjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgQ29va2llXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJfX2dhIjogQ29va2llKAogICAgICAgIGRlc2NyaXB0aW9uPSJBIHJhbmRvbWx5IGdlbmVyYXRlZCBudW1iZXIgYXMgYSBjbGllbnQgSUQiLAogICAgICAgIHJlcXVpcmVkPVRydWUsCiAgICAgICAgdmFsdWVfdHlwZT1zdHIsCiAgICAgICAgZGVwcmVjYXRlZD1GYWxzZSwKICAgICAgICBhbGxvd0VtcHR5VmFsdWU9RmFsc2UsCiAgICAgICAgZXhhbXBsZT0iMS4yLjM0NTY3ODkwMS4yMzQ1Njc4OTAxIiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMgUmVzcG9uc2UKCkRlY29yYXRvciBgcmVzcG9uc2Vfc2NoZW1hYCBkZXNjcmliZXMgYSBzaW5nbGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJIE9wZXJhdGlvbi4KUmVzcG9uc2UgY2FuIGhhdmUgYW4gSFRUUCBjb2RlLCBib2R5IGFuZCBoZWFkZXJzLiBJZiB0aGUgT3BlcmF0aW9uIHN1cHBvcnRzCm1vcmUgdGhhbiBvbmUgcmVzcG9uc2UsIHRoZW4gdGhlIGRlY29yYXRvciBtdXN0IGJlIGFwcGxpZWQgbXVsdGlwbGUgdGltZXMgdG8KY292ZXIgZWFjaCBvZiB0aGVtLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCByZXNwb25zZV9zY2hlbWEKYGBgCgojIyMjIGJvZHkKCkEgUHl0aG9uIGRhdGEgdHlwZSBmb3IgdGhlIHJlc3BvbnNlIGJvZHkgZm9yIHdoaWNoCnRoZSBKU09OIFNjaGVtYSB3aWxsIGJlIGJ1aWx0LiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHNjaGVtYWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQgb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlIHRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVzcG9uc2Utb2JqZWN0KSBmaWVsZApvZiBSZXNwb25zZSBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGBUeXBlYCAgICAgICAgIHwgYEJvb2tgICAgfAoKIyMjIyBodHRwX2NvZGUKCkFuIEhUVFAgY29kZSBvZiB0aGUgcmVzcG9uc2UuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwgdGhlIHBhdHRlcm5lZCBrZXkgaW4KdGhlIFtSZXNwb25zZXNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXNwb25zZXMtb2JqZWN0KSBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGBzdHJgICAgICAgICAgIHwgYCIyMDAiYCAgfAp8IGBpbnRgICAgICAgICAgIHwgYDQwMGAgICAgfAoKIyMjIyBtZWRpYV90eXBlCgpBIG1lZGlhIHR5cGUKb3IgW21lZGlhIHR5cGUgcmFuZ2VdKGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMxI2FwcGVuZGl4LUQpIG9mIHRoZQpyZXNwb25zZSBib2R5LiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksIHRoZSBrZXkKb2YgW2Bjb250ZW50YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlLW9iamVjdCkgZmllbGQgb2YKUmVzcG9uc2Ugb2JqZWN0LgoKVGhlIGRlZmF1bHQgdmFsdWUgaXMgYCJhcHBsaWNhdGlvbi9qc29uImAuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgc3RyYCAgICAgICAgICB8IGAiYXBwbGljYXRpb24veG1sImAgfAoKIyMjIwoKIyMjIyBkZXNjcmlwdGlvbgoKQSBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzcG9uc2UuIFtDb21tb25NYXJrIHN5bnRheF0oaHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnKQpNQVkgYmUgdXNlZCBmb3IgcmljaCB0ZXh0IHJlcHJlc2VudGF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGRlc2NyaXB0aW9uYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlLW9iamVjdCkgZmllbGQKb2YgUmVzcG9uc2Ugb2JqZWN0LgoKCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIkludmFsaWQgSUQgU3VwcGxpZWQiYCB8CgojIyMjIGhlYWRlcnMKCkRpY3Rpb25hcnkgb2YgcmVzcG9uc2UgaGVhZGVycyBhcHBsaWNhYmxlIGZvciB0aGUgb3BlcmF0aW9uLCB3aGVyZSB0aGUga2V5IGlzCnRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBgSGVhZGVyYCBvYmplY3QuCgpJbiB0aGUgZmlyc3QgY2FzZSBpdCBpcyB0aGUgaGVhZGVyIGRlc2NyaXB0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGRlc2NyaXB0aW9uYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI2hlYWRlci1vYmplY3QpCmZpZWxkIG9mIEhlYWRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5IZWFkZXJgIG9iamVjdCB0aGF0IGNhbiBoYXZlCmV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoZWFkZXIsIHN1Y2ggYXMgYSBkZXNjcmlwdGlvbiwgZGVwcmVjYXRpb24KbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBzdHJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KeyJDb250ZW50LUxvY2F0aW9uIjogIkFuIGFsdGVybmF0ZSBsb2NhdGlvbiBmb3IgdGhlIHJldHVybmVkIGRhdGEifQpgYGAKCjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgSGVhZGVyXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJDb250ZW50LUxvY2F0aW9uIjogSGVhZGVyKAogICAgICAgIGRlc2NyaXB0aW9uPSJBbiBhbHRlcm5hdGUgbG9jYXRpb24gZm9yIHRoZSByZXR1cm5lZCBkYXRhIiwKICAgICAgICBleGFtcGxlPSIvaW5kZXguaHRtIiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGV4YW1wbGUKCkV4YW1wbGUgb2YgdGhlIHJlc3BvbnNlIGJvZHkuIFRoZSBleGFtcGxlIG9iamVjdCBTSE9VTEQgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0CmFzIHNwZWNpZmllZCBieSB0aGUgbWVkaWEgdHlwZS4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXNwb25zZXNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI21lZGlhLXR5cGUtb2JqZWN0KSBmaWVsZApvZiBNZWRpYSBUeXBlIG9iamVjdCBpbnNpZGUgdGhlIHZhbHVlCm9mIFtgY29udGVudGBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXNwb25zZS1vYmplY3QpIGZpZWxkIG9mClJlc3BvbnNlIG9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+QW55PC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgInRpdGxlIjogIkFubmEgS2FyZW5pbmEiLAogICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAieWVhciI6IDE4NzcsCn0KYGBgCgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyBleGFtcGxlcwoKRXhhbXBsZXMgb2YgdGhlIHJlc3BvbnNlIGJvZHkuIEVhY2ggZXhhbXBsZSBvYmplY3QgU0hPVUxEIG1hdGNoIHRoZSBtZWRpYSB0eXBlCmFuZCBzcGVjaWZpZWQgc2NoZW1hIGlmIHByZXNlbnQuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZXhhbXBsZXNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjbWVkaWEtdHlwZS1vYmplY3QpIGZpZWxkCm9mIE1lZGlhIFR5cGUgb2JqZWN0IGluc2lkZSB0aGUgdmFsdWUKb2YgW2Bjb250ZW50YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlLW9iamVjdCkgZmllbGQgb2YKUmVzcG9uc2Ugb2JqZWN0LgoKVGhlIHZhbHVlcyBvZiB0aGlzIGRpY3Rpb25hcnkgY291bGQgYmUgZWl0aGVyIGV4YW1wbGVzIHRoZW1zZWx2ZXMsCm9yIGBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscy5FeGFtcGxlYCBvYmplY3RzLiBJbiB0aGUgbGF0dGVyIGNhc2UsCmV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGV4YW1wbGVzLCBzdWNoIGFzIGEgc3VtbWFyeSBhbmQgZGVzY3JpcHRpb24sIGNhbiBiZQphZGRlZCB0byB0aGUgW0V4YW1wbGVdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNleGFtcGxlLW9iamVjdCkKb2JqZWN0LgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgQW55XTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJBbm5hIEthcmVuaW5hIjogewogICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICAgICAieWVhciI6IDE4NzcsCiAgICB9Cn0KYGBgCgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIEV4YW1wbGVdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgIkFubmEgS2FyZW5pbmEiOiBFeGFtcGxlKAogICAgICAgIHZhbHVlPXsKICAgICAgICAgICAgInRpdGxlIjogIkFubmEgS2FyZW5pbmEiLAogICAgICAgICAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICAgICAgICAgInllYXIiOiAxODc3LAogICAgICAgIH0sCiAgICAgICAgc3VtbWFyeT0iVGhlIGJvb2sgJ0FubmEgS2FyZW5pbmEnIiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMgU2VjdXJpdHkgcmVxdWlyZW1lbnRzCgpEZWNvcmF0b3IgYHNlY3VyaXR5X3JlcXVpcmVtZW50c2AKZGVjbGFyZXMgW3NlY3VyaXR5IG1lY2hhbmlzbXNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZWN1cml0eVJlcXVpcmVtZW50T2JqZWN0KQp0aGF0IGNhbiBiZSB1c2VkIGZvciB0aGUgb3BlcmF0aW9uLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBzZWN1cml0eV9yZXF1aXJlbWVudHMKYGBgCgpUaGlzIGRlY29yYXRvciB0YWtlcyBvbmUgb3IgbW9yZSBgU2VjdXJpdHlSZXF1aXJlbWVudGAgbWFwcGluZ3MsIHdoZXJlIHRoZSBrZXkKaXMgdGhlIHJlcXVpcmVtZW50IG5hbWUgYW5kIHRoZSB2YWx1ZSBpcyBgU2VjdXJpdHlTY2hlbWVgIG9iamVjdC4gVGhlcmUgYXJlCmNsYXNzZXMgZm9yCmVhY2ggW3NlY3VyaXR5IHNjaGVtZV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NlY3VyaXR5LXNjaGVtZS1vYmplY3QpCndoaWNoIGNhbiBiZSBpbXBvcnRlZCBhcyBmb2xsb3dzOgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5LmNvcmUub3BlbmFwaS5tb2RlbHMgaW1wb3J0ICgKICAgIEFQSUtleVNlY3VyaXR5U2NoZW1lLAogICAgSFRUUFNlY3VyaXR5U2NoZW1lLAogICAgT0F1dGgyU2VjdXJpdHlTY2hlbWUsCiAgICBPcGVuSURDb25uZWN0U2VjdXJpdHlTY2hlbWUsCikKYGBgCgpGb3IgZXhhbXBsZSwgdG8gYWRkIGF1dGhvcml6YXRpb24gYnkgdG9rZW4sIHlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGxpa2UgdGhpczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlmeSBpbXBvcnQgc2VjdXJpdHlfcmVxdWlyZW1lbnRzCmZyb20gb3BlbmFwaWZ5LmNvcmUub3BlbmFwaS5tb2RlbHMgaW1wb3J0ICgKICAgIEFQSUtleVNlY3VyaXR5U2NoZW1lLAogICAgU2VjdXJpdHlTY2hlbWVBUElLZXlMb2NhdGlvbiwKKQoKWEF1dGhUb2tlblNlY3VyaXR5UmVxdWlyZW1lbnQgPSB7CiAgICAieC1hdXRoLXRva2VuIjogQVBJS2V5U2VjdXJpdHlTY2hlbWUoCiAgICAgICAgbmFtZT0iWC1BdWgtVG9rZW4iLAogICAgICAgIGxvY2F0aW9uPVNlY3VyaXR5U2NoZW1lQVBJS2V5TG9jYXRpb24uSEVBREVSLAogICAgKQp9CgpAc2VjdXJpdHlfcmVxdWlyZW1lbnRzKFhBdXRoVG9rZW5TZWN1cml0eVJlcXVpcmVtZW50KQpkZWYgc2VjdXJlX29wZXJhdGlvbigpOgogICAgLi4uCmBgYAoKQW5kIHRoZSBnZW5lcmF0ZWQgc3BlY2lmaWNhdGlvbiBkb2N1bWVudCB3aWxsIGxvb2sgbGlrZSB0aGlzOgoKYGBgeWFtbApvcGVuYXBpOiAzLjEuMAppbmZvOgogIHRpdGxlOiBBUEkKICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvc2VjdXJlX3BhdGg6CiAgICBnZXQ6CiAgICAgIHNlY3VyaXR5OgogICAgICAtIHgtYXV0aC10b2tlbjogW10KY29tcG9uZW50czoKICBzZWN1cml0eVNjaGVtZXM6CiAgICB4LWF1dGgtdG9rZW46CiAgICAgIHR5cGU6IGFwaUtleQogICAgICBuYW1lOiBYLUF1aC1Ub2tlbgogICAgICBsb2NhdGlvbjogaGVhZGVyCmBgYAoKRW50aXR5IHNjaGVtYSBidWlsZGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW4gc29tZSBkZWNvcmF0b3JzIHlvdSBzaG91bGQgcGFzcyBQeXRob24gZGF0YSB0eXBlIGZvciB3aGljaCB0aGUgSlNPTiBTY2hlbWEKaXMgYmVpbmcgYnVpbHQgYnkgb3BlbmFwaWZ5IGluIG9yZGVyIHRvIGdldCB0aGUgY29ycmVjdCBPcGVuQVBJIGRvY3VtZW50LgpPdXQgb2YgdGhlIGJveCwgdGhlIHNjaGVtYSBpcyBnZW5lcmF0ZWQgYnkKdXNpbmcgW2BtYXNodW1hcm9gXShodHRwczovL2dpdGh1Yi5jb20vRmF0YWwxdHkvbWFzaHVtYXJvKSBsaWJyYXJ5LCBidXQgc3VwcG9ydApmb3IgdGhpcmQtcGFydHkgZW50aXR5IHNjaGVtYSBnZW5lcmF0b3JzIGNhbiBiZSBpbXBsZW1lbnRlZCB0aHJvdWdoIGFuIGFwaXNwZWMKcGx1Z2luLiBJbiB0aGUgZnV0dXJlLCB0aGlzIGNoYXB0ZXIgd2lsbCBjb250YWluIHJlY29tbWVuZGF0aW9ucyBmb3Igd3JpdGluZwphbmQgdXNpbmcgc3VjaCBwbHVnaW5zLgo= - readmeEtag: '"9b2d868c3990c521387cd42687fcb2cd1fb639e4d0d9eb2c08ce2a5fa3c9cb9e"' - readmeLastModified: Tue, 25 Jul 2023 22:02:08 GMT + IyBvcGVuYXBpZnkKCiMjIyMjIyBGcmFtZXdvcmsgYWdub3N0aWMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGdlbmVyYXRpb24gZm9yIGNvZGUgbG92ZXJzCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvd29ya2Zsb3dzL3Rlc3RzL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvYWN0aW9ucykKWyFbTGF0ZXN0IFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS92L29wZW5hcGlmeS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGlmeSkKWyFbUHl0aG9uIFZlcnNpb25dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vcHlwaS9weXZlcnNpb25zL29wZW5hcGlmeS5zdmcpXShodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL29wZW5hcGlmeSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1ibHVlLnN2ZyldKGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQXBhY2hlLTIuMCkKCi0tLQoKVGhpcyBsaWJyYXJ5IGlzIGRlc2lnbmVkIGZvciBjb2RlLWZpcnN0IHBlb3BsZSB3aG8gZG9uJ3Qgd2FudCB0byBib3RoZXIgZGl2aW5nCmludG8gdGhlIGRldGFpbHMKb2YgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wKSwgYnV0IHdobwppbnN0ZWFkIHdhbnQgdG8gdXNlIGFkdmFudGFnZXMgb2YgUHl0aG9uIHR5cGluZyBzeXN0ZW0sIElERSBjb2RlLWNvbXBsZXRpb24gYW5kCnN0YXRpYyB0eXBlIGNoZWNrZXJzIHRvIGNvbnRpbnVvdXNseSBidWlsZCB0aGUgQVBJIGRvY3VtZW50YXRpb24gYW5kIGtlZXAgaXQKYWx3YXlzIHVwIHRvIGRhdGUuCgpPcGVuYXBpZnkgaXMgYmFzZWQgb24gdGhlIGlkZWEgb2YgYXBwbHlpbmcgZGVjb3JhdG9ycyBvbiByb3V0ZSBoYW5kbGVycy4gQW55CndlYi1mcmFtZXdvcmsgaGFzIGEgcm91dGluZyBzeXN0ZW0gdGhhdCBsZXQgdXMgbGluayBhIHJvdXRlIHRvIGEgaGFuZGxlcgooYSBoaWdoLWxldmVsIGZ1bmN0aW9uIG9yIGEgY2xhc3MgbWV0aG9kKS4gQnkgdXNpbmcgZGVjb3JhdG9ycywgd2UgY2FuIGFkZAppbmZvcm1hdGlvbiBhYm91dCByZXF1ZXN0cywgcmVzcG9uc2VzIGFuZCBvdGhlciBkZXRhaWxzIHRoYXQgd2lsbCB0aGVuIGJlIHVzZWQKdG8gY3JlYXRlIGFuIGVudGlyZSBPcGVuQVBJIGRvY3VtZW50LgoKPiBbIVdBUk5JTkddXAo+IFRoaXMgbGlicmFyeSBpcyBjdXJyZW50bHkgaW4gcHJlLXJlbGVhc2Ugc3RhZ2UgYW5kIG1heSBoYXZlIGJhY2t3YXJkCj4gaW5jb21wYXRpYmxlIGNoYW5nZXMgcHJpb3IgdG8gdmVyc2lvbiAxLjAuIFBsZWFzZSB1c2UgY2F1dGlvbiB3aGVuIHVzaW5nIHRoaXMKPiBsaWJyYXJ5IGluIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIGFuZCBiZSBzdXJlIHRvIHRob3JvdWdobHkgdGVzdCBhbnkgdXBkYXRlcwo+IGJlZm9yZSB1cGdyYWRpbmcgdG8gYSBuZXcgdmVyc2lvbi4KClRhYmxlIG9mIGNvbnRlbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiogW1F1aWNrc3RhcnRdKCNxdWlja3N0YXJ0KQoqIFtCdWlsZGluZyB0aGUgT3BlbkFQSSBEb2N1bWVudF0oI2J1aWxkaW5nLXRoZS1vcGVuYXBpLWRvY3VtZW50KQoqIFtJbnRlZ3JhdGlvbiB3aXRoIHdlYi1mcmFtZXdvcmtzXSgjaW50ZWdyYXRpb24td2l0aC13ZWItZnJhbWV3b3JrcykKICAgICogW2Fpb2h0dHBdKCNhaW9odHRwKQogICAgKiBbV3JpdGluZyB5b3VyIG93biBpbnRlZ3JhdGlvbl0oI3dyaXRpbmcteW91ci1vd24taW50ZWdyYXRpb24pCiogW0RlY29yYXRvcnNdKCNkZWNvcmF0b3JzKQogICAgKiBbR2VuZXJpYyBvcGVyYXRpb24gaW5mb10oI2dlbmVyaWMtb3BlcmF0aW9uLWluZm8pCiAgICAqIFtSZXF1ZXN0XSgjcmVxdWVzdCkKICAgICogW1Jlc3BvbnNlXSgjcmVzcG9uc2UpCiAgICAqIFtTZWN1cml0eSByZXF1aXJlbWVudHNdKCNzZWN1cml0eS1yZXF1aXJlbWVudHMpCiogW0VudGl0eSBzY2hlbWEgYnVpbGRlcnNdKCNlbnRpdHktc2NoZW1hLWJ1aWxkZXJzKQoKSW5zdGFsbGF0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpVc2UgcGlwIHRvIGluc3RhbGw6CgpgYGBzaGVsbAokIHBpcCBpbnN0YWxsIG9wZW5hcGlmeQpgYGAKClF1aWNrc3RhcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCj4gWyFOT1RFXVwKPiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIHdlIHdpbGwgaW50ZW50aW9uYWxseSBkZW1vbnN0cmF0ZSB0aGUgcHJvY2VzcyBvZgo+IGNyZWF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQgd2l0aG91dCBiZWluZyB0aWVkIHRvIGEgc3BlY2lmaWMgd2ViLWZyYW1ld29yay4KPiBIb3dldmVyLCB0aGlzIHByb2Nlc3MgbWF5IGJlIGVhc2llciBvbiBhIHN1cHBvcnRlZCB3ZWItZnJhbWV3b3JrLgo+IFNlZSBbSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3Jrc10oI2ludGVncmF0aW9uLXdpdGgtd2ViLWZyYW1ld29ya3MpIGZvcgo+IG1vcmUgaW5mby4KCkxldCdzIHNlZSBob3cgdG8gYnVpbGQgYW4gT3BlbkFQSSBkb2N1bWVudCB3aXRoIG9wZW5hcGlmeS4gU3VwcG9zZSB3ZSBhcmUKd3JpdGluZyBhbiBhcHAgZm9yIGEgYm9va3N0b3JlIHRoYXQgcmV0dXJuIGEgbGlzdCBvZiBuZXcgYm9va3MuIEhlcmUgd2UgaGF2ZSBhCmRhdGFjbGFzcyBtb2RlbCBgQm9va2AgdGhhdCB3b3VsZCBiZSB1c2VkIGFzIGEgcmVzcG9uc2UgbW9kZWwgaW4gYSByZWFsLWxpZmUKc2NlbmFyaW8uIEEgZnVuY3Rpb24gYGdldF9uZXdfYm9va3NgIGlzIG91ciBoYW5kbGVyLgoKYGBgcHl0aG9uCmZyb20gZGF0YWNsYXNzZXMgaW1wb3J0IGRhdGFjbGFzcwoKQGRhdGFjbGFzcwpjbGFzcyBCb29rOgogICAgdGl0bGU6IHN0cgogICAgYXV0aG9yOiBzdHIKICAgIHllYXI6IGludAoKZGVmIGdldF9uZXdfYm9va3MoLi4uKToKICAgIC4uLgpgYGAKCk5vdyB3ZSB3YW50IHRvIHNheSB0aGF0IG91ciBoYW5kbGVyIHJldHVybnMgYSBqc29uIHNlcmlhbGl6ZWQgbGlzdCBvZiBib29rcwpsaW1pdGVkIGJ5IHRoZSBvcHRpb25hbCBgY291bnRgIHBhcmFtZXRlci4gV2UgdXNlIGByZXF1ZXN0X3NjaGVtYWAKYW5kIGByZXNwb25zZV9zY2hlbWFgIGRlY29yYXRvcnMgYWNjb3JkaW5nbHk6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHJlcXVlc3Rfc2NoZW1hLCByZXNwb25zZV9zY2hlbWEKCkByZXF1ZXN0X3NjaGVtYShxdWVyeV9wYXJhbXM9eyJjb3VudCI6IGludH0pCkByZXNwb25zZV9zY2hlbWEobGlzdFtCb29rXSkKZGVmIGdldF9uZXdfYm9va3MoLi4uKToKICAgIC4uLgpgYGAKCkFuZCBub3cgd2UgbmVlZCB0byBjb2xsZWN0IGFsbCB0aGUgcm91dGUgZGVmaW5pdGlvbnMgYW5kIHBhc3MgdGhlbSB0byB0aGUKYGJ1aWxkX3NwZWNgIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIGB0b195YW1sYAptZXRob2QuCgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5tb2RlbHMgaW1wb3J0IFJvdXRlRGVmCgpyb3V0ZXMgPSBbUm91dGVEZWYoIi9ib29rcyIsICJnZXQiLCBnZXRfbmV3X2Jvb2tzKV0Kc3BlYyA9IGJ1aWxkX3NwZWMocm91dGVzKQpwcmludChzcGVjLnRvX3lhbWwoKSkKYGBgCgpBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBPcGVuQVBJIGRvY3VtZW50IHdoaWNoIGNhbiBiZSByZW5kZXJlZAp1c2luZyB0b29scyBzdWNoIGFzIFN3YWdnZXIgVUk6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMS4wCmluZm86CiAgdGl0bGU6IEFQSQogIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9ib29rczoKICAgIGdldDoKICAgICAgcGFyYW1ldGVyczoKICAgICAgLSBuYW1lOiBjb3VudAogICAgICAgIGluOiBxdWVyeQogICAgICAgIHNjaGVtYToKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IE9LCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgIHR5cGU6IGFycmF5CiAgICAgICAgICAgICAgICBpdGVtczoKICAgICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL0Jvb2snCmNvbXBvbmVudHM6CiAgc2NoZW1hczoKICAgIEJvb2s6CiAgICAgIHR5cGU6IG9iamVjdAogICAgICB0aXRsZTogQm9vawogICAgICBwcm9wZXJ0aWVzOgogICAgICAgIHRpdGxlOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgYXV0aG9yOgogICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgeWVhcjoKICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlCiAgICAgIHJlcXVpcmVkOgogICAgICAtIHRpdGxlCiAgICAgIC0gYXV0aG9yCiAgICAgIC0geWVhcgpgYGAKCkJ1aWxkaW5nIHRoZSBPcGVuQVBJIERvY3VtZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRoZSBmaW5hbCBnb2FsIG9mIHRoaXMgbGlicmFyeSBpcyB0byBidWlsZAp0aGUgW09wZW5BUEkgRG9jdW1lbnRdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVuYXBpLWRvY3VtZW50KQpmb3IgeW91ciB3ZWItYXBwbGljYXRpb24uIFRoaXMgZG9jdW1lbnQgY29uc2lzdHMgb2YgY29tbW9uIGluZm9ybWF0aW9uIGFib3V0CnRoZSBhcHBsaWNhdGlvbiwgc3VjaCBhcyBhIHRpdGxlIGFuZCB2ZXJzaW9uLCBhbmQgc3BlY2lmaWMgaW5mb3JtYXRpb24gdGhhdApvdXRsaW5lcyB0aGUgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBBUEkuCgpTaW5jZSBvcGVuYXBpZnkgaXMgbm93IGJhc2VkCm9uIFthcGlzcGVjXShodHRwczovL2dpdGh1Yi5jb20vbWFyc2htYWxsb3ctY29kZS9hcGlzcGVjKSBsaWJyYXJ5LCB0aGUgT3BlbkFQSQpkb2N1bWVudCBpcyBwcmVzZW50ZWQgYnkgYEFQSVNwZWNgIGNsYXNzIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgdXNpbmcgdGhlCmV4aXN0aW5nIGVjb3N5c3RlbSBvZiBwbHVnaW5zLiBIb3dldmVyLCBvcGVuYXBpZnkgaGFzIGl0cyBvd24Kc3ViY2xhc3MgYE9wZW5BUElEb2N1bWVudGAgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGFkZCBzb21lIGNvbW1vbiBmaWVsZHMsCnN1Y2ggYXMgYW4gYXJyYXkKb2YgW1NlcnZlcl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NlcnZlci1vYmplY3QpIG9iamVjdHMgb3IKYXJyYXkgb2YKY29tbW9uIFtTZWN1cml0eSBTY2hlbWVdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZWN1cml0eS1zY2hlbWUtb2JqZWN0KQpvYmplY3RzLgoKVG8gYnVpbGQgdGhlIGRvY3VtZW50LCB0aGVyZSBpcyBgYnVpbGRfc3BlY2AgZnVuY3Rpb24uIFRoZSB2ZXJ5IGJhc2ljIGRvY3VtZW50CmNhbiBiZSBjcmVhdGVkIGJ5IGNhbGxpbmcgaXQgd2l0aCBhbiBlbXB0eSBsaXN0IG9mIHJvdXRlIGRlZmluaXRpb25zLCBsZWF2aW5nCmFsbCB0aGUgcGFyYW1ldGVycyB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKCnByaW50KGJ1aWxkX3NwZWMoW10pLnRvX3lhbWwoKSkKYGBgCgpBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKCmBgYHlhbWwKb3BlbmFwaTogMy4xLjAKaW5mbzoKICB0aXRsZTogQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6IHt9CmBgYAoKV2UgY2FuIGNoYW5nZSB0aGUgY29tbW9uIGRvY3VtZW50IGF0dHJpYnV0ZXMgZWl0aGVyIGJ5IHBhc3NpbmcgdGhlbQp0byBgYnVpbGRfc3BlY2A6CgpgYGBweXRob24KZnJvbSBvcGVuYXBpZnkgaW1wb3J0IGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgSFRUUFNlY3VyaXR5U2NoZW1lCgpidWlsZF9zcGVjKAogICAgcm91dGVzPVtdLAogICAgdGl0bGU9Ik15IEJvb2tzdG9yZSBBUEkiLAogICAgdmVyc2lvbj0iMS4xLjAiLAogICAgb3BlbmFwaV92ZXJzaW9uPSIzLjEuMCIsCiAgICBzZXJ2ZXJzPVsiaHR0cDovLzEyNy4wLjAuMSJdLAogICAgc2VjdXJpdHlfc2NoZW1lcz17ImJhc2ljX2F1dGgiOiBIVFRQU2VjdXJpdHlTY2hlbWUoKX0KKQpgYGAKCm9yIHVzaW5nIGEgcHJlcGFyZWQgYE9wZW5BUElEb2N1bWVudGAgb2JqZWN0OgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBPcGVuQVBJRG9jdW1lbnQsIGJ1aWxkX3NwZWMKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgSFRUUFNlY3VyaXR5U2NoZW1lCgpzcGVjID0gT3BlbkFQSURvY3VtZW50KAogICAgdGl0bGU9Ik15IEJvb2tzdG9yZSBBUEkiLAogICAgdmVyc2lvbj0iMS4xLjAiLAogICAgb3BlbmFwaV92ZXJzaW9uPSIzLjEuMCIsCiAgICBzZXJ2ZXJzPVsiaHR0cDovLzEyNy4wLjAuMSJdLAogICAgc2VjdXJpdHlfc2NoZW1lcz17ImJhc2ljX2F1dGgiOiBIVFRQU2VjdXJpdHlTY2hlbWUoKX0sCikKYnVpbGRfc3BlYyhbXSwgc3BlYykKYGBgCgpUbyBhZGQgbWVhbmluZyB0byBvdXIgZG9jdW1lbnQsIHdlIGNhbgphZGQgW1BhdGhdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNwYXRocy1vYmplY3QpLApbQ29tcG9uZW50XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjY29tcG9uZW50cy1vYmplY3QpCmFuZCBvdGhlciBPcGVuQVBJIG9iamVjdHMgYnkgYXBwbHlpbmcgW2RlY29yYXRvcnNdKCNkZWNvcmF0b3JzKSBvbiBvdXIgcm91dGUKaGFuZGxlcnMgYW5kIGNvbnN0cnVjdGluZyByb3V0ZSBkZWZpbml0aW9ucyB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgpBIHNpbmdsZSBjb21wbGV0ZSByb3V0ZSBkZWZpbml0aW9uIHByZXNlbnRlZCBieSBgUm91dGVEZWZgIGNsYXNzIGNhbiBsb29rIGxpa2UKdGhpczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlmeS5jb3JlLm1vZGVscyBpbXBvcnQgUm91dGVEZWYKZnJvbSBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscyBpbXBvcnQgUGFyYW1ldGVyLCBQYXJhbWV0ZXJMb2NhdGlvbgoKZGVmIGdldF9ib29rX2J5X2lkX2hhbmRsZXIoLi4uKToKICAgIC4uLgoKUm91dGVEZWYoCiAgICBwYXRoPSIvYm9vay97aWR9IiwKICAgIG1ldGhvZD0iZ2V0IiwKICAgIGhhbmRsZXI9Z2V0X2Jvb2tfYnlfaWRfaGFuZGxlciwKICAgIHN1bW1hcnk9IkdldHRpbmcgdGhlIGJvb2siLAogICAgZGVzY3JpcHRpb249IkdldHRpbmcgdGhlIGJvb2sgYnkgaWQiLAogICAgcGFyYW1ldGVycz1bCiAgICAgICAgUGFyYW1ldGVyKAogICAgICAgICAgICBuYW1lPSJpZCIsCiAgICAgICAgICAgIGxvY2F0aW9uPVBhcmFtZXRlckxvY2F0aW9uLlBBVEgsCiAgICAgICAgICAgIHJlcXVpcmVkPVRydWUsCiAgICAgICAgICAgIHNjaGVtYT17InR5cGUiOiAiaW50ZWdlciJ9LAogICAgICAgICkKICAgIF0sCiAgICB0YWdzPVsiYm9vayJdLAopCmBgYAoKQXMgd2lsbCBiZSBzaG93biBmdXJ0aGVyLCBvcHRpb25hbAphcmd1bWVudHMgYHN1bW1hcnlgLCBgZGVzY3JpcHRpb25gLCBgcGFyYW1ldGVyc2AgYW5kIGB0YWdzYCBjYW4gYmUgb3ZlcnJpZGRlbgpvciBleHRlbmRlZCBieSBgb3BlcmF0aW9uX2RvY3NgIGFuZCBgcmVxdWVzdF9zY2hlbWFgIGRlY29yYXRvcnMuCgpUaGUgY3JlYXRpbmcgb2YgdGhlc2Ugcm91dGUgZGVmaW5pdGlvbnMgY2FuIGJlIGF1dG9tYXRlZCBhbmQgYWRhcHRlZCB0byBhCnNwZWNpZmljIHdlYi1mcmFtZXdvcmssIGFuZCBvcGVuYXBpZnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGEgZmV3IG9mIHRoZW0uClNlZSBbSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3Jrc10oI2ludGVncmF0aW9uLXdpdGgtd2ViLWZyYW1ld29ya3MpIGZvcgpkZXRhaWxzLgoKSW50ZWdyYXRpb24gd2l0aCB3ZWItZnJhbWV3b3JrcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhlcmUgaXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgYSBmZXcgd2ViLWZyYW1ld29ya3MsIHdoaWNoIG1ha2VzIGNyZWF0aW5nIHRoZQpkb2N1bWVudGF0aW9uIGV2ZW4gZWFzaWVyIGFuZCBtb3JlIGZ1bi4gQW55IG90aGVyIGZyYW1ld29ya3MgY2FuIGJlIGludGVncmF0ZWQKd2l0aCBhIGxpdHRsZSBlZmZvcnQuIElmIHlvdSBhcmUgcmVhZHkgdG8gdGFrZSBvbiB0aGlzLCB5b3UgYXJlIHZlcnkgd2VsY29tZSB0bwpjcmVhdGUgYSBbcHVsbCByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vRmF0YWwxdHkvb3BlbmFwaWZ5L3B1bGxzKS4KCiMjIyBhaW9odHRwCgpUaGUgZG9jdW1lbnRhdGlvbiBmb3IgW2Fpb2h0dHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9haW9odHRwKQp3ZWItYXBwbGljYXRpb24gY2FuIGJlIGJ1aWx0IGluIHRocmVlIHdheXM6CgoqIFVzaW5nIGFuIGFscmVhZHkgZXhpc3RpbmcgW2BhaW9odHRwLndlYi5BcHBsaWNhdGlvbmBdKGh0dHBzOi8vZG9jcy5haW9odHRwLm9yZy9lbi9zdGFibGUvd2ViX3JlZmVyZW5jZS5odG1sI2FwcGxpY2F0aW9uKSBvYmplY3QKKiBVc2luZyBhIHNldCBvZiBbYGFpb2h0dHAud2ViLlJvdXRlRGVmYF0oaHR0cHM6Ly9kb2NzLmFpb2h0dHAub3JnL2VuL3N0YWJsZS93ZWJfcmVmZXJlbmNlLmh0bWwjYWlvaHR0cC53ZWIuUm91dGVEZWYpIG9iamVjdHMKKiBVc2luZyBhIHNldCBvZiBvYmplY3RzIGltcGxlbWVudGluZyBbYEFpb0h0dHBSb3V0ZURlZmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9GYXRhbDF0eS9vcGVuYXBpZnkvYmxvYi8yYmJmMmU5OWMwNmIzMWZhMmYxNDY1ZjJlYmMxMTg4ODRjZTJiYjk1L29wZW5hcGlmeS9leHQvd2ViL2Fpb2h0dHAucHkjTDQzLUw0NikgcHJvdG9jb2wKCkFsbCB3ZSBuZWVkIGlzIHRvIHBhc3MgZWl0aGVyIGFuIGFwcGxpY2F0aW9uLCBvciBhIHNldCBvZiByb3V0ZSBkZWZzIHRvCm1vZGlmaWVkIGBidWlsZF9zcGVjYCBmdW5jdGlvbi4gU2VlIHRoZSBleGFtcGxlOgpgYGBweXRob24KZnJvbSBhaW9odHRwIGltcG9ydCB3ZWIKZnJvbSBvcGVuYXBpZnkgaW1wb3J0IHJlcXVlc3Rfc2NoZW1hLCByZXNwb25zZV9zY2hlbWEKZnJvbSBvcGVuYXBpZnkuZXh0LndlYi5haW9odHRwIGltcG9ydCBidWlsZF9zcGVjCgpyb3V0ZXMgPSB3ZWIuUm91dGVUYWJsZURlZigpCgpAcmVzcG9uc2Vfc2NoZW1hKHN0ciwgbWVkaWFfdHlwZT0idGV4dC9wbGFpbiIpCkByb3V0ZXMucG9zdCgiLyIpCmFzeW5jIGRlZiBoZWxsbyhyZXF1ZXN0KToKICAgIHJldHVybiB3ZWIuUmVzcG9uc2UodGV4dD0iSGVsbG8sIHdvcmxkIikKCmFwcCA9IHdlYi5BcHBsaWNhdGlvbigpCmFwcC5hZGRfcm91dGVzKHJvdXRlcykKCnByaW50KGJ1aWxkX3NwZWMoYXBwKS50b195YW1sKCkpCmBgYApBcyBhIHJlc3VsdCwgd2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKCmBgYHlhbWwKb3BlbmFwaTogMy4xLjAKaW5mbzoKICB0aXRsZTogQVBJCiAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgLzoKICAgIHBvc3Q6CiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBPSwogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgdGV4dC9wbGFpbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICB0eXBlOiBzdHJpbmcKYGBgCgojIyMgV3JpdGluZyB5b3VyIG93biBpbnRlZ3JhdGlvbgoK8J+apyBUbyBiZSBkZXNjcmliZWQKCkRlY29yYXRvcnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk9wZW5hcGlmeSBoYXMgc2V2ZXJhbCBkZWNvcmF0b3JzIHRoYXQgZW1iZWQgbmVjZXNzYXJ5IHNwZWNpZmljIGluZm9ybWF0aW9uIGZvcgpsYXRlciB1c2Ugd2hlbiBidWlsZGluZyB0aGUgT3BlbkFQSSBkb2N1bWVudC4gSW4gZ2VuZXJhbCwgZGVjb3JhdG9ycyB3aWxsCmRlZmluZSB0aGUgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIGluY2x1ZGVkIGluCnRoZSBbT3BlcmF0aW9uIE9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCndoaWNoIGRlc2NyaWJlcyBhIHNpbmdsZSBBUEkgb3BlcmF0aW9uIG9uIGEgcGF0aC4gV2Ugd2lsbCBsb29rIGF0IHdoYXQgZWFjaApkZWNvcmF0b3IgcGFyYW1ldGVyIGlzIHJlc3BvbnNpYmxlIGZvciBhbmQgaG93IGl0IGlzIHJlZmxlY3RlZCBpbiB0aGUgZmluYWwKZG9jdW1lbnQuCgojIyMgR2VuZXJpYyBvcGVyYXRpb24gaW5mbwoKRGVjb3JhdG9yIGBvcGVyYXRpb25fZG9jc2AgYWRkcyBnZW5lcmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBPcGVyYXRpb24gb2JqZWN0LAp3aGljaCBpbmNsdWRlcyBzdW1tYXJ5LCBkZXNjcmlwdGlvbiwgdGFncywgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiBhbmQKZGVwcmVjYXRpb24gbWFya2VyLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBvcGVyYXRpb25fZG9jcwpgYGAKCiMjIyMgc3VtbWFyeQoKQW4gb3B0aW9uYWwsIHN0cmluZyBzdW1tYXJ5LCBpbnRlbmRlZCB0byBhcHBseSB0byB0aGUgb3BlcmF0aW9uLiBUaGlzIGFmZmVjdHMKdGhlIHZhbHVlIG9mCnRoZSBbYHN1bW1hcnlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkgZmllbGQgb2YKdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIkdldHRpbmcgbmV3IGJvb2tzImAgfAoKIyMjIyBkZXNjcmlwdGlvbgoKQW4gb3B0aW9uYWwsIHN0cmluZyBkZXNjcmlwdGlvbiwgaW50ZW5kZWQgdG8gYXBwbHkgdG8gdGhlCm9wZXJhdGlvbi4gW0NvbW1vbk1hcmsgc3ludGF4XShodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcpIE1BWSBiZSB1c2VkIGZvcgpyaWNoIHRleHQgcmVwcmVzZW50YXRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIlJldHVybnMgYSBsaXN0IG9mIGJvb2tzImAgfAoKIyMjIyB0YWdzCgpBIGxpc3Qgb2YgdGFncyBmb3IgQVBJIGRvY3VtZW50YXRpb24gY29udHJvbC4gVGFncyBjYW4gYmUgdXNlZCBmb3IgbG9naWNhbApncm91cGluZyBvZiBvcGVyYXRpb25zIGJ5IHJlc291cmNlcyBvciBhbnkgb3RoZXIgcXVhbGlmaWVyLiBUaGlzIGFmZmVjdHMgdGhlCnZhbHVlIG9mIHRoZSBbYHRhZ3NgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzICB8IEV4YW1wbGVzICAgfAp8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfAp8IGBTZXF1ZW5jZVtzdHJdYCB8IGBbImJvb2siXWAgfAoKIyMjIyBvcGVyYXRpb25faWQKClVuaXF1ZSBzdHJpbmcgdXNlZCB0byBpZGVudGlmeSB0aGUgb3BlcmF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlCnZhbHVlIG9mCnRoZSBbYG9wZXJhdGlvbklkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgZ2V0Qm9va3NgIHwKCiMjIyMgZXh0ZXJuYWxfZG9jcwoKQWRkaXRpb25hbCBleHRlcm5hbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgb3BlcmF0aW9uLiBJdCBjYW4gYmUgYSBzaW5nbGUgdXJsIG9yCih1cmwsIGRlc2NyaXB0aW9uKSBwYWlyLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHN1bW1hcnlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkgZmllbGQgb2YKdGhlIE9wZXJhdGlvbiBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzICAgIHwgRXhhbXBsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgc3RyYCAgICAgICAgICAgICB8IGAiaHR0cHM6Ly9leGFtcGxlLm9yZy9kb2NzL2Jvb2tzImAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBUdXBsZVtzdHIsIHN0cl1gIHwgYCgiaHR0cHM6Ly9leGFtcGxlLm9yZy9kb2NzL2Jvb2tzIiwgIkV4dGVybmFsIGRvY3VtZW50YXRpb24gZm9yIC9ib29rcyIpYCB8CgojIyMjIGRlcHJlY2F0ZWQKCkRlY2xhcmVzIHRoZSBvcGVyYXRpb24gdG8gYmUgZGVwcmVjYXRlZC4gQ29uc3VtZXJzIFNIT1VMRCByZWZyYWluIGZyb20gdXNhZ2UKb2YgdGhlIGRlY2xhcmVkIG9wZXJhdGlvbi4gRGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BkZXByZWNhdGVkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpIGZpZWxkCm9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IGBib29sYCAgICAgICAgIHwgPGNvZGUgbGFuZz0icHl0aG9uIj5UcnVlPC9wcmU+IHwKCiMjIyBSZXF1ZXN0CgpEZWNvcmF0b3IgYHJlcXVlc3Rfc2NoZW1hYCBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcGVyYXRpb24gcmVxdWVzdHMuClJlcXVlc3QgY2FuIGhhdmUgYSBib2R5LCBxdWVyeSBwYXJhbWV0ZXJzLCBoZWFkZXJzIGFuZCBjb29raWVzLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCByZXF1ZXN0X3NjaGVtYQpgYGAKCiMjIyMgYm9keQoKQSByZXF1ZXN0IGJvZHkgY2FuIGJlIGRlc2NyaWJlZCBlbnRpcmVseSBieSBvbmUgYGJvZHlgIHBhcmFtZXRlciBvZiB0eXBlIGBCb2R5YApvciBwYXJ0aWFsbHkgYnkgc2VwYXJhdGUgYGJvZHlfKmAgcGFyYW1ldGVycyAoc2VlIGJlbG93KS4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIGBvcGVuYXBpZnkuY29yZS5tb2RlbHMuQm9keWAgb2JqZWN0IHRoYXQgaGFzIGFsbCB0aGUKc2VwYXJhdGUgYGJvZHlfKmAgcGFyYW1ldGVycyBpbnNpZGUuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgdGhlIHJlcXVlc3QgYm9keSBQeXRob24gZGF0YSB0eXBlIGZvciB3aGljaCB0aGUgSlNPTgpTY2hlbWEgd2lsbCBiZSBidWlsdC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXF1ZXN0Qm9keWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHNjaGVtYWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQgb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlCnRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+VHlwZTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCkJvb2sKYGBgCgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+Qm9keTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCkJvZHkoCiAgICB2YWx1ZV90eXBlPUJvb2ssCiAgICBtZWRpYV90eXBlPSJhcHBsaWNhdGlvbi9qc29uIiwKICAgIHJlcXVpcmVkPVRydWUsCiAgICBkZXNjcmlwdGlvbj0iQSBib29rIiwKICAgIGV4YW1wbGU9ewogICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICAgICAieWVhciI6IDE4NzcsCiAgICB9LAopCmBgYAoKPC90ZD4KPC90cj4KPC90YWJsZT4KCiMjIyMgbWVkaWFfdHlwZQoKQSBtZWRpYSB0eXBlCm9yIFttZWRpYSB0eXBlIHJhbmdlXShodHRwczovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjNzIzMSNhcHBlbmRpeC1EKSBvZiB0aGUKcmVxdWVzdCBib2R5LiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlcXVlc3RCb2R5YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIGtleQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KClRoZSBkZWZhdWx0IHZhbHVlIGlzIGAiYXBwbGljYXRpb24vanNvbiJgLgoKfCBQb3NzaWJsZSB0eXBlcyB8IEV4YW1wbGVzICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgImFwcGxpY2F0aW9uL3htbCJgIHwKCiMjIyMgYm9keV9yZXF1aXJlZAoKRGV0ZXJtaW5lcyBpZiB0aGUgcmVxdWVzdCBib2R5IGlzIHJlcXVpcmVkIGluIHRoZSByZXF1ZXN0LiBEZWZhdWx0cyB0byBmYWxzZS4KVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXF1ZXN0Qm9keWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHJlcXVpcmVkYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3JlcXVlc3QtYm9keS1vYmplY3QpCmZpZWxkIG9mIFJlcXVlc3QgQm9keSBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGBib29sYCAgICAgICAgIHwgYFRydWVgICAgfAoKIyMjIyBib2R5X2Rlc2NyaXB0aW9uCgpBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSByZXF1ZXN0IGJvZHkuIFRoaXMgY291bGQgY29udGFpbiBleGFtcGxlcyBvZgp1c2UuIFtDb21tb25NYXJrIHN5bnRheF0oaHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnKSBNQVkgYmUgdXNlZCBmb3IgcmljaCB0ZXh0CnJlcHJlc2VudGF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlcXVlc3RCb2R5YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZGVzY3JpcHRpb25gXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkKZmllbGQgb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyAgIHwKfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfAp8IGBzdHJgICAgICAgICAgIHwgYCJBIGJvb2siYCB8CgojIyMjIGJvZHlfZXhhbXBsZQoKRXhhbXBsZSBvZiB0aGUgcmVxdWVzdCBib2R5LiBUaGUgZXhhbXBsZSBvYmplY3QgU0hPVUxEIGJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdAphcyBzcGVjaWZpZWQgYnkgdGhlIG1lZGlhIHR5cGUuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI21lZGlhLXR5cGUtb2JqZWN0KSBmaWVsZApvZgpNZWRpYSBUeXBlIG9iamVjdCBpbnNpZGUKdGhlIHZhbHVlCm9mIFtgY29udGVudGBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXF1ZXN0LWJvZHktb2JqZWN0KSBmaWVsZApvZiBSZXF1ZXN0IEJvZHkgb2JqZWN0LgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5Bbnk8L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICJ5ZWFyIjogMTg3NywKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGJvZHlfZXhhbXBsZXMKCkV4YW1wbGVzIG9mIHRoZSByZXF1ZXN0IGJvZHkuIEVhY2ggZXhhbXBsZSBvYmplY3QgU0hPVUxEIG1hdGNoIHRoZSBtZWRpYSB0eXBlCmFuZCBzcGVjaWZpZWQgc2NoZW1hIGlmIHByZXNlbnQuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVxdWVzdEJvZHlgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQKb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlCnRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVxdWVzdC1ib2R5LW9iamVjdCkgZmllbGQKb2YgUmVxdWVzdCBCb2R5IG9iamVjdC4KClRoZSB2YWx1ZXMgb2YgdGhpcyBkaWN0aW9uYXJ5IGNvdWxkIGJlIGVpdGhlciBleGFtcGxlcyB0aGVtc2VsdmVzLApvciBgb3BlbmFwaWZ5LmNvcmUub3BlbmFwaS5tb2RlbHMuRXhhbXBsZWAgb2JqZWN0cy4gSW4gdGhlIGxhdHRlciBjYXNlLApleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCBleGFtcGxlcywgc3VjaCBhcyBhIHN1bW1hcnkgYW5kIGRlc2NyaXB0aW9uLCBjYW4gYmUKYWRkZWQgdG8gdGhlIFtFeGFtcGxlXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjZXhhbXBsZS1vYmplY3QpCm9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIEFueV08L2NvZGU+IDwvdGQ+Cjx0ZD4KCmBgYHB5dGhvbgp7CiAgICAiQW5uYSBLYXJlbmluYSI6IHsKICAgICAgICAidGl0bGUiOiAiQW5uYSBLYXJlbmluYSIsCiAgICAgICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAgICAgInllYXIiOiAxODc3LAogICAgfQp9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBFeGFtcGxlXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJBbm5hIEthcmVuaW5hIjogRXhhbXBsZSgKICAgICAgICB2YWx1ZT17CiAgICAgICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAgICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAgICAgICAgICJ5ZWFyIjogMTg3NywKICAgICAgICB9LAogICAgICAgIHN1bW1hcnk9IlRoZSBib29rICdBbm5hIEthcmVuaW5hJyIsCiAgICApCn0KYGBgCgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyBxdWVyeV9wYXJhbXMKCkRpY3Rpb25hcnkgb2YgcXVlcnkgcGFyYW1ldGVycyBhcHBsaWNhYmxlIGZvciB0aGUgb3BlcmF0aW9uLCB3aGVyZSB0aGUga2V5IGlzCnRoZSBwYXJhbWV0ZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBQeXRob24gZGF0YSB0eXBlIG9yCmEgYFF1ZXJ5UGFyYW1gIG9iamVjdC4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIHRoZSBQeXRob24gZGF0YSB0eXBlIGZvciB0aGUgcXVlcnkgcGFyYW1ldGVyIGZvciB3aGljaAp0aGUgSlNPTiBTY2hlbWEgd2lsbCBiZSBidWlsdC4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2BwYXJhbWV0ZXJzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgc2NoZW1hYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhcmFtZXRlci1vYmplY3QpIGZpZWxkIG9mClBhcmFtZXRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5RdWVyeVBhcmFtYCBvYmplY3QgdGhhdCBjYW4KaGF2ZSBleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFyYW1ldGVyLCBzdWNoIGFzIGEgZGVmYXVsdCB2YWx1ZSwKZGVwcmVjYXRpb24gbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBUeXBlXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsiY291bnQiOiBpbnR9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBRdWVyeVBhcmFtXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJjb3VudCI6IFF1ZXJ5UGFyYW0oCiAgICAgICAgdmFsdWVfdHlwZT1pbnQsCiAgICAgICAgZGVmYXVsdD0xMCwKICAgICAgICByZXF1aXJlZD1UcnVlLAogICAgICAgIGRlc2NyaXB0aW9uPSJMaW1pdHMgdGhlIG51bWJlciBvZiBib29rcyByZXR1cm5lZCIsCiAgICAgICAgZGVwcmVjYXRlZD1GYWxzZSwKICAgICAgICBhbGxvd0VtcHR5VmFsdWU9RmFsc2UsCiAgICAgICAgZXhhbXBsZT00MiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGhlYWRlcnMKCkRpY3Rpb25hcnkgb2YgcmVxdWVzdCBoZWFkZXJzIGFwcGxpY2FibGUgZm9yIHRoZSBvcGVyYXRpb24sIHdoZXJlIHRoZSBrZXkgaXMKdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIGBIZWFkZXJgIG9iamVjdC4KCkluIHRoZSBmaXJzdCBjYXNlIGl0IGlzIHRoZSBoZWFkZXIgZGVzY3JpcHRpb24uIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcGFyYW1ldGVyc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGRlc2NyaXB0aW9uYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3BhcmFtZXRlci1vYmplY3QpCmZpZWxkIG9mIFBhcmFtZXRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5IZWFkZXJgIG9iamVjdCB0aGF0IGNhbiBoYXZlCmV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoZWFkZXIsIHN1Y2ggYXMgYSBkZXNjcmlwdGlvbiwgZGVwcmVjYXRpb24KbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBzdHJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KeyJYLVJlcXVlc3RlZC1XaXRoIjogIkluZm9ybWF0aW9uIGFib3V0IHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVxdWVzdCJ9CmBgYAoKPC90ZD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBIZWFkZXJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgIlgtUmVxdWVzdGVkLVdpdGgiOiBIZWFkZXIoCiAgICAgICAgZGVzY3JpcHRpb249IkluZm9ybWF0aW9uIGFib3V0IHRoZSBjcmVhdGlvbiBvZiB0aGUgcmVxdWVzdCIsCiAgICAgICAgcmVxdWlyZWQ9VHJ1ZSwKICAgICAgICB2YWx1ZV90eXBlPXN0ciwKICAgICAgICBkZXByZWNhdGVkPUZhbHNlLAogICAgICAgIGFsbG93RW1wdHlWYWx1ZT1GYWxzZSwKICAgICAgICBleGFtcGxlPSJYTUxIdHRwUmVxdWVzdCIsCiAgICApCn0KYGBgCgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyBjb29raWVzCgpEaWN0aW9uYXJ5IG9mIHJlcXVlc3QgY29va2llcyBhcHBsaWNhYmxlIGZvciB0aGUgb3BlcmF0aW9uLCB3aGVyZSB0aGUga2V5IGlzCnRoZSBjb29raWUgbmFtZSBhbmQgdGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBgQ29va2llYCBvYmplY3QuCgpJbiB0aGUgZmlyc3QgY2FzZSBpdCBpcyB0aGUgY29va2llIGRlc2NyaXB0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHBhcmFtZXRlcnNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BkZXNjcmlwdGlvbmBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNwYXJhbWV0ZXItb2JqZWN0KQpmaWVsZCBvZiBQYXJhbWV0ZXIgb2JqZWN0LgoKSW4gdGhlIHNlY29uZCBjYXNlIGl0IGlzIGBvcGVuYXBpZnkuY29yZS5tb2RlbHMuQ29va2llYCBvYmplY3QgdGhhdCBjYW4gaGF2ZQpleHRlbmRlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29va2llLCBzdWNoIGFzIGEgZGVzY3JpcHRpb24sIGRlcHJlY2F0aW9uCm1hcmtlciwgZXhhbXBsZXMgZXRjLgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgc3RyXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsiX19nYSI6ICJBIHJhbmRvbWx5IGdlbmVyYXRlZCBudW1iZXIgYXMgYSBjbGllbnQgSUQifQpgYGAKCjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgQ29va2llXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJfX2dhIjogQ29va2llKAogICAgICAgIGRlc2NyaXB0aW9uPSJBIHJhbmRvbWx5IGdlbmVyYXRlZCBudW1iZXIgYXMgYSBjbGllbnQgSUQiLAogICAgICAgIHJlcXVpcmVkPVRydWUsCiAgICAgICAgdmFsdWVfdHlwZT1zdHIsCiAgICAgICAgZGVwcmVjYXRlZD1GYWxzZSwKICAgICAgICBhbGxvd0VtcHR5VmFsdWU9RmFsc2UsCiAgICAgICAgZXhhbXBsZT0iMS4yLjM0NTY3ODkwMS4yMzQ1Njc4OTAxIiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMgUmVzcG9uc2UKCkRlY29yYXRvciBgcmVzcG9uc2Vfc2NoZW1hYCBkZXNjcmliZXMgYSBzaW5nbGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJIE9wZXJhdGlvbi4KUmVzcG9uc2UgY2FuIGhhdmUgYW4gSFRUUCBjb2RlLCBib2R5IGFuZCBoZWFkZXJzLiBJZiB0aGUgT3BlcmF0aW9uIHN1cHBvcnRzCm1vcmUgdGhhbiBvbmUgcmVzcG9uc2UsIHRoZW4gdGhlIGRlY29yYXRvciBtdXN0IGJlIGFwcGxpZWQgbXVsdGlwbGUgdGltZXMgdG8KY292ZXIgZWFjaCBvZiB0aGVtLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCByZXNwb25zZV9zY2hlbWEKYGBgCgojIyMjIGJvZHkKCkEgUHl0aG9uIGRhdGEgdHlwZSBmb3IgdGhlIHJlc3BvbnNlIGJvZHkgZm9yIHdoaWNoCnRoZSBKU09OIFNjaGVtYSB3aWxsIGJlIGJ1aWx0LiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYHNjaGVtYWBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNtZWRpYS10eXBlLW9iamVjdCkgZmllbGQgb2YKTWVkaWEgVHlwZSBvYmplY3QgaW5zaWRlIHRoZSB2YWx1ZQpvZiBbYGNvbnRlbnRgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjcmVzcG9uc2Utb2JqZWN0KSBmaWVsZApvZiBSZXNwb25zZSBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGBUeXBlYCAgICAgICAgIHwgYEJvb2tgICAgfAoKIyMjIyBodHRwX2NvZGUKCkFuIEhUVFAgY29kZSBvZiB0aGUgcmVzcG9uc2UuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwgdGhlIHBhdHRlcm5lZCBrZXkgaW4KdGhlIFtSZXNwb25zZXNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXNwb25zZXMtb2JqZWN0KSBvYmplY3QuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IGBzdHJgICAgICAgICAgIHwgYCIyMDAiYCAgfAp8IGBpbnRgICAgICAgICAgIHwgYDQwMGAgICAgfAoKIyMjIyBtZWRpYV90eXBlCgpBIG1lZGlhIHR5cGUKb3IgW21lZGlhIHR5cGUgcmFuZ2VdKGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMxI2FwcGVuZGl4LUQpIG9mIHRoZQpyZXNwb25zZSBib2R5LiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksIHRoZSBrZXkKb2YgW2Bjb250ZW50YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlLW9iamVjdCkgZmllbGQgb2YKUmVzcG9uc2Ugb2JqZWN0LgoKVGhlIGRlZmF1bHQgdmFsdWUgaXMgYCJhcHBsaWNhdGlvbi9qc29uImAuCgp8IFBvc3NpYmxlIHR5cGVzIHwgRXhhbXBsZXMgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgc3RyYCAgICAgICAgICB8IGAiYXBwbGljYXRpb24veG1sImAgfAoKIyMjIwoKIyMjIyBkZXNjcmlwdGlvbgoKQSBkZXNjcmlwdGlvbiBvZiB0aGUgcmVzcG9uc2UuIFtDb21tb25NYXJrIHN5bnRheF0oaHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnKQpNQVkgYmUgdXNlZCBmb3IgcmljaCB0ZXh0IHJlcHJlc2VudGF0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGRlc2NyaXB0aW9uYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlLW9iamVjdCkgZmllbGQKb2YgUmVzcG9uc2Ugb2JqZWN0LgoKCnwgUG9zc2libGUgdHlwZXMgfCBFeGFtcGxlcyAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYHN0cmAgICAgICAgICAgfCBgIkludmFsaWQgSUQgU3VwcGxpZWQiYCB8CgojIyMjIGhlYWRlcnMKCkRpY3Rpb25hcnkgb2YgcmVzcG9uc2UgaGVhZGVycyBhcHBsaWNhYmxlIGZvciB0aGUgb3BlcmF0aW9uLCB3aGVyZSB0aGUga2V5IGlzCnRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBgSGVhZGVyYCBvYmplY3QuCgpJbiB0aGUgZmlyc3QgY2FzZSBpdCBpcyB0aGUgaGVhZGVyIGRlc2NyaXB0aW9uLiBUaGlzIGFmZmVjdHMgdGhlIHZhbHVlIG9mCnRoZSBbYHJlc3BvbnNlc2BdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNvcGVyYXRpb24tb2JqZWN0KQpmaWVsZCBvZiB0aGUgT3BlcmF0aW9uIG9iamVjdCwgb3IgbW9yZSBwcmVjaXNlbHksCnRoZSBbYGRlc2NyaXB0aW9uYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI2hlYWRlci1vYmplY3QpCmZpZWxkIG9mIEhlYWRlciBvYmplY3QuCgpJbiB0aGUgc2Vjb25kIGNhc2UgaXQgaXMgYG9wZW5hcGlmeS5jb3JlLm1vZGVscy5IZWFkZXJgIG9iamVjdCB0aGF0IGNhbiBoYXZlCmV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoZWFkZXIsIHN1Y2ggYXMgYSBkZXNjcmlwdGlvbiwgZGVwcmVjYXRpb24KbWFya2VyLCBleGFtcGxlcyBldGMuCgo8dGFibGU+Cjx0cj4KPHRoPlBvc3NpYmxlIHR5cGVzPC90aD4KPHRoPkV4YW1wbGVzPC90aD4KPC90cj4KPHRyPgo8dGQ+IDxjb2RlPk1hcHBpbmdbc3RyLCBzdHJdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KeyJDb250ZW50LUxvY2F0aW9uIjogIkFuIGFsdGVybmF0ZSBsb2NhdGlvbiBmb3IgdGhlIHJldHVybmVkIGRhdGEifQpgYGAKCjwvdGQ+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgSGVhZGVyXTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJDb250ZW50LUxvY2F0aW9uIjogSGVhZGVyKAogICAgICAgIGRlc2NyaXB0aW9uPSJBbiBhbHRlcm5hdGUgbG9jYXRpb24gZm9yIHRoZSByZXR1cm5lZCBkYXRhIiwKICAgICAgICBleGFtcGxlPSIvaW5kZXguaHRtIiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMjIGV4YW1wbGUKCkV4YW1wbGUgb2YgdGhlIHJlc3BvbnNlIGJvZHkuIFRoZSBleGFtcGxlIG9iamVjdCBTSE9VTEQgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0CmFzIHNwZWNpZmllZCBieSB0aGUgbWVkaWEgdHlwZS4gVGhpcyBhZmZlY3RzIHRoZSB2YWx1ZSBvZgp0aGUgW2ByZXNwb25zZXNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjb3BlcmF0aW9uLW9iamVjdCkKZmllbGQgb2YgdGhlIE9wZXJhdGlvbiBvYmplY3QsIG9yIG1vcmUgcHJlY2lzZWx5LAp0aGUgW2BleGFtcGxlYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI21lZGlhLXR5cGUtb2JqZWN0KSBmaWVsZApvZiBNZWRpYSBUeXBlIG9iamVjdCBpbnNpZGUgdGhlIHZhbHVlCm9mIFtgY29udGVudGBdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNyZXNwb25zZS1vYmplY3QpIGZpZWxkIG9mClJlc3BvbnNlIG9iamVjdC4KCjx0YWJsZT4KPHRyPgo8dGg+UG9zc2libGUgdHlwZXM8L3RoPgo8dGg+RXhhbXBsZXM8L3RoPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+QW55PC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgInRpdGxlIjogIkFubmEgS2FyZW5pbmEiLAogICAgImF1dGhvciI6ICJMZW8gVG9sc3RveSIsCiAgICAieWVhciI6IDE4NzcsCn0KYGBgCgo8L3RkPgo8L3RyPgo8L3RhYmxlPgoKIyMjIyBleGFtcGxlcwoKRXhhbXBsZXMgb2YgdGhlIHJlc3BvbnNlIGJvZHkuIEVhY2ggZXhhbXBsZSBvYmplY3QgU0hPVUxEIG1hdGNoIHRoZSBtZWRpYSB0eXBlCmFuZCBzcGVjaWZpZWQgc2NoZW1hIGlmIHByZXNlbnQuIFRoaXMgYWZmZWN0cyB0aGUgdmFsdWUgb2YKdGhlIFtgcmVzcG9uc2VzYF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI29wZXJhdGlvbi1vYmplY3QpCmZpZWxkIG9mIHRoZSBPcGVyYXRpb24gb2JqZWN0LCBvciBtb3JlIHByZWNpc2VseSwKdGhlIFtgZXhhbXBsZXNgXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4xLjAjbWVkaWEtdHlwZS1vYmplY3QpIGZpZWxkCm9mIE1lZGlhIFR5cGUgb2JqZWN0IGluc2lkZSB0aGUgdmFsdWUKb2YgW2Bjb250ZW50YF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3Jlc3BvbnNlLW9iamVjdCkgZmllbGQgb2YKUmVzcG9uc2Ugb2JqZWN0LgoKVGhlIHZhbHVlcyBvZiB0aGlzIGRpY3Rpb25hcnkgY291bGQgYmUgZWl0aGVyIGV4YW1wbGVzIHRoZW1zZWx2ZXMsCm9yIGBvcGVuYXBpZnkuY29yZS5vcGVuYXBpLm1vZGVscy5FeGFtcGxlYCBvYmplY3RzLiBJbiB0aGUgbGF0dGVyIGNhc2UsCmV4dGVuZGVkIGluZm9ybWF0aW9uIGFib3V0IGV4YW1wbGVzLCBzdWNoIGFzIGEgc3VtbWFyeSBhbmQgZGVzY3JpcHRpb24sIGNhbiBiZQphZGRlZCB0byB0aGUgW0V4YW1wbGVdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNleGFtcGxlLW9iamVjdCkKb2JqZWN0LgoKPHRhYmxlPgo8dHI+Cjx0aD5Qb3NzaWJsZSB0eXBlczwvdGg+Cjx0aD5FeGFtcGxlczwvdGg+CjwvdHI+Cjx0cj4KPHRkPiA8Y29kZT5NYXBwaW5nW3N0ciwgQW55XTwvY29kZT4gPC90ZD4KPHRkPgoKYGBgcHl0aG9uCnsKICAgICJBbm5hIEthcmVuaW5hIjogewogICAgICAgICJ0aXRsZSI6ICJBbm5hIEthcmVuaW5hIiwKICAgICAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICAgICAieWVhciI6IDE4NzcsCiAgICB9Cn0KYGBgCgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4gPGNvZGU+TWFwcGluZ1tzdHIsIEV4YW1wbGVdPC9jb2RlPiA8L3RkPgo8dGQ+CgpgYGBweXRob24KewogICAgIkFubmEgS2FyZW5pbmEiOiBFeGFtcGxlKAogICAgICAgIHZhbHVlPXsKICAgICAgICAgICAgInRpdGxlIjogIkFubmEgS2FyZW5pbmEiLAogICAgICAgICAgICAiYXV0aG9yIjogIkxlbyBUb2xzdG95IiwKICAgICAgICAgICAgInllYXIiOiAxODc3LAogICAgICAgIH0sCiAgICAgICAgc3VtbWFyeT0iVGhlIGJvb2sgJ0FubmEgS2FyZW5pbmEnIiwKICAgICkKfQpgYGAKCjwvdGQ+CjwvdHI+CjwvdGFibGU+CgojIyMgU2VjdXJpdHkgcmVxdWlyZW1lbnRzCgpEZWNvcmF0b3IgYHNlY3VyaXR5X3JlcXVpcmVtZW50c2AKZGVjbGFyZXMgW3NlY3VyaXR5IG1lY2hhbmlzbXNdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjEuMCNzZWN1cml0eVJlcXVpcmVtZW50T2JqZWN0KQp0aGF0IGNhbiBiZSB1c2VkIGZvciB0aGUgb3BlcmF0aW9uLgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5IGltcG9ydCBzZWN1cml0eV9yZXF1aXJlbWVudHMKYGBgCgpUaGlzIGRlY29yYXRvciB0YWtlcyBvbmUgb3IgbW9yZSBgU2VjdXJpdHlSZXF1aXJlbWVudGAgbWFwcGluZ3MsIHdoZXJlIHRoZSBrZXkKaXMgdGhlIHJlcXVpcmVtZW50IG5hbWUgYW5kIHRoZSB2YWx1ZSBpcyBgU2VjdXJpdHlTY2hlbWVgIG9iamVjdC4gVGhlcmUgYXJlCmNsYXNzZXMgZm9yCmVhY2ggW3NlY3VyaXR5IHNjaGVtZV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMS4wI3NlY3VyaXR5LXNjaGVtZS1vYmplY3QpCndoaWNoIGNhbiBiZSBpbXBvcnRlZCBhcyBmb2xsb3dzOgoKYGBgcHl0aG9uCmZyb20gb3BlbmFwaWZ5LmNvcmUub3BlbmFwaS5tb2RlbHMgaW1wb3J0ICgKICAgIEFQSUtleVNlY3VyaXR5U2NoZW1lLAogICAgSFRUUFNlY3VyaXR5U2NoZW1lLAogICAgT0F1dGgyU2VjdXJpdHlTY2hlbWUsCiAgICBPcGVuSURDb25uZWN0U2VjdXJpdHlTY2hlbWUsCikKYGBgCgpGb3IgZXhhbXBsZSwgdG8gYWRkIGF1dGhvcml6YXRpb24gYnkgdG9rZW4sIHlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGxpa2UgdGhpczoKCmBgYHB5dGhvbgpmcm9tIG9wZW5hcGlmeSBpbXBvcnQgc2VjdXJpdHlfcmVxdWlyZW1lbnRzCmZyb20gb3BlbmFwaWZ5LmNvcmUub3BlbmFwaS5tb2RlbHMgaW1wb3J0ICgKICAgIEFQSUtleVNlY3VyaXR5U2NoZW1lLAogICAgU2VjdXJpdHlTY2hlbWVBUElLZXlMb2NhdGlvbiwKKQoKWEF1dGhUb2tlblNlY3VyaXR5UmVxdWlyZW1lbnQgPSB7CiAgICAieC1hdXRoLXRva2VuIjogQVBJS2V5U2VjdXJpdHlTY2hlbWUoCiAgICAgICAgbmFtZT0iWC1BdWgtVG9rZW4iLAogICAgICAgIGxvY2F0aW9uPVNlY3VyaXR5U2NoZW1lQVBJS2V5TG9jYXRpb24uSEVBREVSLAogICAgKQp9CgpAc2VjdXJpdHlfcmVxdWlyZW1lbnRzKFhBdXRoVG9rZW5TZWN1cml0eVJlcXVpcmVtZW50KQpkZWYgc2VjdXJlX29wZXJhdGlvbigpOgogICAgLi4uCmBgYAoKQW5kIHRoZSBnZW5lcmF0ZWQgc3BlY2lmaWNhdGlvbiBkb2N1bWVudCB3aWxsIGxvb2sgbGlrZSB0aGlzOgoKYGBgeWFtbApvcGVuYXBpOiAzLjEuMAppbmZvOgogIHRpdGxlOiBBUEkKICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvc2VjdXJlX3BhdGg6CiAgICBnZXQ6CiAgICAgIHNlY3VyaXR5OgogICAgICAtIHgtYXV0aC10b2tlbjogW10KY29tcG9uZW50czoKICBzZWN1cml0eVNjaGVtZXM6CiAgICB4LWF1dGgtdG9rZW46CiAgICAgIHR5cGU6IGFwaUtleQogICAgICBuYW1lOiBYLUF1aC1Ub2tlbgogICAgICBpbjogaGVhZGVyCmBgYAoKRW50aXR5IHNjaGVtYSBidWlsZGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW4gc29tZSBkZWNvcmF0b3JzIHlvdSBzaG91bGQgcGFzcyBQeXRob24gZGF0YSB0eXBlIGZvciB3aGljaCB0aGUgSlNPTiBTY2hlbWEKaXMgYmVpbmcgYnVpbHQgYnkgb3BlbmFwaWZ5IGluIG9yZGVyIHRvIGdldCB0aGUgY29ycmVjdCBPcGVuQVBJIGRvY3VtZW50LgpPdXQgb2YgdGhlIGJveCwgdGhlIHNjaGVtYSBpcyBnZW5lcmF0ZWQgYnkKdXNpbmcgW2BtYXNodW1hcm9gXShodHRwczovL2dpdGh1Yi5jb20vRmF0YWwxdHkvbWFzaHVtYXJvKSBsaWJyYXJ5LCBidXQgc3VwcG9ydApmb3IgdGhpcmQtcGFydHkgZW50aXR5IHNjaGVtYSBnZW5lcmF0b3JzIGNhbiBiZSBpbXBsZW1lbnRlZCB0aHJvdWdoIGFuIGFwaXNwZWMKcGx1Z2luLiBJbiB0aGUgZnV0dXJlLCB0aGlzIGNoYXB0ZXIgd2lsbCBjb250YWluIHJlY29tbWVuZGF0aW9ucyBmb3Igd3JpdGluZwphbmQgdXNpbmcgc3VjaCBwbHVnaW5zLgo= + readmeEtag: '"9994f1d091d409398c086287a3ef05676af05808c786f492acfb8fa30014ad90"' + readmeLastModified: Tue, 08 Aug 2023 09:22:32 GMT repositoryId: 625681832 description: Framework agnostic OpenAPI Specification generation for code lovers created: '2023-04-09T21:19:19Z' @@ -13867,7 +13867,7 @@ owner: Fatal1ty logo: https://avatars.githubusercontent.com/u/323962?v=4 license: Apache-2.0 - repoEtag: '"a39cc562082f31cde40de5263be2f478548b5cc6491834919f66a61d1027e343"' + repoEtag: '"28d1519a46b873929ce09a34a1bb0c2a8a0abb0dec3399e7effd4d5339c65227"' repoLastModified: Tue, 18 Jul 2023 15:40:15 GMT category: Parsers foundInMaster: true @@ -14546,7 +14546,7 @@ owner: asseco-voice logo: https://avatars.githubusercontent.com/u/66362883?v=4 license: MIT - repoEtag: '"641d3e699c455c042c1bdd556ca0a4617f4fecc0d44029943a439129225d60dd"' + repoEtag: '"68aee902648770756870a5b615dae193d4f68e85021673c7e0b3948fdd06139b"' repoLastModified: Sat, 11 Mar 2023 07:02:46 GMT foundInMaster: true category: Server Implementations @@ -14756,7 +14756,7 @@ owner: Jnig logo: https://avatars.githubusercontent.com/u/3729585?v=4 license: MIT - repoEtag: '"e506fcfc8942e0d5bdac00e26b2aa1c726f52631a3e0bb901dd4175de8f7c074"' + repoEtag: '"c52369195810eae21be137fedd9fe10f5a455328c1eceac31c2c266310d84e1c"' repoLastModified: Fri, 19 May 2023 13:21:17 GMT category: - Data Validators @@ -14848,25 +14848,25 @@ id: 2dbdc7a84f951a79e04f72967a3342be repositoryMetadata: base64Readme: >- - IyB3aXJldGFwCgohW2xvZ29dKC5naXRodWIvd2lyZXRhcC1oZXJvLnBuZykKCkEgbG9jYWwgYW5kIHBpcGVsaW5lIGJhc2VkIHRvb2wgdG8gc25pZmYgQVBJIHJlcXVlc3QgYW5kIHJlc3BvbnNlcyBmcm9tIGNsaWVudHMgYW5kIHNlcnZlcnMKdG8gZGV0ZWN0IE9wZW5BUEkgY29udHJhY3QgdmlvbGF0aW9ucyBhbmQgY29tcGxpYW5jZS4KCkEgc2hpZnQgbGVmdCB0b29sLCBmb3IgdGhvc2Ugd2hvIHdhbnQgdG8ga25vdyBpZiB0aGVpciBhcHBsaWNhdGlvbnMKYXJlIGFjdHVhbGx5IGNvbXBsaWFudCB3aXRoIGFuIEFQSS4KCj4gVGhpcyBpcyBhbiBlYXJseSB0b29sIGFuZCBpbiBhY3RpdmUgZGV2ZWxvcG1lbnQsIFdoeSBub3QgdHJ5IGl0IG91dCBhbmQgZ2l2ZSB1cyBzb21lIGZlZWRiYWNrPwoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi93aXJldGFwL2Jsb2IvbWFpbi8uZ2l0aHViL2Fzc2V0cy93aXJldGFwLXByZXZpZXcuZ2lmKQoKLS0tCiMgUmVhZCB0aGUgcXVpY2tzdGFydCBndWlkZQoKW/CfmoAgUXVpY2sgU3RhcnQgR3VpZGUg8J+agF0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL3F1aWNrc3RhcnQvKQoKLS0tCiMgSW5zdGFsbCB3aXJldGFwIGZvciB5b3VyIHBsYXRmb3JtCgojIyBJbnN0YWxsaW5nIHVzaW5nIGhvbWVicmV3CgpUaGUgZWFzaWVzdCB3YXkgdG8gaW5zdGFsbCBgd2lyZXRhcGAgaXMgdG8gdXNlICoqW2hvbWVicmV3XShodHRwczovL2JyZXcuc2gpKiogaWYgeW91J3JlIG9uIE9TWCBvciBMaW51eC4KCldlIGhhdmUgb3VyIG93biB0YXAgYXZhaWxhYmxlIHRoYXQgZ2l2ZXMgdGhlIGxhdGVzdCBhbmQgZ3JlYXRlc3QgdmVyc2lvbi4KCmBgYHNoZWxsCmJyZXcgaW5zdGFsbCBwYjMzZi90YXBzL3dpcmV0YXAKYGBgCgotLS0KCiMjIEluc3RhbGxpbmcgdXNpbmcgbnBtIG9yIHlhcm4KCkJ1aWxkaW5nIGEgSmF2YVNjcmlwdCAvIFR5cGVTY3JpcHQgYXBwbGljYXRpb24/IE5vIHByb2JsZW0sIGdyYWIgeW91ciBjb3B5IG9mIGB3aXJldGFwYCB1c2luZyB5b3VyIHByZWZlcmVuY2UKb2YgKipbeWFybl0oaHR0cHM6Ly95YXJucGtnLmNvbS8pKiogb3IgKipbbnBtXShodHRwczovL25wbWpzLmNvbSkqKi4KCmBgYHNoZWxsCnlhcm4gYWRkIGdsb2JhbCBAcGIzM2Yvd2lyZXRhcApgYGAKCm9yLi4uCgpgYGBzaGVsbApucG0gLWkgLWcgQHBiMzNmL3dpcmV0YXAKYGBgCgotLS0KCiMjIEluc3RhbGxpbmcgdXNpbmcgY1VSTAoKRG8geW91IHdhbnQgdG8gdXNlIGB3aXJldGFwYCBpbiBhIGxpbnV4IG9ubHkgb3IgQ0kvQ0QgcGlwZWxpbmUgb3Igd29ya2Zsb3c/IE9yIHlvdSBkb24ndCB3YW50IHRvL2Nhbid0IHVzZQphIHBhY2thZ2UgbWFuYWdlciBsaWtlIGJyZXc/CgpObyBwcm9ibGVtLiBVc2UgKipjVVJMKiogdG8gZG93bmxvYWQgYW5kIHJ1biBvdXIgaW5zdGFsbGVyIHNjcmlwdC4KCmBgYHNoZWxsCmN1cmwgLWZzU0wgaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL2luc3RhbGwuc2ggfCBzaApgYGAKCi0tLQoKIyMgSW5zdGFsbGluZy9ydW5uaW5nIHVzaW5nIERvY2tlcgoKTG92ZSBjb250YWluZXJzPyBEb24ndCB3YW50IHRvIGluc3RhbGwgYW55dGhpbmc/IE5vIHByb2JsZW0sIHVzZSBvdXIgRG9ja2VyIGltYWdlLgoKYGBgc2hlbGwKZG9ja2VyIHB1bGwgcGIzM2Yvd2lyZXRhcApgYGAKCmBgYApkb2NrZXIgcnVuIC1wIDkwOTA6OTA5MCAtcCA5MDkxOjkwOTEgLXAgOTA5Mjo5MDkyIC0tcm0gLXYgIFwKICAgICRQV0Q6L3dvcms6cncgcGIzM2Yvd2lyZXRhcCAtdSBodHRwczovL3NvbWVob3N0b3V0dGhlcmUuY29tCmBgYAoKV2UgZW5hYmxlIHRoZSBmb2xsb3dpbmcgZGVmYXVsdCBwb3J0cyBgOTA5MGAsIGA5MDkxYCwgYW5kIGA5MDkyYCBmb3IgdGhlIGRhZW1vbiwgbW9uaXRvciwgYW5kIHdlYnNvY2tldHMgdXNlZApieSBbcmFuY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9yYW5jaCkgcmVzcGVjdGl2ZWx5LgoKLS0tCgojIyBJbnN0YWxsaW5nIG9uIFdpbmRvd3MKClRvIGdyYWIgeW91ciBjb3B5IG9mIGB3aXJldGFwYCBmb3IgV2luZG93cywgeW91IGNhbiBwdWxsIGl0IGZyb20gdGhlCioqW2xhdGVzdCByZWxlYXNlcyBvbiBnaXRodWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi93aXJldGFwL3JlbGVhc2VzKSoqCmFuZCBkb3dubG9hZCB0aGUgV2luZG93cyB2ZXJzaW9uIGZvciB5b3VyIENQVSB0eXBlLgoKLS0tCgojIFJ1bm5pbmcgd2lyZXRhcAoKVG8gZ2V0IHVwIGFuZCBydW5uaW5nIHdpdGggdGhlIGFic29sdXRlIGRlZmF1bHRzICh3aGljaCBpcyB0byBzbmlmZiBhbGwgdHJhZmZpYyBvbiBwb3J0IDkwOTApCmFuZCBwcm94eSB0byBgaHR0cHM6Ly9hcGkucGIzM2YuY29tYCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQuCgpgYGBzaGVsbAp3aXJldGFwIC11IGh0dHBzOi8vYXBpLnBiMzNmLmNvbQpgYGAKCiMjIEFkZGluZyBhbiBPcGVuQVBJIGNvbnRyYWN0CgpgYGBzaGVsbAp3aXJldGFwIC11IGh0dHBzOi8vYXBpLnBiMzNmLmNvbSAtcyBteS1vcGVuYXBpLXNwZWMueWFtbApgYGAKCiMgRG9jdW1lbnRhdGlvbgoKLSDwn5qAIFtRdWljayBTdGFydF0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL3F1aWNrc3RhcnQvKSDwn5qACi0gW0luc3RhbGxpbmddKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9xdWlja3N0YXJ0LykKLSBbQ29uZmlndXJpbmddKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9jb25maWd1cmluZy8pCi0gW01vbml0b3IgVUldKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9tb25pdG9yLykKLSBbU2VydmluZyBzdGF0aWMgY29udGVudF0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL3N0YXRpYy1jb250ZW50LykKLSBbR2lmdFNob3AgZXhhbXBsZSBBUEldKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9naWZ0c2hvcC1hcGkvKQoK - readmeEtag: '"c4ec99363ec143325d6365a1b2396c7752bf38f51c997aeff05095a51abfffae"' - readmeLastModified: Tue, 01 Aug 2023 18:33:34 GMT + IyB3aXJldGFwCgohW2xvZ29dKC5naXRodWIvd2lyZXRhcC1oZXJvLnBuZykKCkEgbG9jYWwgYW5kIHBpcGVsaW5lIGJhc2VkIHRvb2wgdG8gc25pZmYgQVBJIHJlcXVlc3QgYW5kIHJlc3BvbnNlcyBmcm9tIGNsaWVudHMgYW5kIHNlcnZlcnMKdG8gZGV0ZWN0IE9wZW5BUEkgY29udHJhY3QgdmlvbGF0aW9ucyBhbmQgY29tcGxpYW5jZS4KCkEgc2hpZnQgbGVmdCB0b29sLCBmb3IgdGhvc2Ugd2hvIHdhbnQgdG8ga25vdyBpZiB0aGVpciBhcHBsaWNhdGlvbnMKYXJlIGFjdHVhbGx5IGNvbXBsaWFudCB3aXRoIGFuIEFQSS4KCj4gVGhpcyBpcyBhbiBlYXJseSB0b29sIGFuZCBpbiBhY3RpdmUgZGV2ZWxvcG1lbnQsIFdoeSBub3QgdHJ5IGl0IG91dCBhbmQgZ2l2ZSB1cyBzb21lIGZlZWRiYWNrPwoKIVtdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi93aXJldGFwL2Jsb2IvbWFpbi8uZ2l0aHViL2Fzc2V0cy93aXJldGFwLXByZXZpZXcuZ2lmKQoKLS0tCiMgUmVhZCB0aGUgcXVpY2tzdGFydCBndWlkZQoKW/CfmoAgUXVpY2sgU3RhcnQgR3VpZGUg8J+agF0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL3F1aWNrc3RhcnQvKQoKLS0tCiMgSW5zdGFsbCB3aXJldGFwIGZvciB5b3VyIHBsYXRmb3JtCgojIyBJbnN0YWxsaW5nIHVzaW5nIGhvbWVicmV3CgpUaGUgZWFzaWVzdCB3YXkgdG8gaW5zdGFsbCBgd2lyZXRhcGAgaXMgdG8gdXNlICoqW2hvbWVicmV3XShodHRwczovL2JyZXcuc2gpKiogaWYgeW91J3JlIG9uIE9TWCBvciBMaW51eC4KCldlIGhhdmUgb3VyIG93biB0YXAgYXZhaWxhYmxlIHRoYXQgZ2l2ZXMgdGhlIGxhdGVzdCBhbmQgZ3JlYXRlc3QgdmVyc2lvbi4KCmBgYHNoZWxsCmJyZXcgaW5zdGFsbCBwYjMzZi90YXBzL3dpcmV0YXAKYGBgCgotLS0KCiMjIEluc3RhbGxpbmcgdXNpbmcgbnBtIG9yIHlhcm4KCkJ1aWxkaW5nIGEgSmF2YVNjcmlwdCAvIFR5cGVTY3JpcHQgYXBwbGljYXRpb24/IE5vIHByb2JsZW0sIGdyYWIgeW91ciBjb3B5IG9mIGB3aXJldGFwYCB1c2luZyB5b3VyIHByZWZlcmVuY2UKb2YgKipbeWFybl0oaHR0cHM6Ly95YXJucGtnLmNvbS8pKiogb3IgKipbbnBtXShodHRwczovL25wbWpzLmNvbSkqKi4KCmBgYHNoZWxsCnlhcm4gYWRkIGdsb2JhbCBAcGIzM2Yvd2lyZXRhcApgYGAKCm9yLi4uCgpgYGBzaGVsbApucG0gLWkgLWcgQHBiMzNmL3dpcmV0YXAKYGBgCgotLS0KCiMjIEluc3RhbGxpbmcgdXNpbmcgY1VSTAoKRG8geW91IHdhbnQgdG8gdXNlIGB3aXJldGFwYCBpbiBhIGxpbnV4IG9ubHkgb3IgQ0kvQ0QgcGlwZWxpbmUgb3Igd29ya2Zsb3c/IE9yIHlvdSBkb24ndCB3YW50IHRvL2Nhbid0IHVzZQphIHBhY2thZ2UgbWFuYWdlciBsaWtlIGJyZXc/CgpObyBwcm9ibGVtLiBVc2UgKipjVVJMKiogdG8gZG93bmxvYWQgYW5kIHJ1biBvdXIgaW5zdGFsbGVyIHNjcmlwdC4KCmBgYHNoZWxsCmN1cmwgLWZzU0wgaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL2luc3RhbGwuc2ggfCBzaApgYGAKCi0tLQoKIyMgSW5zdGFsbGluZy9ydW5uaW5nIHVzaW5nIERvY2tlcgoKTG92ZSBjb250YWluZXJzPyBEb24ndCB3YW50IHRvIGluc3RhbGwgYW55dGhpbmc/IE5vIHByb2JsZW0sIHVzZSBvdXIgRG9ja2VyIGltYWdlLgoKYGBgc2hlbGwKZG9ja2VyIHB1bGwgcGIzM2Yvd2lyZXRhcApgYGAKCmBgYApkb2NrZXIgcnVuIC1wIDkwOTA6OTA5MCAtcCA5MDkxOjkwOTEgLXAgOTA5Mjo5MDkyIC0tcm0gLXYgIFwKICAgICRQV0Q6L3dvcms6cncgcGIzM2Yvd2lyZXRhcCAtdSBodHRwczovL3NvbWVob3N0b3V0dGhlcmUuY29tCmBgYAoKV2UgZW5hYmxlIHRoZSBmb2xsb3dpbmcgZGVmYXVsdCBwb3J0cyBgOTA5MGAsIGA5MDkxYCwgYW5kIGA5MDkyYCBmb3IgdGhlIGRhZW1vbiwgbW9uaXRvciwgYW5kIHdlYnNvY2tldHMgdXNlZApieSBbcmFuY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9yYW5jaCkgcmVzcGVjdGl2ZWx5LgoKLS0tCgojIyBJbnN0YWxsaW5nIG9uIFdpbmRvd3MKClRvIGdyYWIgeW91ciBjb3B5IG9mIGB3aXJldGFwYCBmb3IgV2luZG93cywgeW91IGNhbiBwdWxsIGl0IGZyb20gdGhlCioqW2xhdGVzdCByZWxlYXNlcyBvbiBnaXRodWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi93aXJldGFwL3JlbGVhc2VzKSoqCmFuZCBkb3dubG9hZCB0aGUgV2luZG93cyB2ZXJzaW9uIGZvciB5b3VyIENQVSB0eXBlLgoKLS0tCgojIFJ1bm5pbmcgd2lyZXRhcAoKVG8gZ2V0IHVwIGFuZCBydW5uaW5nIHdpdGggdGhlIGFic29sdXRlIGRlZmF1bHRzICh3aGljaCBpcyB0byBzbmlmZiBhbGwgdHJhZmZpYyBvbiBwb3J0IDkwOTApCmFuZCBwcm94eSB0byBgaHR0cHM6Ly9hcGkucGIzM2YuY29tYCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQuCgpgYGBzaGVsbAp3aXJldGFwIC11IGh0dHBzOi8vYXBpLnBiMzNmLmNvbQpgYGAKCiMjIEFkZGluZyBhbiBPcGVuQVBJIGNvbnRyYWN0CgpgYGBzaGVsbAp3aXJldGFwIC11IGh0dHBzOi8vYXBpLnBiMzNmLmNvbSAtcyBteS1vcGVuYXBpLXNwZWMueWFtbApgYGAKCiMgRG9jdW1lbnRhdGlvbgoKLSDwn5qAIFtRdWljayBTdGFydF0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL3F1aWNrc3RhcnQvKSDwn5qACi0gW0luc3RhbGxpbmddKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9xdWlja3N0YXJ0LykKLSBbQ29uZmlndXJpbmddKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9jb25maWd1cmluZy8pCi0gW01vbml0b3IgVUldKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9tb25pdG9yLykKLSBbU2VydmluZyBzdGF0aWMgY29udGVudF0oaHR0cHM6Ly9wYjMzZi5pby93aXJldGFwL3N0YXRpYy1jb250ZW50LykKLSBbR2lmdFNob3AgZXhhbXBsZSBBUEldKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9naWZ0c2hvcC1hcGkvKQotIFtDb250cmlidXRpbmddKGh0dHBzOi8vcGIzM2YuaW8vd2lyZXRhcC9jb250cmlidXRpbmcvKQoK + readmeEtag: '"939979aa507b671f5c4642fe2218fa009c05990201eb12d2a48fb61f26699b65"' + readmeLastModified: Tue, 08 Aug 2023 19:04:55 GMT repositoryId: 634974410 description: >- The world's coolest API Validation and compliance tool. Validate APIs against OpenAPI specifications and much more created: '2023-05-01T17:19:15Z' - updated: '2023-08-01T15:28:46Z' + updated: '2023-08-09T01:11:02Z' language: TypeScript archived: false - stars: 8 + stars: 10 watchers: 1 forks: 2 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"f6d4697ec5b24891c46784dd39fed59b704744f420156e6596d768322943af4f"' - repoLastModified: Tue, 01 Aug 2023 15:28:46 GMT + repoEtag: '"d0d13b52dcb6552ea1db9dbb936833eecf113fe4d40cf4aedf096a0bddf07fc2"' + repoLastModified: Wed, 09 Aug 2023 01:11:02 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -15036,7 +15036,7 @@ owner: mchangrh logo: https://avatars.githubusercontent.com/u/15132783?v=4 license: GPL-3.0 - repoEtag: '"2e97a35e3d4494f6b6cc95599e08a0e71e672ffb75b47652c54b54f11954dc9b"' + repoEtag: '"ee33f313ba7d12c48e4b3994400d49a92d7cf74638e33128a0b9eab524349a0e"' repoLastModified: Thu, 20 Jul 2023 01:01:23 GMT foundInMaster: true category: Documentation @@ -15218,7 +15218,7 @@ owner: networknt logo: https://avatars.githubusercontent.com/u/8740739?v=4 license: EPL-1.0 - repoEtag: '"549e1c58bd4811e33c8b726fd7003195dcf05880518d2b974ee0bee6879410b1"' + repoEtag: '"2c0ae3524e99f8d45063a31230a9d2d30383465a0209ed69ce433d289f67a5b5"' repoLastModified: Tue, 01 Aug 2023 02:12:05 GMT foundInMaster: true category: @@ -15384,7 +15384,7 @@ owner: commonism logo: https://avatars.githubusercontent.com/u/164513?v=4 license: BSD-3-Clause - repoEtag: '"cb17414f7da42463d56e2c5cc414a83ec3d62282b2620db1ae6b8929d9a5e835"' + repoEtag: '"fcd35c0f4abd2dfa058768910f9d624cc481ce38ddf242c72c2c20a2f335e314"' repoLastModified: Fri, 04 Aug 2023 17:09:53 GMT foundInMaster: true id: f7fe65d08545a563279e1526fe797380 @@ -15414,7 +15414,7 @@ owner: danicc097 logo: https://avatars.githubusercontent.com/u/71724149?v=4 license: Apache-2.0 - repoEtag: '"06b2e9accc703745f9fb4876afc37c6afcc23f8e601c302fcbecaf50ca7c9d07"' + repoEtag: '"e187ec790aaaee000fca66271f11f0d2f42470753fa40cd146ad4ef2b14ce5ab"' repoLastModified: Tue, 18 Jul 2023 13:22:51 GMT category: Parsers foundInMaster: true @@ -16163,7 +16163,7 @@ owner: meabed logo: https://avatars.githubusercontent.com/u/45731?v=4 license: MIT - repoEtag: '"a7987ad6fe4baf908f4a7e7fb26f2c520ad1bd71c50ac1ab620a15643ed1d4ba"' + repoEtag: '"38a9a98a4f83466e030e420ec54fbe676273a05edaef458dfa671fe721c206c6"' repoLastModified: Sun, 02 Apr 2023 20:55:39 GMT foundInMaster: true category: @@ -17787,7 +17787,7 @@ owner: cerberauth logo: https://avatars.githubusercontent.com/u/127022998?v=4 license: MIT - repoEtag: '"03f36c8febdff6cbbfecf742d2119e315bcaa716bde7c914e54ac8d12f3cc919"' + repoEtag: '"39dffee9ec594efce6356f8f64138b79946912d514580ac0e2fd98b5cbf4d4d9"' repoLastModified: Sun, 30 Jul 2023 18:11:14 GMT category: Parsers foundInMaster: true @@ -18123,11 +18123,11 @@ archived: false stars: 3 watchers: 2 - forks: 0 + forks: 1 owner: yusufsefasezer logo: https://avatars.githubusercontent.com/u/9640186?v=4 license: MIT - repoEtag: '"800e8fb4923eb47d24287ea347975ba82a42792827d1317b35ff18adeb5d8469"' + repoEtag: '"26258306efa9d32c72e0a87a9ee811ac288d0e2f72544cea86ae343435f6c22e"' repoLastModified: Tue, 09 May 2023 12:31:30 GMT foundInMaster: true category: Code Generators @@ -18226,17 +18226,17 @@ repositoryId: 369644109 description: build prototypes, fast! created: '2021-05-21T20:12:07Z' - updated: '2023-03-04T04:06:39Z' + updated: '2023-08-08T05:32:31Z' language: HTML - archived: false + archived: true stars: 3 watchers: 2 forks: 0 owner: noahehall logo: https://avatars.githubusercontent.com/u/10324554?v=4 license: NOASSERTION - repoEtag: '"705b656c2a05e43a7048b9251e26ea55cd08a159a55eb42cc6e354f4e2107ab3"' - repoLastModified: Sat, 04 Mar 2023 04:06:39 GMT + repoEtag: '"d0f0ea1fbf1962b226bce9c060b854678432632d44fbe7cc309c9e63f5ade448"' + repoLastModified: Tue, 08 Aug 2023 05:32:31 GMT foundInMaster: true category: Testing id: 37b213c383b786f80ef2ad7961c30558 @@ -18310,7 +18310,7 @@ owner: tsingsun logo: https://avatars.githubusercontent.com/u/5848549?v=4 license: MIT - repoEtag: '"9a1631bda24b76154974dfb0116168483358f315937ea275f5112c3b2a3b6921"' + repoEtag: '"c07c0d2f74ac442a9e62d569adefd17988f82f12f9b7edccc18335eff7e4be47"' repoLastModified: Fri, 07 Jul 2023 13:29:49 GMT category: Server Implementations foundInMaster: true @@ -19020,7 +19020,7 @@ owner: crazyoptimist logo: https://avatars.githubusercontent.com/u/55074937?v=4 license: MIT - repoEtag: '"7561b9540e7fac4895574f240896a1dcab7cb45b6c2b30d0a7a721dcfd8dd8c3"' + repoEtag: '"abe080d77f89adf11787bcadaa111b0863ad1fe8c84b5c8acc34e869b8d3978b"' repoLastModified: Fri, 05 May 2023 10:25:03 GMT category: Server Implementations foundInMaster: true @@ -19045,7 +19045,7 @@ owner: sergeyklay logo: https://avatars.githubusercontent.com/u/1256298?v=4 license: MIT - repoEtag: '"fed075ed9da72b094e5b3093d616753eb83155de0f52c459a407d6507b192da5"' + repoEtag: '"90f854f9792633687ce35b4f3e9ac0000104e67393374bd006ef44d6c1adb390"' repoLastModified: Sat, 08 Jul 2023 08:42:03 GMT category: Server Implementations foundInMaster: true @@ -21137,7 +21137,7 @@ owner: igrek8 logo: https://avatars.githubusercontent.com/u/7078731?v=4 license: MIT - repoEtag: '"f28f5291b2a9135ceaf2a73479b58e66be14d2cf25c86cbd274ed3650a741c06"' + repoEtag: '"31d55c454044119506d888f6d47b97058bcc4d41d3bd477bedbae74b9e397f6e"' repoLastModified: Thu, 15 Jun 2023 13:09:53 GMT category: Parsers foundInMaster: true @@ -21237,12 +21237,12 @@ language: Makefile archived: false stars: 2 - watchers: 11 + watchers: 12 forks: 1 owner: tidepool-org logo: https://avatars.githubusercontent.com/u/4390820?v=4 license: BSD-2-Clause - repoEtag: '"c000b333df75c16257edbcd465dc2bc3de6b00a5be1030a126a74b12d2345020"' + repoEtag: '"2c8a8d5a928b1101183cfbae55ee10b08d329aba6c2db30250687d6142c3f798"' repoLastModified: Fri, 09 Jun 2023 22:26:47 GMT category: Server Implementations foundInMaster: true @@ -21423,7 +21423,7 @@ owner: ruiaraujo012 logo: https://avatars.githubusercontent.com/u/16304685?v=4 license: MIT - repoEtag: '"7094cccec6d41e411e52f3f9744862c0f1b89bdc40ae3afd0311c91c5982ee15"' + repoEtag: '"6ab748d1a544a6d012d0ebfd6d90ebeb5a1688f05855601b6872bb0dbcb53fb1"' repoLastModified: Sat, 14 Jan 2023 13:10:28 GMT category: Parsers foundInMaster: true @@ -22512,7 +22512,7 @@ owner: listendev logo: https://avatars.githubusercontent.com/u/103680976?v=4 license: Apache-2.0 - repoEtag: '"aec85e862270d29948d24a0ff57d0a6a858b72b651bd8150ef6b9843bd70476e"' + repoEtag: '"23dcd353cf08786e19fd4759579b9a586d625ff5723de8ff9b613772c0957947"' repoLastModified: Thu, 13 Jul 2023 22:06:02 GMT category: Parsers foundInMaster: true @@ -22553,17 +22553,17 @@ repositoryId: 199255832 description: 🔀🆗☑️ Automated API testing from Swagger/Open API specifications. created: '2019-07-28T07:20:06Z' - updated: '2022-01-14T11:17:32Z' + updated: '2023-08-08T12:48:41Z' language: Go archived: false - stars: 1 + stars: 2 watchers: 2 forks: 1 owner: x1n13y84issmd42 logo: https://avatars.githubusercontent.com/u/2878036?v=4 license: GPL-3.0 - repoEtag: '"206876469f43e50eb5d93131fc0276e5eca8e4d655aabed1b289a6b32d862c88"' - repoLastModified: Fri, 14 Jan 2022 11:17:32 GMT + repoEtag: '"e51c4581ba16c10f61d12fc187f8b31534953632f50b18c5584186de78515cfc"' + repoLastModified: Tue, 08 Aug 2023 12:48:41 GMT foundInMaster: true category: Converters id: c874538e827425f5331ba6bf670d35b1 @@ -23689,7 +23689,7 @@ repositoryId: 575672055 description: Диалоговый телеграмм бот отличающий кота от хлеба. created: '2022-12-08T03:17:47Z' - updated: '2023-07-06T01:40:51Z' + updated: '2023-08-08T19:34:19Z' language: Python archived: false stars: 1 @@ -23697,8 +23697,8 @@ forks: 0 owner: XanderMoroz logo: https://avatars.githubusercontent.com/u/100166864?v=4 - repoEtag: '"82a2cb5d66330bc90f27255fa15d67aa4d8ebf6387a427018ab9efbdf63930a7"' - repoLastModified: Thu, 06 Jul 2023 01:40:51 GMT + repoEtag: '"3740d6f8596b8ee99927014a7cd5ef737465ab4d4aac456a6a4911b9e5a6b3a9"' + repoLastModified: Tue, 08 Aug 2023 19:34:19 GMT category: Mock foundInMaster: true - source: openapi3 tags @@ -24014,7 +24014,7 @@ owner: tada5hi logo: https://avatars.githubusercontent.com/u/13162758?v=4 license: MIT - repoEtag: '"9efaed0678a07eb20315a532143eaa4942590e8a4d2c400946f154981bef9f09"' + repoEtag: '"de5feb8211bc5a43516674fe972ae85bc9f260ffcef8fad1396893818afc0d78"' repoLastModified: Fri, 17 Mar 2023 22:17:59 GMT category: Parsers foundInMaster: true @@ -24459,7 +24459,7 @@ owner: fako1024 logo: https://avatars.githubusercontent.com/u/10483969?v=4 license: Apache-2.0 - repoEtag: '"84e7506fa1b939a437cad908a12a19eaac7cf031bc671b6a66989209fecae41a"' + repoEtag: '"dc9e0bdf7e4798d296ef317f46434e7b116e77547f1926dbc15afbc90639e65a"' repoLastModified: Thu, 13 Apr 2023 01:42:16 GMT foundInMaster: true category: Data Validators @@ -24669,7 +24669,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"16a7bd63179e5cd628ba344d1bd773975d696287392afec7395961f837623549"' + repoEtag: '"a13fe4ba808314a81bfa09857206964a7635cae25e2927644dfc27d7025366b5"' repoLastModified: Tue, 18 Jul 2023 09:11:02 GMT foundInMaster: true category: Server @@ -24745,7 +24745,7 @@ owner: ExpediaGroup logo: https://avatars.githubusercontent.com/u/38541875?v=4 license: Apache-2.0 - repoEtag: '"839aade4d1c3106d8089ed0fdf8786896c473ac6f7368ca61cb330196ce6a4ed"' + repoEtag: '"0ebe2e4ee80cacf67ad39f3e0d713faf4c809e5dc99f7c889ec58b3073160468"' repoLastModified: Tue, 18 Jul 2023 09:30:33 GMT category: Parsers foundInMaster: true @@ -24842,7 +24842,7 @@ forks: 0 owner: TheAirBlow logo: https://avatars.githubusercontent.com/u/68467762?v=4 - repoEtag: '"d23310cea447fab473b7638f9d9a2a9e5cb17b4d9834de92ebfd499693e58a4d"' + repoEtag: '"eff02bc7613c57eb8af94988631b6bf6c7fd29c321a657c6b72a35fa3e1f3485"' repoLastModified: Tue, 03 Jan 2023 13:13:05 GMT foundInMaster: true category: @@ -24998,7 +24998,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"3eeb4e16e0f66af5fc5f41f0c2862042010a9501573d1953eafa773987f5b5d4"' + repoEtag: '"4a8ff7259a1b945e39302968b560a1c168c755baa9213788fea87e331a23535e"' repoLastModified: Tue, 18 Jul 2023 09:11:02 GMT foundInMaster: true category: Server @@ -25227,7 +25227,7 @@ owner: protung logo: https://avatars.githubusercontent.com/u/81255167?v=4 license: MIT - repoEtag: '"14e3fe6a077347ac8fa24ce75b98e2df9e37fa22e3cff704220bf7b9472706a5"' + repoEtag: '"d16ae79b93769a8cfa36c70ff245d5f07bd1eb1e407a0ed1860dff55cbcd4b54"' repoLastModified: Fri, 16 Dec 2022 13:24:18 GMT category: - Server @@ -25625,13 +25625,13 @@ id: f1aa137f6555ec0919bc1cd98604137a repositoryMetadata: base64Readme: >- - IyBNYWlsQmFieSBBUEkKCkFQSSBzZXJ2aWNlIGZvciBhY2Nlc3NpbmcgdGhlIE1haWwuQmFieSBzZXJ2aWNlcy4KCiMgQVBJIFNhbXBsZSBDbGllbnRzCgpTYW1wbGUgY2xpZW50cyBmb3IgdGhlIEFQSSBhcmUgYXZhaWxhYmxlIGluIG1hbnkgbGFuZ3VhZ2VzCgoqIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlcnNlcnZlci9tYWlsYmFieS1hcGktc2FtcGxlcwoKIyBEZXZlbG9wbWVudAoKVGhpcyBpcyBidWlsdCBvbiB0b3Agb2YgV2VibWFuLCBhIGhpZ2ggcGVyZm9ybWFuY2UgSFRUUCBTZXJ2aWNlIEZyYW1ld29yayBmb3IgUEhQIGJhc2VkIG9uIFtXb3JrZXJtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS93YWxrb3Ivd29ya2VybWFuKS4KCiMjIEFQSSBTcGVjaWZpY2F0aW9uCgpXZSBhcmUgdXRpbGl6aW5nIHRoZSBPcGVuQVBJIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKSBzcGVjIGZvciB0aGlzIEFQSS4gIEl0IGlzIGJhc2ljYWxseSB0aGUgbmV4dCBldm9sdXRpb24gb2YgU09BUCBBUEkncyB3aXRoIHdlbGwgZGVmaW5lZCBmdW5jdGlvbnMsIHBhcmFtZXRlcnMsIGFuZCByZXNwb25zZXMuICBXaGlsZSB0aGVyZSBhcmUgbWFueSBlZGl0b3JzIG91dCB0aGVyZSBJJ20gY3VycmVudGx5IHVzaW5nIFN3YWdnZXJIdWIgdG8gZG8gbW9zdCBvZiB0aGUgZWRpdGluZyBvZiB0aGUgc3BlYy4KCiogW1N3YWdnZXJIdWIgZWRpdG9yIGZvciBNYWlsQmFieSBBUEkgU3BlY10oaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy9JbnRlclNlcnZlci9NYWlsQmFieS8xLjAuMCkKKiBbU3dhZ2dlci9PcGVuQVBJIFNwZWMgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXJlc3BvbnNlcy8pCgojIyBXZWJtYW4gRnJhbWV3b3JrCgpBZnRlciB0ZXN0aW5nICpldmVyeSogUEhQIGxpYnJhcnkgb3V0IHRoZXJlIGRlYWxpbmcgd2l0aCBjb25jdXJyZW50L2FzeW5jaHJvbm91cyBwcm9jZXNzaW5nIG1hbnkgdGltZXMgb3ZlciB0aGUgeWVhcnMgSSd2ZSBmb3VuZCBbV29ya2VybWFuXShodHRwczovL2dpdGh1Yi5jb20vd2Fsa29yL3dvcmtlcm1hbikgdG8gYmUgdGhlIG92ZXJhbGwgYmVzdC4gIEl0IGhhcyBwcm92ZW4gbW9yZSBzdGFibGUgYW5kIGJ5IGZhciBmYXN0ZXIgdGhhbiB0aGUgYWx0ZXJuYXRpdmVzIHdpdGggdGhlIG9uZSBiaWcgZG93bnNpZGUgYmVpbmcgdGhhdCBpdHMgZG9jdW1lbnRhdGlvbiBhbmQgY29kZSBjb21tZW50cyBhcmUgYWxsIGluIENoaW5lc2UuICBbV2VibWFuXShodHRwczovL2dpdGh1Yi5jb20vd2Fsa29yL3dlYm1hbikgaXMgYSBmYWlybHkgcmVjZW50bHkgY3JlYXRlZCB3ZWIgZnJhbWV3b3JrIG9uIHRvcCBvZiBbV29ya2VybWFuXShodHRwczovL2dpdGh1Yi5jb20vd2Fsa29yL3dvcmtlcm1hbikuICBUaGVyZSBoYWQgYmVlbiBtYW55IHByZXZpb3VzbHkgY3JlYXRlZCBmcmFtZXdvcmtzIGJhc2VkIG9uIHdvcmtlcm1hbiBhbmQgd2hpbGUgc29tZSB3ZXJlIGdvb2QgV2VibWFuIHNlZW1lZCB0byBoaXQgdGhhdCBwZXJmZWN0IGJhbGFuY2UgYmV0d2VlbiBlYXNlLW9mLXVzZSBhbmQgcG93ZXIuCgpUaGUgQ2hpbmVzZSBkb2N1bWVudGF0aW9uIGlzIGVhc2lseSByZWFkYWJsZSBVc2luZyBlaXRoZXIgdGhlIGF1dG8gdHJhbnNsYXRlIGluIENocm9tZSBvciBhbiBhZGRvbiBsaWtlIFtUcmFuc2xhdGUgV2ViIFBhZ2VzXShodHRwczovL2FkZG9ucy5tb3ppbGxhLm9yZy9lbi1VUy9maXJlZm94L2FkZG9uL3RyYWR1emlyLXBhZ2luYXMtd2ViLykgZm9yIEZpcmVmb3guCgoqIFtXZWJNYW4gTWFudWFsXShodHRwczovL3d3dy53b3JrZXJtYW4ubmV0L2RvYy93ZWJtYW4pIFdlYk1hbiBmcmFtZXdvcmsgZG9jdW1lbnRhdGlvbgoKIyMgRG9jdW1lbnRhdGlvbgoKKiBbSWxsdW1pbmF0ZSBEYXRhYmFzZSBEb2NzXShodHRwczovL2xhcmF2ZWwuY29tL2RvY3MvOC54L3F1ZXJpZXMpCiogW1N0b3BMaWdodCBFbGVtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL2VsZW1lbnRzKSBPcGVuQVBJIERvY3VtZW50b3IKKiBbTWFpbEJhYnkgU3dhZ2dlci1VSV0oaHR0cHM6Ly9hcGkubWFpbGJhYnkubmV0L2RvYy9pbmRleC5odG1sKQoqIFtNYWlsQmFieSBnZW5lcmF0b3IgSFRNTDIgIERvY3NdKGh0dHBzOi8vbXlzdGFnZS5pbnRlcnNlcnZlci5uZXQvaHRtbDIvKQoqIFtNYWlsQmFieSBnZW5lcmF0ZWQgUEhQIENsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL2ludGVyc2VydmVyL21haWxiYWJ5LWNsaWVudC1waHApIFBIUCBDbGllbnQgZ2VuZXJhdGVkIGJ5IHRoZSBPcGVuQVBJIEdlbmVyYXRvci9Td2FnZ2VyIENvZGVnZW4KKiBbUmVkb2MgLSBPcGVuQVBJL1N3YWdnZXItZ2VuZXJhdGVkIEFQSSBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpCiogW1JhcGlEb2MgLSBDdXN0b20tRWxlbWVudCBmb3IgT3BlbkFQSSBTcGVjXShodHRwczovL2dpdGh1Yi5jb20vbXJpbjkvUmFwaURvYykKKiBbT3BlbkRvY3VtZW50ZXIgaXMgYSBhdXRvbWF0aWMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIE9wZW5BUEkgdjMgc2NoZW1hcy4gU2ltcGx5IHByb3ZpZGUgeW91ciBzY2hlbWEgZmlsZSBpbiBKU09OIG9yIFlBTUwsIHRoZW4gc2l0IGJhY2sgYW5kIGVuam95IHRoZSBkb2N1bWVudGF0aW9uLiBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vdXJvcGVuY29kZS9PcGVuRG9jdW1lbnRlcikKKiBbT3BlbkFQSSBFeHBsb3JlciAtIE9wZW5BUEkgV2ViIGNvbXBvbmVudCB0byBnZW5lcmF0ZSBhIFVJIGZyb20gdGhlIHNwZWMuXShodHRwczovL2dpdGh1Yi5jb20vUmhvc3lzL29wZW5hcGktZXhwbG9yZXIpCiogW29hczMtYXBpLXNuaXBwZXQtZW5yaWNoZXIgRW5yaWNoIHlvdXIgT3BlbkFQSSAzLjAgSlNPTiB3aXRoIGNvZGUgc2FtcGxlcyBdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZHd2L29hczMtYXBpLXNuaXBwZXQtZW5yaWNoZXIvKQoqIFtPcGVuQVBJLVZpZXdlciAtIE9wZW5BcGkgdmlld2VyIEltcGxlbWVudGVkIHVzaW5nIFZ1ZV0oaHR0cHM6Ly9naXRodWIuY29tL21yaW45L09wZW5BUEktVmlld2VyKQoqIFtMdWN5Qm90IERvY3VtZW50YXRpb24gU3RhcnRlciAtIEludGVyYWN0aXZlIFJFU1QgQVBJIERvY3VtZW50YXRpb24gXShodHRwczovL2dpdGh1Yi5jb20vTHVjeUJvdC1JbmMvZG9jdW1lbnRhdGlvbi1zdGFydGVyKQoKCkJ1aWxkaW5nIEVsZW1lbnRzOgoKYGBgCmdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTpzdG9wbGlnaHRpby9lbGVtZW50cy5naXQKY2QgZWxlbWVudHMgJiYgXApudm0gdXNlOyAKZHN0PSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaW50ZXJzZXJ2ZXIvbWFpbGJhYnktbWFpbC1hcGkvbWFzdGVyL3B1YmxpYy9zcGVjL29wZW5hcGkueWFtbCIgJiYgXApmb3Igc3JjIGluIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zdG9wbGlnaHRpby9QdWJsaWMtQVBJcy9tYXN0ZXIvcmVmZXJlbmNlL3pvb20vb3BlbmFwaS55YW1sIGh0dHBzOi8vYXBpLmFwaXMuZ3VydS92Mi9zcGVjcy9naXRodWIuY29tLzEuMS40L29wZW5hcGkueWFtbDsgZG8KICBncmVwIC1yICRzcmMgLWwgfCB4YXJncyAtbiAxIHNlZCBzIyIkc3JjIiMiJGRzdCIjZyAtaQpkb25lICYmIFwKeWFybiAmJiBcCnlhcm4gYnVpbGQgJiYgXApmb3IgaSBpbiBhbmd1bGFyIHJlYWN0LWdhdHNieSByZWFjdC1jcmEgc3RhdGljLWh0bWw7IGRvCiAgeWFybiBjb3B5OiRpICYmIFwKICB5YXJuIGJ1aWxkOiRpCmRvbmUKYGBgCgojIyBDb2RlIFNhbXBsZXMKCiogW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikKKiBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvKQoqIFtodHRwc25pcHBldF0oaHR0cHM6Ly9naXRodWIuY29tL2RldGFpbi9odHRwc25pcHBldCkKCiMjIFRPRE8KCiogQ3VzdG9taXplIDQwNCBQYWdlCiogVGVzdGluZwoqIEFkZGl0aW9uYWwgZXJyb3IgY2hlY2tpbmcgYW5kIGhhbmRsaW5nCiogQXV0byBVcGRhdGVzCiogUGxhY2luZyBPcmRlcnMKCiMjIFVSTHMgb2YgaW50ZXJlc3QgaW4gdGhpcyBwcm9qZWN0CgoqIFtPcGVuQVBJIFRvb2xzXShodHRwczovL29wZW5hcGkudG9vbHMvKSBMaXN0aW5nIG9mIE9wZW5BUEkgcmVsYXRkIHRvb2xzIGJ5IGNhdGVnb3J5IChEb2N1bWVudG9ycywgUGFyc2VycywgTW9ja2VycywgZXRjKQoqIFtPcGVuQVBJIFBTUi03IE1lc3NhZ2UgVmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vdGhlcGhwbGVhZ3VlL29wZW5hcGktcHNyNy12YWxpZGF0b3IpCiogW1BIUE1haWxlcl0oaHR0cHM6Ly9naXRodWIuY29tL1BIUE1haWxlci9QSFBNYWlsZXIvKSBlbWFpbCBzZW5kaW5nIGxpYnJhcnkgZm9yIFBIUAoqIFtTd2FnZ2VyIFVJXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci11aSkKKiBbU3dhZ2dlciBFZGl0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWVkaXRvcikKKiBbT3BlbkFQSSBHVUldKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29wZW5hcGktZ3VpKQoKCmh0dHBzOi8vd3d3LnRlY2hlbXBvd2VyLmNvbS9iZW5jaG1hcmtzLyNzZWN0aW9uPXRlc3QmcnVuaWQ9OTcxNmUzY2QtOWU1My00MzNjLWI2YzUtZDJjNDhjOTU5M2MxJmh3PXBoJnRlc3Q9ZGImbD16ZzI0bjMtMXImYT0yCiFbaW1hZ2VdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzYwNzMzNjgvOTY0NDc4MTQtMTIwZmM5ODAtMTI0NS0xMWViLTkzOGQtNmVhNDA4NzE2YzcyLnBuZykKCiMjIExJQ0VOU0UKCk1JVAo= - readmeEtag: '"9c88a173d5edfaf2e30ba3763783f51abebdda329188475f310d53fd89b6c913"' - readmeLastModified: Thu, 29 Dec 2022 05:29:19 GMT + IyBNYWlsQmFieSBBUEkKCkFQSSBzZXJ2aWNlIGZvciBhY2Nlc3NpbmcgdGhlIE1haWwuQmFieSBzZXJ2aWNlcy4KCiMgQVBJIFNhbXBsZSBDbGllbnRzCgpTYW1wbGUgY2xpZW50cyBmb3IgdGhlIEFQSSBhcmUgYXZhaWxhYmxlIGluIG1hbnkgbGFuZ3VhZ2VzCgoqIGh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlcnNlcnZlci9tYWlsYmFieS1hcGktc2FtcGxlcwoKIyBEZXZlbG9wbWVudAoKVGhpcyBpcyBidWlsdCBvbiB0b3Agb2YgV2VibWFuLCBhIGhpZ2ggcGVyZm9ybWFuY2UgSFRUUCBTZXJ2aWNlIEZyYW1ld29yayBmb3IgUEhQIGJhc2VkIG9uIFtXb3JrZXJtYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS93YWxrb3Ivd29ya2VybWFuKS4KCiMjIEFQSSBTcGVjaWZpY2F0aW9uCgpXZSBhcmUgdXRpbGl6aW5nIHRoZSBPcGVuQVBJIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKSBzcGVjIGZvciB0aGlzIEFQSS4gIEl0IGlzIGJhc2ljYWxseSB0aGUgbmV4dCBldm9sdXRpb24gb2YgU09BUCBBUEkncyB3aXRoIHdlbGwgZGVmaW5lZCBmdW5jdGlvbnMsIHBhcmFtZXRlcnMsIGFuZCByZXNwb25zZXMuICBXaGlsZSB0aGVyZSBhcmUgbWFueSBlZGl0b3JzIG91dCB0aGVyZSBJJ20gY3VycmVudGx5IHVzaW5nIFN3YWdnZXJIdWIgdG8gZG8gbW9zdCBvZiB0aGUgZWRpdGluZyBvZiB0aGUgc3BlYy4KCiogW1N3YWdnZXJIdWIgZWRpdG9yIGZvciBNYWlsQmFieSBBUEkgU3BlY10oaHR0cHM6Ly9hcHAuc3dhZ2dlcmh1Yi5jb20vYXBpcy9JbnRlclNlcnZlci9NYWlsQmFieS8xLjAuMCkKKiBbU3dhZ2dlci9PcGVuQVBJIFNwZWMgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXJlc3BvbnNlcy8pCgojIyBXZWJtYW4gRnJhbWV3b3JrCgpBZnRlciB0ZXN0aW5nICpldmVyeSogUEhQIGxpYnJhcnkgb3V0IHRoZXJlIGRlYWxpbmcgd2l0aCBjb25jdXJyZW50L2FzeW5jaHJvbm91cyBwcm9jZXNzaW5nIG1hbnkgdGltZXMgb3ZlciB0aGUgeWVhcnMgSSd2ZSBmb3VuZCBbV29ya2VybWFuXShodHRwczovL2dpdGh1Yi5jb20vd2Fsa29yL3dvcmtlcm1hbikgdG8gYmUgdGhlIG92ZXJhbGwgYmVzdC4gIEl0IGhhcyBwcm92ZW4gbW9yZSBzdGFibGUgYW5kIGJ5IGZhciBmYXN0ZXIgdGhhbiB0aGUgYWx0ZXJuYXRpdmVzIHdpdGggdGhlIG9uZSBiaWcgZG93bnNpZGUgYmVpbmcgdGhhdCBpdHMgZG9jdW1lbnRhdGlvbiBhbmQgY29kZSBjb21tZW50cyBhcmUgYWxsIGluIENoaW5lc2UuICBbV2VibWFuXShodHRwczovL2dpdGh1Yi5jb20vd2Fsa29yL3dlYm1hbikgaXMgYSBmYWlybHkgcmVjZW50bHkgY3JlYXRlZCB3ZWIgZnJhbWV3b3JrIG9uIHRvcCBvZiBbV29ya2VybWFuXShodHRwczovL2dpdGh1Yi5jb20vd2Fsa29yL3dvcmtlcm1hbikuICBUaGVyZSBoYWQgYmVlbiBtYW55IHByZXZpb3VzbHkgY3JlYXRlZCBmcmFtZXdvcmtzIGJhc2VkIG9uIHdvcmtlcm1hbiBhbmQgd2hpbGUgc29tZSB3ZXJlIGdvb2QgV2VibWFuIHNlZW1lZCB0byBoaXQgdGhhdCBwZXJmZWN0IGJhbGFuY2UgYmV0d2VlbiBlYXNlLW9mLXVzZSBhbmQgcG93ZXIuCgpUaGUgQ2hpbmVzZSBkb2N1bWVudGF0aW9uIGlzIGVhc2lseSByZWFkYWJsZSBVc2luZyBlaXRoZXIgdGhlIGF1dG8gdHJhbnNsYXRlIGluIENocm9tZSBvciBhbiBhZGRvbiBsaWtlIFtUcmFuc2xhdGUgV2ViIFBhZ2VzXShodHRwczovL2FkZG9ucy5tb3ppbGxhLm9yZy9lbi1VUy9maXJlZm94L2FkZG9uL3RyYWR1emlyLXBhZ2luYXMtd2ViLykgZm9yIEZpcmVmb3guCgoqIFtXZWJNYW4gTWFudWFsXShodHRwczovL3d3dy53b3JrZXJtYW4ubmV0L2RvYy93ZWJtYW4pIFdlYk1hbiBmcmFtZXdvcmsgZG9jdW1lbnRhdGlvbgoKIyMgRG9jdW1lbnRhdGlvbgoKKiBbSWxsdW1pbmF0ZSBEYXRhYmFzZSBEb2NzXShodHRwczovL2xhcmF2ZWwuY29tL2RvY3MvOC54L3F1ZXJpZXMpCiogW1N0b3BMaWdodCBFbGVtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL2VsZW1lbnRzKSBPcGVuQVBJIERvY3VtZW50b3IKKiBbTWFpbEJhYnkgU3dhZ2dlci1VSV0oaHR0cHM6Ly9hcGkubWFpbGJhYnkubmV0L2RvYy9pbmRleC5odG1sKQoqIFtNYWlsQmFieSBnZW5lcmF0b3IgSFRNTDIgIERvY3NdKGh0dHBzOi8vbXlzdGFnZS5pbnRlcnNlcnZlci5uZXQvaHRtbDIvKQoqIFtNYWlsQmFieSBnZW5lcmF0ZWQgUEhQIENsaWVudF0oaHR0cHM6Ly9naXRodWIuY29tL2ludGVyc2VydmVyL21haWxiYWJ5LWNsaWVudC1waHApIFBIUCBDbGllbnQgZ2VuZXJhdGVkIGJ5IHRoZSBPcGVuQVBJIEdlbmVyYXRvci9Td2FnZ2VyIENvZGVnZW4KKiBbUmVkb2MgLSBPcGVuQVBJL1N3YWdnZXItZ2VuZXJhdGVkIEFQSSBSZWZlcmVuY2UgRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL1JlZG9jbHkvcmVkb2MpCiogW1JhcGlEb2MgLSBDdXN0b20tRWxlbWVudCBmb3IgT3BlbkFQSSBTcGVjXShodHRwczovL2dpdGh1Yi5jb20vbXJpbjkvUmFwaURvYykKKiBbT3BlbkRvY3VtZW50ZXIgaXMgYSBhdXRvbWF0aWMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZm9yIE9wZW5BUEkgdjMgc2NoZW1hcy4gU2ltcGx5IHByb3ZpZGUgeW91ciBzY2hlbWEgZmlsZSBpbiBKU09OIG9yIFlBTUwsIHRoZW4gc2l0IGJhY2sgYW5kIGVuam95IHRoZSBkb2N1bWVudGF0aW9uLiBdKGh0dHBzOi8vZ2l0aHViLmNvbS9vdXJvcGVuY29kZS9PcGVuRG9jdW1lbnRlcikKKiBbT3BlbkFQSSBFeHBsb3JlciAtIE9wZW5BUEkgV2ViIGNvbXBvbmVudCB0byBnZW5lcmF0ZSBhIFVJIGZyb20gdGhlIHNwZWMuXShodHRwczovL2dpdGh1Yi5jb20vUmhvc3lzL29wZW5hcGktZXhwbG9yZXIpCiogW29hczMtYXBpLXNuaXBwZXQtZW5yaWNoZXIgRW5yaWNoIHlvdXIgT3BlbkFQSSAzLjAgSlNPTiB3aXRoIGNvZGUgc2FtcGxlcyBdKGh0dHBzOi8vZ2l0aHViLmNvbS9jZHd2L29hczMtYXBpLXNuaXBwZXQtZW5yaWNoZXIvKQoqIFtPcGVuQVBJLVZpZXdlciAtIE9wZW5BcGkgdmlld2VyIEltcGxlbWVudGVkIHVzaW5nIFZ1ZV0oaHR0cHM6Ly9naXRodWIuY29tL21yaW45L09wZW5BUEktVmlld2VyKQoqIFtMdWN5Qm90IERvY3VtZW50YXRpb24gU3RhcnRlciAtIEludGVyYWN0aXZlIFJFU1QgQVBJIERvY3VtZW50YXRpb24gXShodHRwczovL2dpdGh1Yi5jb20vTHVjeUJvdC1JbmMvZG9jdW1lbnRhdGlvbi1zdGFydGVyKQoKCkJ1aWxkaW5nIEVsZW1lbnRzOgoKYGBgCmdpdCBjbG9uZSBnaXRAZ2l0aHViLmNvbTpzdG9wbGlnaHRpby9lbGVtZW50cy5naXQKY2QgZWxlbWVudHMgJiYgXApudm0gdXNlOwpkc3Q9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9pbnRlcnNlcnZlci9tYWlsYmFieS1tYWlsLWFwaS9tYXN0ZXIvcHVibGljL3NwZWMvb3BlbmFwaS55YW1sIiAmJiBcCmZvciBzcmMgaW4gaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0b3BsaWdodGlvL1B1YmxpYy1BUElzL21hc3Rlci9yZWZlcmVuY2Uvem9vbS9vcGVuYXBpLnlhbWwgaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L3YyL3NwZWNzL2dpdGh1Yi5jb20vMS4xLjQvb3BlbmFwaS55YW1sOyBkbwogIGdyZXAgLXIgJHNyYyAtbCB8IHhhcmdzIC1uIDEgc2VkIHMjIiRzcmMiIyIkZHN0IiNnIC1pCmRvbmUgJiYgXAp5YXJuICYmIFwKeWFybiBidWlsZCAmJiBcCmZvciBpIGluIGFuZ3VsYXIgcmVhY3QtZ2F0c2J5IHJlYWN0LWNyYSBzdGF0aWMtaHRtbDsgZG8KICB5YXJuIGNvcHk6JGkgJiYgXAogIHlhcm4gYnVpbGQ6JGkKZG9uZQpgYGAKCiMjIENvZGUgU2FtcGxlcwoKKiBbU3dhZ2dlciBDb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKQoqIFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci8pCiogW2h0dHBzbmlwcGV0XShodHRwczovL2dpdGh1Yi5jb20vZGV0YWluL2h0dHBzbmlwcGV0KQoKIyMgVE9ETwoKKiBDdXN0b21pemUgNDA0IFBhZ2UKKiBUZXN0aW5nCiogQWRkaXRpb25hbCBlcnJvciBjaGVja2luZyBhbmQgaGFuZGxpbmcKKiBBdXRvIFVwZGF0ZXMKKiBQbGFjaW5nIE9yZGVycwoKIyMgVVJMcyBvZiBpbnRlcmVzdCBpbiB0aGlzIHByb2plY3QKCiogW09wZW5BUEkgVG9vbHNdKGh0dHBzOi8vb3BlbmFwaS50b29scy8pIExpc3Rpbmcgb2YgT3BlbkFQSSByZWxhdGQgdG9vbHMgYnkgY2F0ZWdvcnkgKERvY3VtZW50b3JzLCBQYXJzZXJzLCBNb2NrZXJzLCBldGMpCiogW09wZW5BUEkgUFNSLTcgTWVzc2FnZSBWYWxpZGF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGVwaHBsZWFndWUvb3BlbmFwaS1wc3I3LXZhbGlkYXRvcikKKiBbUEhQTWFpbGVyXShodHRwczovL2dpdGh1Yi5jb20vUEhQTWFpbGVyL1BIUE1haWxlci8pIGVtYWlsIHNlbmRpbmcgbGlicmFyeSBmb3IgUEhQCiogW1N3YWdnZXIgVUldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLXVpKQoqIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItZWRpdG9yKQoqIFtPcGVuQVBJIEdVSV0oaHR0cHM6Ly9naXRodWIuY29tL01lcm1hZGUvb3BlbmFwaS1ndWkpCgoKICA8aDQ+54m55Yir6LWe5YqpPC9oND4KICA8YSBocmVmPSJodHRwczovL3d3dy5jcm1lYi5jb20vP2Zvcm09d29ya2VybWFuIiB0YXJnZXQ9Il9fYmxhbmsiPgogICAgPGltZyBzcmM9Imh0dHBzOi8vd3d3Lndvcmtlcm1hbi5uZXQvaW1nL3Nwb25zb3JzLzY0MjkvMjAyMzA3MTkxMTE1MDAuc3ZnIiB3aWR0aD0iMjAwIj4KICA8L2E+CgogIDxoND7pk4Lph5HotZ7liqk8L2g0PgogIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhZGV0YXNrLmNvbS8/ZnJvbT13b3JrZXJtYW4iIHRhcmdldD0iX19ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vd3d3Lndvcmtlcm1hbi5uZXQvaW1nL3Nwb25zb3JzLzEvMjAyMzA3MTkwODQzMTYucG5nIiB3aWR0aD0iMjAwIj48L2E+CiAgPGEgaHJlZj0iaHR0cHM6Ly93d3cueWlsaWFueXVuLm5ldC8/ZnJvbT13b3JrZXJtYW4iIHRhcmdldD0iX19ibGFuayIgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHg7Ij48aW1nIHNyYz0iaHR0cHM6Ly93d3cud29ya2VybWFuLm5ldC9pbWcvc3BvbnNvcnMvNjIxOC8yMDIzMDcyMDExNDA0OS5wbmciIHdpZHRoPSIyMDAiPjwvYT4KCiAgPGg0PumHkeeJjOi1nuWKqTwvaDQ+CgoKPC9kaXY+CgoKPGRpdiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8aDE+TElDRU5TRTwvaDE+ClRoZSB3ZWJtYW4gaXMgb3Blbi1zb3VyY2VkIHNvZnR3YXJlIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQuCjwvZGl2PgoKPC9kaXY+CgoK + readmeEtag: '"218c67f939c93b253d009fd8019946e0755de0b69b37aa8a561223b902f87a90"' + readmeLastModified: Wed, 09 Aug 2023 02:19:06 GMT repositoryId: 539355108 description: API Server for the MailBaby Email Services. created: '2022-09-21T07:13:45Z' - updated: '2023-01-11T02:38:21Z' + updated: '2023-08-08T16:13:20Z' language: PHP archived: false stars: 1 @@ -25640,8 +25640,8 @@ owner: interserver logo: https://avatars.githubusercontent.com/u/29833539?v=4 license: MIT - repoEtag: '"a85963c61d37ea3308bc07c02679c922991435da8dd5788bafd7457d293fe416"' - repoLastModified: Wed, 11 Jan 2023 02:38:21 GMT + repoEtag: '"38097cdb0f2f955a989440ac2d716031e67973572615fbf81d9e07efeafb7e57"' + repoLastModified: Tue, 08 Aug 2023 16:13:20 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -27170,7 +27170,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"9cd8b1b07e76656fd68a4dfc723a9fc38885e0afd4458c87350549d4c4e895bd"' + repoEtag: '"2bc3c4e71b1625f0e3c2a15bcc4535aead3d2bb58f32488f2d7de279a87c3836"' repoLastModified: Tue, 18 Jul 2023 09:11:02 GMT foundInMaster: true category: @@ -27201,7 +27201,7 @@ owner: Refitter logo: https://avatars.githubusercontent.com/u/140486945?v=4 license: GPL-3.0 - repoEtag: '"c8d270349c7d61322e414241190eae9f8790e07369ee3754c3f3690487b6ed27"' + repoEtag: '"677d2885914176044252c0725bced28fb786561830f7feaa77ddb0db1fb1fa07"' repoLastModified: Fri, 28 Jul 2023 11:58:10 GMT category: Parsers foundInMaster: true @@ -28607,7 +28607,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"7a71c5bd70d4575cb710f1d6d06a7bd1d22814ca657db29005c09c1b99f0837f"' + repoEtag: '"3cb659fc1fd990ea876ce0bf3ae4db9b37f372286e383741d8f17a88eea324f3"' repoLastModified: Tue, 18 Jul 2023 09:11:02 GMT foundInMaster: true category: @@ -29068,7 +29068,7 @@ repositoryId: 673433766 description: OpenApi generation for Laravel applications. created: '2023-08-01T15:59:35Z' - updated: '2023-08-01T20:06:20Z' + updated: '2023-08-08T13:45:40Z' language: PHP archived: false stars: 0 @@ -29076,8 +29076,9 @@ forks: 0 owner: irealworlds logo: https://avatars.githubusercontent.com/u/28299559?v=4 - repoEtag: '"c2e1c542bc2e8ba1fcd2076e24a7f800254a27d87e903f51c12587c38522dc3a"' - repoLastModified: Tue, 01 Aug 2023 20:06:20 GMT + license: MIT + repoEtag: '"bb07aed8c853c0acd36550026ada9cb8d0a311c42a7d03e4e919e9684b3d0bc0"' + repoLastModified: Tue, 08 Aug 2023 13:45:40 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/robbot-discord/robbot-api @@ -30788,7 +30789,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"9468eead2feab623dc211787bac9eda5c26964a0f518eb50cda98b531de33664"' + repoEtag: '"d0d0b60e977e833c33316f3c5a0d2e171e40fb7dce762d109a7f89e9fad77f7d"' repoLastModified: Tue, 18 Jul 2023 09:11:02 GMT foundInMaster: true category: @@ -31979,7 +31980,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"83a1284c029061d40527f72bcee9bcd676d93a80042b02e9398af75599254a25"' + repoEtag: '"2800a9cce63a428f80c4134f7eb11224a9937261099c42b5f7eacb91f7da53ab"' repoLastModified: Tue, 18 Jul 2023 09:11:02 GMT foundInMaster: true category: Server @@ -32004,7 +32005,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"f6c96424414e6b73c853284491842e6d2cce024b3e99ae5f825aebc47e651281"' + repoEtag: '"fe6a6197ca7264990711540cd346a8f8bdcce5ed1854436f2336a08c913ff078"' repoLastModified: Tue, 18 Jul 2023 09:10:52 GMT foundInMaster: true category: @@ -32086,7 +32087,7 @@ owner: open-banking logo: https://avatars.githubusercontent.com/u/38990562?v=4 license: Apache-2.0 - repoEtag: '"40f15c058288ca776650e75bec6ec246a2b8919506005fa3cf9b2143edad4fc6"' + repoEtag: '"fdf921efe7b47456e3091a528c8f9f200fb691c4ebc05f018bde242f94f80878"' repoLastModified: Tue, 18 Jul 2023 09:10:52 GMT foundInMaster: true category: @@ -33590,17 +33591,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: '2023-08-05T02:32:00Z' + updated: '2023-08-09T03:07:29Z' language: Java archived: false - stars: 7244 + stars: 7246 watchers: 313 forks: 2150 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"81e64e0c3530068214806689168ce914794809c719f95fc774f6c3b4891b18cb"' - repoLastModified: Sat, 05 Aug 2023 02:32:00 GMT + repoEtag: '"c38796facd1999c333a64b625b96d156dae983950e9e9fd933a1a84e0056afa9"' + repoLastModified: Wed, 09 Aug 2023 03:07:29 GMT id: 266d60df2d48ad8a47539de3c1071f3a - source: IMPLEMENTATIONS.md name: Microsoft.OpenApi.net @@ -33623,17 +33624,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: '2023-08-07T20:14:14Z' + updated: '2023-08-08T18:31:03Z' language: C# archived: false - stars: 1178 + stars: 1180 watchers: 65 forks: 198 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"42b3a4a689cc48ee9d9d79017a8e74bb6df45ff979c4e43c44cbf7677f1b5065"' - repoLastModified: Mon, 07 Aug 2023 20:14:14 GMT + repoEtag: '"1251e527339b42e481eb867f9c0fafe0216b9d0713084ba2d4cb3c590be159ff"' + repoLastModified: Tue, 08 Aug 2023 18:31:03 GMT id: f3215034d64cfcbcc28a4bdb0205a075 - source: IMPLEMENTATIONS.md name: openapi-validator @@ -33932,17 +33933,17 @@ repositoryId: 30567860 description: Single file PHP script that adds a REST API to a SQL database created: '2015-02-10T01:08:52Z' - updated: '2023-08-07T08:36:40Z' + updated: '2023-08-08T11:55:15Z' language: PHP archived: false - stars: 3376 + stars: 3375 watchers: 180 forks: 992 owner: mevdschee logo: https://avatars.githubusercontent.com/u/1288217?v=4 license: MIT - repoEtag: '"faab69ae7c093691bb5ec993f6110d585f29fee9d479616065db47a76170f289"' - repoLastModified: Mon, 07 Aug 2023 08:36:40 GMT + repoEtag: '"58cf22ecf0de8d9639f6995f4bdf2cf9ecb8a0e1c28b7a81348130f53ec3be4c"' + repoLastModified: Tue, 08 Aug 2023 11:55:15 GMT id: 84a7be428932f7789a8ad1a220b22216 - source: IMPLEMENTATIONS.md name: Fastify OpenAPI v3 @@ -34628,17 +34629,17 @@ Swagger/OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support created: '2015-05-19T13:05:58Z' - updated: '2023-08-06T10:28:38Z' + updated: '2023-08-08T09:51:22Z' language: Python archived: false - stars: 4268 + stars: 4269 watchers: 87 forks: 733 owner: spec-first logo: https://avatars.githubusercontent.com/u/58754196?v=4 license: NOASSERTION - repoEtag: '"a3b82eeb41aacd446d62779c38a4d425223b37ef7cac9e03eb1e86dbbe39cbe6"' - repoLastModified: Sun, 06 Aug 2023 10:28:38 GMT + repoEtag: '"7d6edf72a9c8778c6f7d838100ef727a863f63904d17e4d7f03fc8755bc3c5c7"' + repoLastModified: Tue, 08 Aug 2023 09:51:22 GMT foundInMaster: true homepage: https://github.com/zalando/connexion id: 2d575abdf2671028868058b2442d9131 @@ -34867,7 +34868,7 @@ owner: Gi60s logo: https://avatars.githubusercontent.com/u/714117?v=4 license: Apache-2.0 - repoEtag: '"0864aec3b5856666bad4cc84987703d788dc265f024ed6ea86f35d191091fcec"' + repoEtag: '"d5877cfcab801860a714ae9e8a6880c166e6568f49f80edb75162b21a2930cf1"' repoLastModified: Fri, 30 Jun 2023 10:57:51 GMT foundInMaster: true id: d154dd3ce5cfba35ca50effbfd386d73 @@ -34893,17 +34894,17 @@ repositoryId: 102150798 description: Principled code generation from OpenAPI specifications created: '2017-09-01T20:31:36Z' - updated: '2023-08-05T10:43:50Z' + updated: '2023-08-08T22:15:59Z' language: Scala archived: false - stars: 494 + stars: 495 watchers: 24 forks: 124 owner: guardrail-dev logo: https://avatars.githubusercontent.com/u/77855402?v=4 license: MIT - repoEtag: '"1b207c045feee589c28b9c64dc9d39fb29d46e82c8e999a4ea8e73dd2d74bc09"' - repoLastModified: Sat, 05 Aug 2023 10:43:50 GMT + repoEtag: '"9d567aaf5d44f7efe124b481fbdb3f802b813701d99e06b4e6843a183fa5014f"' + repoLastModified: Tue, 08 Aug 2023 22:15:59 GMT foundInMaster: true id: 5a3fd6a978abf3303c9cce3950582502 oldLocations: @@ -34930,17 +34931,17 @@ LoopBack makes it easy to build modern API applications that require complex integrations. created: '2017-01-09T17:27:14Z' - updated: '2023-08-07T02:47:55Z' + updated: '2023-08-08T11:30:16Z' language: TypeScript archived: false - stars: 4603 + stars: 4602 watchers: 135 - forks: 1041 + forks: 1040 owner: loopbackio logo: https://avatars.githubusercontent.com/u/22173486?v=4 license: NOASSERTION - repoEtag: '"cd98e1b22959e4e9899d86afea0f1475968ebb4e3d0d5c072d8701c95d92fa25"' - repoLastModified: Mon, 07 Aug 2023 02:47:55 GMT + repoEtag: '"ba012c0d5f2c165f3d557ccaa92db3551f5033068cb32f0905fa6291dbf2ca6b"' + repoLastModified: Tue, 08 Aug 2023 11:30:16 GMT foundInMaster: true id: 9132c25ad468bed25b9dbbe3a352abc2 v3: true @@ -35012,17 +35013,17 @@ testing cloud services through their REST APIs and finding security and reliability bugs in these services. created: '2020-07-24T21:40:11Z' - updated: '2023-08-08T02:20:45Z' + updated: '2023-08-08T11:41:14Z' language: Python archived: false - stars: 2226 + stars: 2227 watchers: 35 forks: 256 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"39c1b562e336a16b0b2b01d05e78197a6612a6892d936cf3872baf570d5ec010"' - repoLastModified: Tue, 08 Aug 2023 02:20:45 GMT + repoEtag: '"d2f3da35dd5f678db4d061d4fa900aed3866d1c6207c0633a321227416bf0af2"' + repoLastModified: Tue, 08 Aug 2023 11:41:14 GMT foundInMaster: true oldLocations: - https://github.com/microsoft/restler @@ -35175,7 +35176,7 @@ owner: weikangchia logo: https://avatars.githubusercontent.com/u/2174882?v=4 license: MIT - repoEtag: '"678e7e4449519515422f2ac205e79905ceeb09374869911eee767686a1656993"' + repoEtag: '"28480e4b8312e10710b5a9fc35317f5bf7231cdadba95d6edd5e09077da8e88c"' repoLastModified: Sat, 20 Nov 2021 15:06:15 GMT foundInMaster: true category: @@ -35940,7 +35941,7 @@ owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"0c7c70f2d5c093641d803e46fe3834bac3a80c349e22ffbd21aeb475175d724a"' + repoEtag: '"d718b1b8ba1518dabd71b55284e629e01e11db007f3caf16c894de75dc5e542d"' repoLastModified: Mon, 07 Aug 2023 16:27:11 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 @@ -35972,7 +35973,7 @@ Protobuf v3 (for grpc) based lightweight microservice framework. It supports monolith service application as well. created: '2021-02-24T07:21:40Z' - updated: '2023-08-05T03:17:39Z' + updated: '2023-08-08T06:34:03Z' language: Go archived: false stars: 1209 @@ -35981,8 +35982,8 @@ owner: unionj-cloud logo: https://avatars.githubusercontent.com/u/79033021?v=4 license: MIT - repoEtag: '"1cf097fd84958899b2c12176c02f893f1624e704605cd13223de1b4921ccf05d"' - repoLastModified: Sat, 05 Aug 2023 03:17:39 GMT + repoEtag: '"09194eeda542a0e48b3dc3e2a390621a248413b2b9cddd5a227bcb547751419c"' + repoLastModified: Tue, 08 Aug 2023 06:34:03 GMT foundInMaster: true category: SDK id: aab01f8bda6c542fdacf9ee8dfa7d20d @@ -36077,9 +36078,9 @@ v3: true repositoryMetadata: base64Readme: >- - IyBQcmV0dHlSZXN0RG9jCgpbQ2hlY2sgaXQgb3V0IHRoZSBkZW1vIV0oaHR0cHM6Ly9jaGFybHlqYXp6LmdpdGh1Yi5pby9wcmV0dHlyZXN0ZG9jLyNVc2VyKQoKVGhpcyBpcyBhIHRlbXBsYXRlIGNyZWF0ZWQgaW4gUmVhY3QgdG8gZWFzaWx5IGN1c3RvbWl6ZSBhbmQgYnVpbGQgYSBSRVNUIEFQSSBEb2N1bWVudGF0aW9uIGZvciBjb21tZXJjaWFsIG9yIGRldmVsb3BtZW50IHB1cnBvc2VzLiBQcm9qZWN0IGNyZWF0ZWQgdXNpbmcgdXNpbmcgY3JlYXRlLXJlYWN0LWFwcCB3dGggdGhlIHR5cGVzY3JpcHQgdGVtcGxhdGUKClJvbGVzIGFuZCBQZXJtaXNzaW9ucyAgICAgIHwgIFByZXZpZXcgU2NoZW1hCjotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLToKIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEyNDg5MzMzLzEyNDAxMzk5MS01OTk0NGIwMC1kOWI5LTExZWItODI1ZS01YTAyYTliOTk0ODcuanBlZykgIHwgICFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMjQ4OTMzMy8xMjQwMTM5ODMtNTdjYTg3ODAtZDliOS0xMWViLTkwYjYtNmEwMjI3ZThiYWMzLmpwZWcpCgpTZWFyY2ggICAgICB8ICBFbmRwb2ludCBTZWN0aW9uCjotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLToKIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEyNDg5MzMzLzEyNDAxNDAwMi01YjVlMGU4MC1kOWI5LTExZWItOTBhZS05MGU0MmY3OTgxNDkuanBlZykgIHwgICFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMjQ4OTMzMy8xMjQwMTQ2OTgtM2E0OWVkODAtZDliYS0xMWViLTkzNTctNDY3OGU0ZWJlMTdjLmpwZWcpCgoKCiMjIyBNZXJnZSBCZXR3ZWVuIGN1c3RvbSBjb250ZW50IGFuZCB5b3VyIEFQSSBjb250cmFjdAoKWW91IGNhbiBlYXNpbHkgc3luYyB5b3UgT3BlbkFQSSAzIEpTT04gRmlsZSB1c2luZyB0aGUgIlNlY3Rpb25JdGVtIiBzdHJ1Y3R1cmUuIEluIHRoZSBuZXh0IGV4YW1wbGUgeW91IGNhbiBzZWUgYSBTZWN0aW9uSXRlbSBjcmVhdGUgZm9yIHRoZSBTdG9yZSB0YWcgZnJvbSB0aGUgUGV0U3RvcmUgU3dhZ2dlciBleGFtcGxlLiBUaGlzIHdheSBjYW4gYWRkIGltYWdlcywgZGVzY3JpcHRpb25zLCBhbmQgaW50cm9kdWN0b3J5IHNlY3Rpb25zIGxpa2UgIkdldHRpbmcgU3RhcnRlZCIKCmBgYGphdmFzY3JpcHQKY29uc3QgZG9jdW1lbnRhdGlvbjogU2VjdGlvbkl0ZW0gPSB7CiAgaWQ6ICJzdG9yZSIsCiAgdGFnOiAic3RvcmUiLAogIHNjaGVtYTogIk9yZGVyIiwKICB0aXRsZTogIlN0b3JlIiwKICBjb250ZW50OiB7CiAgICBsZWZ0X3NlY3Rpb25fdGl0bGU6ICJTdG9yZXMiLAogICAgbGVmdF9zZWN0aW9uX3BhcmFncmFwaHM6IFsiVGhpcyBpcyBhIFN0b3JlIHJlbGF0ZWQgb3BlcmF0aW9uIl0sCiAgICByaWdodF9ib3hfc25pcHBldF93aGl0ZTogdHJ1ZSwKICAgIHJpZ2h0X2JveF9zbmlwcGV0X3RpdGxlOiAiRXhhbXBsZSBvZiBhIE9yZGVyIG9iamVjdCIsCiAgfSwKICBpc19jb3JlX3Jlc291cmNlOiB0cnVlLAp9OwpgYGAKClN0cnVjdHVyZSBvZiBhIGBTZWN0aW9uSXRlbWA6CgpgaWRgOiBBbmNob3IgZm9yIFVSTAoKYHRhZ2A6IFRhZyB0byBmb3VuZCBjb250ZW50IGluc2lkZSB0aGUgT3BlbkFQSTMgSlNPTiBmaWxlCgpgdGl0bGVgOiBUaXRsZSBmb3IgVUkKCmBjb250ZW50YDogVGl0bGVzIGFuZCBkZXNjcmlwdGlvbnMuIEFsc28geW91IGNhbiBjcmVhdGUgYSBvYmplY3QgbGlrZSBhIGV4YW1wbGUgb2YgYSByZXNwb25zZS9yZXF1ZXN0LgoKYGlzX2NvcmVfcmVzb3VyY2VgOiBUaGlzIGJvb2xlYW4gcGFyYW1ldGVyIGhlbHAgdG8gc3BsaXQgdGhlIGNvbnRlbnQgYmV0d2VlbiBzZWN0aW9ucyBsaWtlIGEgIkdldHRpbmcgU3RhcnRlZCIgYW5kIHRoZSBBUEkgZW5kcG9pbnRzCgpXaXRoIGEgQXJyYXkgb2YgU2VjdGlvbkl0ZW1zIGFuZCB0aGUgSlNPTiBvZiB0aGUgT3BlbkFQSSBTY2hlbWEgeW91IGNhbiByZW5kZXIgdGhlIGRvY3VtZW50YXRpb246CgpgYGBqYXZhc2NyaXB0CmltcG9ydCBkb2NTd2FnZ2VyIGZyb20gIi4vcGV0c3RvcmUuanNvbiI7IC8vIE9wZW5BUEkgSlNPTgppbXBvcnQgQVBJRG9jIGZyb20gIi4vZG9jIjsgLy8gQXJyYXkgb2YgU2VjdGlvbkl0ZW0KCjxQcmV0dHlSZXN0RG9jIGRvY0N1c3RvbT17QVBJRG9jfSBkb2NTd2FnZ2VyPXtkb2NTd2FnZ2VyfSAvPjsKYGBgCgojIyMgU2VjdGlvbiBmb3IgUm9sZXMgYW5kIFBlcm1pc3Npb25zCgpZb3UgY2FuIGNyZWF0ZSBlYXNpbHkgYSB0YWJsZSBmb3Igcm9sZXMgYW5kIHBlcm1pc3Npb25zIHNlbmRpbmcgdGhlIHByb3Agcm9sZXMgdG8gdGhlIGNvbXBvbmVudC4gKipUaGUgYFNlY3Rpb25JdGVtYCBuZWVkIHRoZSBgcm9sZXMtcGVybWlzc2lvbnNgIGlkIGZvciB0aGlzIHNwZWNpYWwgY2FzZS4qKgoKYGBgeG1sCjxQcmV0dHlSZXN0RG9jCiAgZG9jQ3VzdG9tPXtBUElEb2N9CiAgZG9jU3dhZ2dlcj17ZG9jU3dhZ2dlciBhcyB1bmtub3duIGFzIE9wZW5BUElWMy5Eb2N1bWVudH0KICByb2xlcz17WwogICAgewogICAgICBsYWJlbDogIkNsaWVudCIsCiAgICAgIHZhbHVlOiAnY2xpZW50JwogICAgfSwKICAgIHsKICAgICAgbGFiZWw6ICJBZG1pbiIsCiAgICAgIHZhbHVlOiAnYWRtaW4nCiAgICB9XX0KLz4KYGBgCgpUaGVuIHlvdSB3aWxsIG5lZWQgc2V0IHRoZSByb2xlcyB0byBlYWNoIGVuZHBvaW50IGluIHRoZSBPcGVuQVBJMyBKU09OLgoKYGBganNvbgp7CiAgInB1dCI6IHsKICAgICJ0YWdzIjogWyJ1c2VyIl0sCiAgICAicm9sZXMiOiBbImFkbWluIl0sCiAgICAic3VtbWFyeSI6ICJVcGRhdGUgdXNlciIsCiAgICAiZGVzY3JpcHRpb24iOiAiVGhpcyBjYW4gb25seSBiZSBkb25lIGJ5IHRoZSBsb2dnZWQgaW4gdXNlci4iLAogICAgIm9wZXJhdGlvbklkIjogInVwZGF0ZVVzZXIiCiAgfQp9CmBgYAoKIyMjIEN1c3RvbWl6YXRpb24gYW5kIFN0eWxlcwoKVGhlIHN0cnVjdHVyZSBvZiB0aGUgcHJvamVjdCBpcyB2ZXJ5IGVhc3kgdG8gdW5kZXJzdGFuZC4gVGhlIGNvZGUgb2YgdGhlIGRvY3VtZW50YXRpb24gaXMgaW5zaWRlIHRoZSBgc3JjL2xpYmAgZm9sZGVyOgoKLSBgc3JjL2xpYi9hZGFwdGVyLWFvM2A6IExvZ2ljIHRvIGdldCBjb250ZW50IGZyb20gT3BlbkFQSTMKLSBgc3JjL2xpYi9jb21wb25lbnRzYDogQWxsIFVJIGNvbXBvbmVudHMsIHlvdSBjYW4gY2hhbmdlIHN0eWxlcyBvciBsb2dpYyBlYXNpbHkgKE1vZHVsZXMgQ1NTIGltcGxlbWVudGVkKQotIGBzcmMvbGliL2hvb2tzYDogSG9va3MhCi0gYHNyY1xsaWIvUHJldHR5UmVzdERvYy5qc3hgOiBSb290IENvbXBvbmVudAoKIyMjIEN1cnJlbnQgZXhhbXBsZSBpbiB0aGlzIFJlcG9zaXRvcnkKClRoaXMgUmVwb3NpdG9yeSBoYXZlIGEgZXhhbXBsZSB1c2luZyB0aGUgUGV0U3RvcmUgZnJvbSBTd2FnZ2VyIHdpdGggdGhlIHNlY3Rpb25zIFBldCwgU3RvcmUgYW5kIFVzZXIuIEJ1dCB3aXRoIHRocmVlIHNlY3Rpb25zIGludHJvZHVjdG9yaWVzIHVzaW5nIHRoZSBwb3dlciBvZiBgU2VjdGlvbnNJdGVtYCBzdHJ1Y3R1cmVzLiBBbHNvIHRoZXJlIGFyZSBhIHNlY3Rpb24gZm9yICoqUm9sZXMgYW5kIFBlcm1pc3Npb25zKioKCiMjIyBSdW4gRG9jdW1lbnRhdGlvbiBpbiB5b3VyIGxvY2FsIEJyb3dzZXIKYGBgYmFzaApucG0gaW5zdGFsbCAmJiBucG0gcnVuIHN0YXJ0CmBgYAoKIyMjIFJ1biBUZXN0cyAKYGBgYmFzaApucG0gaW5zdGFsbCAmJiBucG0gcnVuIHRlc3QKYGBgCgojIyMgQ3JlZGl0cwoKLSBbU3dhZ2dlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvLykKLSBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykK - readmeEtag: '"197d04ffcb92aa7eb1a7247536f01f557a7354ec6362ab739d9a53ee5a861928"' - readmeLastModified: Fri, 25 Mar 2022 15:04:11 GMT + IyBQcmV0dHlSZXN0RG9jCgpbQ2hlY2sgaXQgb3V0IHRoZSBkZW1vIV0oaHR0cHM6Ly9jaGFybHlqYXp6LmdpdGh1Yi5pby9wcmV0dHlyZXN0ZG9jLyNVc2VyKQoKVGhpcyBpcyBhIHRlbXBsYXRlIGNyZWF0ZWQgaW4gUmVhY3QgdG8gZWFzaWx5IGN1c3RvbWl6ZSBhbmQgYnVpbGQgYSBSRVNUIEFQSSBEb2N1bWVudGF0aW9uIGZvciBjb21tZXJjaWFsIG9yIGRldmVsb3BtZW50IHB1cnBvc2VzLiBQcm9qZWN0IGNyZWF0ZWQgdXNpbmcgdXNpbmcgY3JlYXRlLXJlYWN0LWFwcCB3dGggdGhlIHR5cGVzY3JpcHQgdGVtcGxhdGUKCnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvbGVzIGFuZCBQZXJtaXNzaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJldmlldyBTY2hlbWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tOiB8CnwgIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEyNDg5MzMzLzEyNDAxMzk5MS01OTk0NGIwMC1kOWI5LTExZWItODI1ZS01YTAyYTliOTk0ODcuanBlZykgfCAhW10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTI0ODkzMzMvMTI0MDEzOTgzLTU3Y2E4NzgwLWQ5YjktMTFlYi05MGI2LTZhMDIyN2U4YmFjMy5qcGVnKSB8Cgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kcG9pbnQgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTogfAp8ICFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMjQ4OTMzMy8xMjQwMTQwMDItNWI1ZTBlODAtZDliOS0xMWViLTkwYWUtOTBlNDJmNzk4MTQ5LmpwZWcpIHwgIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzEyNDg5MzMzLzEyNDAxNDY5OC0zYTQ5ZWQ4MC1kOWJhLTExZWItOTM1Ny00Njc4ZTRlYmUxN2MuanBlZykgfAoKIyMjIE1lcmdlIEJldHdlZW4gY3VzdG9tIGNvbnRlbnQgYW5kIHlvdXIgQVBJIGNvbnRyYWN0CgpZb3UgY2FuIGVhc2lseSBzeW5jIHlvdSBPcGVuQVBJIDMgSlNPTiBGaWxlIHVzaW5nIHRoZSAiU2VjdGlvbkl0ZW0iIHN0cnVjdHVyZS4gSW4gdGhlIG5leHQgZXhhbXBsZSB5b3UgY2FuIHNlZSBhIFNlY3Rpb25JdGVtIGNyZWF0ZSBmb3IgdGhlIFN0b3JlIHRhZyBmcm9tIHRoZSBQZXRTdG9yZSBTd2FnZ2VyIGV4YW1wbGUuIFRoaXMgd2F5IGNhbiBhZGQgaW1hZ2VzLCBkZXNjcmlwdGlvbnMsIGFuZCBpbnRyb2R1Y3Rvcnkgc2VjdGlvbnMgbGlrZSAiR2V0dGluZyBTdGFydGVkIgoKYGBgamF2YXNjcmlwdApjb25zdCBkb2N1bWVudGF0aW9uOiBTZWN0aW9uSXRlbSA9IHsKICBpZDogInN0b3JlIiwKICB0YWc6ICJzdG9yZSIsCiAgc2NoZW1hOiAiT3JkZXIiLAogIHRpdGxlOiAiU3RvcmUiLAogIGNvbnRlbnQ6IHsKICAgIGxlZnRfc2VjdGlvbl90aXRsZTogIlN0b3JlcyIsCiAgICBsZWZ0X3NlY3Rpb25fcGFyYWdyYXBoczogWyJUaGlzIGlzIGEgU3RvcmUgcmVsYXRlZCBvcGVyYXRpb24iXSwKICAgIHJpZ2h0X2JveF9zbmlwcGV0X3doaXRlOiB0cnVlLAogICAgcmlnaHRfYm94X3NuaXBwZXRfdGl0bGU6ICJFeGFtcGxlIG9mIGEgT3JkZXIgb2JqZWN0IiwKICB9LAogIGlzX2NvcmVfcmVzb3VyY2U6IHRydWUsCn07CmBgYAoKU3RydWN0dXJlIG9mIGEgYFNlY3Rpb25JdGVtYDoKCmBpZGA6IEFuY2hvciBmb3IgVVJMCgpgdGFnYDogVGFnIHRvIGZvdW5kIGNvbnRlbnQgaW5zaWRlIHRoZSBPcGVuQVBJMyBKU09OIGZpbGUKCmB0aXRsZWA6IFRpdGxlIGZvciBVSQoKYGNvbnRlbnRgOiBUaXRsZXMgYW5kIGRlc2NyaXB0aW9ucy4gQWxzbyB5b3UgY2FuIGNyZWF0ZSBhIG9iamVjdCBsaWtlIGEgZXhhbXBsZSBvZiBhIHJlc3BvbnNlL3JlcXVlc3QuCgpgaXNfY29yZV9yZXNvdXJjZWA6IFRoaXMgYm9vbGVhbiBwYXJhbWV0ZXIgaGVscCB0byBzcGxpdCB0aGUgY29udGVudCBiZXR3ZWVuIHNlY3Rpb25zIGxpa2UgYSAiR2V0dGluZyBTdGFydGVkIiBhbmQgdGhlIEFQSSBlbmRwb2ludHMKCldpdGggYSBBcnJheSBvZiBTZWN0aW9uSXRlbXMgYW5kIHRoZSBKU09OIG9mIHRoZSBPcGVuQVBJIFNjaGVtYSB5b3UgY2FuIHJlbmRlciB0aGUgZG9jdW1lbnRhdGlvbjoKCmBgYGphdmFzY3JpcHQKaW1wb3J0IGRvY1N3YWdnZXIgZnJvbSAiLi9wZXRzdG9yZS5qc29uIjsgLy8gT3BlbkFQSSBKU09OCmltcG9ydCBBUElEb2MgZnJvbSAiLi9kb2MiOyAvLyBBcnJheSBvZiBTZWN0aW9uSXRlbQoKPFByZXR0eVJlc3REb2MgZG9jQ3VzdG9tPXtBUElEb2N9IGRvY1N3YWdnZXI9e2RvY1N3YWdnZXJ9IC8+OwpgYGAKCiMjIyBTZWN0aW9uIGZvciBSb2xlcyBhbmQgUGVybWlzc2lvbnMKCllvdSBjYW4gY3JlYXRlIGVhc2lseSBhIHRhYmxlIGZvciByb2xlcyBhbmQgcGVybWlzc2lvbnMgc2VuZGluZyB0aGUgcHJvcCByb2xlcyB0byB0aGUgY29tcG9uZW50LiAqKlRoZSBgU2VjdGlvbkl0ZW1gIG5lZWQgdGhlIGByb2xlcy1wZXJtaXNzaW9uc2AgaWQgZm9yIHRoaXMgc3BlY2lhbCBjYXNlLioqCgpgYGB4bWwKPFByZXR0eVJlc3REb2MKICBkb2NDdXN0b209e0FQSURvY30KICBkb2NTd2FnZ2VyPXtkb2NTd2FnZ2VyIGFzIHVua25vd24gYXMgT3BlbkFQSVYzLkRvY3VtZW50fQogIHJvbGVzPXtbCiAgICB7CiAgICAgIGxhYmVsOiAiQ2xpZW50IiwKICAgICAgdmFsdWU6ICdjbGllbnQnCiAgICB9LAogICAgewogICAgICBsYWJlbDogIkFkbWluIiwKICAgICAgdmFsdWU6ICdhZG1pbicKICAgIH1dfQovPgpgYGAKClRoZW4geW91IHdpbGwgbmVlZCBzZXQgdGhlIHJvbGVzIHRvIGVhY2ggZW5kcG9pbnQgaW4gdGhlIE9wZW5BUEkzIEpTT04uCgpgYGBqc29uCnsKICAicHV0IjogewogICAgInRhZ3MiOiBbInVzZXIiXSwKICAgICJyb2xlcyI6IFsiYWRtaW4iXSwKICAgICJzdW1tYXJ5IjogIlVwZGF0ZSB1c2VyIiwKICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGNhbiBvbmx5IGJlIGRvbmUgYnkgdGhlIGxvZ2dlZCBpbiB1c2VyLiIsCiAgICAib3BlcmF0aW9uSWQiOiAidXBkYXRlVXNlciIKICB9Cn0KYGBgCgojIyMgQ3VzdG9taXphdGlvbiBhbmQgU3R5bGVzCgpUaGUgc3RydWN0dXJlIG9mIHRoZSBwcm9qZWN0IGlzIHZlcnkgZWFzeSB0byB1bmRlcnN0YW5kLiBUaGUgY29kZSBvZiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBpbnNpZGUgdGhlIGBzcmMvbGliYCBmb2xkZXI6CgotIGBzcmMvbGliL2FkYXB0ZXItYW8zYDogTG9naWMgdG8gZ2V0IGNvbnRlbnQgZnJvbSBPcGVuQVBJMwotIGBzcmMvbGliL2NvbXBvbmVudHNgOiBBbGwgVUkgY29tcG9uZW50cywgeW91IGNhbiBjaGFuZ2Ugc3R5bGVzIG9yIGxvZ2ljIGVhc2lseSAoTW9kdWxlcyBDU1MgaW1wbGVtZW50ZWQpCi0gYHNyYy9saWIvaG9va3NgOiBIb29rcyEKLSBgc3JjXGxpYi9QcmV0dHlSZXN0RG9jLmpzeGA6IFJvb3QgQ29tcG9uZW50CgojIyMgQ3VycmVudCBleGFtcGxlIGluIHRoaXMgUmVwb3NpdG9yeQoKVGhpcyBSZXBvc2l0b3J5IGhhdmUgYSBleGFtcGxlIHVzaW5nIHRoZSBQZXRTdG9yZSBmcm9tIFN3YWdnZXIgd2l0aCB0aGUgc2VjdGlvbnMgUGV0LCBTdG9yZSBhbmQgVXNlci4gQnV0IHdpdGggdGhyZWUgc2VjdGlvbnMgaW50cm9kdWN0b3JpZXMgdXNpbmcgdGhlIHBvd2VyIG9mIGBTZWN0aW9uc0l0ZW1gIHN0cnVjdHVyZXMuIEFsc28gdGhlcmUgYXJlIGEgc2VjdGlvbiBmb3IgKipSb2xlcyBhbmQgUGVybWlzc2lvbnMqKgoKIyMjIFJ1biBEb2N1bWVudGF0aW9uIGluIHlvdXIgbG9jYWwgQnJvd3NlcgoKYGBgYmFzaApucG0gaW5zdGFsbCAmJiBucG0gcnVuIHN0YXJ0CmBgYAoKIyMjIFJ1biBUZXN0cwoKYGBgYmFzaApucG0gaW5zdGFsbCAmJiBucG0gcnVuIHRlc3QKYGBgCgojIyMgQ3JlZGl0cwoKLSBbU3dhZ2dlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvLykKLSBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykK + readmeEtag: '"4450aa7aea2f0a317a7e587d647ad6203287351da45b619f7e240e9788a9cab8"' + readmeLastModified: Tue, 08 Aug 2023 20:48:16 GMT repositoryId: 381797429 description: >- A Swagger UI Alternative. Get a pretty rest documentation app easily @@ -36094,7 +36095,7 @@ owner: CharlyJazz logo: https://avatars.githubusercontent.com/u/12489333?v=4 license: Apache-2.0 - repoEtag: '"03f27f67c2628e7ba2226310f989dcf3ac83cfdfe30f47e3f30b19bd7bf8a185"' + repoEtag: '"d00577c3c8eb219cb68c1de688d63e73d1d187283fe0fc6a2e4c4d5ad5884894"' repoLastModified: Wed, 22 Mar 2023 17:44:00 GMT foundInMaster: true category: Parsers