From e4177ce29b38515a029427ffcb97a1c9e1b8ec5d Mon Sep 17 00:00:00 2001 From: Tooling Builder Date: Thu, 24 Aug 2023 03:20:32 +0000 Subject: [PATCH] chore: Metadata build (updates to OpenAPI tooling metadata and site rebuild) --- docs/categories/all.html | 614 +++++------ docs/categories/code-generators.html | 78 +- docs/categories/converters.html | 58 +- docs/categories/data-validators.html | 28 +- docs/categories/description-validators.html | 40 +- docs/categories/documentation.html | 42 +- docs/categories/dsl.html | 8 +- docs/categories/editors.html | 6 +- docs/categories/gateway.html | 6 +- docs/categories/learning.html | 8 +- docs/categories/low-level-tooling.html | 34 +- docs/categories/mock-testing.html | 6 +- docs/categories/mock.html | 18 +- docs/categories/parsers.html | 220 ++-- docs/categories/schema-validators.html | 6 +- docs/categories/sdk.html | 90 +- docs/categories/security.html | 16 +- docs/categories/server-implementations.html | 156 +-- docs/categories/server.html | 28 +- docs/categories/testing-tools.html | 12 +- docs/categories/testing.html | 52 +- docs/categories/text-editors.html | 8 +- docs/categories/unclassified.html | 8 +- docs/categories/user-interfaces.html | 14 +- src/_data/tools.yaml | 1011 ++++++++++--------- 25 files changed, 1284 insertions(+), 1283 deletions(-) diff --git a/docs/categories/all.html b/docs/categories/all.html index 7bd7322c..1759cf36 100644 --- a/docs/categories/all.html +++ b/docs/categories/all.html @@ -86,7 +86,7 @@

No Yes No - 280 + 282 @@ -109,7 +109,7 @@

Yes Yes No - 1183 + 1184 @@ -323,7 +323,7 @@

No Yes Yes - 1023 + 1022 @@ -535,7 +535,7 @@

Yes Yes Yes - 20792 + 20802 @@ -581,7 +581,7 @@

No Yes Yes - 1345 + 1347 @@ -713,7 +713,7 @@

No Yes No - 3898 + 3900 @@ -759,7 +759,7 @@

No Yes Yes - 17357 + 17367 @@ -1001,7 +1001,7 @@

Yes Yes Yes - 8306 + 8307 @@ -1362,7 +1362,7 @@

Yes Yes Yes - 3687 + 3689 @@ -1408,7 +1408,7 @@

Yes Yes Yes - 916 + 917 @@ -1454,7 +1454,7 @@

No Yes No - 88 + 89 @@ -1561,7 +1561,7 @@

No Yes Yes - 2824 + 2829 @@ -1699,7 +1699,7 @@

No Yes Yes - 8005 + 8008 @@ -1745,7 +1745,7 @@

No Yes No - 1542 + 1545 @@ -1858,7 +1858,7 @@

No Yes Yes - 4041 + 4040 @@ -1990,7 +1990,7 @@

Yes Yes Yes - 2009 + 2011 @@ -2032,7 +2032,7 @@

No Yes Yes - 402 + 401 @@ -2168,7 +2168,7 @@

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

No Yes Yes - 985 + 984 @@ -2300,7 +2300,7 @@

No Yes Yes - 2063 + 2065 @@ -2430,7 +2430,7 @@

No Yes Yes - 1190 + 1189 @@ -2627,7 +2627,7 @@

No Yes Yes - 6032 + 6035 @@ -2673,7 +2673,7 @@

No Yes Yes - 15919 + 15922 @@ -2694,7 +2694,7 @@

No Yes Yes - 4304 + 4305 @@ -2763,7 +2763,7 @@

Yes Yes Yes - 383 + 384 @@ -2969,7 +2969,7 @@

No Yes No - 180 + 181 @@ -2990,7 +2990,7 @@

No Yes Yes - 349 + 351 @@ -3118,7 +3118,7 @@

No Yes No - 182 + 183 @@ -3164,7 +3164,7 @@

No Yes Yes - 91 + 90 @@ -3454,7 +3454,7 @@

No Yes Yes - 11163 + 11165 @@ -3649,7 +3649,7 @@

No Yes No - 26178 + 26179 @@ -3801,7 +3801,7 @@

No Yes No - 797 + 798 @@ -3824,7 +3824,7 @@

Yes Yes Yes - 1138 + 1139 @@ -4046,7 +4046,7 @@

No Yes Yes - 1579 + 1581 @@ -4159,7 +4159,7 @@

Yes Yes Yes - 261 + 263 @@ -4203,7 +4203,7 @@

Yes Yes Yes - 3433 + 3435 @@ -4360,7 +4360,7 @@

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

No Yes No - 1729 + 1731 @@ -4645,7 +4645,7 @@

No Yes Yes - 1759 + 1763 @@ -4691,7 +4691,7 @@

No Yes No - 61712 + 61747 @@ -4714,7 +4714,7 @@

Yes Yes No - 24312 + 24316 @@ -4737,7 +4737,7 @@

Yes Yes No - 20792 + 20802 @@ -4758,7 +4758,7 @@

No Yes No - 12763 + 12773 @@ -4779,7 +4779,7 @@

No Yes No - 7249 + 7251 @@ -4800,7 +4800,7 @@

No Yes No - 5319 + 5320 @@ -4842,7 +4842,7 @@

No Yes No - 3323 + 3324 @@ -4865,7 +4865,7 @@

No Yes No - 2742 + 2743 @@ -4886,7 +4886,7 @@

Yes Yes No - 2520 + 2519 @@ -4907,7 +4907,7 @@

No Yes No - 2325 + 2326 @@ -4928,7 +4928,7 @@

No Yes No - 1815 + 1818 @@ -4951,7 +4951,7 @@

No Yes No - 1815 + 1816 @@ -5014,7 +5014,7 @@

No Yes No - 1290 + 1289 @@ -5037,7 +5037,7 @@

No Yes No - 1260 + 1262 @@ -5058,7 +5058,7 @@

No Yes No - 1198 + 1201 @@ -5121,7 +5121,7 @@

No Yes No - 830 + 832 @@ -5163,7 +5163,7 @@

No Yes No - 733 + 734 @@ -5268,7 +5268,7 @@

No Yes No - 634 + 636 @@ -5415,7 +5415,7 @@

No Yes No - 408 + 409 @@ -5436,7 +5436,7 @@

No Yes No - 405 + 406 @@ -5520,7 +5520,7 @@

No Yes No - 385 + 387 @@ -5583,7 +5583,7 @@

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

No Yes No - 315 + 316 @@ -5625,7 +5625,7 @@

No Yes No - 311 + 313 @@ -5900,7 +5900,7 @@

No Yes No - 216 + 217 @@ -5942,7 +5942,7 @@

No Yes No - 203 + 206 @@ -6133,7 +6133,7 @@

No Yes No - 180 + 181 @@ -6301,7 +6301,7 @@

No Yes No - 169 + 170 @@ -6448,7 +6448,7 @@

Yes Yes No - 143 + 144 @@ -6536,7 +6536,7 @@

No Yes No - 133 + 135 @@ -6767,7 +6767,7 @@

No Yes No - 98 + 99 @@ -7187,7 +7187,7 @@

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

No Yes No - 64 + 65 @@ -7735,7 +7735,7 @@

No Yes No - 43 + 44 @@ -7819,7 +7819,7 @@

No Yes No - 44 + 45 @@ -8031,7 +8031,7 @@

No Yes No - 34 + 35 @@ -8199,7 +8199,7 @@

Yes Yes No - 31 + 30 @@ -8980,7 +8980,7 @@

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

No Yes No - 14 + 15 @@ -12094,7 +12094,7 @@

No Yes No - 6 + 7 @@ -14047,7 +14047,7 @@

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

No Yes No - N/A + 1 @@ -26685,7 +26685,7 @@

No No No - 7249 + 7251 @@ -26708,7 +26708,7 @@

No No No - 1190 + 1189 @@ -26933,7 +26933,7 @@

No No No - 180 + 181 @@ -27784,7 +27784,7 @@

No Yes Yes - 2247 + 2248 @@ -27805,7 +27805,7 @@

No Yes No - 48 + 49 @@ -28739,11 +28739,11 @@

oasdiff (link)

Stars - 280 + 282 Watchers - 8 + 9 Forks @@ -28755,7 +28755,7 @@

oasdiff (link)

Last Updated - 2023-08-22T21:37:21Z + 2023-08-23T08:58:41Z Archived @@ -28791,7 +28791,7 @@

optic diff (link)

Stars - 1183 + 1184 Watchers @@ -28807,7 +28807,7 @@

optic diff (link)

Last Updated - 2023-08-22T18:14:44Z + 2023-08-23T14:54:39Z Archived @@ -29111,7 +29111,7 @@

OData OpenAPI (link)

Forks - 72 + 71 Created @@ -29311,7 +29311,7 @@

LucyBot api-spec-converter (link)

Stars - 1023 + 1022 Watchers @@ -29319,7 +29319,7 @@

LucyBot api-spec-converter (link)

Forks - 162 + 163 Created @@ -29327,7 +29327,7 @@

LucyBot api-spec-converter (link)

Last Updated - 2023-08-14T13:31:18Z + 2023-08-23T07:21:32Z Archived @@ -29831,7 +29831,7 @@

ReDoc (link)

Stars - 20792 + 20802 Watchers @@ -29847,7 +29847,7 @@

ReDoc (link)

Last Updated - 2023-08-23T01:29:27Z + 2023-08-24T02:42:24Z Archived @@ -29935,7 +29935,7 @@

widdershins (link)

Stars - 1345 + 1347 Watchers @@ -29951,7 +29951,7 @@

widdershins (link)

Last Updated - 2023-08-22T16:39:49Z + 2023-08-23T12:03:47Z Archived @@ -30247,7 +30247,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 3898 + 3900 Watchers @@ -30263,7 +30263,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2023-08-22T11:10:18Z + 2023-08-23T11:27:20Z Archived @@ -30351,15 +30351,15 @@

OpenAPI Generator (link)

Stars - 17357 + 17367 Watchers - 216 + 214 Forks - 5543 + 5547 Created @@ -30367,7 +30367,7 @@

OpenAPI Generator (link)

Last Updated - 2023-08-22T23:11:50Z + 2023-08-23T23:32:28Z Archived @@ -30471,7 +30471,7 @@

Kiota Api Client Generator (link)

Last Updated - 2023-08-22T14:27:00Z + 2023-08-23T21:16:36Z Archived @@ -30923,7 +30923,7 @@

Swagger Editor (link)

Stars - 8306 + 8307 Watchers @@ -30931,7 +30931,7 @@

Swagger Editor (link)

Forks - 2185 + 2186 Created @@ -30939,7 +30939,7 @@

Swagger Editor (link)

Last Updated - 2023-08-22T21:40:52Z + 2023-08-23T15:52:03Z Archived @@ -31807,7 +31807,7 @@

Prism (link)

Stars - 3687 + 3689 Watchers @@ -31823,7 +31823,7 @@

Prism (link)

Last Updated - 2023-08-23T01:00:02Z + 2023-08-23T19:04:09Z Archived @@ -31911,7 +31911,7 @@

Microcks (link)

Stars - 916 + 917 Watchers @@ -31927,7 +31927,7 @@

Microcks (link)

Last Updated - 2023-08-21T06:21:58Z + 2023-08-23T14:42:49Z Archived @@ -32015,7 +32015,7 @@

OpenAPI Mocker (link)

Stars - 88 + 89 Watchers @@ -32031,7 +32031,7 @@

OpenAPI Mocker (link)

Last Updated - 2023-08-07T17:16:04Z + 2023-08-24T01:26:14Z Archived @@ -32275,7 +32275,7 @@

tsoa (link)

Stars - 2824 + 2829 Watchers @@ -32291,7 +32291,7 @@

tsoa (link)

Last Updated - 2023-08-22T02:54:37Z + 2023-08-24T02:01:12Z Archived @@ -32487,7 +32487,7 @@

@smartrecruiters/openapi-first (link) Watchers - 19 + 21 Forks @@ -32587,7 +32587,7 @@

API Platform (link)

Stars - 8005 + 8008 Watchers @@ -32603,7 +32603,7 @@

API Platform (link)

Last Updated - 2023-08-22T00:46:33Z + 2023-08-23T22:37:28Z Archived @@ -32691,7 +32691,7 @@

Fusio (link)

Stars - 1542 + 1545 Watchers @@ -32707,7 +32707,7 @@

Fusio (link)

Last Updated - 2023-08-21T16:07:14Z + 2023-08-24T01:43:10Z Archived @@ -32951,7 +32951,7 @@

Dredd (link)

Stars - 4041 + 4040 Watchers @@ -32967,7 +32967,7 @@

Dredd (link)

Last Updated - 2023-08-20T13:13:41Z + 2023-08-23T07:17:40Z Archived @@ -33263,7 +33263,7 @@

Spectral (link)

Stars - 2009 + 2011 Watchers @@ -33271,7 +33271,7 @@

Spectral (link)

Forks - 196 + 197 Created @@ -33279,7 +33279,7 @@

Spectral (link)

Last Updated - 2023-08-23T01:51:32Z + 2023-08-23T06:36:41Z Archived @@ -33367,7 +33367,7 @@

OpenAPI Validator (link)

Stars - 402 + 401 Watchers @@ -33383,7 +33383,7 @@

OpenAPI Validator (link)

Last Updated - 2023-08-22T19:29:16Z + 2023-08-23T18:23:10Z Archived @@ -33679,7 +33679,7 @@

swagger-parser (link)

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

swagger-parser (link)

Forks - 510 + 512 Created @@ -33695,7 +33695,7 @@

swagger-parser (link)

Last Updated - 2023-08-22T13:38:10Z + 2023-08-23T09:30:08Z Archived @@ -33731,7 +33731,7 @@

APIDevTools/swagger-parser (link)

Stars - 985 + 984 Watchers @@ -33747,7 +33747,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2023-08-21T08:42:42Z + 2023-08-23T06:28:15Z Archived @@ -33991,7 +33991,7 @@

kin-openapi (link)

Stars - 2063 + 2065 Watchers @@ -34007,7 +34007,7 @@

kin-openapi (link)

Last Updated - 2023-08-22T15:09:13Z + 2023-08-23T12:12:03Z Archived @@ -34103,7 +34103,7 @@

php-openapi (link)

Forks - 82 + 83 Created @@ -34303,7 +34303,7 @@

Microsoft/OpenAPI.NET (link)

Stars - 1190 + 1189 Watchers @@ -34319,7 +34319,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2023-08-20T11:01:10Z + 2023-08-23T19:14:16Z Archived @@ -34675,7 +34675,7 @@

go-swagger (link)

Forks - 1236 + 1238 Created @@ -34683,7 +34683,7 @@

go-swagger (link)

Last Updated - 2023-08-22T15:49:51Z + 2023-08-24T02:32:24Z Archived @@ -34771,7 +34771,7 @@

NSwag (link)

Stars - 6032 + 6035 Watchers @@ -34779,7 +34779,7 @@

NSwag (link)

Forks - 1138 + 1139 Created @@ -34787,7 +34787,7 @@

NSwag (link)

Last Updated - 2023-08-22T22:09:02Z + 2023-08-23T18:05:39Z Archived @@ -34875,7 +34875,7 @@

Swagger-Codegen (link)

Stars - 15919 + 15922 Watchers @@ -34883,7 +34883,7 @@

Swagger-Codegen (link)

Forks - 6009 + 6010 Created @@ -34891,7 +34891,7 @@

Swagger-Codegen (link)

Last Updated - 2023-08-23T02:19:39Z + 2023-08-23T11:29:31Z Archived @@ -34927,7 +34927,7 @@

Azure AutoRest (link)

Stars - 4304 + 4305 Watchers @@ -34943,7 +34943,7 @@

Azure AutoRest (link)

Last Updated - 2023-08-21T15:50:36Z + 2023-08-23T22:05:18Z Archived @@ -35039,7 +35039,7 @@

oas (link)

Forks - 23 + 24 Created @@ -35083,7 +35083,7 @@

api (link)

Stars - 383 + 384 Watchers @@ -35099,7 +35099,7 @@

api (link)

Last Updated - 2023-08-22T13:53:04Z + 2023-08-23T19:30:28Z Archived @@ -35603,7 +35603,7 @@

Tcases for OpenAPI (link)

Stars - 180 + 181 Watchers @@ -35619,7 +35619,7 @@

Tcases for OpenAPI (link)

Last Updated - 2023-07-29T01:11:14Z + 2023-08-23T09:13:46Z Archived @@ -35655,7 +35655,7 @@

EvoMaster (link)

Stars - 349 + 351 Watchers @@ -35671,7 +35671,7 @@

EvoMaster (link)

Last Updated - 2023-08-22T16:11:10Z + 2023-08-23T15:32:07Z Archived @@ -35967,7 +35967,7 @@

OpenAPI Schema to JSON Schema (link) Stars - 182 + 183 Watchers @@ -35983,7 +35983,7 @@

OpenAPI Schema to JSON Schema (link) Last Updated - 2023-08-16T22:30:45Z + 2023-08-23T10:00:16Z Archived @@ -36071,7 +36071,7 @@

Unchase.OpenAPI.Connectedservice (link) Stars - 91 + 90 Watchers @@ -36087,7 +36087,7 @@

Unchase.OpenAPI.Connectedservice (link) Last Updated - 2023-07-27T05:53:19Z + 2023-08-23T21:32:22Z Archived @@ -36747,7 +36747,7 @@

OWASP ZAP (link)

Stars - 11163 + 11165 Watchers @@ -36755,7 +36755,7 @@

OWASP ZAP (link)

Forks - 2114 + 2115 Created @@ -36763,7 +36763,7 @@

OWASP ZAP (link)

Last Updated - 2023-08-22T21:39:26Z + 2023-08-24T03:01:46Z Archived @@ -37215,7 +37215,7 @@

Django REST Framework (link)

Stars - 26178 + 26179 Watchers @@ -37223,7 +37223,7 @@

Django REST Framework (link)

Forks - 6669 + 6668 Created @@ -37231,7 +37231,7 @@

Django REST Framework (link)

Last Updated - 2023-08-23T01:20:08Z + 2023-08-24T00:47:35Z Archived @@ -37579,15 +37579,15 @@

openapi-python-client (link)

Stars - 797 + 798 Watchers - 14 + 13 Forks - 152 + 153 Created @@ -37595,7 +37595,7 @@

openapi-python-client (link)

Last Updated - 2023-08-21T04:54:47Z + 2023-08-23T16:41:06Z Archived @@ -37631,7 +37631,7 @@

Elements (link)

Stars - 1138 + 1139 Watchers @@ -37639,7 +37639,7 @@

Elements (link)

Forks - 138 + 139 Created @@ -37647,7 +37647,7 @@

Elements (link)

Last Updated - 2023-08-22T14:56:37Z + 2023-08-23T03:47:06Z Archived @@ -38151,7 +38151,7 @@

orval (link)

Stars - 1579 + 1581 Watchers @@ -38167,7 +38167,7 @@

orval (link)

Last Updated - 2023-08-22T22:24:10Z + 2023-08-23T06:56:47Z Archived @@ -38323,7 +38323,7 @@

Counterfact (link)

Last Updated - 2023-08-21T17:50:11Z + 2023-08-23T23:52:43Z Archived @@ -38411,7 +38411,7 @@

vacuum (link)

Stars - 261 + 263 Watchers @@ -38427,7 +38427,7 @@

vacuum (link)

Last Updated - 2023-08-22T16:20:04Z + 2023-08-24T00:57:33Z Archived @@ -38515,7 +38515,7 @@

OpenAPI TypeScript (link)

Stars - 3433 + 3435 Watchers @@ -38531,7 +38531,7 @@

OpenAPI TypeScript (link)

Last Updated - 2023-08-23T03:11:32Z + 2023-08-23T23:16:45Z Archived @@ -38879,7 +38879,7 @@

openapi-comparator (link)

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

openapi-comparator (link)

Last Updated - 2023-08-13T03:13:35Z + 2023-08-24T02:43:34Z Archived @@ -39043,7 +39043,7 @@

openapi-changes (link)

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

rswag (link)

Stars - 1729 + 1731 Watchers @@ -39511,7 +39511,7 @@

rswag (link)

Forks - 386 + 387 Created @@ -39519,7 +39519,7 @@

rswag (link)

Last Updated - 2023-08-22T23:51:29Z + 2023-08-23T21:31:50Z Archived @@ -39555,7 +39555,7 @@

Fern (link)

Stars - 1759 + 1763 Watchers @@ -39571,7 +39571,7 @@

Fern (link)

Last Updated - 2023-08-23T01:19:03Z + 2023-08-23T21:54:04Z Archived @@ -39659,15 +39659,15 @@

FastAPI (link)

Stars - 61712 + 61747 Watchers - 638 + 639 Forks - 5197 + 5203 Created @@ -39675,7 +39675,7 @@

FastAPI (link)

Last Updated - 2023-08-23T02:55:24Z + 2023-08-24T02:20:34Z Archived @@ -39711,7 +39711,7 @@

swagger-ui (link)

Stars - 24312 + 24316 Watchers @@ -39719,7 +39719,7 @@

swagger-ui (link)

Forks - 8742 + 8743 Created @@ -39727,7 +39727,7 @@

swagger-ui (link)

Last Updated - 2023-08-22T23:09:24Z + 2023-08-23T18:21:00Z Archived @@ -39763,7 +39763,7 @@

Redoc (link)

Stars - 20792 + 20802 Watchers @@ -39779,7 +39779,7 @@

Redoc (link)

Last Updated - 2023-08-23T01:29:27Z + 2023-08-24T02:42:24Z Archived @@ -39815,7 +39815,7 @@

full-stack-fastapi-postgresql (link) Stars - 12763 + 12773 Watchers @@ -39823,7 +39823,7 @@

full-stack-fastapi-postgresql (link) Forks - 2346 + 2348 Created @@ -39831,7 +39831,7 @@

full-stack-fastapi-postgresql (link) Last Updated - 2023-08-22T20:50:59Z + 2023-08-24T00:09:18Z Archived @@ -39867,7 +39867,7 @@

swagger-core (link)

Stars - 7249 + 7251 Watchers @@ -39875,7 +39875,7 @@

swagger-core (link)

Forks - 2151 + 2152 Created @@ -39883,7 +39883,7 @@

swagger-core (link)

Last Updated - 2023-08-22T05:34:28Z + 2023-08-23T20:25:30Z Archived @@ -39919,7 +39919,7 @@

mockoon (link)

Stars - 5319 + 5320 Watchers @@ -39927,7 +39927,7 @@

mockoon (link)

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

mockoon (link)

Last Updated - 2023-08-21T18:54:17Z + 2023-08-23T13:26:39Z Archived @@ -40023,7 +40023,7 @@

openapi-directory (link)

Stars - 3323 + 3324 Watchers @@ -40039,7 +40039,7 @@

openapi-directory (link)

Last Updated - 2023-08-22T18:00:55Z + 2023-08-23T10:14:30Z Archived @@ -40075,7 +40075,7 @@

springdoc-openapi (link)

Stars - 2742 + 2743 Watchers @@ -40083,7 +40083,7 @@

springdoc-openapi (link)

Forks - 412 + 413 Created @@ -40091,7 +40091,7 @@

springdoc-openapi (link)

Last Updated - 2023-08-23T01:19:51Z + 2023-08-23T04:18:00Z Archived @@ -40127,7 +40127,7 @@

swagger-js (link)

Stars - 2520 + 2519 Watchers @@ -40143,7 +40143,7 @@

swagger-js (link)

Last Updated - 2023-08-21T11:27:31Z + 2023-08-23T07:26:12Z Archived @@ -40179,7 +40179,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2325 + 2326 Watchers @@ -40195,7 +40195,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2023-08-22T16:23:06Z + 2023-08-23T12:00:01Z Archived @@ -40231,7 +40231,7 @@

gnostic (link)

Stars - 1815 + 1818 Watchers @@ -40247,7 +40247,7 @@

gnostic (link)

Last Updated - 2023-08-22T10:18:38Z + 2023-08-23T23:53:56Z Archived @@ -40283,7 +40283,7 @@

Schemathesis (link)

Stars - 1815 + 1816 Watchers @@ -40299,7 +40299,7 @@

Schemathesis (link)

Last Updated - 2023-08-22T11:04:44Z + 2023-08-23T18:36:15Z Archived @@ -40439,7 +40439,7 @@

utoipa (link)

Stars - 1290 + 1289 Watchers @@ -40447,7 +40447,7 @@

utoipa (link)

Forks - 109 + 108 Created @@ -40455,7 +40455,7 @@

utoipa (link)

Last Updated - 2023-08-22T14:27:06Z + 2023-08-23T10:45:20Z Archived @@ -40491,7 +40491,7 @@

OpenAPI-gui (link)

Stars - 1260 + 1262 Watchers @@ -40507,7 +40507,7 @@

OpenAPI-gui (link)

Last Updated - 2023-08-21T03:07:11Z + 2023-08-23T10:27:44Z Archived @@ -40543,7 +40543,7 @@

msgspec (link)

Stars - 1198 + 1201 Watchers @@ -40559,7 +40559,7 @@

msgspec (link)

Last Updated - 2023-08-22T03:51:25Z + 2023-08-24T03:06:35Z Archived @@ -40655,7 +40655,7 @@

openapi-generator-cli (link)

Forks - 116 + 117 Created @@ -40699,7 +40699,7 @@

apiflask (link)

Stars - 830 + 832 Watchers @@ -40715,7 +40715,7 @@

apiflask (link)

Last Updated - 2023-08-19T13:51:27Z + 2023-08-24T01:56:09Z Archived @@ -40803,7 +40803,7 @@

studio (link)

Stars - 733 + 734 Watchers @@ -40819,7 +40819,7 @@

studio (link)

Last Updated - 2023-08-16T06:19:12Z + 2023-08-23T12:22:45Z Archived @@ -40863,7 +40863,7 @@

oas-kit (link)

Forks - 125 + 126 Created @@ -41063,7 +41063,7 @@

openapi-diff (link)

Stars - 634 + 636 Watchers @@ -41079,7 +41079,7 @@

openapi-diff (link)

Last Updated - 2023-08-22T13:39:51Z + 2023-08-23T07:38:52Z Archived @@ -41427,7 +41427,7 @@

docusaurus-openapi (link)

Stars - 408 + 409 Watchers @@ -41443,7 +41443,7 @@

docusaurus-openapi (link)

Last Updated - 2023-08-20T16:01:21Z + 2023-08-23T15:08:53Z Archived @@ -41479,11 +41479,11 @@

oazapfts (link)

Stars - 405 + 406 Watchers - 9 + 10 Forks @@ -41495,7 +41495,7 @@

oazapfts (link)

Last Updated - 2023-08-20T12:46:29Z + 2023-08-24T02:53:29Z Archived @@ -41687,7 +41687,7 @@

zod-to-openapi (link)

Stars - 385 + 387 Watchers @@ -41703,7 +41703,7 @@

zod-to-openapi (link)

Last Updated - 2023-08-22T14:47:26Z + 2023-08-23T19:58:39Z Archived @@ -41843,7 +41843,7 @@

swagger-autogen (link)

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

swagger-autogen (link)

Last Updated - 2023-08-22T15:36:15Z + 2023-08-23T12:02:03Z Archived @@ -41895,7 +41895,7 @@

openapi-boilerplate (link)

Stars - 315 + 316 Watchers @@ -41911,7 +41911,7 @@

openapi-boilerplate (link)

Last Updated - 2023-08-20T11:48:46Z + 2023-08-23T12:04:35Z Archived @@ -41947,7 +41947,7 @@

akita-cli (link)

Stars - 311 + 313 Watchers @@ -41963,7 +41963,7 @@

akita-cli (link)

Last Updated - 2023-08-18T05:14:09Z + 2023-08-23T11:20:11Z Archived @@ -42623,7 +42623,7 @@

znai (link)

Stars - 216 + 217 Watchers @@ -42639,7 +42639,7 @@

znai (link)

Last Updated - 2023-08-16T20:29:40Z + 2023-08-23T12:59:23Z Archived @@ -42727,7 +42727,7 @@

apicat (link)

Stars - 203 + 206 Watchers @@ -42743,7 +42743,7 @@

apicat (link)

Last Updated - 2023-08-23T00:18:04Z + 2023-08-23T17:56:52Z Archived @@ -43195,7 +43195,7 @@

tcases (link)

Stars - 180 + 181 Watchers @@ -43211,7 +43211,7 @@

tcases (link)

Last Updated - 2023-07-29T01:11:14Z + 2023-08-23T09:13:46Z Archived @@ -43611,7 +43611,7 @@

fastapi-clean-example (link)

Stars - 169 + 170 Watchers @@ -43627,7 +43627,7 @@

fastapi-clean-example (link)

Last Updated - 2023-08-22T03:53:40Z + 2023-08-23T04:12:00Z Archived @@ -43975,7 +43975,7 @@

openapi-sampler (link)

Stars - 143 + 144 Watchers @@ -43983,7 +43983,7 @@

openapi-sampler (link)

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

openapi-sampler (link)

Last Updated - 2023-08-10T04:55:21Z + 2023-08-23T07:06:06Z Archived @@ -44183,7 +44183,7 @@

openapi-go (link)

Stars - 133 + 135 Watchers @@ -44199,7 +44199,7 @@

openapi-go (link)

Last Updated - 2023-08-22T09:39:19Z + 2023-08-24T01:40:48Z Archived @@ -44755,7 +44755,7 @@

openapi4j (link)

Stars - 98 + 99 Watchers @@ -44771,7 +44771,7 @@

openapi4j (link)

Last Updated - 2023-08-15T15:40:14Z + 2023-08-23T08:45:48Z Archived @@ -45075,7 +45075,7 @@

openapi (link)

Forks - 60 + 61 Created @@ -45795,7 +45795,7 @@

openapi-schema-validator (link)

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

openapi-schema-validator (link)

Last Updated - 2023-08-10T17:25:19Z + 2023-08-23T04:45:46Z Archived @@ -45951,7 +45951,7 @@

awesome-jsonschema (link)

Stars - 64 + 65 Watchers @@ -45967,7 +45967,7 @@

awesome-jsonschema (link)

Last Updated - 2023-08-14T19:49:59Z + 2023-08-23T09:57:33Z Archived @@ -46943,7 +46943,7 @@

apidom (link)

Watchers - 8 + 9 Forks @@ -47103,7 +47103,7 @@

openapi-petstore (link)

Forks - 44 + 45 Created @@ -47147,7 +47147,7 @@

tooling (link)

Stars - 43 + 44 Watchers @@ -47163,7 +47163,7 @@

tooling (link)

Last Updated - 2023-08-17T12:09:12Z + 2023-08-23T03:51:53Z Archived @@ -47355,7 +47355,7 @@

refitter (link)

Stars - 44 + 45 Watchers @@ -47371,7 +47371,7 @@

refitter (link)

Last Updated - 2023-08-21T12:56:55Z + 2023-08-23T07:11:03Z Archived @@ -47875,7 +47875,7 @@

zod-openapi (link)

Stars - 34 + 35 Watchers @@ -47891,7 +47891,7 @@

zod-openapi (link)

Last Updated - 2023-08-18T09:03:04Z + 2023-08-23T17:24:24Z Archived @@ -48291,7 +48291,7 @@

spectral-owasp-ruleset (link)

Stars - 31 + 30 Watchers @@ -48307,7 +48307,7 @@

spectral-owasp-ruleset (link)

Last Updated - 2023-08-09T21:58:02Z + 2023-08-23T08:12:46Z Archived @@ -50215,7 +50215,7 @@

apity (link)

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

apity (link)

Last Updated - 2023-08-16T20:54:40Z + 2023-08-23T08:20:30Z Archived @@ -52451,7 +52451,7 @@

file-service (link)

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

file-service (link)

Last Updated - 2023-04-15T18:41:28Z + 2023-08-23T10:41:37Z Archived @@ -55171,7 +55171,7 @@

deces-backend (link)

Last Updated - 2023-07-07T16:28:33Z + 2023-08-23T16:39:42Z Archived @@ -57911,7 +57911,7 @@

rest-ruler (link)

Stars - 6 + 7 Watchers @@ -57927,7 +57927,7 @@

rest-ruler (link)

Last Updated - 2023-02-10T22:13:24Z + 2023-08-23T08:49:15Z Archived @@ -59791,7 +59791,7 @@

anypoint-automation-client-generator (l Forks - 7 + 8 Created @@ -62747,7 +62747,7 @@

akka-http-petstore (link)

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

akka-http-petstore (link)

Last Updated - 2023-02-14T19:18:50Z + 2023-08-23T13:02:20Z Archived @@ -63639,7 +63639,7 @@

json-schema-spell-checker (link)

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

openapi-schemas-validator (link)

Watchers - 18 + 20 Forks @@ -85055,7 +85055,7 @@

go-api-server (link)

Stars - N/A + 1 Watchers @@ -85071,7 +85071,7 @@

go-api-server (link)

Last Updated - 2023-07-29T14:17:39Z + 2023-08-23T19:21:16Z Archived @@ -94051,7 +94051,7 @@

swagger-models (link)

Stars - 7249 + 7251 Watchers @@ -94059,7 +94059,7 @@

swagger-models (link)

Forks - 2151 + 2152 Created @@ -94067,7 +94067,7 @@

swagger-models (link)

Last Updated - 2023-08-22T05:34:28Z + 2023-08-23T20:25:30Z Archived @@ -94103,7 +94103,7 @@

Microsoft.OpenApi.net (link)

Stars - 1190 + 1189 Watchers @@ -94119,7 +94119,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2023-08-20T11:01:10Z + 2023-08-23T19:14:16Z Archived @@ -94675,7 +94675,7 @@

Tcases for OpenAPI (link)

Stars - 180 + 181 Watchers @@ -94691,7 +94691,7 @@

Tcases for OpenAPI (link)

Last Updated - 2023-07-29T01:11:14Z + 2023-08-23T09:13:46Z Archived @@ -94891,7 +94891,7 @@

PHP-CRUD-API (link)

Forks - 994 + 996 Created @@ -96295,7 +96295,7 @@

APIClarity (link)

Forks - 60 + 59 Created @@ -96703,7 +96703,7 @@

RESTler (link)

Stars - 2247 + 2248 Watchers @@ -96711,7 +96711,7 @@

RESTler (link)

Forks - 257 + 258 Created @@ -96719,7 +96719,7 @@

RESTler (link)

Last Updated - 2023-08-21T13:20:57Z + 2023-08-23T08:46:05Z Archived @@ -96755,7 +96755,7 @@

swagger-bootstrap-ui (link)

Stars - 48 + 49 Watchers @@ -96771,7 +96771,7 @@

swagger-bootstrap-ui (link)

Last Updated - 2023-08-22T02:03:03Z + 2023-08-23T08:24:26Z Archived @@ -98635,7 +98635,7 @@

go-doudou (link)

Forks - 222 + 223 Created @@ -98903,7 +98903,7 @@

prettyrestdoc (link)

Last Updated - 2023-08-18T17:01:29Z + 2023-08-23T16:14:39Z Archived diff --git a/docs/categories/code-generators.html b/docs/categories/code-generators.html index 86200038..16fa3b72 100644 --- a/docs/categories/code-generators.html +++ b/docs/categories/code-generators.html @@ -86,7 +86,7 @@

No Yes No - 3898 + 3900 @@ -132,7 +132,7 @@

No Yes Yes - 17357 + 17367 @@ -247,7 +247,7 @@

No Yes Yes - 15919 + 15922 @@ -270,7 +270,7 @@

No Yes Yes - 91 + 90 @@ -339,7 +339,7 @@

No Yes Yes - 1579 + 1581 @@ -408,7 +408,7 @@

No Yes Yes - 1759 + 1763 @@ -431,7 +431,7 @@

Yes Yes No - 24312 + 24316 @@ -452,7 +452,7 @@

No Yes No - 7249 + 7251 @@ -473,7 +473,7 @@

Yes Yes No - 2520 + 2519 @@ -1676,7 +1676,7 @@

No No No - 7249 + 7251 @@ -1946,7 +1946,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 3898 + 3900 Watchers @@ -1962,7 +1962,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2023-08-22T11:10:18Z + 2023-08-23T11:27:20Z Archived @@ -2050,15 +2050,15 @@

OpenAPI Generator (link)

Stars - 17357 + 17367 Watchers - 216 + 214 Forks - 5543 + 5547 Created @@ -2066,7 +2066,7 @@

OpenAPI Generator (link)

Last Updated - 2023-08-22T23:11:50Z + 2023-08-23T23:32:28Z Archived @@ -2170,7 +2170,7 @@

Kiota Api Client Generator (link)

Last Updated - 2023-08-22T14:27:00Z + 2023-08-23T21:16:36Z Archived @@ -2310,7 +2310,7 @@

Swagger-Codegen (link)

Stars - 15919 + 15922 Watchers @@ -2318,7 +2318,7 @@

Swagger-Codegen (link)

Forks - 6009 + 6010 Created @@ -2326,7 +2326,7 @@

Swagger-Codegen (link)

Last Updated - 2023-08-23T02:19:39Z + 2023-08-23T11:29:31Z Archived @@ -2362,7 +2362,7 @@

Unchase.OpenAPI.Connectedservice (link) Stars - 91 + 90 Watchers @@ -2378,7 +2378,7 @@

Unchase.OpenAPI.Connectedservice (link) Last Updated - 2023-07-27T05:53:19Z + 2023-08-23T21:32:22Z Archived @@ -2518,7 +2518,7 @@

orval (link)

Stars - 1579 + 1581 Watchers @@ -2534,7 +2534,7 @@

orval (link)

Last Updated - 2023-08-22T22:24:10Z + 2023-08-23T06:56:47Z Archived @@ -2674,7 +2674,7 @@

Fern (link)

Stars - 1759 + 1763 Watchers @@ -2690,7 +2690,7 @@

Fern (link)

Last Updated - 2023-08-23T01:19:03Z + 2023-08-23T21:54:04Z Archived @@ -2726,7 +2726,7 @@

swagger-ui (link)

Stars - 24312 + 24316 Watchers @@ -2734,7 +2734,7 @@

swagger-ui (link)

Forks - 8742 + 8743 Created @@ -2742,7 +2742,7 @@

swagger-ui (link)

Last Updated - 2023-08-22T23:09:24Z + 2023-08-23T18:21:00Z Archived @@ -2778,7 +2778,7 @@

swagger-core (link)

Stars - 7249 + 7251 Watchers @@ -2786,7 +2786,7 @@

swagger-core (link)

Forks - 2151 + 2152 Created @@ -2794,7 +2794,7 @@

swagger-core (link)

Last Updated - 2023-08-22T05:34:28Z + 2023-08-23T20:25:30Z Archived @@ -2830,7 +2830,7 @@

swagger-js (link)

Stars - 2520 + 2519 Watchers @@ -2846,7 +2846,7 @@

swagger-js (link)

Last Updated - 2023-08-21T11:27:31Z + 2023-08-23T07:26:12Z Archived @@ -2890,7 +2890,7 @@

openapi-generator-cli (link)

Forks - 116 + 117 Created @@ -3202,7 +3202,7 @@

openapi-petstore (link)

Forks - 44 + 45 Created @@ -5794,7 +5794,7 @@

swagger-models (link)

Stars - 7249 + 7251 Watchers @@ -5802,7 +5802,7 @@

swagger-models (link)

Forks - 2151 + 2152 Created @@ -5810,7 +5810,7 @@

swagger-models (link)

Last Updated - 2023-08-22T05:34:28Z + 2023-08-23T20:25:30Z Archived diff --git a/docs/categories/converters.html b/docs/categories/converters.html index d289dc2f..f3503015 100644 --- a/docs/categories/converters.html +++ b/docs/categories/converters.html @@ -216,7 +216,7 @@

No Yes Yes - 1023 + 1022 @@ -285,7 +285,7 @@

Yes Yes Yes - 383 + 384 @@ -350,7 +350,7 @@

No Yes No - 182 + 183 @@ -440,7 +440,7 @@

No Yes No - 797 + 798 @@ -486,7 +486,7 @@

Yes Yes Yes - 3433 + 3435 @@ -549,7 +549,7 @@

No Yes No - 1815 + 1818 @@ -633,7 +633,7 @@

No Yes No - 64 + 65 @@ -1158,7 +1158,7 @@

OData OpenAPI (link)

Forks - 72 + 71 Created @@ -1358,7 +1358,7 @@

LucyBot api-spec-converter (link)

Stars - 1023 + 1022 Watchers @@ -1366,7 +1366,7 @@

LucyBot api-spec-converter (link)

Forks - 162 + 163 Created @@ -1374,7 +1374,7 @@

LucyBot api-spec-converter (link)

Last Updated - 2023-08-14T13:31:18Z + 2023-08-23T07:21:32Z Archived @@ -1470,7 +1470,7 @@

go-swagger (link)

Forks - 1236 + 1238 Created @@ -1478,7 +1478,7 @@

go-swagger (link)

Last Updated - 2023-08-22T15:49:51Z + 2023-08-24T02:32:24Z Archived @@ -1514,7 +1514,7 @@

api (link)

Stars - 383 + 384 Watchers @@ -1530,7 +1530,7 @@

api (link)

Last Updated - 2023-08-22T13:53:04Z + 2023-08-23T19:30:28Z Archived @@ -1670,7 +1670,7 @@

OpenAPI Schema to JSON Schema (link) Stars - 182 + 183 Watchers @@ -1686,7 +1686,7 @@

OpenAPI Schema to JSON Schema (link) Last Updated - 2023-08-16T22:30:45Z + 2023-08-23T10:00:16Z Archived @@ -1878,15 +1878,15 @@

openapi-python-client (link)

Stars - 797 + 798 Watchers - 14 + 13 Forks - 152 + 153 Created @@ -1894,7 +1894,7 @@

openapi-python-client (link)

Last Updated - 2023-08-21T04:54:47Z + 2023-08-23T16:41:06Z Archived @@ -1946,7 +1946,7 @@

Counterfact (link)

Last Updated - 2023-08-21T17:50:11Z + 2023-08-23T23:52:43Z Archived @@ -1982,7 +1982,7 @@

OpenAPI TypeScript (link)

Stars - 3433 + 3435 Watchers @@ -1998,7 +1998,7 @@

OpenAPI TypeScript (link)

Last Updated - 2023-08-23T03:11:32Z + 2023-08-23T23:16:45Z Archived @@ -2138,7 +2138,7 @@

gnostic (link)

Stars - 1815 + 1818 Watchers @@ -2154,7 +2154,7 @@

gnostic (link)

Last Updated - 2023-08-22T10:18:38Z + 2023-08-23T23:53:56Z Archived @@ -2198,7 +2198,7 @@

oas-kit (link)

Forks - 125 + 126 Created @@ -2346,7 +2346,7 @@

awesome-jsonschema (link)

Stars - 64 + 65 Watchers @@ -2362,7 +2362,7 @@

awesome-jsonschema (link)

Last Updated - 2023-08-14T19:49:59Z + 2023-08-23T09:57:33Z Archived diff --git a/docs/categories/data-validators.html b/docs/categories/data-validators.html index 97ee6f44..5456ea9e 100644 --- a/docs/categories/data-validators.html +++ b/docs/categories/data-validators.html @@ -86,7 +86,7 @@

No Yes Yes - 2824 + 2829 @@ -241,7 +241,7 @@

No Yes Yes - 2063 + 2065 @@ -440,7 +440,7 @@

Yes Yes Yes - 261 + 263 @@ -679,7 +679,7 @@

No Yes No - 98 + 99 @@ -1785,7 +1785,7 @@

tsoa (link)

Stars - 2824 + 2829 Watchers @@ -1801,7 +1801,7 @@

tsoa (link)

Last Updated - 2023-08-22T02:54:37Z + 2023-08-24T02:01:12Z Archived @@ -2149,7 +2149,7 @@

kin-openapi (link)

Stars - 2063 + 2065 Watchers @@ -2165,7 +2165,7 @@

kin-openapi (link)

Last Updated - 2023-08-22T15:09:13Z + 2023-08-23T12:12:03Z Archived @@ -2617,7 +2617,7 @@

vacuum (link)

Stars - 261 + 263 Watchers @@ -2633,7 +2633,7 @@

vacuum (link)

Last Updated - 2023-08-22T16:20:04Z + 2023-08-24T00:57:33Z Archived @@ -2729,7 +2729,7 @@

openapi-changes (link)

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

openapi4j (link)

Stars - 98 + 99 Watchers @@ -3205,7 +3205,7 @@

openapi4j (link)

Last Updated - 2023-08-15T15:40:14Z + 2023-08-23T08:45:48Z Archived @@ -4285,7 +4285,7 @@

openapi-schemas-validator (link)

Watchers - 18 + 20 Forks diff --git a/docs/categories/description-validators.html b/docs/categories/description-validators.html index 467bfbd0..eb6008aa 100644 --- a/docs/categories/description-validators.html +++ b/docs/categories/description-validators.html @@ -128,7 +128,7 @@

Yes Yes Yes - 2009 + 2011 @@ -170,7 +170,7 @@

No Yes Yes - 402 + 401 @@ -260,7 +260,7 @@

Yes Yes Yes - 383 + 384 @@ -369,7 +369,7 @@

Yes Yes Yes - 261 + 263 @@ -413,7 +413,7 @@

No Yes No - 733 + 734 @@ -518,7 +518,7 @@

No Yes No - 315 + 316 @@ -1581,7 +1581,7 @@

Spectral (link)

Stars - 2009 + 2011 Watchers @@ -1589,7 +1589,7 @@

Spectral (link)

Forks - 196 + 197 Created @@ -1597,7 +1597,7 @@

Spectral (link)

Last Updated - 2023-08-23T01:51:32Z + 2023-08-23T06:36:41Z Archived @@ -1685,7 +1685,7 @@

OpenAPI Validator (link)

Stars - 402 + 401 Watchers @@ -1701,7 +1701,7 @@

OpenAPI Validator (link)

Last Updated - 2023-08-22T19:29:16Z + 2023-08-23T18:23:10Z Archived @@ -1849,7 +1849,7 @@

php-openapi (link)

Forks - 82 + 83 Created @@ -1893,7 +1893,7 @@

api (link)

Stars - 383 + 384 Watchers @@ -1909,7 +1909,7 @@

api (link)

Last Updated - 2023-08-22T13:53:04Z + 2023-08-23T19:30:28Z Archived @@ -2153,7 +2153,7 @@

vacuum (link)

Stars - 261 + 263 Watchers @@ -2169,7 +2169,7 @@

vacuum (link)

Last Updated - 2023-08-22T16:20:04Z + 2023-08-24T00:57:33Z Archived @@ -2257,7 +2257,7 @@

studio (link)

Stars - 733 + 734 Watchers @@ -2273,7 +2273,7 @@

studio (link)

Last Updated - 2023-08-16T06:19:12Z + 2023-08-23T12:22:45Z Archived @@ -2517,7 +2517,7 @@

openapi-boilerplate (link)

Stars - 315 + 316 Watchers @@ -2533,7 +2533,7 @@

openapi-boilerplate (link)

Last Updated - 2023-08-20T11:48:46Z + 2023-08-23T12:04:35Z Archived diff --git a/docs/categories/documentation.html b/docs/categories/documentation.html index 99e16b73..f18be982 100644 --- a/docs/categories/documentation.html +++ b/docs/categories/documentation.html @@ -275,7 +275,7 @@

Yes Yes Yes - 20792 + 20802 @@ -321,7 +321,7 @@

No Yes Yes - 1345 + 1347 @@ -538,7 +538,7 @@

Yes Yes Yes - 1138 + 1139 @@ -733,7 +733,7 @@

No Yes Yes - 1759 + 1763 @@ -796,7 +796,7 @@

No Yes No - 216 + 217 @@ -838,7 +838,7 @@

Yes Yes No - 143 + 144 @@ -2339,7 +2339,7 @@

ReDoc (link)

Stars - 20792 + 20802 Watchers @@ -2355,7 +2355,7 @@

ReDoc (link)

Last Updated - 2023-08-23T01:29:27Z + 2023-08-24T02:42:24Z Archived @@ -2443,7 +2443,7 @@

widdershins (link)

Stars - 1345 + 1347 Watchers @@ -2459,7 +2459,7 @@

widdershins (link)

Last Updated - 2023-08-22T16:39:49Z + 2023-08-23T12:03:47Z Archived @@ -2963,7 +2963,7 @@

Elements (link)

Stars - 1138 + 1139 Watchers @@ -2971,7 +2971,7 @@

Elements (link)

Forks - 138 + 139 Created @@ -2979,7 +2979,7 @@

Elements (link)

Last Updated - 2023-08-22T14:56:37Z + 2023-08-23T03:47:06Z Archived @@ -3283,7 +3283,7 @@

openapi-changes (link)

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

Fern (link)

Stars - 1759 + 1763 Watchers @@ -3447,7 +3447,7 @@

Fern (link)

Last Updated - 2023-08-23T01:19:03Z + 2023-08-23T21:54:04Z Archived @@ -3587,7 +3587,7 @@

znai (link)

Stars - 216 + 217 Watchers @@ -3603,7 +3603,7 @@

znai (link)

Last Updated - 2023-08-16T20:29:40Z + 2023-08-23T12:59:23Z Archived @@ -3691,7 +3691,7 @@

openapi-sampler (link)

Stars - 143 + 144 Watchers @@ -3699,7 +3699,7 @@

openapi-sampler (link)

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

openapi-sampler (link)

Last Updated - 2023-08-10T04:55:21Z + 2023-08-23T07:06:06Z Archived diff --git a/docs/categories/dsl.html b/docs/categories/dsl.html index 4674bc98..9e16982e 100644 --- a/docs/categories/dsl.html +++ b/docs/categories/dsl.html @@ -187,7 +187,7 @@

No Yes No - 1729 + 1731 @@ -545,7 +545,7 @@

rswag (link)

Stars - 1729 + 1731 Watchers @@ -553,7 +553,7 @@

rswag (link)

Forks - 386 + 387 Created @@ -561,7 +561,7 @@

rswag (link)

Last Updated - 2023-08-22T23:51:29Z + 2023-08-23T21:31:50Z Archived diff --git a/docs/categories/editors.html b/docs/categories/editors.html index afeb53a1..27d1cc38 100644 --- a/docs/categories/editors.html +++ b/docs/categories/editors.html @@ -86,7 +86,7 @@

No Yes No - 1260 + 1262 @@ -256,7 +256,7 @@

OpenAPI-gui (link)

Stars - 1260 + 1262 Watchers @@ -272,7 +272,7 @@

OpenAPI-gui (link)

Last Updated - 2023-08-21T03:07:11Z + 2023-08-23T10:27:44Z Archived diff --git a/docs/categories/gateway.html b/docs/categories/gateway.html index 569c34e1..6ca658e1 100644 --- a/docs/categories/gateway.html +++ b/docs/categories/gateway.html @@ -105,7 +105,7 @@

No Yes No - 1542 + 1545 @@ -295,7 +295,7 @@

Fusio (link)

Stars - 1542 + 1545 Watchers @@ -311,7 +311,7 @@

Fusio (link)

Last Updated - 2023-08-21T16:07:14Z + 2023-08-24T01:43:10Z Archived diff --git a/docs/categories/learning.html b/docs/categories/learning.html index 37966754..54534698 100644 --- a/docs/categories/learning.html +++ b/docs/categories/learning.html @@ -86,7 +86,7 @@

Yes Yes No - 1183 + 1184 @@ -295,7 +295,7 @@

optic diff (link)

Stars - 1183 + 1184 Watchers @@ -311,7 +311,7 @@

optic diff (link)

Last Updated - 2023-08-22T18:14:44Z + 2023-08-23T14:54:39Z Archived @@ -615,7 +615,7 @@

APIClarity (link)

Forks - 60 + 59 Created diff --git a/docs/categories/low-level-tooling.html b/docs/categories/low-level-tooling.html index 537ecef1..2d1fee42 100644 --- a/docs/categories/low-level-tooling.html +++ b/docs/categories/low-level-tooling.html @@ -86,7 +86,7 @@

No Yes No - 2742 + 2743 @@ -151,7 +151,7 @@

No Yes No - 133 + 135 @@ -1293,7 +1293,7 @@

No No No - 7249 + 7251 @@ -1316,7 +1316,7 @@

No No No - 1190 + 1189 @@ -1402,7 +1402,7 @@

No Yes No - 48 + 49 @@ -1498,7 +1498,7 @@

springdoc-openapi (link)

Stars - 2742 + 2743 Watchers @@ -1506,7 +1506,7 @@

springdoc-openapi (link)

Forks - 412 + 413 Created @@ -1514,7 +1514,7 @@

springdoc-openapi (link)

Last Updated - 2023-08-23T01:19:51Z + 2023-08-23T04:18:00Z Archived @@ -1654,7 +1654,7 @@

openapi-go (link)

Stars - 133 + 135 Watchers @@ -1670,7 +1670,7 @@

openapi-go (link)

Last Updated - 2023-08-22T09:39:19Z + 2023-08-24T01:40:48Z Archived @@ -4462,7 +4462,7 @@

swagger-models (link)

Stars - 7249 + 7251 Watchers @@ -4470,7 +4470,7 @@

swagger-models (link)

Forks - 2151 + 2152 Created @@ -4478,7 +4478,7 @@

swagger-models (link)

Last Updated - 2023-08-22T05:34:28Z + 2023-08-23T20:25:30Z Archived @@ -4514,7 +4514,7 @@

Microsoft.OpenApi.net (link)

Stars - 1190 + 1189 Watchers @@ -4530,7 +4530,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2023-08-20T11:01:10Z + 2023-08-23T19:14:16Z Archived @@ -4722,7 +4722,7 @@

swagger-bootstrap-ui (link)

Stars - 48 + 49 Watchers @@ -4738,7 +4738,7 @@

swagger-bootstrap-ui (link)

Last Updated - 2023-08-22T02:03:03Z + 2023-08-23T08:24:26Z Archived diff --git a/docs/categories/mock-testing.html b/docs/categories/mock-testing.html index b15319a8..f8906aa2 100644 --- a/docs/categories/mock-testing.html +++ b/docs/categories/mock-testing.html @@ -86,7 +86,7 @@

Yes Yes Yes - 916 + 917 @@ -140,7 +140,7 @@

Microcks (link)

Stars - 916 + 917 Watchers @@ -156,7 +156,7 @@

Microcks (link)

Last Updated - 2023-08-21T06:21:58Z + 2023-08-23T14:42:49Z Archived diff --git a/docs/categories/mock.html b/docs/categories/mock.html index 25ebab76..980fe201 100644 --- a/docs/categories/mock.html +++ b/docs/categories/mock.html @@ -125,7 +125,7 @@

Yes Yes Yes - 3687 + 3689 @@ -194,7 +194,7 @@

No Yes No - 88 + 89 @@ -345,7 +345,7 @@

No Yes Yes - 1579 + 1581 @@ -828,7 +828,7 @@

Prism (link)

Stars - 3687 + 3689 Watchers @@ -844,7 +844,7 @@

Prism (link)

Last Updated - 2023-08-23T01:00:02Z + 2023-08-23T19:04:09Z Archived @@ -984,7 +984,7 @@

OpenAPI Mocker (link)

Stars - 88 + 89 Watchers @@ -1000,7 +1000,7 @@

OpenAPI Mocker (link)

Last Updated - 2023-08-07T17:16:04Z + 2023-08-24T01:26:14Z Archived @@ -1348,7 +1348,7 @@

orval (link)

Stars - 1579 + 1581 Watchers @@ -1364,7 +1364,7 @@

orval (link)

Last Updated - 2023-08-22T22:24:10Z + 2023-08-23T06:56:47Z Archived diff --git a/docs/categories/parsers.html b/docs/categories/parsers.html index 2a85e737..7716d6ca 100644 --- a/docs/categories/parsers.html +++ b/docs/categories/parsers.html @@ -86,7 +86,7 @@

No Yes No - 280 + 282 @@ -197,7 +197,7 @@

Yes Yes Yes - 20792 + 20802 @@ -243,7 +243,7 @@

No Yes Yes - 1345 + 1347 @@ -310,7 +310,7 @@

No Yes No - 3898 + 3900 @@ -517,7 +517,7 @@

No Yes No - 88 + 89 @@ -584,7 +584,7 @@

No Yes Yes - 2824 + 2829 @@ -764,7 +764,7 @@

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

No Yes Yes - 985 + 984 @@ -896,7 +896,7 @@

No Yes Yes - 2063 + 2065 @@ -1005,7 +1005,7 @@

No Yes Yes - 1190 + 1189 @@ -1141,7 +1141,7 @@

Yes Yes Yes - 383 + 384 @@ -1231,7 +1231,7 @@

No Yes No - 182 + 183 @@ -1522,7 +1522,7 @@

No Yes No - 797 + 798 @@ -1729,7 +1729,7 @@

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

No Yes No - 1729 + 1731 @@ -1903,7 +1903,7 @@

Yes Yes No - 20792 + 20802 @@ -1924,7 +1924,7 @@

No Yes No - 1290 + 1289 @@ -2050,7 +2050,7 @@

No Yes No - 634 + 636 @@ -2113,7 +2113,7 @@

No Yes No - 405 + 406 @@ -2134,7 +2134,7 @@

No Yes No - 385 + 387 @@ -2176,7 +2176,7 @@

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

No Yes No - 315 + 316 @@ -2472,7 +2472,7 @@

Yes Yes No - 143 + 144 @@ -2518,7 +2518,7 @@

No Yes No - 133 + 135 @@ -2644,7 +2644,7 @@

No Yes No - 98 + 99 @@ -2896,7 +2896,7 @@

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

No Yes No - 44 + 45 @@ -3276,7 +3276,7 @@

No Yes No - 34 + 35 @@ -3656,7 +3656,7 @@

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

No No No - 1190 + 1189 @@ -9778,11 +9778,11 @@

oasdiff (link)

Stars - 280 + 282 Watchers - 8 + 9 Forks @@ -9794,7 +9794,7 @@

oasdiff (link)

Last Updated - 2023-08-22T21:37:21Z + 2023-08-23T08:58:41Z Archived @@ -10038,7 +10038,7 @@

ReDoc (link)

Stars - 20792 + 20802 Watchers @@ -10054,7 +10054,7 @@

ReDoc (link)

Last Updated - 2023-08-23T01:29:27Z + 2023-08-24T02:42:24Z Archived @@ -10142,7 +10142,7 @@

widdershins (link)

Stars - 1345 + 1347 Watchers @@ -10158,7 +10158,7 @@

widdershins (link)

Last Updated - 2023-08-22T16:39:49Z + 2023-08-23T12:03:47Z Archived @@ -10298,7 +10298,7 @@

OpenAPI Server Code Generator (oapi-cod Stars - 3898 + 3900 Watchers @@ -10314,7 +10314,7 @@

OpenAPI Server Code Generator (oapi-cod Last Updated - 2023-08-22T11:10:18Z + 2023-08-23T11:27:20Z Archived @@ -10766,7 +10766,7 @@

OpenAPI Mocker (link)

Stars - 88 + 89 Watchers @@ -10782,7 +10782,7 @@

OpenAPI Mocker (link)

Last Updated - 2023-08-07T17:16:04Z + 2023-08-24T01:26:14Z Archived @@ -10922,7 +10922,7 @@

tsoa (link)

Stars - 2824 + 2829 Watchers @@ -10938,7 +10938,7 @@

tsoa (link)

Last Updated - 2023-08-22T02:54:37Z + 2023-08-24T02:01:12Z Archived @@ -10978,7 +10978,7 @@

@smartrecruiters/openapi-first (link) Watchers - 19 + 21 Forks @@ -11338,7 +11338,7 @@

swagger-parser (link)

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

swagger-parser (link)

Forks - 510 + 512 Created @@ -11354,7 +11354,7 @@

swagger-parser (link)

Last Updated - 2023-08-22T13:38:10Z + 2023-08-23T09:30:08Z Archived @@ -11390,7 +11390,7 @@

APIDevTools/swagger-parser (link)

Stars - 985 + 984 Watchers @@ -11406,7 +11406,7 @@

APIDevTools/swagger-parser (link)

Last Updated - 2023-08-21T08:42:42Z + 2023-08-23T06:28:15Z Archived @@ -11650,7 +11650,7 @@

kin-openapi (link)

Stars - 2063 + 2065 Watchers @@ -11666,7 +11666,7 @@

kin-openapi (link)

Last Updated - 2023-08-22T15:09:13Z + 2023-08-23T12:12:03Z Archived @@ -11710,7 +11710,7 @@

php-openapi (link)

Forks - 82 + 83 Created @@ -11910,7 +11910,7 @@

Microsoft/OpenAPI.NET (link)

Stars - 1190 + 1189 Watchers @@ -11926,7 +11926,7 @@

Microsoft/OpenAPI.NET (link)

Last Updated - 2023-08-20T11:01:10Z + 2023-08-23T19:14:16Z Archived @@ -12126,7 +12126,7 @@

go-swagger (link)

Forks - 1236 + 1238 Created @@ -12134,7 +12134,7 @@

go-swagger (link)

Last Updated - 2023-08-22T15:49:51Z + 2023-08-24T02:32:24Z Archived @@ -12222,7 +12222,7 @@

api (link)

Stars - 383 + 384 Watchers @@ -12238,7 +12238,7 @@

api (link)

Last Updated - 2023-08-22T13:53:04Z + 2023-08-23T19:30:28Z Archived @@ -12430,7 +12430,7 @@

OpenAPI Schema to JSON Schema (link) Stars - 182 + 183 Watchers @@ -12446,7 +12446,7 @@

OpenAPI Schema to JSON Schema (link) Last Updated - 2023-08-16T22:30:45Z + 2023-08-23T10:00:16Z Archived @@ -13106,15 +13106,15 @@

openapi-python-client (link)

Stars - 797 + 798 Watchers - 14 + 13 Forks - 152 + 153 Created @@ -13122,7 +13122,7 @@

openapi-python-client (link)

Last Updated - 2023-08-21T04:54:47Z + 2023-08-23T16:41:06Z Archived @@ -13382,7 +13382,7 @@

Counterfact (link)

Last Updated - 2023-08-21T17:50:11Z + 2023-08-23T23:52:43Z Archived @@ -13574,7 +13574,7 @@

openapi-comparator (link)

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

openapi-comparator (link)

Last Updated - 2023-08-13T03:13:35Z + 2023-08-24T02:43:34Z Archived @@ -13634,7 +13634,7 @@

openapi-changes (link)

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

rswag (link)

Stars - 1729 + 1731 Watchers @@ -13946,7 +13946,7 @@

rswag (link)

Forks - 386 + 387 Created @@ -13954,7 +13954,7 @@

rswag (link)

Last Updated - 2023-08-22T23:51:29Z + 2023-08-23T21:31:50Z Archived @@ -13990,7 +13990,7 @@

Redoc (link)

Stars - 20792 + 20802 Watchers @@ -14006,7 +14006,7 @@

Redoc (link)

Last Updated - 2023-08-23T01:29:27Z + 2023-08-24T02:42:24Z Archived @@ -14042,7 +14042,7 @@

utoipa (link)

Stars - 1290 + 1289 Watchers @@ -14050,7 +14050,7 @@

utoipa (link)

Forks - 109 + 108 Created @@ -14058,7 +14058,7 @@

utoipa (link)

Last Updated - 2023-08-22T14:27:06Z + 2023-08-23T10:45:20Z Archived @@ -14154,7 +14154,7 @@

oas-kit (link)

Forks - 125 + 126 Created @@ -14354,7 +14354,7 @@

openapi-diff (link)

Stars - 634 + 636 Watchers @@ -14370,7 +14370,7 @@

openapi-diff (link)

Last Updated - 2023-08-22T13:39:51Z + 2023-08-23T07:38:52Z Archived @@ -14510,11 +14510,11 @@

oazapfts (link)

Stars - 405 + 406 Watchers - 9 + 10 Forks @@ -14526,7 +14526,7 @@

oazapfts (link)

Last Updated - 2023-08-20T12:46:29Z + 2023-08-24T02:53:29Z Archived @@ -14562,7 +14562,7 @@

zod-to-openapi (link)

Stars - 385 + 387 Watchers @@ -14578,7 +14578,7 @@

zod-to-openapi (link)

Last Updated - 2023-08-22T14:47:26Z + 2023-08-23T19:58:39Z Archived @@ -14666,7 +14666,7 @@

swagger-autogen (link)

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

swagger-autogen (link)

Last Updated - 2023-08-22T15:36:15Z + 2023-08-23T12:02:03Z Archived @@ -14718,7 +14718,7 @@

openapi-boilerplate (link)

Stars - 315 + 316 Watchers @@ -14734,7 +14734,7 @@

openapi-boilerplate (link)

Last Updated - 2023-08-20T11:48:46Z + 2023-08-23T12:04:35Z Archived @@ -15394,7 +15394,7 @@

openapi-sampler (link)

Stars - 143 + 144 Watchers @@ -15402,7 +15402,7 @@

openapi-sampler (link)

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

openapi-sampler (link)

Last Updated - 2023-08-10T04:55:21Z + 2023-08-23T07:06:06Z Archived @@ -15498,7 +15498,7 @@

openapi-go (link)

Stars - 133 + 135 Watchers @@ -15514,7 +15514,7 @@

openapi-go (link)

Last Updated - 2023-08-22T09:39:19Z + 2023-08-24T01:40:48Z Archived @@ -15810,7 +15810,7 @@

openapi4j (link)

Stars - 98 + 99 Watchers @@ -15826,7 +15826,7 @@

openapi4j (link)

Last Updated - 2023-08-15T15:40:14Z + 2023-08-23T08:45:48Z Archived @@ -16130,7 +16130,7 @@

openapi (link)

Forks - 60 + 61 Created @@ -16434,7 +16434,7 @@

openapi-schema-validator (link)

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

openapi-schema-validator (link)

Last Updated - 2023-08-10T17:25:19Z + 2023-08-23T04:45:46Z Archived @@ -16958,7 +16958,7 @@

apidom (link)

Watchers - 8 + 9 Forks @@ -17162,7 +17162,7 @@

refitter (link)

Stars - 44 + 45 Watchers @@ -17178,7 +17178,7 @@

refitter (link)

Last Updated - 2023-08-21T12:56:55Z + 2023-08-23T07:11:03Z Archived @@ -17370,7 +17370,7 @@

zod-openapi (link)

Stars - 34 + 35 Watchers @@ -17386,7 +17386,7 @@

zod-openapi (link)

Last Updated - 2023-08-18T09:03:04Z + 2023-08-23T17:24:24Z Archived @@ -18306,7 +18306,7 @@

apity (link)

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

apity (link)

Last Updated - 2023-08-16T20:54:40Z + 2023-08-23T08:20:30Z Archived @@ -22058,7 +22058,7 @@

anypoint-automation-client-generator (l Forks - 7 + 8 Created @@ -23410,7 +23410,7 @@

json-schema-spell-checker (link)

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

Microsoft.OpenApi.net (link)

Stars - 1190 + 1189 Watchers @@ -31998,7 +31998,7 @@

Microsoft.OpenApi.net (link)

Last Updated - 2023-08-20T11:01:10Z + 2023-08-23T19:14:16Z Archived @@ -33298,7 +33298,7 @@

prettyrestdoc (link)

Last Updated - 2023-08-18T17:01:29Z + 2023-08-23T16:14:39Z Archived diff --git a/docs/categories/schema-validators.html b/docs/categories/schema-validators.html index 780a4dc1..ee431eb3 100644 --- a/docs/categories/schema-validators.html +++ b/docs/categories/schema-validators.html @@ -107,7 +107,7 @@

No Yes No - 98 + 99 @@ -213,7 +213,7 @@

openapi4j (link)

Stars - 98 + 99 Watchers @@ -229,7 +229,7 @@

openapi4j (link)

Last Updated - 2023-08-15T15:40:14Z + 2023-08-23T08:45:48Z Archived diff --git a/docs/categories/sdk.html b/docs/categories/sdk.html index 8edeb93b..fa45233d 100644 --- a/docs/categories/sdk.html +++ b/docs/categories/sdk.html @@ -109,7 +109,7 @@

No Yes Yes - 17357 + 17367 @@ -331,7 +331,7 @@

No Yes Yes - 6032 + 6035 @@ -375,7 +375,7 @@

No Yes Yes - 4304 + 4305 @@ -440,7 +440,7 @@

No Yes Yes - 91 + 90 @@ -486,7 +486,7 @@

No Yes Yes - 11163 + 11165 @@ -624,7 +624,7 @@

Yes Yes Yes - 3433 + 3435 @@ -691,7 +691,7 @@

No Yes Yes - 1759 + 1763 @@ -733,7 +733,7 @@

No Yes No - 3323 + 3324 @@ -775,7 +775,7 @@

No Yes No - 408 + 409 @@ -796,7 +796,7 @@

No Yes No - 311 + 313 @@ -1489,7 +1489,7 @@

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

No Yes No - 48 + 49 @@ -2754,15 +2754,15 @@

OpenAPI Generator (link)

Stars - 17357 + 17367 Watchers - 216 + 214 Forks - 5543 + 5547 Created @@ -2770,7 +2770,7 @@

OpenAPI Generator (link)

Last Updated - 2023-08-22T23:11:50Z + 2023-08-23T23:32:28Z Archived @@ -2874,7 +2874,7 @@

Kiota Api Client Generator (link)

Last Updated - 2023-08-22T14:27:00Z + 2023-08-23T21:16:36Z Archived @@ -3178,7 +3178,7 @@

go-swagger (link)

Forks - 1236 + 1238 Created @@ -3186,7 +3186,7 @@

go-swagger (link)

Last Updated - 2023-08-22T15:49:51Z + 2023-08-24T02:32:24Z Archived @@ -3274,7 +3274,7 @@

NSwag (link)

Stars - 6032 + 6035 Watchers @@ -3282,7 +3282,7 @@

NSwag (link)

Forks - 1138 + 1139 Created @@ -3290,7 +3290,7 @@

NSwag (link)

Last Updated - 2023-08-22T22:09:02Z + 2023-08-23T18:05:39Z Archived @@ -3378,7 +3378,7 @@

Azure AutoRest (link)

Stars - 4304 + 4305 Watchers @@ -3394,7 +3394,7 @@

Azure AutoRest (link)

Last Updated - 2023-08-21T15:50:36Z + 2023-08-23T22:05:18Z Archived @@ -3534,7 +3534,7 @@

Unchase.OpenAPI.Connectedservice (link) Stars - 91 + 90 Watchers @@ -3550,7 +3550,7 @@

Unchase.OpenAPI.Connectedservice (link) Last Updated - 2023-07-27T05:53:19Z + 2023-08-23T21:32:22Z Archived @@ -3638,7 +3638,7 @@

OWASP ZAP (link)

Stars - 11163 + 11165 Watchers @@ -3646,7 +3646,7 @@

OWASP ZAP (link)

Forks - 2114 + 2115 Created @@ -3654,7 +3654,7 @@

OWASP ZAP (link)

Last Updated - 2023-08-22T21:39:26Z + 2023-08-24T03:01:46Z Archived @@ -3914,7 +3914,7 @@

Counterfact (link)

Last Updated - 2023-08-21T17:50:11Z + 2023-08-23T23:52:43Z Archived @@ -3950,7 +3950,7 @@

OpenAPI TypeScript (link)

Stars - 3433 + 3435 Watchers @@ -3966,7 +3966,7 @@

OpenAPI TypeScript (link)

Last Updated - 2023-08-23T03:11:32Z + 2023-08-23T23:16:45Z Archived @@ -4106,7 +4106,7 @@

Fern (link)

Stars - 1759 + 1763 Watchers @@ -4122,7 +4122,7 @@

Fern (link)

Last Updated - 2023-08-23T01:19:03Z + 2023-08-23T21:54:04Z Archived @@ -4210,7 +4210,7 @@

openapi-directory (link)

Stars - 3323 + 3324 Watchers @@ -4226,7 +4226,7 @@

openapi-directory (link)

Last Updated - 2023-08-22T18:00:55Z + 2023-08-23T10:14:30Z Archived @@ -4314,7 +4314,7 @@

docusaurus-openapi (link)

Stars - 408 + 409 Watchers @@ -4330,7 +4330,7 @@

docusaurus-openapi (link)

Last Updated - 2023-08-20T16:01:21Z + 2023-08-23T15:08:53Z Archived @@ -4366,7 +4366,7 @@

akita-cli (link)

Stars - 311 + 313 Watchers @@ -4382,7 +4382,7 @@

akita-cli (link)

Last Updated - 2023-08-18T05:14:09Z + 2023-08-23T11:20:11Z Archived @@ -6082,7 +6082,7 @@

akka-http-petstore (link)

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

akka-http-petstore (link)

Last Updated - 2023-02-14T19:18:50Z + 2023-08-23T13:02:20Z Archived @@ -8786,7 +8786,7 @@

swagger-bootstrap-ui (link)

Stars - 48 + 49 Watchers @@ -8802,7 +8802,7 @@

swagger-bootstrap-ui (link)

Last Updated - 2023-08-22T02:03:03Z + 2023-08-23T08:24:26Z Archived @@ -8950,7 +8950,7 @@

go-doudou (link)

Forks - 222 + 223 Created diff --git a/docs/categories/security.html b/docs/categories/security.html index b772ae00..d136cad2 100644 --- a/docs/categories/security.html +++ b/docs/categories/security.html @@ -191,7 +191,7 @@

No Yes Yes - 11163 + 11165 @@ -258,7 +258,7 @@

No Yes Yes - 2247 + 2248 @@ -572,7 +572,7 @@

OWASP ZAP (link)

Stars - 11163 + 11165 Watchers @@ -580,7 +580,7 @@

OWASP ZAP (link)

Forks - 2114 + 2115 Created @@ -588,7 +588,7 @@

OWASP ZAP (link)

Last Updated - 2023-08-22T21:39:26Z + 2023-08-24T03:01:46Z Archived @@ -728,7 +728,7 @@

RESTler (link)

Stars - 2247 + 2248 Watchers @@ -736,7 +736,7 @@

RESTler (link)

Forks - 257 + 258 Created @@ -744,7 +744,7 @@

RESTler (link)

Last Updated - 2023-08-21T13:20:57Z + 2023-08-23T08:46:05Z Archived diff --git a/docs/categories/server-implementations.html b/docs/categories/server-implementations.html index 6e0da7c5..0e23d105 100644 --- a/docs/categories/server-implementations.html +++ b/docs/categories/server-implementations.html @@ -86,7 +86,7 @@

Yes Yes No - 1183 + 1184 @@ -201,7 +201,7 @@

Yes Yes Yes - 8306 + 8307 @@ -247,7 +247,7 @@

Yes Yes Yes - 3687 + 3689 @@ -270,7 +270,7 @@

Yes Yes Yes - 916 + 917 @@ -316,7 +316,7 @@

No Yes Yes - 8005 + 8008 @@ -339,7 +339,7 @@

No Yes No - 1542 + 1545 @@ -429,7 +429,7 @@

No Yes No - 26178 + 26179 @@ -498,7 +498,7 @@

No Yes No - 61712 + 61747 @@ -519,7 +519,7 @@

No Yes No - 12763 + 12773 @@ -542,7 +542,7 @@

No Yes No - 2742 + 2743 @@ -563,7 +563,7 @@

No Yes No - 2325 + 2326 @@ -586,7 +586,7 @@

No Yes No - 1815 + 1816 @@ -630,7 +630,7 @@

No Yes No - 1260 + 1262 @@ -651,7 +651,7 @@

No Yes No - 1198 + 1201 @@ -672,7 +672,7 @@

No Yes No - 830 + 832 @@ -714,7 +714,7 @@

No Yes No - 733 + 734 @@ -798,7 +798,7 @@

No Yes No - 311 + 313 @@ -926,7 +926,7 @@

No Yes No - 203 + 206 @@ -989,7 +989,7 @@

No Yes No - 169 + 170 @@ -1346,7 +1346,7 @@

No Yes No - 43 + 44 @@ -1472,7 +1472,7 @@

Yes Yes No - 31 + 30 @@ -1997,7 +1997,7 @@

No Yes No - 14 + 15 @@ -2755,7 +2755,7 @@

No Yes No - 6 + 7 @@ -9144,7 +9144,7 @@

optic diff (link)

Stars - 1183 + 1184 Watchers @@ -9160,7 +9160,7 @@

optic diff (link)

Last Updated - 2023-08-22T18:14:44Z + 2023-08-23T14:54:39Z Archived @@ -9404,7 +9404,7 @@

Swagger Editor (link)

Stars - 8306 + 8307 Watchers @@ -9412,7 +9412,7 @@

Swagger Editor (link)

Forks - 2185 + 2186 Created @@ -9420,7 +9420,7 @@

Swagger Editor (link)

Last Updated - 2023-08-22T21:40:52Z + 2023-08-23T15:52:03Z Archived @@ -9508,7 +9508,7 @@

Prism (link)

Stars - 3687 + 3689 Watchers @@ -9524,7 +9524,7 @@

Prism (link)

Last Updated - 2023-08-23T01:00:02Z + 2023-08-23T19:04:09Z Archived @@ -9560,7 +9560,7 @@

Microcks (link)

Stars - 916 + 917 Watchers @@ -9576,7 +9576,7 @@

Microcks (link)

Last Updated - 2023-08-21T06:21:58Z + 2023-08-23T14:42:49Z Archived @@ -9664,7 +9664,7 @@

API Platform (link)

Stars - 8005 + 8008 Watchers @@ -9680,7 +9680,7 @@

API Platform (link)

Last Updated - 2023-08-22T00:46:33Z + 2023-08-23T22:37:28Z Archived @@ -9716,7 +9716,7 @@

Fusio (link)

Stars - 1542 + 1545 Watchers @@ -9732,7 +9732,7 @@

Fusio (link)

Last Updated - 2023-08-21T16:07:14Z + 2023-08-24T01:43:10Z Archived @@ -9924,7 +9924,7 @@

Django REST Framework (link)

Stars - 26178 + 26179 Watchers @@ -9932,7 +9932,7 @@

Django REST Framework (link)

Forks - 6669 + 6668 Created @@ -9940,7 +9940,7 @@

Django REST Framework (link)

Last Updated - 2023-08-23T01:20:08Z + 2023-08-24T00:47:35Z Archived @@ -10080,15 +10080,15 @@

FastAPI (link)

Stars - 61712 + 61747 Watchers - 638 + 639 Forks - 5197 + 5203 Created @@ -10096,7 +10096,7 @@

FastAPI (link)

Last Updated - 2023-08-23T02:55:24Z + 2023-08-24T02:20:34Z Archived @@ -10132,7 +10132,7 @@

full-stack-fastapi-postgresql (link) Stars - 12763 + 12773 Watchers @@ -10140,7 +10140,7 @@

full-stack-fastapi-postgresql (link) Forks - 2346 + 2348 Created @@ -10148,7 +10148,7 @@

full-stack-fastapi-postgresql (link) Last Updated - 2023-08-22T20:50:59Z + 2023-08-24T00:09:18Z Archived @@ -10184,7 +10184,7 @@

springdoc-openapi (link)

Stars - 2742 + 2743 Watchers @@ -10192,7 +10192,7 @@

springdoc-openapi (link)

Forks - 412 + 413 Created @@ -10200,7 +10200,7 @@

springdoc-openapi (link)

Last Updated - 2023-08-23T01:19:51Z + 2023-08-23T04:18:00Z Archived @@ -10236,7 +10236,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Stars - 2325 + 2326 Watchers @@ -10252,7 +10252,7 @@

uvicorn-gunicorn-fastapi-docker (link)< Last Updated - 2023-08-22T16:23:06Z + 2023-08-23T12:00:01Z Archived @@ -10288,7 +10288,7 @@

Schemathesis (link)

Stars - 1815 + 1816 Watchers @@ -10304,7 +10304,7 @@

Schemathesis (link)

Last Updated - 2023-08-22T11:04:44Z + 2023-08-23T18:36:15Z Archived @@ -10392,7 +10392,7 @@

OpenAPI-gui (link)

Stars - 1260 + 1262 Watchers @@ -10408,7 +10408,7 @@

OpenAPI-gui (link)

Last Updated - 2023-08-21T03:07:11Z + 2023-08-23T10:27:44Z Archived @@ -10444,7 +10444,7 @@

msgspec (link)

Stars - 1198 + 1201 Watchers @@ -10460,7 +10460,7 @@

msgspec (link)

Last Updated - 2023-08-22T03:51:25Z + 2023-08-24T03:06:35Z Archived @@ -10496,7 +10496,7 @@

apiflask (link)

Stars - 830 + 832 Watchers @@ -10512,7 +10512,7 @@

apiflask (link)

Last Updated - 2023-08-19T13:51:27Z + 2023-08-24T01:56:09Z Archived @@ -10600,7 +10600,7 @@

studio (link)

Stars - 733 + 734 Watchers @@ -10616,7 +10616,7 @@

studio (link)

Last Updated - 2023-08-16T06:19:12Z + 2023-08-23T12:22:45Z Archived @@ -10808,7 +10808,7 @@

akita-cli (link)

Stars - 311 + 313 Watchers @@ -10824,7 +10824,7 @@

akita-cli (link)

Last Updated - 2023-08-18T05:14:09Z + 2023-08-23T11:20:11Z Archived @@ -11120,7 +11120,7 @@

apicat (link)

Stars - 203 + 206 Watchers @@ -11136,7 +11136,7 @@

apicat (link)

Last Updated - 2023-08-23T00:18:04Z + 2023-08-23T17:56:52Z Archived @@ -11276,7 +11276,7 @@

fastapi-clean-example (link)

Stars - 169 + 170 Watchers @@ -11292,7 +11292,7 @@

fastapi-clean-example (link)

Last Updated - 2023-08-22T03:53:40Z + 2023-08-23T04:12:00Z Archived @@ -12116,7 +12116,7 @@

openapi-petstore (link)

Forks - 44 + 45 Created @@ -12160,7 +12160,7 @@

tooling (link)

Stars - 43 + 44 Watchers @@ -12176,7 +12176,7 @@

tooling (link)

Last Updated - 2023-08-17T12:09:12Z + 2023-08-23T03:51:53Z Archived @@ -12472,7 +12472,7 @@

spectral-owasp-ruleset (link)

Stars - 31 + 30 Watchers @@ -12488,7 +12488,7 @@

spectral-owasp-ruleset (link)

Last Updated - 2023-08-09T21:58:02Z + 2023-08-23T08:12:46Z Archived @@ -13772,7 +13772,7 @@

file-service (link)

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

file-service (link)

Last Updated - 2023-04-15T18:41:28Z + 2023-08-23T10:41:37Z Archived @@ -15644,7 +15644,7 @@

rest-ruler (link)

Stars - 6 + 7 Watchers @@ -15660,7 +15660,7 @@

rest-ruler (link)

Last Updated - 2023-02-10T22:13:24Z + 2023-08-23T08:49:15Z Archived @@ -30004,7 +30004,7 @@

PHP-CRUD-API (link)

Forks - 994 + 996 Created @@ -30524,7 +30524,7 @@

APIClarity (link)

Forks - 60 + 59 Created diff --git a/docs/categories/server.html b/docs/categories/server.html index 231073b0..62c1b30f 100644 --- a/docs/categories/server.html +++ b/docs/categories/server.html @@ -86,7 +86,7 @@

No Yes Yes - 2824 + 2829 @@ -224,7 +224,7 @@

No Yes Yes - 8005 + 8008 @@ -270,7 +270,7 @@

No Yes No - 1542 + 1545 @@ -1129,7 +1129,7 @@

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

tsoa (link)

Stars - 2824 + 2829 Watchers @@ -2700,7 +2700,7 @@

tsoa (link)

Last Updated - 2023-08-22T02:54:37Z + 2023-08-24T02:01:12Z Archived @@ -2896,7 +2896,7 @@

@smartrecruiters/openapi-first (link) Watchers - 19 + 21 Forks @@ -2996,7 +2996,7 @@

API Platform (link)

Stars - 8005 + 8008 Watchers @@ -3012,7 +3012,7 @@

API Platform (link)

Last Updated - 2023-08-22T00:46:33Z + 2023-08-23T22:37:28Z Archived @@ -3100,7 +3100,7 @@

Fusio (link)

Stars - 1542 + 1545 Watchers @@ -3116,7 +3116,7 @@

Fusio (link)

Last Updated - 2023-08-21T16:07:14Z + 2023-08-24T01:43:10Z Archived @@ -4468,7 +4468,7 @@

deces-backend (link)

Last Updated - 2023-07-07T16:28:33Z + 2023-08-23T16:39:42Z Archived @@ -5180,7 +5180,7 @@

akka-http-petstore (link)

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

akka-http-petstore (link)

Last Updated - 2023-02-14T19:18:50Z + 2023-08-23T13:02:20Z Archived diff --git a/docs/categories/testing-tools.html b/docs/categories/testing-tools.html index 1c0c4f9d..6ac48d46 100644 --- a/docs/categories/testing-tools.html +++ b/docs/categories/testing-tools.html @@ -109,7 +109,7 @@

No Yes No - 1815 + 1816 @@ -132,7 +132,7 @@

No No No - 180 + 181 @@ -238,7 +238,7 @@

Schemathesis (link)

Stars - 1815 + 1816 Watchers @@ -254,7 +254,7 @@

Schemathesis (link)

Last Updated - 2023-08-22T11:04:44Z + 2023-08-23T18:36:15Z Archived @@ -290,7 +290,7 @@

Tcases for OpenAPI (link)

Stars - 180 + 181 Watchers @@ -306,7 +306,7 @@

Tcases for OpenAPI (link)

Last Updated - 2023-07-29T01:11:14Z + 2023-08-23T09:13:46Z Archived diff --git a/docs/categories/testing.html b/docs/categories/testing.html index 619ebb93..afdc901c 100644 --- a/docs/categories/testing.html +++ b/docs/categories/testing.html @@ -105,7 +105,7 @@

No Yes Yes - 4041 + 4040 @@ -292,7 +292,7 @@

No Yes No - 180 + 181 @@ -313,7 +313,7 @@

No Yes Yes - 349 + 351 @@ -712,7 +712,7 @@

No Yes No - 5319 + 5320 @@ -796,7 +796,7 @@

No Yes No - 180 + 181 @@ -2331,7 +2331,7 @@

No No No - 180 + 181 @@ -2484,7 +2484,7 @@

No Yes Yes - 2247 + 2248 @@ -2630,7 +2630,7 @@

Dredd (link)

Stars - 4041 + 4040 Watchers @@ -2646,7 +2646,7 @@

Dredd (link)

Last Updated - 2023-08-20T13:13:41Z + 2023-08-23T07:17:40Z Archived @@ -3098,7 +3098,7 @@

Tcases for OpenAPI (link)

Stars - 180 + 181 Watchers @@ -3114,7 +3114,7 @@

Tcases for OpenAPI (link)

Last Updated - 2023-07-29T01:11:14Z + 2023-08-23T09:13:46Z Archived @@ -3150,7 +3150,7 @@

EvoMaster (link)

Stars - 349 + 351 Watchers @@ -3166,7 +3166,7 @@

EvoMaster (link)

Last Updated - 2023-08-22T16:11:10Z + 2023-08-23T15:32:07Z Archived @@ -3582,7 +3582,7 @@

Counterfact (link)

Last Updated - 2023-08-21T17:50:11Z + 2023-08-23T23:52:43Z Archived @@ -3886,7 +3886,7 @@

openapi-changes (link)

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

mockoon (link)

Stars - 5319 + 5320 Watchers @@ -4094,7 +4094,7 @@

mockoon (link)

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

mockoon (link)

Last Updated - 2023-08-21T18:54:17Z + 2023-08-23T13:26:39Z Archived @@ -4294,7 +4294,7 @@

tcases (link)

Stars - 180 + 181 Watchers @@ -4310,7 +4310,7 @@

tcases (link)

Last Updated - 2023-07-29T01:11:14Z + 2023-08-23T09:13:46Z Archived @@ -4458,7 +4458,7 @@

openapi (link)

Forks - 60 + 61 Created @@ -8090,7 +8090,7 @@

Tcases for OpenAPI (link)

Stars - 180 + 181 Watchers @@ -8106,7 +8106,7 @@

Tcases for OpenAPI (link)

Last Updated - 2023-07-29T01:11:14Z + 2023-08-23T09:13:46Z Archived @@ -8454,7 +8454,7 @@

RESTler (link)

Stars - 2247 + 2248 Watchers @@ -8462,7 +8462,7 @@

RESTler (link)

Forks - 257 + 258 Created @@ -8470,7 +8470,7 @@

RESTler (link)

Last Updated - 2023-08-21T13:20:57Z + 2023-08-23T08:46:05Z Archived diff --git a/docs/categories/text-editors.html b/docs/categories/text-editors.html index d761d0fb..67894a22 100644 --- a/docs/categories/text-editors.html +++ b/docs/categories/text-editors.html @@ -170,7 +170,7 @@

Yes Yes Yes - 8306 + 8307 @@ -580,7 +580,7 @@

Swagger Editor (link)

Stars - 8306 + 8307 Watchers @@ -588,7 +588,7 @@

Swagger Editor (link)

Forks - 2185 + 2186 Created @@ -596,7 +596,7 @@

Swagger Editor (link)

Last Updated - 2023-08-22T21:40:52Z + 2023-08-23T15:52:03Z Archived diff --git a/docs/categories/unclassified.html b/docs/categories/unclassified.html index 62e25488..7ea3ff7b 100644 --- a/docs/categories/unclassified.html +++ b/docs/categories/unclassified.html @@ -882,7 +882,7 @@

No Yes No - N/A + 1 @@ -1192,7 +1192,7 @@

oas (link)

Forks - 23 + 24 Created @@ -3160,7 +3160,7 @@

go-api-server (link)

Stars - N/A + 1 Watchers @@ -3176,7 +3176,7 @@

go-api-server (link)

Last Updated - 2023-07-29T14:17:39Z + 2023-08-23T19:21:16Z Archived diff --git a/docs/categories/user-interfaces.html b/docs/categories/user-interfaces.html index 55d1db94..0ec70512 100644 --- a/docs/categories/user-interfaces.html +++ b/docs/categories/user-interfaces.html @@ -86,7 +86,7 @@

Yes Yes No - 24312 + 24316 @@ -109,7 +109,7 @@

Yes Yes No - 20792 + 20802 @@ -291,7 +291,7 @@

swagger-ui (link)

Stars - 24312 + 24316 Watchers @@ -299,7 +299,7 @@

swagger-ui (link)

Forks - 8742 + 8743 Created @@ -307,7 +307,7 @@

swagger-ui (link)

Last Updated - 2023-08-22T23:09:24Z + 2023-08-23T18:21:00Z Archived @@ -343,7 +343,7 @@

Redoc (link)

Stars - 20792 + 20802 Watchers @@ -359,7 +359,7 @@

Redoc (link)

Last Updated - 2023-08-23T01:29:27Z + 2023-08-24T02:42:24Z Archived diff --git a/src/_data/tools.yaml b/src/_data/tools.yaml index 9e1a05b5..3bbf1efb 100644 --- a/src/_data/tools.yaml +++ b/src/_data/tools.yaml @@ -5,23 +5,23 @@ v3: true repositoryMetadata: base64Readme: >- - ClshW0NJXShodHRwczovL2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZi93b3JrZmxvd3MvZ28vYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYvYWN0aW9ucykKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3R1ZmluL29hc2RpZmYvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPVk4Qk02WDc3SlkpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvdHVmaW4vb2FzZGlmZikKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL3R1ZmluL29hc2RpZmYpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vdHVmaW4vb2FzZGlmZikKWyFbR29Eb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vdHVmaW4vb2FzZGlmZj9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS90dWZpbi9vYXNkaWZmKQpbIVtEb2NrZXIgSW1hZ2UgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi90dWZpbi9vYXNkaWZmP3NvcnQ9c2VtdmVyKV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3R1ZmluL29hc2RpZmYvdGFncykKWyFbU2xhY2tdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc2xhY2stJiM2NDtvYXNkaWZmLWdyZWVuLnN2Zz9sb2dvPXNsYWNrKV0oaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L29hc2RpZmYvc2hhcmVkX2ludml0ZS96dC0xd3ZvN3dvaXMtdHRuY05CbXlqeVJYcUJ6eWd+UDZvQSkKCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS95b25hdGFubWdyL29hc2RpZmYvYXNzZXRzLzMxOTEzNDk1LzRmYzY3YjhmLWE3ZDYtNDQxNy1iZWJlLTlhYjJjNzkzNWExZSkKCkNvbW1hbmQtbGluZSBhbmQgR28gcGFja2FnZSB0byBjb21wYXJlIGFuZCBkZXRlY3QgYnJlYWtpbmcgY2hhbmdlcyBpbiBPcGVuQVBJIHNwZWNzLgoKCiMjIFRyeSBpdApgYGAKZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dApgYGAKIyMgRmVhdHVyZXMgCi0gRGV0ZWN0IFticmVha2luZyBjaGFuZ2VzXShCUkVBS0lORy1DSEFOR0VTLm1kKQotIE9wZW5BUEkgZGlmZiBpbiBZQU1MLCBKU09OLCBUZXh0L01hcmtkb3duIG9yIEhUTUwKLSBEaXNwbGF5IGEgdXNlci1mcmllbmRseSBbY2hhbmdlbG9nXSgjb3BlbmFwaS1jaGFuZ2Vsb2cpIG9mIGFsbCBpbXBvcnRhbnQgQVBJIGNoYW5nZXMKLSBbUnVuIGZyb20gRG9ja2VyXSgjb3BlbmFwaS1kaWZmLXdpdGgtZG9ja2VyKQotIFtFbWJlZCBpbiB5b3VyIGdvIHByb2dyYW1dKCNlbWJlZGRpbmctb2FzZGlmZi1pbnRvLXlvdXItcHJvZ3JhbSkKLSBPcGVuQVBJIGRpZmYgb2YgbG9jYWwgZmlsZXMgc3lzdGVtIG9yIHJlbW90ZSBmaWxlcyBvdmVyIGh0dHAvcwotIENvbXBhcmUgc3BlY3MgaW4gWUFNTCBvciBKU09OIGZvcm1hdAotIFtDb21wYXJlIHR3byBjb2xsZWN0aW9ucyBvZiBzcGVjc10oI2NvbXBvc2VkLW1vZGUpCi0gQ29tcHJlaGVuc2l2ZSBkaWZmIGluY2x1ZGluZyBhbGwgYXNwZWN0cyBvZiBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pOiBwYXRocywgb3BlcmF0aW9ucywgcGFyYW1ldGVycywgcmVxdWVzdCBib2RpZXMsIHJlc3BvbnNlcywgc2NoZW1hcywgZW51bXMsIGNhbGxiYWNrcywgc2VjdXJpdHkgZXRjLgotIFtBUEkgZGVwcmVjYXRpb25dKEFQSS1ERVBSRUNBVElPTi5tZCkKLSBbTXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZW5kcG9pbnRdKE1BVENISU5HLUVORFBPSU5UUy5tZCkKLSBbUGF0aCBwcmVmaXggbW9kaWZpY2F0aW9uXSgjcGF0aC1wcmVmaXgtbW9kaWZpY2F0aW9uKQotIFtQYXRoIHBhcmFtZXRlciByZW5hbWluZ10oI3BhdGgtcGFyYW1ldGVyLXJlYW5hbWluZykKLSBbRXhjbHVkaW5nIGNlcnRhaW4ga2luZHMgb2YgY2hhbmdlc10oI2V4Y2x1ZGluZy1zcGVjaWZpYy1raW5kcy1vZi1jaGFuZ2VzKQotIFtFeGNsdWRpbmcgZW5kcG9pbnRzXSgjZXhjbHVkaW5nLXNwZWNpZmljLWVuZHBvaW50cykKLSBbRXh0ZW5kaW5nIGJyZWFraW5nLWNoYW5nZXMgd2l0aCBjdXN0b20gY2hlY2tzXShDVVNUT01JWklORy1DSEVDS1MubWQpCi0gTG9jYWxpemF0aW9uOiBkaXNwbGF5IGJyZWFraW5nLWNoYW5nZXMgYW5kIGNoYW5nZWxvZyBtZXNzYWdlcyBpbiBFbmdsaXNoIG9yIFJ1c3NpYW4gKHBsZWFzZSBzdWJtaXQgYW4gaXNzdWUgaWYgeW91IHdhbnQgdG8gYWRkIGFub3RoZXIgbGFuZ3VhZ2UpCgoKIyMgSW5zdGFsbCB3aXRoIEdvCmBgYGJhc2gKZ28gaW5zdGFsbCBnaXRodWIuY29tL3R1ZmluL29hc2RpZmZAbGF0ZXN0CmBgYAoKIyMgSW5zdGFsbCBvbiBtYWNPUyB3aXRoIEJyZXcKYGBgYmFzaApicmV3IHRhcCB0dWZpbi9ob21lYnJldy10dWZpbgpicmV3IGluc3RhbGwgb2FzZGlmZgpgYGAKCiMjIEluc3RhbGwgb24gbWFjT1MsIFdpbmRvd3MgYW5kIExpbnV4CkNvcHkgYmluYXJpZXMgZnJvbSBbbGF0ZXN0IHJlbGVhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmL3JlbGVhc2VzLykKCiMjIFdyYXBwZXJzCi0gW0dpdEh1YiBBY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNkaWZmL29hc2RpZmYtYWN0aW9uKQotIFtDbG91ZCBTZXJ2aWNlXSgjb3BlbmFwaS1kaWZmLWFuZC1icmVha2luZy1jaGFuZ2VzLWFzLWEtc2VydmljZSkKLSBbT3BlbkFQSSBTeW5jOiBHZXQgbm90aWZpZWQgd2hlbiBhbiBBUEkgcHJvdmlkZXIgYnJlYWtzIHRoZSBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNkaWZmL3N5bmMvKQoKIyMgVXNhZ2UgRXhhbXBsZXMKCiMjIyBPcGVuQVBJIGRpZmYgb2YgbG9jYWwgZmlsZXMgaW4gWUFNTApgYGBiYXNoCm9hc2RpZmYgZGlmZiBkYXRhL29wZW5hcGktdGVzdDEueWFtbCBkYXRhL29wZW5hcGktdGVzdDIueWFtbApgYGAKVGhlIGRlZmF1bHQgZGlmZiBvdXRwdXQgZm9ybWF0IGlzIFlBTUwuICAKTm8gb3V0cHV0IG1lYW5zIHRoYXQgdGhlIGRpZmYgaXMgZW1wdHksIG9yLCBpbiBvdGhlciB3b3JkcywgdGhlcmUgYXJlIG5vIGNoYW5nZXMuCgojIyMgT3BlbkFQSSBkaWZmIG9mIGxvY2FsIGZpbGVzIGluIFRleHQvTWFya2Rvd24gCmBgYGJhc2gKb2FzZGlmZiBkaWZmIGRhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGRhdGEvb3BlbmFwaS10ZXN0Mi55YW1sIC1mIHRleHQKYGBgClRoZSBUZXh0L01hcmtkb3duIGRpZmYgcmVwb3J0IHByb3ZpZGVzIGEgc2ltcGxpZmllZCBhbmQgcGFydGlhbCB2aWV3IG9mIHRoZSBjaGFuZ2VzLiAgClRvIHZpZXcgYWxsIGRldGFpbHMsIHVzZSB0aGUgZGVmYXVsdCBmb3JtYXQ6IFlBTUwuICAKSWYgeW91J2QgbGlrZSB0byBzZWUgYWRkaXRpb25hbCBkZXRhaWxzIGluIHRoZSB0ZXh0L21hcmtkb3duIHJlcG9ydCwgcGxlYXNlIHN1Ym1pdCBhIFtmZWF0dXJlIHJlcXVlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9JnRlbXBsYXRlPWZlYXR1cmVfcmVxdWVzdC5tZCZ0aXRsZT0pLgoKIyMjIE9wZW5BUEkgZGlmZiBvZiBsb2NhbCBmaWxlcyBpbiBIVE1MCmBgYGJhc2gKb2FzZGlmZiBkaWZmIGRhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGRhdGEvb3BlbmFwaS10ZXN0Mi55YW1sIC1mIGh0bWwgCmBgYApUaGUgSFRNTCBkaWZmIHJlcG9ydCBwcm92aWRlcyBhIHNpbXBsaWZpZWQgYW5kIHBhcnRpYWwgdmlldyBvZiB0aGUgY2hhbmdlcy4gIApUbyB2aWV3IGFsbCBkZXRhaWxzLCB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0OiBZQU1MLiAgCklmIHlvdSdkIGxpa2UgdG8gc2VlIGFkZGl0aW9uYWwgZGV0YWlscyBpbiB0aGUgSFRNTCByZXBvcnQsIHBsZWFzZSBzdWJtaXQgYSBbZmVhdHVyZSByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZi9pc3N1ZXMvbmV3P2Fzc2lnbmVlcz0mbGFiZWxzPSZ0ZW1wbGF0ZT1mZWF0dXJlX3JlcXVlc3QubWQmdGl0bGU9KS4KCgojIyMgT3BlbkFQSSBkaWZmIGZvciByZW1vdGUgZmlsZXMgb3ZlciBodHRwL3MKYGBgYmFzaApvYXNkaWZmIGRpZmYgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sIC1mIHRleHQKYGBgCgojIyMgQnJlYWtpbmcgY2hhbmdlcwpgYGBiYXNoCm9hc2RpZmYgYnJlYWtpbmcgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sCmBgYAoKIyMjIEJyZWFraW5nIGNoYW5nZXMgYXMgWUFNTApgYGBiYXNoCm9hc2RpZmYgYnJlYWtpbmcgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sIC1mIHlhbWwKYGBgCgojIyMgQnJlYWtpbmcgY2hhbmdlcyBhY3Jvc3MgbXVsdGlwbGUgc3BlY3Mgd2l0aCBnbG9icwpgYGBiYXNoCm9hc2RpZmYgYnJlYWtpbmcgImRhdGEvY29tcG9zZWQvYmFzZS8qLnlhbWwiICJkYXRhL2NvbXBvc2VkL3JldmlzaW9uLyoueWFtbCIgLWMKYGBgCgojIyMgRmFpbCB3aXRoIGV4aXQgY29kZSAxIGlmIGFueSBFUlItbGV2ZWwgYnJlYWtpbmcgY2hhbmdlcyBhcmUgZm91bmQKYGBgYmFzaApvYXNkaWZmIGJyZWFraW5nICJkYXRhL2NvbXBvc2VkL2Jhc2UvKi55YW1sIiAiZGF0YS9jb21wb3NlZC9yZXZpc2lvbi8qLnlhbWwiIC1jIC1vIEVSUgpgYGAKCiMjIyBGYWlsIHdpdGggZXhpdCBjb2RlIDEgaWYgYW55IGNoYW5nZSBpcyBmb3VuZApgYGBiYXNoCm9hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dCAtbwpgYGAKCiMjIyBPcGVuQVBJIGNoYW5nZWxvZwpgYGBiYXNoCm9hc2RpZmYgY2hhbmdlbG9nIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QxLnlhbWwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDMueWFtbApgYGAKCiMjIyBPcGVuQVBJIGRpZmYgZm9yIGVuZHBvaW50cyBjb250YWluaW5nICIvYXBpIiBpbiB0aGUgcGF0aApgYGBiYXNoCm9hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dCAtcCAiL2FwaSIKYGBgCkZpbHRlcnMgYXJlIGFwcGxpZWQgcmVjdXJzaXZlbHkgYXQgYWxsIGxldmVscy4gRm9yIGV4YW1wbGUsIGlmIGEgcGF0aCBjb250YWlucyBhIFtjYWxsYmFja10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9jYWxsYmFja3MvKSwgdGhlIGZpbHRlciB3aWxsIGJlIGFwcGxpZWQgYm90aCB0byB0aGUgcGF0aCBpdHNlbGYgYW5kIHRvIHRoZSBjYWxsYmFjayBwYXRoLiBUbyBpbmNsdWRlIHN1Y2ggYSBuZXN0ZWQgY2hhbmdlLCB1c2UgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBjb250YWlucyBib3RoIHBhdGhzLCBmb3IgZXhhbXBsZSBgYGAtZmlsdGVyICJwYXRofGNhbGxiYWNrLXBhdGgiYGBgCgojIyMgRXhjbHVkZSBwYXRocyBhbmQgb3BlcmF0aW9ucyB3aXRoIGV4dGVuc2lvbiAieC1iZXRhIgpgYGBiYXNoCm9hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dCAtLWZpbHRlci1leHRlbnNpb24gIngtYmV0YSIKYGBgIApOb3RlczoKMS4gW09wZW5BUEkgRXh0ZW5zaW9uc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9vcGVuYXBpLWV4dGVuc2lvbnMvKSBjYW4gYmUgZGVmaW5lZCBib3RoIGF0IHRoZSBbcGF0aF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9wYXRocy1hbmQtb3BlcmF0aW9ucy8pIGxldmVsIGFuZCBhdCB0aGUgW29wZXJhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9wYXRocy1hbmQtb3BlcmF0aW9ucy8pIGxldmVsLiBCb3RoIGFyZSBtYXRjaGVkIGFuZCBleGNsdWRlZCB3aXRoIHRoaXMgZmxhZy4KMi4gSWYgYSBwYXRoIG9yIG9wZXJhdGlvbiBoYXMgYSBtYXRjaGluZyBleHRlbnNpb24gb25seSBpbiBvbmUgb2YgdGhlIHNwZWNzLCBidXQgbm90IGluIHRoZSBvdGhlciwgaXQgd2lsbCBhcHBlYXIgYXMgQWRkZWQgb3IgRGVsZXRlZC4KCiMjIyBJZ25vcmUgY2hhbmdlcyB0byBkZXNjcmlwdGlvbiBhbmQgZXhhbXBsZXMKYGBgYmFzaApvYXNkaWZmIGRpZmYgZGF0YS9vcGVuYXBpLXRlc3QxLnlhbWwgZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLS1leGNsdWRlLWVsZW1lbnRzIGRlc2NyaXB0aW9uLGV4YW1wbGVzIC1mIHRleHQKYGBgIAoKIyMjIERpc3BsYXkgY2hhbmdlIHN1bW1hcnkKYGBgYmFzaApvYXNkaWZmIHN1bW1hcnkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sCmBgYAoKIyMjIE9wZW5BUEkgRGlmZiB3aXRoIERvY2tlcgpUbyBydW4gd2l0aCBkb2NrZXIganVzdCByZXBsYWNlIHRoZSBgb2FzZGlmZmAgY29tbWFuZCBieSBgZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmZgLCBmb3IgZXhhbXBsZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dApgYGAKCiMjIyBCcmVha2luZyBjaGFuZ2VzIHdpdGggRG9ja2VyCmBgYGJhc2gKZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmYgYnJlYWtpbmcgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sCmBgYAoKIyMjIENvbXBhcmluZyBsb2NhbCBmaWxlcyB3aXRoIERvY2tlcgpgYGBiYXNoCmRvY2tlciBydW4gLS1ybSAtdCAtdiAkKHB3ZCkvZGF0YTovZGF0YTpybyB0dWZpbi9vYXNkaWZmIGRpZmYgL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIC9kYXRhL29wZW5hcGktdGVzdDMueWFtbApgYGAKClJlcGxhY2UgYCQocHdkKS9kYXRhYCBieSB0aGUgcGF0aCB0aGF0IGNvbnRhaW5zIHlvdXIgZmlsZXMuICAKTm90ZSB0aGF0IHRoZSBzcGVjIHBhdGhzIG11c3QgYmVnaW4gd2l0aCBgL2AuICAKCiMjIE9wZW5BUEkgRGlmZiBhbmQgQnJlYWtpbmctQ2hhbmdlcyBhcyBhIFNlcnZpY2UKWW91IGNhbiB1c2Ugb2FzZGlmZiBhcyBhIHNlcnZpY2UgbGlrZSB0aGlzOgpgYGAKY3VybCAtWCBQT1NUIC1GIGJhc2U9QHNwZWMxLnlhbWwgLUYgcmV2aXNpb249QHNwZWMyLnlhbWwgaHR0cHM6Ly9hcGkub2FzZGlmZi5jb20vZGlmZgpgYGAKT3IsIHRvIHNlZSBicmVha2luZyBjaGFuZ2VzOgpgYGAKY3VybCAtWCBQT1NUIC1GIGJhc2U9QHNwZWMxLnlhbWwgLUYgcmV2aXNpb249QHNwZWMyLnlhbWwgaHR0cHM6Ly9hcGkub2FzZGlmZi5jb20vYnJlYWtpbmctY2hhbmdlcwpgYGAKU2VydmljZSBzb3VyY2UgY29kZTogaHR0cHM6Ly9naXRodWIuY29tL29hc2RpZmYvb2FzZGlmZi1zZXJ2aWNlCgojIyBEaWZmIE91dHB1dCBGb3JtYXRzClRoZSBkZWZhdWx0IGRpZmYgb3V0cHV0IGZvcm1hdCwgWUFNTCwgcHJvdmlkZXMgYSBmdWxsIHZpZXcgb2YgYWxsIGRpZmYgZGV0YWlscy4gIApOb3RlIHRoYXQgbm8gb3V0cHV0IGluIHRoZSBZQU1MIGZvcm1hdCBzaWduaWZpZXMgdGhhdCB0aGUgZGlmZiBpcyBlbXB0eSwgb3IsIGluIG90aGVyIHdvcmRzLCB0aGVyZSBhcmUgbm8gY2hhbmdlcy4gIApPdGhlciBmb3JtYXRzOiB0ZXh0LCBtYXJrZG93biwgYW5kIEhUTUwsIGFyZSBkZXNpZ25lZCB0byBiZSBtb3JlIHVzZXItZnJpZW5kbHkgYnkgcHJvdmlkaW5nIG9ubHkgdGhlIG1vc3QgaW1wb3J0YW50IHBhcnRzIG9mIHRoZSBkaWZmLCBpbiBhIHNpbXBsaWZpZWQgZm9ybWF0LiAgClRoZSBKU09OIGZvcm1hdCB3b3JrcyBvbmx5IHdpdGggYC1leGNsdWRlLWVsZW1lbnRzIGVuZHBvaW50c2AgYW5kIGlzIGludGVuZGVkIGFzIGEgd29ya2Fyb3VuZCBmb3IgWUFNTCBjb21wbGV4IG1hcHBpbmcga2V5cyB3aGljaCBhcmVuJ3Qgc3VwcG9ydGVkIGJ5IHNvbWUgbGlicmFyaWVzIChzZWUgY29tbWVudCBhdCBlbmQgb2YgbmV4dCBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMpLgpJZiB5b3Ugd2lzaCB0byBpbmNsdWRlIGFkZGl0aW9uYWwgZGV0YWlscyBpbiBub24tWUFNTCBmb3JtYXRzLCBwbGVhc2Ugb3BlbiBhbiBpc3N1ZS4KCiMjIFBhdGhzIHZzLiBFbmRwb2ludHMKT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGhhcyBhIGhpZXJhcmNoaWNhbCBtb2RlbCBvZiBbUGF0aHNdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNwYXRocy1vYmplY3QpIGFuZCBbT3BlcmF0aW9uc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI29wZXJhdGlvbi1vYmplY3QpIChIVFRQIG1ldGhvZHMpLiAgCm9hc2RpZmYgcmVzcGVjdHMgdGhpcyBoaWVyYXJjaHkgYW5kIGRpc3BsYXlzIGEgaGllcmFyY2hpY2FsIGRpZmYgd2l0aCBwYXRoIGNoYW5nZXM6IGFkZGVkLCBkZWxldGVkIGFuZCBtb2RpZmllZCwgYW5kIHdpdGhpbiB0aGUgbGF0dGVyLCAibW9kaWZpZWQiIHNlY3Rpb24sIGFub3RoZXIgc2V0IG9mIG9wZXJhdGlvbiBjaGFuZ2VzOiBhZGRlZCwgZGVsZXRlZCBhbmQgbW9kaWZpZWQuIEZvciBleGFtcGxlOgpgYGB5YW1sCnBhdGhzOgogICAgZGVsZXRlZDoKICAgICAgICAtIC9yZWdpc3RlcgogICAgICAgIC0gL3N1YnNjcmliZQogICAgbW9kaWZpZWQ6CiAgICAgICAgL2FwaS97ZG9tYWlufS97cHJvamVjdH0vYmFkZ2VzL3NlY3VyaXR5LXNjb3JlOgogICAgICAgICAgICBvcGVyYXRpb25zOgogICAgICAgICAgICAgICAgbW9kaWZpZWQ6CiAgICAgICAgICAgICAgICAgICAgR0VUOgpgYGAKb2FzZGlmZiBhbHNvIG91dHB1dHMgYW4gYWx0ZXJuYXRlIHNpbXBsaWZpZWQgZGlmZiBwZXIgImVuZHBvaW50IiB3aGljaCBpcyBhIGNvbWJpbmF0aW9uIG9mIFBhdGggKyBPcGVyYXRpb24sIGZvciBleGFtcGxlOgpgYGB5YW1sCmVuZHBvaW50czoKICAgIGRlbGV0ZWQ6CiAgICAgICAgLSBtZXRob2Q6IFBPU1QKICAgICAgICAgIHBhdGg6IC9zdWJzY3JpYmUKICAgICAgICAtIG1ldGhvZDogUE9TVAogICAgICAgICAgcGF0aDogL3JlZ2lzdGVyCiAgICBtb2RpZmllZDoKICAgICAgICA/ICAgbWV0aG9kOiBHRVQKICAgICAgICAgICAgcGF0aDogL2FwaS97ZG9tYWlufS97cHJvamVjdH0vYmFkZ2VzL3NlY3VyaXR5LXNjb3JlCiAgICAgICAgOiAgIHRhZ3M6CiAgICAgICAgICAgICAgICBkZWxldGVkOgogICAgICAgICAgICAgICAgICAgIC0gc2VjdXJpdHkKYGBgClRoZSBtb2RpZmllZCBlbmRwb2ludHMgc2VjdGlvbiBoYXMgdHdvIGl0ZW1zIHBlciBrZXksIG1ldGhvZCBhbmQgcGF0aCwgdGhpcyBpcyBjYWxsZWQgYSBbY29tcGxleCBtYXBwaW5nIGtleV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzM5ODczMTYvd2hhdC1pcy1hLWNvbXBsZXgtbWFwcGluZy1rZXktaW4teWFtbCkgaW4gWUFNTC4gIApTb21lIFlBTUwgbGlicmFyaWVzIGRvbid0IHN1cHBvcnQgY29tcGxleCBtYXBwaW5nIGtleXM6Ci0gcHl0aG9uIFB5WUFNTDogc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmL2lzc3Vlcy85NCNpc3N1ZWNvbW1lbnQtMTA4NzQ2ODQ1MAotIGdvbGFuZyBnb3BrZy5pbi95YW1sLnYzIGZhaWxzIHRvIHVubWFyc2hhbCB0aGUgb2FzZGlmZiBvdXRwdXQuIFRoaXMgcGFja2FnZSBvZmZlcnMgYSBzb2x1dGlvbjogaHR0cHM6Ly9naXRodWIuY29tL3RsaXJvbi95YW1sa2V5cwoKV2hlbiB1c2luZyBvdXRwdXQgZm9ybWF0IGBqc29uYCwgb2FzZGlmZiBleGNsdWRlcyBgZW5kcG9pbnRzYCBhdXRvbWF0aWNhbGx5LgoKIyMgQ29tcG9zZWQgTW9kZQpDb21wb3NlZCBtb2RlIGNvbXBhcmVzIHR3byBjb2xsZWN0aW9ucyBvZiBPcGVuQVBJIHNwZWNzIGluc3RlYWQgb2YgYSBwYWlyIG9mIHNwZWNzIGluIHRoZSBkZWZhdWx0IG1vZGUuClRoZSBjb2xsZWN0aW9ucyBhcmUgc3BlY2lmaWVkIHVzaW5nIGEgW2dsb2JdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb2JfKHByb2dyYW1taW5nKSkuClRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdXIgQVBJcyBhcmUgZGVmaW5lZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMsIGZvciBleGFtcGxlLCB3aGVuIG11bHRpcGxlIHNlcnZpY2VzLCBlYWNoIG9uZSB3aXRoIGl0cyBvd24gc3BlYywgYXJlIGV4cG9zZWQgYmVoaW5kIGFuIEFQSSBnYXRld2F5LCBhbmQgeW91IHdhbnQgdG8gY2hlY2sgY2hhbmdlcyBhY3Jvc3MgYWxsIHRoZSBzcGVjcyBhdCBvbmNlLgoKTm90ZXM6IAoxLiBDb21wb3NlZCBtb2RlIGNvbXBhcmVzIG9ubHkgW3BhdGhzIGFuZCBlbmRwb2ludHNdKCNwYXRocy12cy1lbmRwb2ludHMpLCBvdGhlciByZXNvdXJjZXMgYXJlIGNvbXBhcmVkIG9ubHkgaWYgcmVmZXJlbmNlZCBmcm9tIHRoZSBwYXRocyBvciBlbmRwb2ludHMuCjIuIENvbXBvc2VkIG1vZGUgZG9lc24ndCBzdXBwb3J0IFtQYXRoIFByZWZpeCBNb2RpZmljYXRpb25dKCNwYXRoLXByZWZpeC1tb2RpZmljYXRpb24pIAozLiBMZWFybiBtb3JlIGFib3V0IGhvdyBvYXNkaWZmIFttYXRjaGVzIGVuZHBvaW50cyB0byBlYWNoIG90aGVyXShNQVRDSElORy1FTkRQT0lOVFMubWQpCgojIyBQYXRoIFByZWZpeCBNb2RpZmljYXRpb24KU29tZXRpbWVzIHBhdGhzIHByZWZpeGVzIG5lZWQgdG8gYmUgbW9kaWZpZWQsIGZvciBleGFtcGxlLCB0byBjcmVhdGUgYSBuZXcgdmVyc2lvbjoKLSAvYXBpL3YxLy4uLgotIC9hcGkvdjIvLi4uCgpvYXNkaWZmIGFsbG93cyBjb21wYXJpc29uIG9mIEFQSSBzcGVjaWZpY2F0aW9ucyB3aXRoIG1vZGlmaWVkIHByZWZpeGVzIGJ5IHN0cmlwcGluZyBhbmQvb3IgcHJlcGVuZGluZyBwYXRoIHByZWZpeGVzLiAgCkluIHRoZSBleGFtcGxlIGFib3ZlIHlvdSBjb3VsZCBjb21wYXJlIHRoZSBmaWxlcyBhcyBmb2xsb3dzOgpgYGAKb2FzZGlmZiBkaWZmIG9yaWdpbmFsLnlhbWwgbmV3LnlhbWwgLS1zdHJpcC1wcmVmaXgtYmFzZSAvYXBpL3YxIC0tcHJlZml4LWJhc2UgL2FwaS92MgpgYGAKb3IKYGBgCm9hc2RpZmYgZGlmZiBvcmlnaW5hbC55YW1sIG5ldy55YW1sIC0tc3RyaXAtcHJlZml4LWJhc2UgL2FwaS92MSAtLXN0cmlwLXByZWZpeC1yZXZpc2lvbiAvYXBpL3YyCmBgYApOb3RlIHRoYXQgc3RyaXBwaW5nIHByZWNlZGVzIHByZXBlbmRpbmcuCgojIyBQYXRoIFBhcmFtZXRlciBSZWFuYW1pbmcKU29tZXRpbWVzIGRldmVsb3BlcnMgZGVjaWRlIHRvIGNoYW5nZSBuYW1lcyBvZiBwYXRoIHBhcmFtZXRlcnMsIGZvciBleGFtcGxlLCBpbiBvcmRlciB0byBmb2xsb3cgYSBjZXJ0YWluIG5hbWluZyBjb252ZW50aW9uLiAgClNlZSBbdGhpc10oTUFUQ0hJTkctRU5EUE9JTlRTLm1kKSB0byBsZWFybiBtb3JlIGFib3V0IGhvdyBvYXNkaWZmIHN1cHBvcnRzIHBhdGggcGFyYW1ldGVyIHJlbmFtaW5nLgoKIyMgRXhjbHVkaW5nIFNwZWNpZmljIEtpbmRzIG9mIENoYW5nZXMgCllvdSBjYW4gdXNlIHRoZSBgLS1leGNsdWRlLWVsZW1lbnRzYCBmbGFnIHRvIGV4Y2x1ZGUgY2VydGFpbiBraW5kcyBvZiBjaGFuZ2VzOgotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIGV4YW1wbGVzYCB0byBleGNsdWRlIFtFeGFtcGxlc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2V4YW1wbGUtb2JqZWN0KQotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIGRlc2NyaXB0aW9uYCB0byBleGNsdWRlIGRlc2NyaXB0aW9uIGZpZWxkcwotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIHRpdGxlYCB0byBleGNsdWRlIHRpdGxlIGZpZWxkcwotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIHN1bW1hcnlgIHRvIGV4Y2x1ZGUgc3VtbWFyeSBmaWVsZHMKLSBVc2UgYC0tZXhjbHVkZS1lbGVtZW50cyBlbmRwb2ludHNgIHRvIGV4Y2x1ZGUgdGhlIFtlbmRwb2ludHMgZGlmZl0oI3BhdGhzLXZzLWVuZHBvaW50cykKCllvdSBjYW4gaWdub3JlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleGNsdWRlZCBlbGVtZW50cyBhcyBpbiBbdGhpcyBleGFtcGxlXSgjaWdub3JlLWNoYW5nZXMtdG8tZGVzY3JpcHRpb24tYW5kLWV4YW1wbGVzKS4gIApOb3RlIHRoYXQgW0V4dGVuc2lvbnNdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNzcGVjaWZpY2F0aW9uLWV4dGVuc2lvbnMpIGFyZSBhbHdheXMgZXhjbHVkZWQgZnJvbSB0aGUgZGlmZi4KCiMjIEV4Y2x1ZGluZyBTcGVjaWZpYyBFbmRwb2ludHMKWW91IGNhbiBmaWx0ZXIgZW5kcG9pbnRzIGluIHR3byB3YXlzOgoxLiBCeSBwYXRoIG5hbWU6IHVzZSB0aGUgYC0tbWF0Y2gtcGF0aGAgb3B0aW9uIHRvIGV4Y2x1ZGUgcGF0aHMgdGhhdCBkb24ndCBtYXRjaCB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLCBzZWUgW2V4YW1wbGVdKCNvcGVuYXBpLWRpZmYtZm9yLWVuZHBvaW50cy1jb250YWluaW5nLWFwaS1pbi10aGUtcGF0aCkKMi4gQnkgZXh0ZW5zaW9uOiB1c2UgdGhlIGAtLWZpbHRlci1leHRlbnNpb25gIG9wdGlvbiB0byBleGNsdWRlIHBhdGhzIGFuZCBvcGVyYXRpb25zIHdpdGggYW4gT3BlbkFQSSBFeHRlbnNpb24gbWF0Y2hpbmcgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiwgc2VlIFtleGFtcGxlXSgjZXhjbHVkZS1wYXRocy1hbmQtb3BlcmF0aW9ucy13aXRoLWV4dGVuc2lvbi14LWJldGEpCgojIyBOb3RlcyBmb3IgR28gRGV2ZWxvcGVycwojIyMgRW1iZWRkaW5nIG9hc2RpZmYgaW50byB5b3VyIHByb2dyYW0KYGBgZ28KZGlmZi5HZXQoJmRpZmYuQ29uZmlne30sIHNwZWMxLCBzcGVjMikKYGBgCgojIyMgQ29kZSBFeGFtcGxlcwotIFtkaWZmXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS90dWZpbi9vYXNkaWZmL2RpZmYjZXhhbXBsZS1HZXQpCi0gW2JyZWFraW5nIGNoYW5nZXNdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3R1ZmluL29hc2RpZmYvZGlmZiNleGFtcGxlLUdldFBhdGhzRGlmZikKCgojIyMgT3BlbkFQSSBSZWZlcmVuY2VzCm9hc2RpZmYgZXhwZWN0cyBbT3BlbkFQSSBSZWZlcmVuY2VzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL3VzaW5nLXJlZi8pIHRvIGJlIHJlc29sdmVkLiAgClJlZmVyZW5jZXMgYXJlIG5vcm1hbGx5IHJlc29sdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiB5b3UgbG9hZCB0aGUgc3BlYy4gSW4gb3RoZXIgY2FzZXMgeW91IGNhbiByZXNvbHZlIHJlZnMgdXNpbmcgW0xvYWRlci5SZXNvbHZlUmVmc0luXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMjTG9hZGVyLlJlc29sdmVSZWZzSW4pLgoKIyMgUmVxdWVzdHMgZm9yIGVuaGFuY2VtZW50cwoxLiBPcGVuQVBJIDMuMSBzdXBwb3J0OiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYvaXNzdWVzLzUyCgpJZiB5b3UgaGF2ZSBvdGhlciBpZGVhcywgcGxlYXNlIFtsZXQgdXMga25vd10oaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYvZGlzY3Vzc2lvbnMvbmV3P2NhdGVnb3J5PWlkZWFzKS4KCiMjIENyZWRpdHMKVGhpcyBwcm9qZWN0IHJlbGllcyBvbiB0aGUgZXhjZWxsZW50IGltcGxlbWVudGF0aW9uIG9mIE9wZW5BUEkgMy4wIGZvciBHbzogW2tpbi1vcGVuYXBpXShodHRwczovL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpKS4K - readmeEtag: '"adf9dc26a317e6c726a88f96676da225b041eaa7663803658e00792999d6b703"' - readmeLastModified: Thu, 20 Jul 2023 13:16:30 GMT + ClshW0NJXShodHRwczovL2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZi93b3JrZmxvd3MvZ28vYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYvYWN0aW9ucykKWyFbY29kZWNvdl0oaHR0cHM6Ly9jb2RlY292LmlvL2doL3R1ZmluL29hc2RpZmYvYnJhbmNoL21haW4vZ3JhcGgvYmFkZ2Uuc3ZnP3Rva2VuPVk4Qk02WDc3SlkpXShodHRwczovL2NvZGVjb3YuaW8vZ2gvdHVmaW4vb2FzZGlmZikKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL3R1ZmluL29hc2RpZmYpXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vdHVmaW4vb2FzZGlmZikKWyFbR29Eb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vdHVmaW4vb2FzZGlmZj9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS90dWZpbi9vYXNkaWZmKQpbIVtEb2NrZXIgSW1hZ2UgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi90dWZpbi9vYXNkaWZmP3NvcnQ9c2VtdmVyKV0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL3R1ZmluL29hc2RpZmYvdGFncykKWyFbU2xhY2tdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2Uvc2xhY2stJiM2NDtvYXNkaWZmLWdyZWVuLnN2Zz9sb2dvPXNsYWNrKV0oaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L29hc2RpZmYvc2hhcmVkX2ludml0ZS96dC0xd3ZvN3dvaXMtdHRuY05CbXlqeVJYcUJ6eWd+UDZvQSkKCiFbaW1hZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS95b25hdGFubWdyL29hc2RpZmYvYXNzZXRzLzMxOTEzNDk1LzRmYzY3YjhmLWE3ZDYtNDQxNy1iZWJlLTlhYjJjNzkzNWExZSkKCkNvbW1hbmQtbGluZSBhbmQgR28gcGFja2FnZSB0byBjb21wYXJlIGFuZCBkZXRlY3QgYnJlYWtpbmcgY2hhbmdlcyBpbiBPcGVuQVBJIHNwZWNzLgoKCiMjIFRyeSBpdApgYGAKZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dApgYGAKIyMgRmVhdHVyZXMgCi0gRGV0ZWN0IFticmVha2luZyBjaGFuZ2VzXShCUkVBS0lORy1DSEFOR0VTLm1kKQotIE9wZW5BUEkgZGlmZiBpbiBZQU1MLCBKU09OLCBUZXh0L01hcmtkb3duIG9yIEhUTUwKLSBEaXNwbGF5IGEgdXNlci1mcmllbmRseSBbY2hhbmdlbG9nXSgjb3BlbmFwaS1jaGFuZ2Vsb2cpIG9mIGFsbCBpbXBvcnRhbnQgQVBJIGNoYW5nZXMKLSBbUnVuIGZyb20gRG9ja2VyXSgjb3BlbmFwaS1kaWZmLXdpdGgtZG9ja2VyKQotIFtFbWJlZCBpbiB5b3VyIGdvIHByb2dyYW1dKCNlbWJlZGRpbmctb2FzZGlmZi1pbnRvLXlvdXItcHJvZ3JhbSkKLSBPcGVuQVBJIGRpZmYgb2YgbG9jYWwgZmlsZXMgc3lzdGVtIG9yIHJlbW90ZSBmaWxlcyBvdmVyIGh0dHAvcwotIENvbXBhcmUgc3BlY3MgaW4gWUFNTCBvciBKU09OIGZvcm1hdAotIFtDb21wYXJlIHR3byBjb2xsZWN0aW9ucyBvZiBzcGVjc10oI2NvbXBvc2VkLW1vZGUpCi0gQ29tcHJlaGVuc2l2ZSBkaWZmIGluY2x1ZGluZyBhbGwgYXNwZWN0cyBvZiBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3N3YWdnZXIuaW8vc3BlY2lmaWNhdGlvbi8pOiBwYXRocywgb3BlcmF0aW9ucywgcGFyYW1ldGVycywgcmVxdWVzdCBib2RpZXMsIHJlc3BvbnNlcywgc2NoZW1hcywgZW51bXMsIGNhbGxiYWNrcywgc2VjdXJpdHkgZXRjLgotIFtBUEkgZGVwcmVjYXRpb25dKEFQSS1ERVBSRUNBVElPTi5tZCkKLSBbTXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZW5kcG9pbnRdKE1BVENISU5HLUVORFBPSU5UUy5tZCkKLSBbUGF0aCBwcmVmaXggbW9kaWZpY2F0aW9uXSgjcGF0aC1wcmVmaXgtbW9kaWZpY2F0aW9uKQotIFtQYXRoIHBhcmFtZXRlciByZW5hbWluZ10oI3BhdGgtcGFyYW1ldGVyLXJlYW5hbWluZykKLSBbRXhjbHVkaW5nIGNlcnRhaW4ga2luZHMgb2YgY2hhbmdlc10oI2V4Y2x1ZGluZy1zcGVjaWZpYy1raW5kcy1vZi1jaGFuZ2VzKQotIFtFeGNsdWRpbmcgZW5kcG9pbnRzXSgjZXhjbHVkaW5nLXNwZWNpZmljLWVuZHBvaW50cykKLSBbRXh0ZW5kaW5nIGJyZWFraW5nLWNoYW5nZXMgd2l0aCBjdXN0b20gY2hlY2tzXShDVVNUT01JWklORy1DSEVDS1MubWQpCi0gTG9jYWxpemF0aW9uOiBkaXNwbGF5IGJyZWFraW5nLWNoYW5nZXMgYW5kIGNoYW5nZWxvZyBtZXNzYWdlcyBpbiBFbmdsaXNoIG9yIFJ1c3NpYW4gKHBsZWFzZSBzdWJtaXQgYW4gaXNzdWUgaWYgeW91IHdhbnQgdG8gYWRkIGFub3RoZXIgbGFuZ3VhZ2UpCgoKIyMgSW5zdGFsbCB3aXRoIEdvCmBgYGJhc2gKZ28gaW5zdGFsbCBnaXRodWIuY29tL3R1ZmluL29hc2RpZmZAbGF0ZXN0CmBgYAoKIyMgSW5zdGFsbCBvbiBtYWNPUyB3aXRoIEJyZXcKYGBgYmFzaApicmV3IHRhcCB0dWZpbi9ob21lYnJldy10dWZpbgpicmV3IGluc3RhbGwgb2FzZGlmZgpgYGAKCiMjIEluc3RhbGwgb24gbWFjT1MsIFdpbmRvd3MgYW5kIExpbnV4CkNvcHkgYmluYXJpZXMgZnJvbSBbbGF0ZXN0IHJlbGVhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmL3JlbGVhc2VzLykKCiMjIFdyYXBwZXJzCi0gW0dpdEh1YiBBY3Rpb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNkaWZmL29hc2RpZmYtYWN0aW9uKQotIFtDbG91ZCBTZXJ2aWNlXSgjb3BlbmFwaS1kaWZmLWFuZC1icmVha2luZy1jaGFuZ2VzLWFzLWEtc2VydmljZSkKLSBbT3BlbkFQSSBTeW5jOiBHZXQgbm90aWZpZWQgd2hlbiBhbiBBUEkgcHJvdmlkZXIgYnJlYWtzIHRoZSBBUEldKGh0dHBzOi8vZ2l0aHViLmNvbS9vYXNkaWZmL3N5bmMvKQoKIyMgVXNhZ2UgRXhhbXBsZXMKCiMjIyBPcGVuQVBJIGRpZmYgb2YgbG9jYWwgZmlsZXMgaW4gWUFNTApgYGBiYXNoCm9hc2RpZmYgZGlmZiBkYXRhL29wZW5hcGktdGVzdDEueWFtbCBkYXRhL29wZW5hcGktdGVzdDIueWFtbApgYGAKVGhlIGRlZmF1bHQgZGlmZiBvdXRwdXQgZm9ybWF0IGlzIFlBTUwuICAKTm8gb3V0cHV0IG1lYW5zIHRoYXQgdGhlIGRpZmYgaXMgZW1wdHksIG9yLCBpbiBvdGhlciB3b3JkcywgdGhlcmUgYXJlIG5vIGNoYW5nZXMuCgojIyMgT3BlbkFQSSBkaWZmIG9mIGxvY2FsIGZpbGVzIGluIFRleHQvTWFya2Rvd24gCmBgYGJhc2gKb2FzZGlmZiBkaWZmIGRhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGRhdGEvb3BlbmFwaS10ZXN0Mi55YW1sIC1mIHRleHQKYGBgClRoZSBUZXh0L01hcmtkb3duIGRpZmYgcmVwb3J0IHByb3ZpZGVzIGEgc2ltcGxpZmllZCBhbmQgcGFydGlhbCB2aWV3IG9mIHRoZSBjaGFuZ2VzLiAgClRvIHZpZXcgYWxsIGRldGFpbHMsIHVzZSB0aGUgZGVmYXVsdCBmb3JtYXQ6IFlBTUwuICAKSWYgeW91J2QgbGlrZSB0byBzZWUgYWRkaXRpb25hbCBkZXRhaWxzIGluIHRoZSB0ZXh0L21hcmtkb3duIHJlcG9ydCwgcGxlYXNlIHN1Ym1pdCBhIFtmZWF0dXJlIHJlcXVlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmL2lzc3Vlcy9uZXc/YXNzaWduZWVzPSZsYWJlbHM9JnRlbXBsYXRlPWZlYXR1cmVfcmVxdWVzdC5tZCZ0aXRsZT0pLgoKIyMjIE9wZW5BUEkgZGlmZiBvZiBsb2NhbCBmaWxlcyBpbiBIVE1MCmBgYGJhc2gKb2FzZGlmZiBkaWZmIGRhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGRhdGEvb3BlbmFwaS10ZXN0Mi55YW1sIC1mIGh0bWwgCmBgYApUaGUgSFRNTCBkaWZmIHJlcG9ydCBwcm92aWRlcyBhIHNpbXBsaWZpZWQgYW5kIHBhcnRpYWwgdmlldyBvZiB0aGUgY2hhbmdlcy4gIApUbyB2aWV3IGFsbCBkZXRhaWxzLCB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0OiBZQU1MLiAgCklmIHlvdSdkIGxpa2UgdG8gc2VlIGFkZGl0aW9uYWwgZGV0YWlscyBpbiB0aGUgSFRNTCByZXBvcnQsIHBsZWFzZSBzdWJtaXQgYSBbZmVhdHVyZSByZXF1ZXN0XShodHRwczovL2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZi9pc3N1ZXMvbmV3P2Fzc2lnbmVlcz0mbGFiZWxzPSZ0ZW1wbGF0ZT1mZWF0dXJlX3JlcXVlc3QubWQmdGl0bGU9KS4KCgojIyMgT3BlbkFQSSBkaWZmIGZvciByZW1vdGUgZmlsZXMgb3ZlciBodHRwL3MKYGBgYmFzaApvYXNkaWZmIGRpZmYgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sIC1mIHRleHQKYGBgCgojIyMgQnJlYWtpbmcgY2hhbmdlcwpgYGBiYXNoCm9hc2RpZmYgYnJlYWtpbmcgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sCmBgYAoKIyMjIEJyZWFraW5nIGNoYW5nZXMgYXMgWUFNTApgYGBiYXNoCm9hc2RpZmYgYnJlYWtpbmcgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sIC1mIHlhbWwKYGBgCgojIyMgQnJlYWtpbmcgY2hhbmdlcyBhY3Jvc3MgbXVsdGlwbGUgc3BlY3Mgd2l0aCBnbG9icwpgYGBiYXNoCm9hc2RpZmYgYnJlYWtpbmcgImRhdGEvY29tcG9zZWQvYmFzZS8qLnlhbWwiICJkYXRhL2NvbXBvc2VkL3JldmlzaW9uLyoueWFtbCIgLWMKYGBgCgojIyMgRmFpbCB3aXRoIGV4aXQgY29kZSAxIGlmIGFueSBFUlItbGV2ZWwgYnJlYWtpbmcgY2hhbmdlcyBhcmUgZm91bmQKYGBgYmFzaApvYXNkaWZmIGJyZWFraW5nICJkYXRhL2NvbXBvc2VkL2Jhc2UvKi55YW1sIiAiZGF0YS9jb21wb3NlZC9yZXZpc2lvbi8qLnlhbWwiIC1jIC1vIEVSUgpgYGAKCiMjIyBGYWlsIHdpdGggZXhpdCBjb2RlIDEgaWYgYW55IGNoYW5nZSBpcyBmb3VuZApgYGBiYXNoCm9hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dCAtbwpgYGAKCiMjIyBPcGVuQVBJIGNoYW5nZWxvZwpgYGBiYXNoCm9hc2RpZmYgY2hhbmdlbG9nIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QxLnlhbWwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDMueWFtbApgYGAKCiMjIyBPcGVuQVBJIGRpZmYgZm9yIGVuZHBvaW50cyBjb250YWluaW5nICIvYXBpIiBpbiB0aGUgcGF0aApgYGBiYXNoCm9hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dCAtcCAiL2FwaSIKYGBgCkZpbHRlcnMgYXJlIGFwcGxpZWQgcmVjdXJzaXZlbHkgYXQgYWxsIGxldmVscy4gRm9yIGV4YW1wbGUsIGlmIGEgcGF0aCBjb250YWlucyBhIFtjYWxsYmFja10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9jYWxsYmFja3MvKSwgdGhlIGZpbHRlciB3aWxsIGJlIGFwcGxpZWQgYm90aCB0byB0aGUgcGF0aCBpdHNlbGYgYW5kIHRvIHRoZSBjYWxsYmFjayBwYXRoLiBUbyBpbmNsdWRlIHN1Y2ggYSBuZXN0ZWQgY2hhbmdlLCB1c2UgYSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBjb250YWlucyBib3RoIHBhdGhzLCBmb3IgZXhhbXBsZSBgYGAtZmlsdGVyICJwYXRofGNhbGxiYWNrLXBhdGgiYGBgCgojIyMgRXhjbHVkZSBwYXRocyBhbmQgb3BlcmF0aW9ucyB3aXRoIGV4dGVuc2lvbiAieC1iZXRhIgpgYGBiYXNoCm9hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dCAtLWZpbHRlci1leHRlbnNpb24gIngtYmV0YSIKYGBgIApOb3RlczoKMS4gW09wZW5BUEkgRXh0ZW5zaW9uc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9vcGVuYXBpLWV4dGVuc2lvbnMvKSBjYW4gYmUgZGVmaW5lZCBib3RoIGF0IHRoZSBbcGF0aF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9wYXRocy1hbmQtb3BlcmF0aW9ucy8pIGxldmVsIGFuZCBhdCB0aGUgW29wZXJhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9wYXRocy1hbmQtb3BlcmF0aW9ucy8pIGxldmVsLiBCb3RoIGFyZSBtYXRjaGVkIGFuZCBleGNsdWRlZCB3aXRoIHRoaXMgZmxhZy4KMi4gSWYgYSBwYXRoIG9yIG9wZXJhdGlvbiBoYXMgYSBtYXRjaGluZyBleHRlbnNpb24gb25seSBpbiBvbmUgb2YgdGhlIHNwZWNzLCBidXQgbm90IGluIHRoZSBvdGhlciwgaXQgd2lsbCBhcHBlYXIgYXMgQWRkZWQgb3IgRGVsZXRlZC4KCiMjIyBJZ25vcmUgY2hhbmdlcyB0byBkZXNjcmlwdGlvbiBhbmQgZXhhbXBsZXMKYGBgYmFzaApvYXNkaWZmIGRpZmYgZGF0YS9vcGVuYXBpLXRlc3QxLnlhbWwgZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLS1leGNsdWRlLWVsZW1lbnRzIGRlc2NyaXB0aW9uLGV4YW1wbGVzIC1mIHRleHQKYGBgIAoKIyMjIERpc3BsYXkgY2hhbmdlIHN1bW1hcnkKYGBgYmFzaApvYXNkaWZmIHN1bW1hcnkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sCmBgYAoKIyMjIE9wZW5BUEkgRGlmZiB3aXRoIERvY2tlcgpUbyBydW4gd2l0aCBkb2NrZXIganVzdCByZXBsYWNlIHRoZSBgb2FzZGlmZmAgY29tbWFuZCBieSBgZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmZgLCBmb3IgZXhhbXBsZToKCmBgYGJhc2gKZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmYgZGlmZiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UdWZpbi9vYXNkaWZmL21haW4vZGF0YS9vcGVuYXBpLXRlc3QzLnlhbWwgLWYgdGV4dApgYGAKCiMjIyBCcmVha2luZyBjaGFuZ2VzIHdpdGggRG9ja2VyCmBgYGJhc2gKZG9ja2VyIHJ1biAtLXJtIC10IHR1ZmluL29hc2RpZmYgYnJlYWtpbmcgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1R1ZmluL29hc2RpZmYvbWFpbi9kYXRhL29wZW5hcGktdGVzdDEueWFtbCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVHVmaW4vb2FzZGlmZi9tYWluL2RhdGEvb3BlbmFwaS10ZXN0My55YW1sCmBgYAoKIyMjIENvbXBhcmluZyBsb2NhbCBmaWxlcyB3aXRoIERvY2tlcgpgYGBiYXNoCmRvY2tlciBydW4gLS1ybSAtdCAtdiAkKHB3ZCkvZGF0YTovZGF0YTpybyB0dWZpbi9vYXNkaWZmIGRpZmYgL2RhdGEvb3BlbmFwaS10ZXN0MS55YW1sIC9kYXRhL29wZW5hcGktdGVzdDMueWFtbApgYGAKClJlcGxhY2UgYCQocHdkKS9kYXRhYCBieSB0aGUgcGF0aCB0aGF0IGNvbnRhaW5zIHlvdXIgZmlsZXMuICAKTm90ZSB0aGF0IHRoZSBzcGVjIHBhdGhzIG11c3QgYmVnaW4gd2l0aCBgL2AuICAKCiMjIE9wZW5BUEkgRGlmZiBhbmQgQnJlYWtpbmctQ2hhbmdlcyBhcyBhIFNlcnZpY2UKWW91IGNhbiB1c2Ugb2FzZGlmZiBhcyBhIHNlcnZpY2UgbGlrZSB0aGlzOgpgYGAKY3VybCAtWCBQT1NUIC1GIGJhc2U9QHNwZWMxLnlhbWwgLUYgcmV2aXNpb249QHNwZWMyLnlhbWwgaHR0cHM6Ly9hcGkub2FzZGlmZi5jb20vZGlmZgpgYGAKT3IsIHRvIHNlZSBicmVha2luZyBjaGFuZ2VzOgpgYGAKY3VybCAtWCBQT1NUIC1GIGJhc2U9QHNwZWMxLnlhbWwgLUYgcmV2aXNpb249QHNwZWMyLnlhbWwgaHR0cHM6Ly9hcGkub2FzZGlmZi5jb20vYnJlYWtpbmctY2hhbmdlcwpgYGAKU2VydmljZSBzb3VyY2UgY29kZTogaHR0cHM6Ly9naXRodWIuY29tL29hc2RpZmYvb2FzZGlmZi1zZXJ2aWNlCgojIyBEaWZmIE91dHB1dCBGb3JtYXRzClRoZSBkZWZhdWx0IGRpZmYgb3V0cHV0IGZvcm1hdCwgWUFNTCwgcHJvdmlkZXMgYSBmdWxsIHZpZXcgb2YgYWxsIGRpZmYgZGV0YWlscy4gIApOb3RlIHRoYXQgbm8gb3V0cHV0IGluIHRoZSBZQU1MIGZvcm1hdCBzaWduaWZpZXMgdGhhdCB0aGUgZGlmZiBpcyBlbXB0eSwgb3IsIGluIG90aGVyIHdvcmRzLCB0aGVyZSBhcmUgbm8gY2hhbmdlcy4gIApPdGhlciBmb3JtYXRzOiB0ZXh0LCBtYXJrZG93biwgYW5kIEhUTUwsIGFyZSBkZXNpZ25lZCB0byBiZSBtb3JlIHVzZXItZnJpZW5kbHkgYnkgcHJvdmlkaW5nIG9ubHkgdGhlIG1vc3QgaW1wb3J0YW50IHBhcnRzIG9mIHRoZSBkaWZmLCBpbiBhIHNpbXBsaWZpZWQgZm9ybWF0LiAgClRoZSBKU09OIGZvcm1hdCB3b3JrcyBvbmx5IHdpdGggYC1leGNsdWRlLWVsZW1lbnRzIGVuZHBvaW50c2AgYW5kIGlzIGludGVuZGVkIGFzIGEgd29ya2Fyb3VuZCBmb3IgWUFNTCBjb21wbGV4IG1hcHBpbmcga2V5cyB3aGljaCBhcmVuJ3Qgc3VwcG9ydGVkIGJ5IHNvbWUgbGlicmFyaWVzIChzZWUgY29tbWVudCBhdCBlbmQgb2YgbmV4dCBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMpLgpJZiB5b3Ugd2lzaCB0byBpbmNsdWRlIGFkZGl0aW9uYWwgZGV0YWlscyBpbiBub24tWUFNTCBmb3JtYXRzLCBwbGVhc2Ugb3BlbiBhbiBpc3N1ZS4KCiMjIFBhdGhzIHZzLiBFbmRwb2ludHMKT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGhhcyBhIGhpZXJhcmNoaWNhbCBtb2RlbCBvZiBbUGF0aHNdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNwYXRocy1vYmplY3QpIGFuZCBbT3BlcmF0aW9uc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI29wZXJhdGlvbi1vYmplY3QpIChIVFRQIG1ldGhvZHMpLiAgCm9hc2RpZmYgcmVzcGVjdHMgdGhpcyBoaWVyYXJjaHkgYW5kIGRpc3BsYXlzIGEgaGllcmFyY2hpY2FsIGRpZmYgd2l0aCBwYXRoIGNoYW5nZXM6IGFkZGVkLCBkZWxldGVkIGFuZCBtb2RpZmllZCwgYW5kIHdpdGhpbiB0aGUgbGF0dGVyLCAibW9kaWZpZWQiIHNlY3Rpb24sIGFub3RoZXIgc2V0IG9mIG9wZXJhdGlvbiBjaGFuZ2VzOiBhZGRlZCwgZGVsZXRlZCBhbmQgbW9kaWZpZWQuIEZvciBleGFtcGxlOgpgYGB5YW1sCnBhdGhzOgogICAgZGVsZXRlZDoKICAgICAgICAtIC9yZWdpc3RlcgogICAgICAgIC0gL3N1YnNjcmliZQogICAgbW9kaWZpZWQ6CiAgICAgICAgL2FwaS97ZG9tYWlufS97cHJvamVjdH0vYmFkZ2VzL3NlY3VyaXR5LXNjb3JlOgogICAgICAgICAgICBvcGVyYXRpb25zOgogICAgICAgICAgICAgICAgbW9kaWZpZWQ6CiAgICAgICAgICAgICAgICAgICAgR0VUOgpgYGAKb2FzZGlmZiBhbHNvIG91dHB1dHMgYW4gYWx0ZXJuYXRlIHNpbXBsaWZpZWQgZGlmZiBwZXIgImVuZHBvaW50IiB3aGljaCBpcyBhIGNvbWJpbmF0aW9uIG9mIFBhdGggKyBPcGVyYXRpb24sIGZvciBleGFtcGxlOgpgYGB5YW1sCmVuZHBvaW50czoKICAgIGRlbGV0ZWQ6CiAgICAgICAgLSBtZXRob2Q6IFBPU1QKICAgICAgICAgIHBhdGg6IC9zdWJzY3JpYmUKICAgICAgICAtIG1ldGhvZDogUE9TVAogICAgICAgICAgcGF0aDogL3JlZ2lzdGVyCiAgICBtb2RpZmllZDoKICAgICAgICA/ICAgbWV0aG9kOiBHRVQKICAgICAgICAgICAgcGF0aDogL2FwaS97ZG9tYWlufS97cHJvamVjdH0vYmFkZ2VzL3NlY3VyaXR5LXNjb3JlCiAgICAgICAgOiAgIHRhZ3M6CiAgICAgICAgICAgICAgICBkZWxldGVkOgogICAgICAgICAgICAgICAgICAgIC0gc2VjdXJpdHkKYGBgClRoZSBtb2RpZmllZCBlbmRwb2ludHMgc2VjdGlvbiBoYXMgdHdvIGl0ZW1zIHBlciBrZXksIG1ldGhvZCBhbmQgcGF0aCwgdGhpcyBpcyBjYWxsZWQgYSBbY29tcGxleCBtYXBwaW5nIGtleV0oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzM5ODczMTYvd2hhdC1pcy1hLWNvbXBsZXgtbWFwcGluZy1rZXktaW4teWFtbCkgaW4gWUFNTC4gIApTb21lIFlBTUwgbGlicmFyaWVzIGRvbid0IHN1cHBvcnQgY29tcGxleCBtYXBwaW5nIGtleXM6Ci0gcHl0aG9uIFB5WUFNTDogc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9UdWZpbi9vYXNkaWZmL2lzc3Vlcy85NCNpc3N1ZWNvbW1lbnQtMTA4NzQ2ODQ1MAotIGdvbGFuZyBnb3BrZy5pbi95YW1sLnYzIGZhaWxzIHRvIHVubWFyc2hhbCB0aGUgb2FzZGlmZiBvdXRwdXQuIFRoaXMgcGFja2FnZSBvZmZlcnMgYSBzb2x1dGlvbjogaHR0cHM6Ly9naXRodWIuY29tL3RsaXJvbi95YW1sa2V5cwoKV2hlbiB1c2luZyBvdXRwdXQgZm9ybWF0IGBqc29uYCwgb2FzZGlmZiBleGNsdWRlcyBgZW5kcG9pbnRzYCBhdXRvbWF0aWNhbGx5LgoKIyMgQ29tcG9zZWQgTW9kZQpDb21wb3NlZCBtb2RlIGNvbXBhcmVzIHR3byBjb2xsZWN0aW9ucyBvZiBPcGVuQVBJIHNwZWNzIGluc3RlYWQgb2YgYSBwYWlyIG9mIHNwZWNzIGluIHRoZSBkZWZhdWx0IG1vZGUuClRoZSBjb2xsZWN0aW9ucyBhcmUgc3BlY2lmaWVkIHVzaW5nIGEgW2dsb2JdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dsb2JfKHByb2dyYW1taW5nKSkuClRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdXIgQVBJcyBhcmUgZGVmaW5lZCBhY3Jvc3MgbXVsdGlwbGUgZmlsZXMsIGZvciBleGFtcGxlLCB3aGVuIG11bHRpcGxlIHNlcnZpY2VzLCBlYWNoIG9uZSB3aXRoIGl0cyBvd24gc3BlYywgYXJlIGV4cG9zZWQgYmVoaW5kIGFuIEFQSSBnYXRld2F5LCBhbmQgeW91IHdhbnQgdG8gY2hlY2sgY2hhbmdlcyBhY3Jvc3MgYWxsIHRoZSBzcGVjcyBhdCBvbmNlLgoKTm90ZXM6IAoxLiBDb21wb3NlZCBtb2RlIGNvbXBhcmVzIG9ubHkgW3BhdGhzIGFuZCBlbmRwb2ludHNdKCNwYXRocy12cy1lbmRwb2ludHMpLCBvdGhlciByZXNvdXJjZXMgYXJlIGNvbXBhcmVkIG9ubHkgaWYgcmVmZXJlbmNlZCBmcm9tIHRoZSBwYXRocyBvciBlbmRwb2ludHMuCjIuIENvbXBvc2VkIG1vZGUgZG9lc24ndCBzdXBwb3J0IFtQYXRoIFByZWZpeCBNb2RpZmljYXRpb25dKCNwYXRoLXByZWZpeC1tb2RpZmljYXRpb24pIAozLiBMZWFybiBtb3JlIGFib3V0IGhvdyBvYXNkaWZmIFttYXRjaGVzIGVuZHBvaW50cyB0byBlYWNoIG90aGVyXShNQVRDSElORy1FTkRQT0lOVFMubWQpCgojIyBQYXRoIFByZWZpeCBNb2RpZmljYXRpb24KU29tZXRpbWVzIHBhdGhzIHByZWZpeGVzIG5lZWQgdG8gYmUgbW9kaWZpZWQsIGZvciBleGFtcGxlLCB0byBjcmVhdGUgYSBuZXcgdmVyc2lvbjoKLSAvYXBpL3YxLy4uLgotIC9hcGkvdjIvLi4uCgpvYXNkaWZmIGFsbG93cyBjb21wYXJpc29uIG9mIEFQSSBzcGVjaWZpY2F0aW9ucyB3aXRoIG1vZGlmaWVkIHByZWZpeGVzIGJ5IHN0cmlwcGluZyBhbmQvb3IgcHJlcGVuZGluZyBwYXRoIHByZWZpeGVzLiAgCkluIHRoZSBleGFtcGxlIGFib3ZlIHlvdSBjb3VsZCBjb21wYXJlIHRoZSBmaWxlcyBhcyBmb2xsb3dzOgpgYGAKb2FzZGlmZiBkaWZmIG9yaWdpbmFsLnlhbWwgbmV3LnlhbWwgLS1zdHJpcC1wcmVmaXgtYmFzZSAvYXBpL3YxIC0tcHJlZml4LWJhc2UgL2FwaS92MgpgYGAKb3IKYGBgCm9hc2RpZmYgZGlmZiBvcmlnaW5hbC55YW1sIG5ldy55YW1sIC0tc3RyaXAtcHJlZml4LWJhc2UgL2FwaS92MSAtLXN0cmlwLXByZWZpeC1yZXZpc2lvbiAvYXBpL3YyCmBgYApOb3RlIHRoYXQgc3RyaXBwaW5nIHByZWNlZGVzIHByZXBlbmRpbmcuCgojIyBQYXRoIFBhcmFtZXRlciBSZWFuYW1pbmcKU29tZXRpbWVzIGRldmVsb3BlcnMgZGVjaWRlIHRvIGNoYW5nZSBuYW1lcyBvZiBwYXRoIHBhcmFtZXRlcnMsIGZvciBleGFtcGxlLCBpbiBvcmRlciB0byBmb2xsb3cgYSBjZXJ0YWluIG5hbWluZyBjb252ZW50aW9uLiAgClNlZSBbdGhpc10oTUFUQ0hJTkctRU5EUE9JTlRTLm1kKSB0byBsZWFybiBtb3JlIGFib3V0IGhvdyBvYXNkaWZmIHN1cHBvcnRzIHBhdGggcGFyYW1ldGVyIHJlbmFtaW5nLgoKIyMgRXhjbHVkaW5nIFNwZWNpZmljIEtpbmRzIG9mIENoYW5nZXMgCllvdSBjYW4gdXNlIHRoZSBgLS1leGNsdWRlLWVsZW1lbnRzYCBmbGFnIHRvIGV4Y2x1ZGUgY2VydGFpbiBraW5kcyBvZiBjaGFuZ2VzOgotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIGV4YW1wbGVzYCB0byBleGNsdWRlIFtFeGFtcGxlc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vI2V4YW1wbGUtb2JqZWN0KQotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIGRlc2NyaXB0aW9uYCB0byBleGNsdWRlIGRlc2NyaXB0aW9uIGZpZWxkcwotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIHRpdGxlYCB0byBleGNsdWRlIHRpdGxlIGZpZWxkcwotIFVzZSBgLS1leGNsdWRlLWVsZW1lbnRzIHN1bW1hcnlgIHRvIGV4Y2x1ZGUgc3VtbWFyeSBmaWVsZHMKLSBVc2UgYC0tZXhjbHVkZS1lbGVtZW50cyBlbmRwb2ludHNgIHRvIGV4Y2x1ZGUgdGhlIFtlbmRwb2ludHMgZGlmZl0oI3BhdGhzLXZzLWVuZHBvaW50cykKCllvdSBjYW4gaWdub3JlIG11bHRpcGxlIGVsZW1lbnRzIHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleGNsdWRlZCBlbGVtZW50cyBhcyBpbiBbdGhpcyBleGFtcGxlXSgjaWdub3JlLWNoYW5nZXMtdG8tZGVzY3JpcHRpb24tYW5kLWV4YW1wbGVzKS4gIApOb3RlIHRoYXQgW0V4dGVuc2lvbnNdKGh0dHBzOi8vc3dhZ2dlci5pby9zcGVjaWZpY2F0aW9uLyNzcGVjaWZpY2F0aW9uLWV4dGVuc2lvbnMpIGFyZSBhbHdheXMgZXhjbHVkZWQgZnJvbSB0aGUgZGlmZi4KCiMjIEV4Y2x1ZGluZyBTcGVjaWZpYyBFbmRwb2ludHMKWW91IGNhbiBmaWx0ZXIgZW5kcG9pbnRzIGluIHR3byB3YXlzOgoxLiBCeSBwYXRoIG5hbWU6IHVzZSB0aGUgYC0tbWF0Y2gtcGF0aGAgb3B0aW9uIHRvIGV4Y2x1ZGUgcGF0aHMgdGhhdCBkb24ndCBtYXRjaCB0aGUgZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLCBzZWUgW2V4YW1wbGVdKCNvcGVuYXBpLWRpZmYtZm9yLWVuZHBvaW50cy1jb250YWluaW5nLWFwaS1pbi10aGUtcGF0aCkKMi4gQnkgZXh0ZW5zaW9uOiB1c2UgdGhlIGAtLWZpbHRlci1leHRlbnNpb25gIG9wdGlvbiB0byBleGNsdWRlIHBhdGhzIGFuZCBvcGVyYXRpb25zIHdpdGggYW4gT3BlbkFQSSBFeHRlbnNpb24gbWF0Y2hpbmcgdGhlIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbiwgc2VlIFtleGFtcGxlXSgjZXhjbHVkZS1wYXRocy1hbmQtb3BlcmF0aW9ucy13aXRoLWV4dGVuc2lvbi14LWJldGEpCgojIyBOb3RlcyBmb3IgR28gRGV2ZWxvcGVycwojIyMgRW1iZWRkaW5nIG9hc2RpZmYgaW50byB5b3VyIHByb2dyYW0KYGBgZ28KZGlmZi5HZXQoJmRpZmYuQ29uZmlne30sIHNwZWMxLCBzcGVjMikKYGBgCgojIyMgQ29kZSBFeGFtcGxlcwotIFtkaWZmXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS90dWZpbi9vYXNkaWZmL2RpZmYjZXhhbXBsZS1HZXQpCi0gW2JyZWFraW5nIGNoYW5nZXNdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3R1ZmluL29hc2RpZmYvZGlmZiNleGFtcGxlLUdldFBhdGhzRGlmZikKCgojIyMgT3BlbkFQSSBSZWZlcmVuY2VzCm9hc2RpZmYgZXhwZWN0cyBbT3BlbkFQSSBSZWZlcmVuY2VzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL3VzaW5nLXJlZi8pIHRvIGJlIHJlc29sdmVkLiAgClJlZmVyZW5jZXMgYXJlIG5vcm1hbGx5IHJlc29sdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiB5b3UgbG9hZCB0aGUgc3BlYy4gSW4gb3RoZXIgY2FzZXMgeW91IGNhbiByZXNvbHZlIHJlZnMgdXNpbmcgW0xvYWRlci5SZXNvbHZlUmVmc0luXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMjTG9hZGVyLlJlc29sdmVSZWZzSW4pLgoKIyMgUmVxdWVzdHMgZm9yIGVuaGFuY2VtZW50cwoxLiBPcGVuQVBJIDMuMSBzdXBwb3J0OiBzZWUgaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYvaXNzdWVzLzUyCgpJZiB5b3UgaGF2ZSBvdGhlciBpZGVhcywgcGxlYXNlIFtsZXQgdXMga25vd10oaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYvZGlzY3Vzc2lvbnMvbmV3P2NhdGVnb3J5PWlkZWFzKS4KCiMjIFRlbGVtZXRyeQpUaGUgb2FzZGlmZiB0b29sIGNvbGxlY3RzIGRhdGEgaW4gb3JkZXIgdG8gaGVscCB1cywgdGhlIGRldmVsb3BtZW50IHRlYW0sIHVuZGVyc3RhbmQgaG93IGl0IGlzIGJlaW5nIHVzZWQgYW5kIHdoYXQgd2UgY2FuIHRvIGRvIHRvIGNvbnRpbnVlIGltcHJvdmluZyBpdC4gIApXZSB1c2UgdGhpcyBkYXRhIGluIGNvbXBsaWFuY2Ugd2l0aCBvdXIgW3ByaXZhY3kgcG9saWN5XShodHRwczovL3d3dy5vYXNkaWZmLmNvbS9hYm91dC9wcml2YWN5LXBvbGljeSkuICAKVG8gZGlzYWJsZSB0ZWxlbWV0cnksIGFkZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGU6IGBPQVNESUZGX05PX1RFTEVNRVRSWT0xYAoKIyMgQ3JlZGl0cwpUaGlzIHByb2plY3QgcmVsaWVzIG9uIHRoZSBleGNlbGxlbnQgaW1wbGVtZW50YXRpb24gb2YgT3BlbkFQSSAzLjAgZm9yIEdvOiBba2luLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpLgoK + readmeEtag: '"d28865a240f392692b05ae6b392bba2b6cd6b4d018a91473e522ee01898cfcde"' + readmeLastModified: Wed, 23 Aug 2023 22:55:16 GMT repositoryId: 337689065 description: OpenAPI Diff and Breaking Changes created: '2021-02-10T10:28:36Z' - updated: '2023-08-22T21:37:21Z' + updated: '2023-08-23T08:58:41Z' language: Go archived: false - stars: 280 - watchers: 8 + stars: 282 + watchers: 9 forks: 32 owner: Tufin logo: https://avatars.githubusercontent.com/u/5352131?v=4 license: Apache-2.0 - repoEtag: '"b19cf7343e3f286eec648673b9340694edd26b9546e09abcea93f064862de090"' - repoLastModified: Tue, 22 Aug 2023 21:37:21 GMT + repoEtag: '"cfc2c204abaef5952959d305a407c0b1e6748fac98fd5ec686f97e2d174f55a7"' + repoLastModified: Wed, 23 Aug 2023 08:58:41 GMT foundInMaster: true name: oasdiff language: Go @@ -69,17 +69,17 @@ changes, publish accurate documentation and improve the design of your APIs. created: '2018-03-02T17:02:50Z' - updated: '2023-08-22T18:14:44Z' + updated: '2023-08-23T14:54:39Z' language: TypeScript archived: false - stars: 1183 + stars: 1184 watchers: 11 forks: 65 owner: opticdev logo: https://avatars.githubusercontent.com/u/34556970?v=4 license: MIT - repoEtag: '"27709e33db5c6456a688c1024f5730139f9a7a36c18ad374a9d5a057bf9539ee"' - repoLastModified: Tue, 22 Aug 2023 18:14:44 GMT + repoEtag: '"60a8c0412059c7ac8aaf84c67d24b8b494e0d1e503db52b0a7642f8bb06dad14"' + repoLastModified: Wed, 23 Aug 2023 14:54:39 GMT foundInMaster: true id: 8c3d08406ca659662808d51ddc10b4e4 v3_1: true @@ -210,11 +210,11 @@ archived: false stars: 164 watchers: 20 - forks: 72 + forks: 71 owner: oasis-tcs logo: https://avatars.githubusercontent.com/u/20116735?v=4 license: NOASSERTION - repoEtag: '"9fdcc58ace733c289e1697a29d881aa0effe0dbf507cee91cfba2a7575c8a52d"' + repoEtag: '"3365141e95a0059e4e48067e543174c536b9c0886d0691d2cbcc729d0decdd2d"' repoLastModified: Wed, 09 Aug 2023 14:33:19 GMT foundInMaster: true v3_1: true @@ -343,17 +343,17 @@ Convert API descriptions between popular formats such as OpenAPI(fka Swagger), RAML, API Blueprint, WADL, etc. created: '2015-05-05T18:30:05Z' - updated: '2023-08-14T13:31:18Z' + updated: '2023-08-23T07:21:32Z' language: JavaScript archived: false - stars: 1023 + stars: 1022 watchers: 21 - forks: 162 + forks: 163 owner: LucyBot-Inc logo: https://avatars.githubusercontent.com/u/26313641?v=4 license: MIT - repoEtag: '"c064f8472467e71fa43b9e6931ce0c2fbb0da1627c226a6aeb1002a86b6d24ed"' - repoLastModified: Mon, 14 Aug 2023 13:31:18 GMT + repoEtag: '"e2277c935fe39fd8722443c103ddfb380fe10f58fbfbde6edfddb75df2fe6227"' + repoLastModified: Wed, 23 Aug 2023 07:21:32 GMT foundInMaster: true id: dccbe92257187d6d136bb4b5f304d6fe - source: https://openapi.tools/ @@ -558,7 +558,7 @@ owner: Rhosys logo: https://avatars.githubusercontent.com/u/35577654?v=4 license: Apache-2.0 - repoEtag: '"c50a5ab5abf98bea6211307f019c402cb47fb2e0c97b98b81eb8637e0d951c4b"' + repoEtag: '"938bc9db16cfaaf65b87f71d1d8f8c66c3956ac37c5361f21a54a5963a918a86"' repoLastModified: Tue, 22 Aug 2023 03:32:46 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-23T01:29:27Z' + updated: '2023-08-24T02:42:24Z' language: TypeScript archived: false - stars: 20792 + stars: 20802 watchers: 285 forks: 2217 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"00a7e719f81dd736600832efe21b6bc0db2c64be60781aa905b3aab45d64d6c6"' - repoLastModified: Wed, 23 Aug 2023 01:29:27 GMT + repoEtag: '"231359099f87d2fedee48ae8518c95b1ca49f281a06c1df8995fd3959993b56b"' + repoLastModified: Thu, 24 Aug 2023 02:42:24 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-22T16:39:49Z' + updated: '2023-08-23T12:03:47Z' language: JavaScript archived: false - stars: 1345 + stars: 1347 watchers: 17 forks: 308 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT - repoEtag: '"0cb87a6d76e1228ed4b395c26274db577192fc6851b5891c8956222a598ec3b0"' - repoLastModified: Tue, 22 Aug 2023 16:39:49 GMT + repoEtag: '"c891d667bde0d9b389cae3f2a92c50cc4c21c4bfc7e011ef862e986a280af48d"' + repoLastModified: Wed, 23 Aug 2023 12:03:47 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-22T11:10:18Z' + updated: '2023-08-23T11:27:20Z' language: Go archived: false - stars: 3898 + stars: 3900 watchers: 33 forks: 675 owner: deepmap logo: https://avatars.githubusercontent.com/u/47459865?v=4 license: Apache-2.0 - repoEtag: '"635dacaad39127bd64602357009705ca52cf28b8ab038bb5411e6239278ff33c"' - repoLastModified: Tue, 22 Aug 2023 11:10:18 GMT + repoEtag: '"9e5486694d3834c0b04be0e37075e68541fd91d851bbb8018d3c32094c2e0825"' + repoLastModified: Wed, 23 Aug 2023 11:27:20 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-22T23:11:50Z' + updated: '2023-08-23T23:32:28Z' language: Java archived: false - stars: 17357 - watchers: 216 - forks: 5543 + stars: 17367 + watchers: 214 + forks: 5547 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"473bee1f98f38aaa70eb8333df0ab4da8881fc4c25ef810c7ffd2f7f01819265"' - repoLastModified: Tue, 22 Aug 2023 23:11:50 GMT + repoEtag: '"d1c6b537006d095392d390cf17e2a8995150f85e54f10ccbddad6f954a0cda2c"' + repoLastModified: Wed, 23 Aug 2023 23:32:28 GMT foundInMaster: true id: 0418f8afcd0196c648d1a46c0c5c20d1 v3_1_link: https://github.com/OpenAPITools/openapi-generator/issues/9083 @@ -943,7 +943,7 @@ owner: openapi-json-schema-tools logo: https://avatars.githubusercontent.com/u/114849992?v=4 license: Apache-2.0 - repoEtag: '"e39c49c8981952e447c00136fc551ea88256374e775bc149d830a691bf5c6dce"' + repoEtag: '"ab4a99289489f57c5d57bdb38b34755dc4a45d8392638af98056452c17256d1d"' repoLastModified: Mon, 21 Aug 2023 17:10:43 GMT category: - Code Generators @@ -985,7 +985,7 @@ repositoryId: 323665366 description: OpenAPI based HTTP Client code generator created: '2020-12-22T15:35:49Z' - updated: '2023-08-22T14:27:00Z' + updated: '2023-08-23T21:16:36Z' language: C# archived: false stars: 787 @@ -994,8 +994,8 @@ owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"fa0a4bda0b4ee70eb00edeefb63681d684f50026c6e236899a90cf852b20459c"' - repoLastModified: Tue, 22 Aug 2023 14:27:00 GMT + repoEtag: '"11056352dd885b9c32dfe6aad08ab81eee081c64b6d406a15329215be1ced1c8"' + repoLastModified: Wed, 23 Aug 2023 21:16:36 GMT foundInMaster: true - source: https://openapi.tools/ name: FabriKt @@ -1032,7 +1032,7 @@ owner: cjbooms logo: https://avatars.githubusercontent.com/u/868640?v=4 license: Apache-2.0 - repoEtag: '"2630fdc6e649f32d2273bcc8dece8b91e2c7e077c2e8919fdd0d897a1bd1c78c"' + repoEtag: '"4d4c3907d1ed22832156d29ca5cca7b4a1468eb16a7d8a61620909ae2679043e"' repoLastModified: Thu, 20 Jul 2023 14:10:01 GMT foundInMaster: true - source: @@ -1156,7 +1156,7 @@ owner: 42Crunch logo: https://avatars.githubusercontent.com/u/25365245?v=4 license: AGPL-3.0 - repoEtag: '"553ff0ea85e97019b29e6dcfa2c66488bcd25caab03c5ae224a807ca712b42e3"' + repoEtag: '"ceba47c61569df64081983ecdb513b654fd292c0800884fd9445bd3ebdd9f676"' repoLastModified: Tue, 22 Aug 2023 08:27:00 GMT foundInMaster: true id: 782ecbb10f1ff8ac9685e0ed24e52e58 @@ -1247,17 +1247,17 @@ repositoryId: 19390712 description: Swagger Editor created: '2014-05-02T22:47:10Z' - updated: '2023-08-22T21:40:52Z' + updated: '2023-08-23T15:52:03Z' language: JavaScript archived: false - stars: 8306 + stars: 8307 watchers: 260 - forks: 2185 + forks: 2186 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"cef75c29f19020eec0e49fdd13e49a275fe4a4fb9f1f0b20f0164fc20dfc7ec2"' - repoLastModified: Tue, 22 Aug 2023 21:40:52 GMT + repoEtag: '"ef0079c9dcf8724a1b9736b1e9d7c5caef23d0d1643019cd5fc2a01a88353604"' + repoLastModified: Wed, 23 Aug 2023 15:52:03 GMT foundInMaster: true id: 951cf61d12c812ef9b201ad76b5d278d v3_1: true @@ -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-23T01:00:02Z' + updated: '2023-08-23T19:04:09Z' language: TypeScript archived: false - stars: 3687 + stars: 3689 watchers: 52 forks: 311 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"06603f7041147b5426796787cc6c60c92fd372bc7b08f785f1da4b1b0f94f552"' - repoLastModified: Wed, 23 Aug 2023 01:00:02 GMT + repoEtag: '"16060520605ad4d99aef6637690900efe60221cbac9fae3182a68593e005ea81"' + repoLastModified: Wed, 23 Aug 2023 19:04:09 GMT foundInMaster: true id: 15aad8cd322242e03733b07f2a37890a - source: https://openapi.tools/ @@ -1750,17 +1750,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-21T06:21:58Z' + updated: '2023-08-23T14:42:49Z' language: Java archived: false - stars: 916 + stars: 917 watchers: 26 forks: 164 owner: microcks logo: https://avatars.githubusercontent.com/u/11051048?v=4 license: Apache-2.0 - repoEtag: '"d4d34206c6ac2244d44daa989f7be6386cf56f539d13ae4e368a531265288438"' - repoLastModified: Mon, 21 Aug 2023 06:21:58 GMT + repoEtag: '"302b24321e27aee01ae277176a1e4ff2cd59a115fa2de9ed71e7ba51e4226c52"' + repoLastModified: Wed, 23 Aug 2023 14:42:49 GMT foundInMaster: true id: 1c0e918b5a733b0f1726199e3ea101d6 - source: @@ -1823,17 +1823,17 @@ repositoryId: 193262126 description: A mock server based in OpenAPI Specification created: '2019-06-22T17:38:08Z' - updated: '2023-08-07T17:16:04Z' + updated: '2023-08-24T01:26:14Z' language: JavaScript archived: false - stars: 88 + stars: 89 watchers: 3 forks: 31 owner: jormaechea logo: https://avatars.githubusercontent.com/u/5612500?v=4 license: MIT - repoEtag: '"a748725fe0efe1a08057937dc46878decad3ff733aee73152faaa4075ca70ea9"' - repoLastModified: Mon, 07 Aug 2023 17:16:04 GMT + repoEtag: '"ddc320c022057ebbd12021c6bce14eff040892015fd0a4f1fb829d7e64153859"' + repoLastModified: Thu, 24 Aug 2023 01:26:14 GMT foundInMaster: true id: 025e0dafdc92cfc32c40f410a4c333b7 - source: https://openapi.tools/ @@ -1957,17 +1957,17 @@ repositoryId: 61366800 description: Build OpenAPI-compliant REST APIs using TypeScript and Node created: '2016-06-17T10:42:50Z' - updated: '2023-08-22T02:54:37Z' + updated: '2023-08-24T02:01:12Z' language: TypeScript archived: false - stars: 2824 + stars: 2829 watchers: 23 forks: 442 owner: lukeautry logo: https://avatars.githubusercontent.com/u/8770560?v=4 license: MIT - repoEtag: '"ab0ba638a3a772d755bb7ac683a5c544e7c3302329a7332881c652acd0fe0ed6"' - repoLastModified: Tue, 22 Aug 2023 02:54:37 GMT + repoEtag: '"070227bb704cc90953440890f15c314e112261d7afb1717939d9fc48caed4759"' + repoLastModified: Thu, 24 Aug 2023 02:01:12 GMT foundInMaster: true id: 2529db76d3d9f042b0c624f65b13fc41 - source: https://openapi.tools/ @@ -2004,7 +2004,7 @@ owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"64d110ef9761a7b9af2cdcdfd7cad8158aa9b69f1314d0c68e903f72c74c93d3"' + repoEtag: '"9b38eddf69c9686e078cbb042727fd8fdef89861a15666de3015c11e720a6cb6"' repoLastModified: Mon, 21 Aug 2023 08:40:52 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 @@ -2108,12 +2108,12 @@ language: JavaScript archived: false stars: 37 - watchers: 19 + watchers: 21 forks: 5 owner: smartrecruiters logo: https://avatars.githubusercontent.com/u/1618540?v=4 license: MIT - repoEtag: '"0ca65ee2623ade4400bcd016adfe81f082e4031528308a9cabfbf44dbf74ea98"' + repoEtag: '"c89da202de366a1857ae9b84ff85590bb3f78480bcafe11f676d3ddadf10d06b"' repoLastModified: Sun, 30 Jul 2023 09:57:32 GMT foundInMaster: true id: b6882b9c2b3386fd0dac448d07cbcb36 @@ -2172,17 +2172,17 @@ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time. created: '2015-03-06T21:46:05Z' - updated: '2023-08-22T00:46:33Z' + updated: '2023-08-23T22:37:28Z' language: TypeScript archived: false - stars: 8005 + stars: 8008 watchers: 220 forks: 951 owner: api-platform logo: https://avatars.githubusercontent.com/u/13420081?v=4 license: MIT - repoEtag: '"7ffceb965b8c49d11a76e394edef330ec7314d2a4311f87d62a5cf7361b9d06d"' - repoLastModified: Tue, 22 Aug 2023 00:46:33 GMT + repoEtag: '"b7b0df5afa8c6d72fed054b2d2e45aaaa0b5789ed2d5fc109dd3616fc2d577d8"' + repoLastModified: Wed, 23 Aug 2023 22:37:28 GMT foundInMaster: true id: d14f5904300aabf1ceef4660a6b3d57e - source: https://openapi.tools/ @@ -2238,17 +2238,17 @@ repositoryId: 39904377 description: Open source API management platform created: '2015-07-29T16:34:52Z' - updated: '2023-08-21T16:07:14Z' + updated: '2023-08-24T01:43:10Z' language: PHP archived: false - stars: 1542 + stars: 1545 watchers: 57 forks: 202 owner: apioo logo: https://avatars.githubusercontent.com/u/18172950?v=4 license: Apache-2.0 - repoEtag: '"261e2c29ee7633a1a0df7ab9ca32a67e9e3bc648095d8cc1ee0a4c3c0742051c"' - repoLastModified: Mon, 21 Aug 2023 16:07:14 GMT + repoEtag: '"b48fad692fbe510b58f3ed5d4373c2f02790e5122d8bf01e27b549326826a7c0"' + repoLastModified: Thu, 24 Aug 2023 01:43:10 GMT foundInMaster: true id: 5458da680012a142d20e79ac150bc4ab - source: @@ -2349,7 +2349,7 @@ owner: nestjs logo: https://avatars.githubusercontent.com/u/28507035?v=4 license: MIT - repoEtag: '"6fcc67ad2c3f6b61fac5b8023353e33359fde6287a7d4260090946cede5c787c"' + repoEtag: '"c00883901fa1305449a23800aaa9c08076557aab072dd30c5761d1e22886a5f1"' repoLastModified: Tue, 22 Aug 2023 23:52:58 GMT foundInMaster: true id: 7071babd9853fc901c5decfa9b465b67 @@ -2413,17 +2413,17 @@ repositoryId: 12590052 description: Language-agnostic HTTP API Testing Tool created: '2013-09-04T12:21:35Z' - updated: '2023-08-20T13:13:41Z' + updated: '2023-08-23T07:17:40Z' language: JavaScript archived: false - stars: 4041 + stars: 4040 watchers: 74 forks: 304 owner: apiaryio logo: https://avatars.githubusercontent.com/u/765943?v=4 license: MIT - repoEtag: '"84200d2984d83f09b6c7abd875815af74a46cddb4ee0a6680e841fb9e550131f"' - repoLastModified: Sun, 20 Aug 2023 13:13:41 GMT + repoEtag: '"078ce2f8b5478cd8397da8579efc6251b1fbcab079cc8995a77e1cbd549daa17"' + repoLastModified: Wed, 23 Aug 2023 07:17:40 GMT foundInMaster: true id: bb2e4b0879fce0d8706dcebfd2c10a4c - source: @@ -2495,7 +2495,7 @@ owner: cdimascio logo: https://avatars.githubusercontent.com/u/4706618?v=4 license: MIT - repoEtag: '"3e4783262dfb6ea5d12b747e014ca0a852f82d76287f3abd0f652a274cb3d8ef"' + repoEtag: '"f11b2eafe49a7ee0a00917fcb0826d41e7865ad5edcf5208e920885db2f4836e"' repoLastModified: Tue, 15 Aug 2023 11:23:03 GMT foundInMaster: true id: 3a27bc1a71642e0c1c020c41dc66e206 @@ -2639,17 +2639,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-23T01:51:32Z' + updated: '2023-08-23T06:36:41Z' language: TypeScript archived: false - stars: 2009 + stars: 2011 watchers: 30 - forks: 196 + forks: 197 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"3d2662a0adb9f480c527517a9cca6c28a83a7cba3d22ef9d5ed366bdd88491e7"' - repoLastModified: Wed, 23 Aug 2023 01:51:32 GMT + repoEtag: '"3490bc0e47945d2a662c13f02697e2448200e3854fff95a5fc368fdc2d8e23f5"' + repoLastModified: Wed, 23 Aug 2023 06:36:41 GMT foundInMaster: true id: fab3cc58898cd8953a30e43cc622e0fe - source: https://openapi.tools/ @@ -2703,17 +2703,17 @@ repositoryId: 153173690 description: Configurable and extensible validator/linter for OpenAPI documents created: '2018-10-15T19:59:22Z' - updated: '2023-08-22T19:29:16Z' + updated: '2023-08-23T18:23:10Z' language: JavaScript archived: false - stars: 402 + stars: 401 watchers: 21 forks: 90 owner: IBM logo: https://avatars.githubusercontent.com/u/1459110?v=4 license: Apache-2.0 - repoEtag: '"f4f56c7bbf5b97d32829b484436d4f17fe62726be675a02f6a1fe0a654bbf736"' - repoLastModified: Tue, 22 Aug 2023 19:29:16 GMT + repoEtag: '"b3c897f5753cebd95b12b344bcb9f6ec00f67a8eaf4783ef341c42eb71986fb5"' + repoLastModified: Wed, 23 Aug 2023 18:23:10 GMT foundInMaster: true id: 0bf7dd29a9d07232135bb00764928296 - source: @@ -2743,7 +2743,7 @@ owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"2d3a491e7344bca8a4bae84d2c108979ca4a83b35fd47864b8a45de463c41f53"' + repoEtag: '"f0819c22e4f8f967394fc07afdd3e1579287909af976216f9bd8652841a14548"' repoLastModified: Tue, 22 Aug 2023 16:04:56 GMT category: - Description Validators @@ -2917,17 +2917,17 @@ repositoryId: 18997610 description: Swagger Spec to Java POJOs created: '2014-04-21T16:00:22Z' - updated: '2023-08-22T13:38:10Z' + updated: '2023-08-23T09:30:08Z' language: Java archived: false - stars: 694 + stars: 695 watchers: 47 - forks: 510 + forks: 512 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"62604c7e1bb082ab12caa9c008f4d78151ef309ac06479401113c8ed31513eaf"' - repoLastModified: Tue, 22 Aug 2023 13:38:10 GMT + repoEtag: '"4e8f52adaa8c3877e5b20b9941222efddf162e9c0e67f8b93e902e17fc4c7c52"' + repoLastModified: Wed, 23 Aug 2023 09:30:08 GMT foundInMaster: true id: 45f46a8f7ac698cfe3926303bf3dff9d v3_1_link: https://github.com/swagger-api/swagger-parser/pull/1730 @@ -2945,17 +2945,17 @@ repositoryId: 25453221 description: Swagger 2.0 and OpenAPI 3.0 parser/validator created: '2014-10-20T06:14:51Z' - updated: '2023-08-21T08:42:42Z' + updated: '2023-08-23T06:28:15Z' language: JavaScript archived: false - stars: 985 + stars: 984 watchers: 21 forks: 150 owner: APIDevTools logo: https://avatars.githubusercontent.com/u/43750074?v=4 license: MIT - repoEtag: '"bb768db57b43f5e807bcfef96b084afa2feb3b8ea80c6d344bb5a53ff9da21a4"' - repoLastModified: Mon, 21 Aug 2023 08:42:42 GMT + repoEtag: '"c963eb8a768f152406ee5eccb17c58c5cfa68958d6920b094d698a307d6ed423"' + repoLastModified: Wed, 23 Aug 2023 06:28:15 GMT category: Parsers foundInMaster: true name: APIDevTools/swagger-parser @@ -3105,25 +3105,25 @@ v3: true repositoryMetadata: base64Readme: >- - WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvd29ya2Zsb3dzL2dvL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvYWN0aW9ucykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0pvaW4gR2l0dGVyIENoYXQgQ2hhbm5lbCAtXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2V0a2luL2tpbi5zdmcpXShodHRwczovL2dpdHRlci5pbS9nZXRraW4va2luP3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIEludHJvZHVjdGlvbgpBIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKSBwcm9qZWN0IGZvciBoYW5kbGluZyBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZmlsZXMuIFdlIHRhcmdldDoKKiBbT3BlbkFQSSBgdjIuMGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKQoqIFtPcGVuQVBJIGB2My4wYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQoqIFtPcGVuQVBJIGB2My4xYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kKSBTb29uISBbVHJhY2tpbmcgaXNzdWUgaGVyZS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzIzMCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCgojIyBDb250cmlidXRvcnMsIHVzZXJzIGFuZCBzcG9uc29ycwpUaGUgcHJvamVjdCBoYXMgcmVjZWl2ZWQgcHVsbCByZXF1ZXN0cyBbZnJvbSBtYW55IHBlb3BsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4gVGhhbmtzIHRvIGV2ZXJ5b25lIQoKQmUgc3VyZSB0byBbZ2l2ZSBiYWNrIHRvIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Zlbm9sbHApIGxpa2Ugb3VyIHNwb25zb3JzOgoKPHAgYWxpZ249ImNlbnRlciI+Cgk8YSBocmVmPSJodHRwczovL3NwZWFrZWFzeWFwaS5kZXYvP3V0bV9zb3VyY2U9a2lub3BlbmFwaStyZXBvJnV0bV9tZWRpdW09Z2l0aHViK3Nwb25zb3JzaGlwIj48aW1nIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3ktZ2l0aHViLXNwb25zb3ItZGFyay5zdmciIGFsdD0iU3BlYWtlYXN5IiBoZWlnaHQ9IjEwMHB4Ii8+PC9hPgo8L3A+CgpIZXJlJ3Mgc29tZSBwcm9qZWN0cyB0aGF0IGRlcGVuZCBvbiBfa2luLW9wZW5hcGlfOgogICogW2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZl0oaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYpIC0gIkEgZGlmZiB0b29sIGZvciBPcGVuQVBJIFNwZWNpZmljYXRpb24gMyIKICAqIFtnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0XShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQpIC0gIkxpZ2h0d2VpZ2h0LCBibGF6aW5nIGZhc3QsIGNyb3NzLXBsYXRmb3JtIE9wZW5BUEkgMyBtb2NrIHNlcnZlciB3aXRoIHZhbGlkYXRpb24iCiAgKiBbZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuKSAtICJHZW5lcmF0ZSBHbyBjbGllbnQgYW5kIHNlcnZlciBib2lsZXJwbGF0ZSBmcm9tIE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9ucyIKICAqIFtnaXRodWIuY29tL2R1bmdsYXMvdnVsY2Fpbl0oaHR0cHM6Ly9naXRodWIuY29tL2R1bmdsYXMvdnVsY2FpbikgLSAiVXNlIEhUVFAvMiBTZXJ2ZXIgUHVzaCB0byBjcmVhdGUgZmFzdCBhbmQgaWRpb21hdGljIGNsaWVudC1kcml2ZW4gUkVTVCBBUElzIgogICogW2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9yZXN0aXNoXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9yZXN0aXNoKSAtICIuLi5hIENMSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBSRVNULWlzaCBIVFRQIEFQSXMgd2l0aCBzb21lIG5pY2UgZmVhdHVyZXMgYnVpbHQtaW4iCiAgKiBbZ2l0aHViLmNvbS9nb2FkZXNpZ24vZ29hXShodHRwczovL2dpdGh1Yi5jb20vZ29hZGVzaWduL2dvYSkgLSAiRGVzaWduLWJhc2VkIEFQSXMgYW5kIG1pY3Jvc2VydmljZXMgaW4gR28iCiAgKiBbZ2l0aHViLmNvbS9oYXNoaWNvcnAvbm9tYWQtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC9ub21hZC1vcGVuYXBpKSAtICJOb21hZCBpcyBhbiBlYXN5LXRvLXVzZSwgZmxleGlibGUsIGFuZCBwZXJmb3JtYW50IHdvcmtsb2FkIG9yY2hlc3RyYXRvciB0aGF0IGNhbiBkZXBsb3kgYSBtaXggb2YgbWljcm9zZXJ2aWNlLCBiYXRjaCwgY29udGFpbmVyaXplZCwgYW5kIG5vbi1jb250YWluZXJpemVkIGFwcGxpY2F0aW9ucy4gTm9tYWQgaXMgZWFzeSB0byBvcGVyYXRlIGFuZCBzY2FsZSBhbmQgaGFzIG5hdGl2ZSBDb25zdWwgYW5kIFZhdWx0IGludGVncmF0aW9ucy4iCiAgKiBbZ2l0bGFiLmNvbS9qYW1pZXRhbm5hL2h0dHB0ZXN0LW9wZW5hcGldKGh0dHBzOi8vZ2l0bGFiLmNvbS9qYW1pZXRhbm5hL2h0dHB0ZXN0LW9wZW5hcGkpIChbKmJsb2cgcG9zdCpdKGh0dHBzOi8vd3d3Lmp2dC5tZS9wb3N0cy8yMDIyLzA1LzIyL2dvLW9wZW5hcGktY29udHJhY3QtdGVzdC8pKSAtICJHbyBPcGVuQVBJIENvbnRyYWN0IFZlcmlmaWNhdGlvbiBmb3IgdXNlIHdpdGggYG5ldC9odHRwYCIKICAqIFtnaXRodWIuY29tL1NJTUlUR1JPVVAvb3BlbmFwaWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1NJTUlUR1JPVVAvb3BlbmFwaWdlbmVyYXRvcikgLSAiT3BlbmFwaSB2MyBtaWNyb3NlcnZpY2VzIGdlbmVyYXRvciIKICAqIFtodHRwczovL2dpdGh1Yi5jb20vcHJvamVjdHN2ZWx0b3MvYWRkb24tY29udHJvbGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3Byb2plY3RzdmVsdG9zL2FkZG9uLWNvbnRyb2xsZXIpIC0gIkt1YmVybmV0ZXMgYWRkLW9uIGNvbnRyb2xsZXIgZGVzaWduZWQgdG8gbWFuYWdlIHRlbnMgb2YgY2x1c3RlcnMuIgogICogKEZlZWwgZnJlZSB0byBhZGQgeW91ciBwcm9qZWN0IGJ5IFtjcmVhdGluZyBhbiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9pc3N1ZXMvbmV3KSBvciBhIHB1bGwgcmVxdWVzdCkKCiMjIEFsdGVybmF0aXZlcwoqIFtnby1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyKSBzdGF0ZWQgWypPcGVuQVBJdjMgd29uJ3QgYmUgc3VwcG9ydGVkKl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlci9pc3N1ZXMvMTEyMiNpc3N1ZWNvbW1lbnQtNTc1OTY4NDk5KQoqIFtzd2FnZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ28vc3dhZykgaGFzIGFuIFtvcGVuIGlzc3VlIG9uIE9wZW5BUEl2M10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnby9zd2FnL2lzc3Vlcy8zODYpCiogW2dvLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpKSdzIFtzcGVjM10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYzMpCgkqIGFuIGl0ZXJhdGlvbiBvbiBbc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYykgKGZvciBPcGVuQVBJdjIpCgkqIHNlZSBbUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjMy90cmVlLzNmYWI5ZmFhOTA5NGUwNmViZDE5ZGVkN2VhOTZkMTU2YzIyODNkY2Ejb2FpLW9iamVjdC1tb2RlbC0tLSkgZm9yIHRoZSBtaXNzaW5nIHBhcnRzCgpCZSBzdXJlIHRvIGNoZWNrIFtPcGVuQVBJIEluaXRpYXRpdmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkpJ3MgW2dyZWF0IHRvb2xpbmcgbGlzdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvSU1QTEVNRU5UQVRJT05TLm1kKSBhcyB3ZWxsIGFzIFtPcGVuQVBJLlRvb2xzXShodHRwczovL29wZW5hcGkudG9vbHMvKS4KCiMgU3RydWN0dXJlCiAgKiBfb3BlbmFwaTJfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyKSkKICAgICogU3VwcG9ydCBmb3IgT3BlbkFQSSAyIGZpbGVzLCBpbmNsdWRpbmcgc2VyaWFsaXphdGlvbiwgZGVzZXJpYWxpemF0aW9uLCBhbmQgdmFsaWRhdGlvbi4KICAqIF9vcGVuYXBpMmNvbnZfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyY29udikpCiAgICAqIENvbnZlcnRzIE9wZW5BUEkgMiBmaWxlcyBpbnRvIE9wZW5BUEkgMyBmaWxlcy4KICAqIF9vcGVuYXBpM18gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMpKQogICAgKiBTdXBwb3J0IGZvciBPcGVuQVBJIDMgZmlsZXMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uLCBkZXNlcmlhbGl6YXRpb24sIGFuZCB2YWxpZGF0aW9uLgogICogX29wZW5hcGkzZmlsdGVyXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlcikpCiAgICAqIFZhbGlkYXRlcyBIVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMKICAgICogUHJvdmlkZXMgYSBbZ29yaWxsYS9tdXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCkgcm91dGVyIGZvciBPcGVuQVBJIG9wZXJhdGlvbnMKICAqIF9vcGVuYXBpM2dlbl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNnZW4pKQogICAgKiBHZW5lcmF0ZXMgYCpvcGVuYXBpMy5TY2hlbWFgIHZhbHVlcyBmb3IgR28gdHlwZXMuCgojIFNvbWUgcmVjaXBlcwojIyBWYWxpZGF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQKYGBgc2hlbGwKZ28gcnVuIGdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL2NtZC92YWxpZGF0ZUBsYXRlc3QgWy0tY2lyY3VsYXJdIFstLWRlZmF1bHRzXSBbLS1leGFtcGxlc10gWy0tZXh0XSBbLS1wYXR0ZXJuc10gLS0gPGxvY2FsIFlBTUwgb3IgSlNPTiBmaWxlPgpgYGAKCiMjIExvYWRpbmcgT3BlbkFQSSBkb2N1bWVudApVc2UgYG9wZW5hcGkzLkxvYWRlcmAsIHdoaWNoIHJlc29sdmVzIGFsbCByZWZlcmVuY2VzOgpgYGBnbwpsb2FkZXIgOj0gb3BlbmFwaTMuTmV3TG9hZGVyKCkKZG9jLCBlcnIgOj0gbG9hZGVyLkxvYWRGcm9tRmlsZSgic3dhZ2dlci5qc29uIikKYGBgCgojIyBHZXR0aW5nIE9wZW5BUEkgb3BlcmF0aW9uIHRoYXQgbWF0Y2hlcyByZXF1ZXN0CmBgYGdvCmxvYWRlciA6PSBvcGVuYXBpMy5OZXdMb2FkZXIoKQpkb2MsIF8gOj0gbG9hZGVyLkxvYWRGcm9tRGF0YShbXWJ5dGUoYC4uLmApKQpfIDo9IGRvYy5WYWxpZGF0ZShsb2FkZXIuQ29udGV4dCkKcm91dGVyLCBfIDo9IGdvcmlsbGFtdXguTmV3Um91dGVyKGRvYykKcm91dGUsIHBhdGhQYXJhbXMsIF8gOj0gcm91dGVyLkZpbmRSb3V0ZShodHRwUmVxdWVzdCkKLy8gRG8gc29tZXRoaW5nIHdpdGggcm91dGUuT3BlcmF0aW9uCmBgYAoKIyMgVmFsaWRhdGluZyBIVFRQIHJlcXVlc3RzL3Jlc3BvbnNlcwpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiY29udGV4dCIKCSJmbXQiCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzIgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZmlsdGVyIgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL3JvdXRlcnMvZ29yaWxsYW11eCIKKQoKZnVuYyBtYWluKCkgewoJY3R4IDo9IGNvbnRleHQuQmFja2dyb3VuZCgpCglsb2FkZXIgOj0gJm9wZW5hcGkzLkxvYWRlcntDb250ZXh0OiBjdHgsIElzRXh0ZXJuYWxSZWZzQWxsb3dlZDogdHJ1ZX0KCWRvYywgXyA6PSBsb2FkZXIuTG9hZEZyb21GaWxlKCIuLi4vTXktT3BlbkFQSXYzLUFQSS55bWwiKQoJLy8gVmFsaWRhdGUgZG9jdW1lbnQKCV8gOj0gZG9jLlZhbGlkYXRlKGN0eCkKCXJvdXRlciwgXyA6PSBnb3JpbGxhbXV4Lk5ld1JvdXRlcihkb2MpCglodHRwUmVxLCBfIDo9IGh0dHAuTmV3UmVxdWVzdChodHRwLk1ldGhvZEdldCwgIi9pdGVtcyIsIG5pbCkKCgkvLyBGaW5kIHJvdXRlCglyb3V0ZSwgcGF0aFBhcmFtcywgXyA6PSByb3V0ZXIuRmluZFJvdXRlKGh0dHBSZXEpCgoJLy8gVmFsaWRhdGUgcmVxdWVzdAoJcmVxdWVzdFZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVxdWVzdFZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0OiAgICBodHRwUmVxLAoJCVBhdGhQYXJhbXM6IHBhdGhQYXJhbXMsCgkJUm91dGU6ICAgICAgcm91dGUsCgl9CglfIDo9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVxdWVzdChjdHgsIHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQpCgoJLy8gSGFuZGxlIHRoYXQgcmVxdWVzdAoJLy8gLS0+IFlPVVIgQ09ERSBHT0VTIEhFUkUgPC0tCglyZXNwb25zZUhlYWRlcnMgOj0gaHR0cC5IZWFkZXJ7IkNvbnRlbnQtVHlwZSI6IFtdc3RyaW5neyJhcHBsaWNhdGlvbi9qc29uIn19CglyZXNwb25zZUNvZGUgOj0gMjAwCglyZXNwb25zZUJvZHkgOj0gW11ieXRlKGB7fWApCgoJLy8gVmFsaWRhdGUgcmVzcG9uc2UKCXJlc3BvbnNlVmFsaWRhdGlvbklucHV0IDo9ICZvcGVuYXBpM2ZpbHRlci5SZXNwb25zZVZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0VmFsaWRhdGlvbklucHV0OiByZXF1ZXN0VmFsaWRhdGlvbklucHV0LAoJCVN0YXR1czogICAgICAgICAgICAgICAgIHJlc3BvbnNlQ29kZSwKCQlIZWFkZXI6ICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMsCgl9CglyZXNwb25zZVZhbGlkYXRpb25JbnB1dC5TZXRCb2R5Qnl0ZXMocmVzcG9uc2VCb2R5KQoJXyA6PSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlc3BvbnNlKGN0eCwgcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQpCn0KYGBgCgojIyBDdXN0b20gY29udGVudCB0eXBlIGZvciBib2R5IG9mIEhUVFAgcmVxdWVzdC9yZXNwb25zZQoKQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgcGFyc2VzIGEgYm9keSBvZiBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlCmlmIGl0IGhhcyBvbmUgb2YgdGhlIG5leHQgY29udGVudCB0eXBlczogYCJ0ZXh0L3BsYWluImAgb3IgYCJhcHBsaWNhdGlvbi9qc29uImAuClRvIHN1cHBvcnQgb3RoZXIgY29udGVudCB0eXBlcyB5b3UgbXVzdCByZWdpc3RlciBkZWNvZGVycyBmb3IgdGhlbToKCmBgYGdvCmZ1bmMgbWFpbigpIHsKCS8vIC4uLgoKCS8vIFJlZ2lzdGVyIGEgYm9keSdzIGRlY29kZXIgZm9yIGNvbnRlbnQgdHlwZSAiYXBwbGljYXRpb24veG1sIi4KCW9wZW5hcGkzZmlsdGVyLlJlZ2lzdGVyQm9keURlY29kZXIoImFwcGxpY2F0aW9uL3htbCIsIHhtbEJvZHlEZWNvZGVyKQoKCS8vIE5vdyB5b3UgY2FuIHZhbGlkYXRlIEhUVFAgcmVxdWVzdCB0aGF0IGNvbnRhaW5zIGEgYm9keSB3aXRoIGNvbnRlbnQgdHlwZSAiYXBwbGljYXRpb24veG1sIi4KCXJlcXVlc3RWYWxpZGF0aW9uSW5wdXQgOj0gJm9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXR7CgkJUmVxdWVzdDogICAgaHR0cFJlcSwKCQlQYXRoUGFyYW1zOiBwYXRoUGFyYW1zLAoJCVJvdXRlOiAgICAgIHJvdXRlLAoJfQoJaWYgZXJyIDo9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVxdWVzdChjdHgsIHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQpOyBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9CgoJLy8gLi4uCgoJLy8gQW5kIHlvdSBjYW4gdmFsaWRhdGUgSFRUUCByZXNwb25zZSB0aGF0IGNvbnRhaW5zIGEgYm9keSB3aXRoIGNvbnRlbnQgdHlwZSAiYXBwbGljYXRpb24veG1sIi4KCWlmIGVyciA6PSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlc3BvbnNlKGN0eCwgcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQpOyBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9Cn0KCmZ1bmMgeG1sQm9keURlY29kZXIoYm9keSBpby5SZWFkZXIsIGggaHR0cC5IZWFkZXIsIHNjaGVtYSAqb3BlbmFwaTMuU2NoZW1hUmVmLCBlbmNGbiBvcGVuYXBpM2ZpbHRlci5FbmNvZGluZ0ZuKSAoZGVjb2RlZCBpbnRlcmZhY2V7fSwgZXJyIGVycm9yKSB7CgkvLyBEZWNvZGUgYm9keSB0byBhIHByaW1pdGl2ZSwgW11pbnRlcmZhY2V7fSwgb3IgbWFwW3N0cmluZ11pbnRlcmZhY2V7fS4KfQpgYGAKCiMjIEN1c3RvbSBmdW5jdGlvbiB0byBjaGVjayB1bmlxdWVuZXNzIG9mIGFycmF5IGl0ZW1zCgpCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBjaGVjayB1bmlxdWUgaXRlbXMgYnkgYmVsb3cgcHJlZGVmaW5lZCBmdW5jdGlvbgoKYGBgZ28KZnVuYyBpc1NsaWNlT2ZVbmlxdWVJdGVtcyh4cyBbXWludGVyZmFjZXt9KSBib29sIHsKCXMgOj0gbGVuKHhzKQoJbSA6PSBtYWtlKG1hcFtzdHJpbmddc3RydWN0e30sIHMpCglmb3IgXywgeCA6PSByYW5nZSB4cyB7CgkJa2V5LCBfIDo9IGpzb24uTWFyc2hhbCgmeCkKCQltW3N0cmluZyhrZXkpXSA9IHN0cnVjdHt9e30KCX0KCXJldHVybiBzID09IGxlbihtKQp9CmBgYAoKSW4gdGhlIHByZWRlZmluZWQgZnVuY3Rpb24gdXNpbmcgYGpzb24uTWFyc2hhbGAgdG8gZ2VuZXJhdGUgYSBzdHJpbmcgY2FuCmJlIHVzZWQgYXMgYSBtYXAga2V5IHdoaWNoIGlzIHRvIHN1cHBvcnQgY2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgYW4gYXJyYXkKd2hlbiB0aGUgYXJyYXkgaXRlbXMgYXJlIG9iamVjdHMgb3IgYXJyYXlzLiBZb3UgY2FuIHJlZ2lzdGVyCnlvdSBvd24gZnVuY3Rpb24gYWNjb3JkaW5nIHRvIHlvdXIgaW5wdXQgZGF0YSB0byBnZXQgYmV0dGVyIHBlcmZvcm1hbmNlOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBjdXN0b21pemVkIGZ1bmN0aW9uIHVzZWQgdG8gY2hlY2sgdW5pcXVlbmVzcyBvZiBhcnJheS4KCW9wZW5hcGkzLlJlZ2lzdGVyQXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIpCgoJLy8gLi4uIG90aGVyIHZhbGlkYXRlIGNvZGVzCn0KCmZ1bmMgYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoaXRlbXMgW11pbnRlcmZhY2V7fSkgYm9vbCB7CgkvLyBDaGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgaW5wdXQgc2xpY2UKfQpgYGAKCiMjIEN1c3RvbSBmdW5jdGlvbiB0byBjaGFuZ2Ugc2NoZW1hIGVycm9yIG1lc3NhZ2VzCgpCeSBkZWZhdWx0LCB0aGUgZXJyb3IgbWVzc2FnZSByZXR1cm5lZCB3aGVuIHZhbGlkYXRpbmcgYSB2YWx1ZSBpbmNsdWRlcyB0aGUgZXJyb3IgcmVhc29uLCB0aGUgc2NoZW1hLCBhbmQgdGhlIGlucHV0IHZhbHVlLgoKRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgc2NoZW1hOgoKYGBganNvbgp7CiAgInR5cGUiOiAic3RyaW5nIiwKICAiYWxsT2YiOiBbCiAgICB7ICJwYXR0ZXJuIjogIltBLVpdIiB9LAogICAgeyAicGF0dGVybiI6ICJbYS16XSIgfSwKICAgIHsgInBhdHRlcm4iOiAiWzAtOV0iIH0sCiAgICB7ICJwYXR0ZXJuIjogIlshQCMkJV4mKigpXys9LT9+XSIgfQogIF0KfQpgYGAKClBhc3NpbmcgdGhlIGlucHV0IHZhbHVlIGAic2VjcmV0ImAgdG8gdGhpcyBzY2hlbWEgd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZXJyb3IgbWVzc2FnZToKCmBgYApzdHJpbmcgZG9lc24ndCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uICJbQS1aXSIKU2NoZW1hOgogIHsKICAgICJwYXR0ZXJuIjogIltBLVpdIgogIH0KClZhbHVlOgogICJzZWNyZXQiCmBgYAoKSW5jbHVkaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBjYW4gYmUgaGVscGZ1bCBmb3IgZGVidWdnaW5nLCBidXQgaXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3Igc2Vuc2l0aXZlIGluZm9ybWF0aW9uIHN1Y2ggYXMgc2VjcmV0cy4KClRvIGRpc2FibGUgdGhlIGV4dHJhIGRldGFpbHMgaW4gdGhlIHNjaGVtYSBlcnJvciBtZXNzYWdlLCB5b3UgY2FuIHNldCB0aGUgYG9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkYCBvcHRpb24gdG8gYHRydWVgOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gRGlzYWJsZSBzY2hlbWEgZXJyb3IgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMKCW9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkID0gdHJ1ZQoKCS8vIC4uLiBvdGhlciB2YWxpZGF0ZSBjb2Rlcwp9CmBgYAoKVGhpcyB3aWxsIHNob3J0ZW4gdGhlIGVycm9yIG1lc3NhZ2UgdG8gcHJlc2VudCBvbmx5IHRoZSByZWFzb246CgpgYGAKc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiW0EtWl0iCmBgYAoKRm9yIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgZXJyb3IgbWVzc2FnZSwgeW91IGNhbiBwYXNzIGEgY3VzdG9tIGBvcGVuYXBpM2ZpbHRlci5PcHRpb25zYCBvYmplY3QgdG8gYG9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXRgIHRoYXQgaW5jbHVkZXMgYSBgb3BlbmFwaTNmaWx0ZXIuQ3VzdG9tU2NoZW1hRXJyb3JGdW5jYC4KCmBgYGdvCmZ1bmMgdmFsaWRhdGlvbk9wdGlvbnMoKSAqb3BlbmFwaTNmaWx0ZXIuT3B0aW9ucyB7CglvcHRpb25zIDo9ICZvcGVuYXBpM2ZpbHRlci5PcHRpb25ze30KCW9wdGlvbnMuV2l0aEN1c3RvbVNjaGVtYUVycm9yRnVuYyhzYWZlRXJyb3JNZXNzYWdlKQoJcmV0dXJuIG9wdGlvbnMKfQoKZnVuYyBzYWZlRXJyb3JNZXNzYWdlKGVyciAqb3BlbmFwaTMuU2NoZW1hRXJyb3IpIHN0cmluZyB7CglyZXR1cm4gZXJyLlJlYXNvbgp9CmBgYAoKVGhpcyB3aWxsIGNoYW5nZSB0aGUgc2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzIHRvIHJldHVybiBvbmx5IHRoZSBgUmVhc29uYCBmaWVsZCwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBub3QgaW5jbHVkZSB0aGUgb3JpZ2luYWwgdmFsdWUuCgojIyBTdWItdjAgYnJlYWtpbmcgQVBJIGNoYW5nZXMKCiMjIyB2MC4xMTYuMAoqIERyb3BwZWQgYG9wZW5hcGkzZmlsdGVyLkRlZmF1bHRPcHRpb25zYC4gVXNlIGAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9YCBkaXJlY3RseSBpbnN0ZWFkLgoKIyMjIHYwLjExMy4wCiogVGhlIHN0cmluZyBmb3JtYXQgYGVtYWlsYCBoYXMgYmVlbiByZW1vdmVkIGJ5IGRlZmF1bHQuIFRvIHVzZSBpdCBwbGVhc2UgY2FsbCBgb3BlbmFwaTMuRGVmaW5lU3RyaW5nRm9ybWF0KCJlbWFpbCIsIG9wZW5hcGkzLkZvcm1hdE9mU3RyaW5nRm9yRW1haWwpYC4KKiBGaWVsZCBgb3BlbmFwaTMuVC5Db21wb25lbnRzYCBpcyBub3cgYSBwb2ludGVyLgoqIEZpZWxkcyBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBhbmQgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllc0FsbG93ZWRgIGFyZSByZXBsYWNlZCBieSBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzLlNjaGVtYWAgYW5kIGBvcGVuYXBpMy5TY2hlbWEuQWRkaXRpb25hbFByb3BlcnRpZXMuSGFzYCByZXNwZWN0aXZlbHkuCiogVHlwZSBgb3BlbmFwaTMuRXh0ZW5zaW9uUHJvcHNgIGlzIG5vdyBqdXN0IGBtYXBbc3RyaW5nXWludGVyZmFjZXt9YCBhbmQgZXh0ZW5zaW9ucyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBgRXh0ZW5zaW9uc2AgZmllbGQuCgojIyMgdjAuMTEyLjAKKiBgKG9wZW5hcGkzLlZhbGlkYXRpb25PcHRpb25zKS5FeGFtcGxlc1ZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gdW5leHBvcnRlZC4KKiBgKG9wZW5hcGkzLlZhbGlkYXRpb25PcHRpb25zKS5TY2hlbWFGb3JtYXRWYWxpZGF0aW9uRW5hYmxlZGAgaGFzIGJlZW4gdW5leHBvcnRlZC4KKiBgKG9wZW5hcGkzLlZhbGlkYXRpb25PcHRpb25zKS5TY2hlbWFQYXR0ZXJuVmFsaWRhdGlvbkRpc2FibGVkYCBoYXMgYmVlbiB1bmV4cG9ydGVkLgoKIyMjIHYwLjExMS4wCiogQ2hhbmdlZCBgZnVuYyAoKl8pIFZhbGlkYXRlKGN0eCBjb250ZXh0LkNvbnRleHQpIGVycm9yYCB0byBgZnVuYyAoKl8pIFZhbGlkYXRlKGN0eCBjb250ZXh0LkNvbnRleHQsIG9wdHMgLi4uVmFsaWRhdGlvbk9wdGlvbikgZXJyb3JgLgoqIGBvcGVuYXBpMy5XaXRoVmFsaWRhdGlvbk9wdGlvbnMoY3R4IGNvbnRleHQuQ29udGV4dCwgb3B0cyAqVmFsaWRhdGlvbk9wdGlvbnMpIGNvbnRleHQuQ29udGV4dGAgcHJvdG90eXBlIGNoYW5nZWQgdG8gYG9wZW5hcGkzLldpdGhWYWxpZGF0aW9uT3B0aW9ucyhjdHggY29udGV4dC5Db250ZXh0LCBvcHRzIC4uLlZhbGlkYXRpb25PcHRpb24pIGNvbnRleHQuQ29udGV4dGAuCgojIyMgdjAuMTAxLjAKKiBgb3BlbmFwaTMuU2NoZW1hRm9ybWF0VmFsaWRhdGlvbkRpc2FibGVkYCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBhbiBvcHRpb24gYG9wZW5hcGkzLkVuYWJsZVNjaGVtYUZvcm1hdFZhbGlkYXRpb24oKWAgcGFzc2VkIHRvIGBvcGVuYXBpMy5ULlZhbGlkYXRlYC4gVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGFsc28gbm93IHRvIG5vdCB2YWxpZGF0ZSBmb3JtYXRzLCBhcyB0aGUgT3BlbkFQSSBzcGVjIG1lbnRpb25zIHRoZSBgZm9ybWF0YCBpcyBhbiBvcGVuIHZhbHVlLgoKIyMjIHYwLjg0LjAKKiBUaGUgcHJvdG90eXBlIG9mIGBvcGVuYXBpM2dlbi5OZXdTY2hlbWFSZWZGb3JWYWx1ZWAgY2hhbmdlZDoKCSogSXQgbm8gbG9uZ2VyIHJldHVybnMgYSBtYXAgYnV0IHRoYXQgaXMgc3RpbGwgYWNjZXNzaWJsZSB1bmRlciB0aGUgZmllbGQgYCgqR2VuZXJhdG9yKS5TY2hlbWFSZWZzYC4KCSogSXQgbm93IHRha2VzIGluIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgKGJhc2ljYWxseSBgZG9jLkNvbXBvbmVudHMuU2NoZW1hc2ApIHdoaWNoIGdldHMgd3JpdHRlbiB0byBzbyBgJHJlZmAgY3ljbGVzIGNhbiBiZSBwcm9wZXJseSBoYW5kbGVkLgoKIyMjIHYwLjYxLjAKKiBSZW5hbWVkIGBvcGVuYXBpMi5Td2FnZ2VyYCB0byBgb3BlbmFwaTIuVGAuCiogUmVuYW1lZCBgb3BlbmFwaTJjb252LkZyb21WM1N3YWdnZXJgIHRvIGBvcGVuYXBpMmNvbnYuRnJvbVYzYC4KKiBSZW5hbWVkIGBvcGVuYXBpMmNvbnYuVG9WM1N3YWdnZXJgIHRvIGBvcGVuYXBpMmNvbnYuVG9WM2AuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tRGF0YWAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tRGF0YWAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tRGF0YVdpdGhQYXRoYCB0byBgb3BlbmFwaTMuTG9hZEZyb21EYXRhV2l0aFBhdGhgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbUZpbGVgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbUZpbGVgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbVVSSWAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tVVJJYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5OZXdTd2FnZ2VyTG9hZGVyYCB0byBgb3BlbmFwaTMuTmV3TG9hZGVyYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Td2FnZ2VyYCB0byBgb3BlbmFwaTMuVGAuCiogUmVuYW1lZCBgb3BlbmFwaTMuU3dhZ2dlckxvYWRlcmAgdG8gYG9wZW5hcGkzLkxvYWRlcmAuCiogUmVuYW1lZCBgb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGlvbkhhbmRsZXIuU3dhZ2dlckZpbGVgIHRvIGBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0aW9uSGFuZGxlci5GaWxlYC4KKiBSZW5hbWVkIGByb3V0ZXJzLlJvdXRlLlN3YWdnZXJgIHRvIGByb3V0ZXJzLlJvdXRlLlNwZWNgLgoKIyMjIHYwLjUxLjAKKiBUeXBlIGBvcGVuYXBpM2ZpbHRlci5Sb3V0ZWAgbW92ZWQgdG8gYHJvdXRlcnNgIChhbmQgYFJvdXRlLkhhbmRsZXJgIHdhcyBkcm9wcGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9pc3N1ZXMvMzI5KQoqIFR5cGUgYG9wZW5hcGkzZmlsdGVyLlJvdXRlRXJyb3JgIG1vdmVkIHRvIGByb3V0ZXJzYCAoc28gZGlkIGBFcnJQYXRoTm90Rm91bmRgIGFuZCBgRXJyTWV0aG9kTm90QWxsb3dlZGAgd2hpY2ggYXJlIG5vdyBgUm91dGVFcnJvcmBzKQoqIFJvdXRlcnMnIGBGaW5kUm91dGUoLi4uKWAgbWV0aG9kIG5vdyB0YWtlcyBvbmx5IG9uZSBhcmd1bWVudDogYCpodHRwLlJlcXVlc3RgCiogYGdldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlci5Sb3V0ZXJgIG1vdmVkIHRvIGBnZXRraW4va2luLW9wZW5hcGkvcm91dGVycy9sZWdhY3lgCiogYG9wZW5hcGkzZmlsdGVyLk5ld1JvdXRlcigpYCBhbmQgaXRzIHJlbGF0ZWQgYFdpdGhTd2FnZ2VyRnJvbUZpbGUoc3RyaW5nKWAsIGBXaXRoU3dhZ2dlcigqb3BlbmFwaTMuU3dhZ2dlcilgLCBgQWRkU3dhZ2dlckZyb21GaWxlKHN0cmluZylgIGFuZCBgQWRkU3dhZ2dlcigqb3BlbmFwaTMuU3dhZ2dlcilgIGFyZSBhbGwgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBgPHJvdXRlciBwYWNrYWdlPi5OZXdSb3V0ZXIoKm9wZW5hcGkzLlN3YWdnZXIpYAoJKiBOT1RFOiB0aGUgYE5ld1JvdXRlcihkb2MpYCBjYWxsIG5vdyByZXF1aXJlcyB0aGF0IHRoZSB1c2VyIGVuc3VyZXMgYGRvY2AgaXMgdmFsaWQgKGBkb2MuVmFsaWRhdGUoKSAhPSBuaWxgKS4gVGhpcyB1c2VkIHRvIGJlIGFzc2VydGVkLgoKIyMjIHYwLjQ3LjAKRmllbGQgYCgqb3BlbmFwaTMuU3dhZ2dlckxvYWRlcikuTG9hZFN3YWdnZXJGcm9tVVJJRnVuY2Agb2YgdHlwZSBgZnVuYygqb3BlbmFwaTMuU3dhZ2dlckxvYWRlciwgKnVybC5VUkwpICgqb3BlbmFwaTMuU3dhZ2dlciwgZXJyb3IpYCB3YXMgcmVtb3ZlZCBhZnRlciB0aGUgYWRkaXRpb24gb2YgdGhlIGZpZWxkIGAoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIpLlJlYWRGcm9tVVJJRnVuY2Agb2YgdHlwZSBgZnVuYygqb3BlbmFwaTMuU3dhZ2dlckxvYWRlciwgKnVybC5VUkwpIChbXWJ5dGUsIGVycm9yKWAuCg== - readmeEtag: '"b39d7d5f2aa898bea543bdd0faa4e2f3b9a0a13e0a9e1accd277e38f80c1a9bf"' - readmeLastModified: Tue, 15 Aug 2023 18:25:36 GMT + WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvd29ya2Zsb3dzL2dvL2JhZGdlLnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvYWN0aW9ucykKWyFbR28gUmVwb3J0IENhcmRdKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9iYWRnZS9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaSldKGh0dHBzOi8vZ29yZXBvcnRjYXJkLmNvbS9yZXBvcnQvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0dvRG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaT9zdGF0dXMuc3ZnKV0oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkpClshW0pvaW4gR2l0dGVyIENoYXQgQ2hhbm5lbCAtXShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vZ2V0a2luL2tpbi5zdmcpXShodHRwczovL2dpdHRlci5pbS9nZXRraW4va2luP3V0bV9zb3VyY2U9YmFkZ2UmdXRtX21lZGl1bT1iYWRnZSZ1dG1fY2FtcGFpZ249cHItYmFkZ2UmdXRtX2NvbnRlbnQ9YmFkZ2UpCgojIEludHJvZHVjdGlvbgpBIFtHb10oaHR0cHM6Ly9nb2xhbmcub3JnKSBwcm9qZWN0IGZvciBoYW5kbGluZyBbT3BlbkFQSV0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnLykgZmlsZXMuIFdlIHRhcmdldDoKKiBbT3BlbkFQSSBgdjIuMGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8yLjAubWQpIChmb3JtZXJseSBrbm93biBhcyBTd2FnZ2VyKQoqIFtPcGVuQVBJIGB2My4wYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMC4zLm1kKQoqIFtPcGVuQVBJIGB2My4xYF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYWluL3ZlcnNpb25zLzMuMS4wLm1kKSBTb29uISBbVHJhY2tpbmcgaXNzdWUgaGVyZS5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvaXNzdWVzLzIzMCkKCkxpY2Vuc2VkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKC4vTElDRU5TRSkuCgojIyBDb250cmlidXRvcnMsIHVzZXJzIGFuZCBzcG9uc29ycwpUaGUgcHJvamVjdCBoYXMgcmVjZWl2ZWQgcHVsbCByZXF1ZXN0cyBbZnJvbSBtYW55IHBlb3BsZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9ncmFwaHMvY29udHJpYnV0b3JzKS4gVGhhbmtzIHRvIGV2ZXJ5b25lIQoKQmUgc3VyZSB0byBbZ2l2ZSBiYWNrIHRvIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2Zlbm9sbHApIGxpa2Ugb3VyIHNwb25zb3JzOgoKPHAgYWxpZ249ImNlbnRlciI+Cgk8YSBocmVmPSJodHRwczovL3NwZWFrZWFzeWFwaS5kZXYvP3V0bV9zb3VyY2U9a2lub3BlbmFwaStyZXBvJnV0bV9tZWRpdW09Z2l0aHViK3Nwb25zb3JzaGlwIj4KCQk8cGljdHVyZT4KCQkgIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Ii5naXRodWIvc3BvbnNvcnMvc3BlYWtlYXN5LWdpdGh1Yi1zcG9uc29yLWxpZ2h0LnN2ZyI+CgkJICA8c291cmNlIG1lZGlhPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9Ii5naXRodWIvc3BvbnNvcnMvc3BlYWtlYXN5LWdpdGh1Yi1zcG9uc29yLWRhcmsuc3ZnIj4KCQkgIDxpbWcgYWx0PSJTcGVha2Vhc3kgbG9nbyIgc3JjPSIuZ2l0aHViL3Nwb25zb3JzL3NwZWFrZWFzeS1naXRodWItc3BvbnNvci1kYXJrLnN2ZyIgaGVpZ2h0PSIxMDBweCI+CgkJPC9waWN0dXJlPgoJPC9hPgo8L3A+CgpIZXJlJ3Mgc29tZSBwcm9qZWN0cyB0aGF0IGRlcGVuZCBvbiBfa2luLW9wZW5hcGlfOgogICogW2dpdGh1Yi5jb20vVHVmaW4vb2FzZGlmZl0oaHR0cHM6Ly9naXRodWIuY29tL1R1ZmluL29hc2RpZmYpIC0gIkEgZGlmZiB0b29sIGZvciBPcGVuQVBJIFNwZWNpZmljYXRpb24gMyIKICAqIFtnaXRodWIuY29tL2RhbmllbGd0YXlsb3IvYXBpc3Byb3V0XShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9hcGlzcHJvdXQpIC0gIkxpZ2h0d2VpZ2h0LCBibGF6aW5nIGZhc3QsIGNyb3NzLXBsYXRmb3JtIE9wZW5BUEkgMyBtb2NrIHNlcnZlciB3aXRoIHZhbGlkYXRpb24iCiAgKiBbZ2l0aHViLmNvbS9kZWVwbWFwL29hcGktY29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL2RlZXBtYXAvb2FwaS1jb2RlZ2VuKSAtICJHZW5lcmF0ZSBHbyBjbGllbnQgYW5kIHNlcnZlciBib2lsZXJwbGF0ZSBmcm9tIE9wZW5BUEkgMyBzcGVjaWZpY2F0aW9ucyIKICAqIFtnaXRodWIuY29tL2R1bmdsYXMvdnVsY2Fpbl0oaHR0cHM6Ly9naXRodWIuY29tL2R1bmdsYXMvdnVsY2FpbikgLSAiVXNlIEhUVFAvMiBTZXJ2ZXIgUHVzaCB0byBjcmVhdGUgZmFzdCBhbmQgaWRpb21hdGljIGNsaWVudC1kcml2ZW4gUkVTVCBBUElzIgogICogW2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9yZXN0aXNoXShodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsZ3RheWxvci9yZXN0aXNoKSAtICIuLi5hIENMSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBSRVNULWlzaCBIVFRQIEFQSXMgd2l0aCBzb21lIG5pY2UgZmVhdHVyZXMgYnVpbHQtaW4iCiAgKiBbZ2l0aHViLmNvbS9nb2FkZXNpZ24vZ29hXShodHRwczovL2dpdGh1Yi5jb20vZ29hZGVzaWduL2dvYSkgLSAiRGVzaWduLWJhc2VkIEFQSXMgYW5kIG1pY3Jvc2VydmljZXMgaW4gR28iCiAgKiBbZ2l0aHViLmNvbS9oYXNoaWNvcnAvbm9tYWQtb3BlbmFwaV0oaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC9ub21hZC1vcGVuYXBpKSAtICJOb21hZCBpcyBhbiBlYXN5LXRvLXVzZSwgZmxleGlibGUsIGFuZCBwZXJmb3JtYW50IHdvcmtsb2FkIG9yY2hlc3RyYXRvciB0aGF0IGNhbiBkZXBsb3kgYSBtaXggb2YgbWljcm9zZXJ2aWNlLCBiYXRjaCwgY29udGFpbmVyaXplZCwgYW5kIG5vbi1jb250YWluZXJpemVkIGFwcGxpY2F0aW9ucy4gTm9tYWQgaXMgZWFzeSB0byBvcGVyYXRlIGFuZCBzY2FsZSBhbmQgaGFzIG5hdGl2ZSBDb25zdWwgYW5kIFZhdWx0IGludGVncmF0aW9ucy4iCiAgKiBbZ2l0bGFiLmNvbS9qYW1pZXRhbm5hL2h0dHB0ZXN0LW9wZW5hcGldKGh0dHBzOi8vZ2l0bGFiLmNvbS9qYW1pZXRhbm5hL2h0dHB0ZXN0LW9wZW5hcGkpIChbKmJsb2cgcG9zdCpdKGh0dHBzOi8vd3d3Lmp2dC5tZS9wb3N0cy8yMDIyLzA1LzIyL2dvLW9wZW5hcGktY29udHJhY3QtdGVzdC8pKSAtICJHbyBPcGVuQVBJIENvbnRyYWN0IFZlcmlmaWNhdGlvbiBmb3IgdXNlIHdpdGggYG5ldC9odHRwYCIKICAqIFtnaXRodWIuY29tL1NJTUlUR1JPVVAvb3BlbmFwaWdlbmVyYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL1NJTUlUR1JPVVAvb3BlbmFwaWdlbmVyYXRvcikgLSAiT3BlbmFwaSB2MyBtaWNyb3NlcnZpY2VzIGdlbmVyYXRvciIKICAqIFtodHRwczovL2dpdGh1Yi5jb20vcHJvamVjdHN2ZWx0b3MvYWRkb24tY29udHJvbGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3Byb2plY3RzdmVsdG9zL2FkZG9uLWNvbnRyb2xsZXIpIC0gIkt1YmVybmV0ZXMgYWRkLW9uIGNvbnRyb2xsZXIgZGVzaWduZWQgdG8gbWFuYWdlIHRlbnMgb2YgY2x1c3RlcnMuIgogICogKEZlZWwgZnJlZSB0byBhZGQgeW91ciBwcm9qZWN0IGJ5IFtjcmVhdGluZyBhbiBpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9pc3N1ZXMvbmV3KSBvciBhIHB1bGwgcmVxdWVzdCkKCiMjIEFsdGVybmF0aXZlcwoqIFtnby1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vZ28tc3dhZ2dlci9nby1zd2FnZ2VyKSBzdGF0ZWQgWypPcGVuQVBJdjMgd29uJ3QgYmUgc3VwcG9ydGVkKl0oaHR0cHM6Ly9naXRodWIuY29tL2dvLXN3YWdnZXIvZ28tc3dhZ2dlci9pc3N1ZXMvMTEyMiNpc3N1ZWNvbW1lbnQtNTc1OTY4NDk5KQoqIFtzd2FnZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ28vc3dhZykgaGFzIGFuIFtvcGVuIGlzc3VlIG9uIE9wZW5BUEl2M10oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnby9zd2FnL2lzc3Vlcy8zODYpCiogW2dvLW9wZW5hcGldKGh0dHBzOi8vZ2l0aHViLmNvbS9nby1vcGVuYXBpKSdzIFtzcGVjM10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYzMpCgkqIGFuIGl0ZXJhdGlvbiBvbiBbc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2dvLW9wZW5hcGkvc3BlYykgKGZvciBPcGVuQVBJdjIpCgkqIHNlZSBbUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vZ28tb3BlbmFwaS9zcGVjMy90cmVlLzNmYWI5ZmFhOTA5NGUwNmViZDE5ZGVkN2VhOTZkMTU2YzIyODNkY2Ejb2FpLW9iamVjdC1tb2RlbC0tLSkgZm9yIHRoZSBtaXNzaW5nIHBhcnRzCgpCZSBzdXJlIHRvIGNoZWNrIFtPcGVuQVBJIEluaXRpYXRpdmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkpJ3MgW2dyZWF0IHRvb2xpbmcgbGlzdF0oaHR0cHM6Ly9naXRodWIuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vYmxvYi9tYXN0ZXIvSU1QTEVNRU5UQVRJT05TLm1kKSBhcyB3ZWxsIGFzIFtPcGVuQVBJLlRvb2xzXShodHRwczovL29wZW5hcGkudG9vbHMvKS4KCiMgU3RydWN0dXJlCiAgKiBfb3BlbmFwaTJfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyKSkKICAgICogU3VwcG9ydCBmb3IgT3BlbkFQSSAyIGZpbGVzLCBpbmNsdWRpbmcgc2VyaWFsaXphdGlvbiwgZGVzZXJpYWxpemF0aW9uLCBhbmQgdmFsaWRhdGlvbi4KICAqIF9vcGVuYXBpMmNvbnZfIChbZ29kb2NdKGh0dHBzOi8vZ29kb2Mub3JnL2dpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkyY29udikpCiAgICAqIENvbnZlcnRzIE9wZW5BUEkgMiBmaWxlcyBpbnRvIE9wZW5BUEkgMyBmaWxlcy4KICAqIF9vcGVuYXBpM18gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTMpKQogICAgKiBTdXBwb3J0IGZvciBPcGVuQVBJIDMgZmlsZXMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uLCBkZXNlcmlhbGl6YXRpb24sIGFuZCB2YWxpZGF0aW9uLgogICogX29wZW5hcGkzZmlsdGVyXyAoW2dvZG9jXShodHRwczovL2dvZG9jLm9yZy9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlcikpCiAgICAqIFZhbGlkYXRlcyBIVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMKICAgICogUHJvdmlkZXMgYSBbZ29yaWxsYS9tdXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JpbGxhL211eCkgcm91dGVyIGZvciBPcGVuQVBJIG9wZXJhdGlvbnMKICAqIF9vcGVuYXBpM2dlbl8gKFtnb2RvY10oaHR0cHM6Ly9nb2RvYy5vcmcvZ2l0aHViLmNvbS9nZXRraW4va2luLW9wZW5hcGkvb3BlbmFwaTNnZW4pKQogICAgKiBHZW5lcmF0ZXMgYCpvcGVuYXBpMy5TY2hlbWFgIHZhbHVlcyBmb3IgR28gdHlwZXMuCgojIFNvbWUgcmVjaXBlcwojIyBWYWxpZGF0aW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQKYGBgc2hlbGwKZ28gcnVuIGdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL2NtZC92YWxpZGF0ZUBsYXRlc3QgWy0tY2lyY3VsYXJdIFstLWRlZmF1bHRzXSBbLS1leGFtcGxlc10gWy0tZXh0XSBbLS1wYXR0ZXJuc10gLS0gPGxvY2FsIFlBTUwgb3IgSlNPTiBmaWxlPgpgYGAKCiMjIExvYWRpbmcgT3BlbkFQSSBkb2N1bWVudApVc2UgYG9wZW5hcGkzLkxvYWRlcmAsIHdoaWNoIHJlc29sdmVzIGFsbCByZWZlcmVuY2VzOgpgYGBnbwpsb2FkZXIgOj0gb3BlbmFwaTMuTmV3TG9hZGVyKCkKZG9jLCBlcnIgOj0gbG9hZGVyLkxvYWRGcm9tRmlsZSgic3dhZ2dlci5qc29uIikKYGBgCgojIyBHZXR0aW5nIE9wZW5BUEkgb3BlcmF0aW9uIHRoYXQgbWF0Y2hlcyByZXF1ZXN0CmBgYGdvCmxvYWRlciA6PSBvcGVuYXBpMy5OZXdMb2FkZXIoKQpkb2MsIF8gOj0gbG9hZGVyLkxvYWRGcm9tRGF0YShbXWJ5dGUoYC4uLmApKQpfIDo9IGRvYy5WYWxpZGF0ZShsb2FkZXIuQ29udGV4dCkKcm91dGVyLCBfIDo9IGdvcmlsbGFtdXguTmV3Um91dGVyKGRvYykKcm91dGUsIHBhdGhQYXJhbXMsIF8gOj0gcm91dGVyLkZpbmRSb3V0ZShodHRwUmVxdWVzdCkKLy8gRG8gc29tZXRoaW5nIHdpdGggcm91dGUuT3BlcmF0aW9uCmBgYAoKIyMgVmFsaWRhdGluZyBIVFRQIHJlcXVlc3RzL3Jlc3BvbnNlcwpgYGBnbwpwYWNrYWdlIG1haW4KCmltcG9ydCAoCgkiY29udGV4dCIKCSJmbXQiCgkibmV0L2h0dHAiCgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzIgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL29wZW5hcGkzZmlsdGVyIgoJImdpdGh1Yi5jb20vZ2V0a2luL2tpbi1vcGVuYXBpL3JvdXRlcnMvZ29yaWxsYW11eCIKKQoKZnVuYyBtYWluKCkgewoJY3R4IDo9IGNvbnRleHQuQmFja2dyb3VuZCgpCglsb2FkZXIgOj0gJm9wZW5hcGkzLkxvYWRlcntDb250ZXh0OiBjdHgsIElzRXh0ZXJuYWxSZWZzQWxsb3dlZDogdHJ1ZX0KCWRvYywgXyA6PSBsb2FkZXIuTG9hZEZyb21GaWxlKCIuLi4vTXktT3BlbkFQSXYzLUFQSS55bWwiKQoJLy8gVmFsaWRhdGUgZG9jdW1lbnQKCV8gOj0gZG9jLlZhbGlkYXRlKGN0eCkKCXJvdXRlciwgXyA6PSBnb3JpbGxhbXV4Lk5ld1JvdXRlcihkb2MpCglodHRwUmVxLCBfIDo9IGh0dHAuTmV3UmVxdWVzdChodHRwLk1ldGhvZEdldCwgIi9pdGVtcyIsIG5pbCkKCgkvLyBGaW5kIHJvdXRlCglyb3V0ZSwgcGF0aFBhcmFtcywgXyA6PSByb3V0ZXIuRmluZFJvdXRlKGh0dHBSZXEpCgoJLy8gVmFsaWRhdGUgcmVxdWVzdAoJcmVxdWVzdFZhbGlkYXRpb25JbnB1dCA6PSAmb3BlbmFwaTNmaWx0ZXIuUmVxdWVzdFZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0OiAgICBodHRwUmVxLAoJCVBhdGhQYXJhbXM6IHBhdGhQYXJhbXMsCgkJUm91dGU6ICAgICAgcm91dGUsCgl9CglfIDo9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVxdWVzdChjdHgsIHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQpCgoJLy8gSGFuZGxlIHRoYXQgcmVxdWVzdAoJLy8gLS0+IFlPVVIgQ09ERSBHT0VTIEhFUkUgPC0tCglyZXNwb25zZUhlYWRlcnMgOj0gaHR0cC5IZWFkZXJ7IkNvbnRlbnQtVHlwZSI6IFtdc3RyaW5neyJhcHBsaWNhdGlvbi9qc29uIn19CglyZXNwb25zZUNvZGUgOj0gMjAwCglyZXNwb25zZUJvZHkgOj0gW11ieXRlKGB7fWApCgoJLy8gVmFsaWRhdGUgcmVzcG9uc2UKCXJlc3BvbnNlVmFsaWRhdGlvbklucHV0IDo9ICZvcGVuYXBpM2ZpbHRlci5SZXNwb25zZVZhbGlkYXRpb25JbnB1dHsKCQlSZXF1ZXN0VmFsaWRhdGlvbklucHV0OiByZXF1ZXN0VmFsaWRhdGlvbklucHV0LAoJCVN0YXR1czogICAgICAgICAgICAgICAgIHJlc3BvbnNlQ29kZSwKCQlIZWFkZXI6ICAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnMsCgl9CglyZXNwb25zZVZhbGlkYXRpb25JbnB1dC5TZXRCb2R5Qnl0ZXMocmVzcG9uc2VCb2R5KQoJXyA6PSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlc3BvbnNlKGN0eCwgcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQpCn0KYGBgCgojIyBDdXN0b20gY29udGVudCB0eXBlIGZvciBib2R5IG9mIEhUVFAgcmVxdWVzdC9yZXNwb25zZQoKQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgcGFyc2VzIGEgYm9keSBvZiBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlCmlmIGl0IGhhcyBvbmUgb2YgdGhlIG5leHQgY29udGVudCB0eXBlczogYCJ0ZXh0L3BsYWluImAgb3IgYCJhcHBsaWNhdGlvbi9qc29uImAuClRvIHN1cHBvcnQgb3RoZXIgY29udGVudCB0eXBlcyB5b3UgbXVzdCByZWdpc3RlciBkZWNvZGVycyBmb3IgdGhlbToKCmBgYGdvCmZ1bmMgbWFpbigpIHsKCS8vIC4uLgoKCS8vIFJlZ2lzdGVyIGEgYm9keSdzIGRlY29kZXIgZm9yIGNvbnRlbnQgdHlwZSAiYXBwbGljYXRpb24veG1sIi4KCW9wZW5hcGkzZmlsdGVyLlJlZ2lzdGVyQm9keURlY29kZXIoImFwcGxpY2F0aW9uL3htbCIsIHhtbEJvZHlEZWNvZGVyKQoKCS8vIE5vdyB5b3UgY2FuIHZhbGlkYXRlIEhUVFAgcmVxdWVzdCB0aGF0IGNvbnRhaW5zIGEgYm9keSB3aXRoIGNvbnRlbnQgdHlwZSAiYXBwbGljYXRpb24veG1sIi4KCXJlcXVlc3RWYWxpZGF0aW9uSW5wdXQgOj0gJm9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXR7CgkJUmVxdWVzdDogICAgaHR0cFJlcSwKCQlQYXRoUGFyYW1zOiBwYXRoUGFyYW1zLAoJCVJvdXRlOiAgICAgIHJvdXRlLAoJfQoJaWYgZXJyIDo9IG9wZW5hcGkzZmlsdGVyLlZhbGlkYXRlUmVxdWVzdChjdHgsIHJlcXVlc3RWYWxpZGF0aW9uSW5wdXQpOyBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9CgoJLy8gLi4uCgoJLy8gQW5kIHlvdSBjYW4gdmFsaWRhdGUgSFRUUCByZXNwb25zZSB0aGF0IGNvbnRhaW5zIGEgYm9keSB3aXRoIGNvbnRlbnQgdHlwZSAiYXBwbGljYXRpb24veG1sIi4KCWlmIGVyciA6PSBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0ZVJlc3BvbnNlKGN0eCwgcmVzcG9uc2VWYWxpZGF0aW9uSW5wdXQpOyBlcnIgIT0gbmlsIHsKCQlwYW5pYyhlcnIpCgl9Cn0KCmZ1bmMgeG1sQm9keURlY29kZXIoYm9keSBpby5SZWFkZXIsIGggaHR0cC5IZWFkZXIsIHNjaGVtYSAqb3BlbmFwaTMuU2NoZW1hUmVmLCBlbmNGbiBvcGVuYXBpM2ZpbHRlci5FbmNvZGluZ0ZuKSAoZGVjb2RlZCBpbnRlcmZhY2V7fSwgZXJyIGVycm9yKSB7CgkvLyBEZWNvZGUgYm9keSB0byBhIHByaW1pdGl2ZSwgW11pbnRlcmZhY2V7fSwgb3IgbWFwW3N0cmluZ11pbnRlcmZhY2V7fS4KfQpgYGAKCiMjIEN1c3RvbSBmdW5jdGlvbiB0byBjaGVjayB1bmlxdWVuZXNzIG9mIGFycmF5IGl0ZW1zCgpCeSBkZWZhdWx0LCB0aGUgbGlicmFyeSBjaGVjayB1bmlxdWUgaXRlbXMgYnkgYmVsb3cgcHJlZGVmaW5lZCBmdW5jdGlvbgoKYGBgZ28KZnVuYyBpc1NsaWNlT2ZVbmlxdWVJdGVtcyh4cyBbXWludGVyZmFjZXt9KSBib29sIHsKCXMgOj0gbGVuKHhzKQoJbSA6PSBtYWtlKG1hcFtzdHJpbmddc3RydWN0e30sIHMpCglmb3IgXywgeCA6PSByYW5nZSB4cyB7CgkJa2V5LCBfIDo9IGpzb24uTWFyc2hhbCgmeCkKCQltW3N0cmluZyhrZXkpXSA9IHN0cnVjdHt9e30KCX0KCXJldHVybiBzID09IGxlbihtKQp9CmBgYAoKSW4gdGhlIHByZWRlZmluZWQgZnVuY3Rpb24gdXNpbmcgYGpzb24uTWFyc2hhbGAgdG8gZ2VuZXJhdGUgYSBzdHJpbmcgY2FuCmJlIHVzZWQgYXMgYSBtYXAga2V5IHdoaWNoIGlzIHRvIHN1cHBvcnQgY2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgYW4gYXJyYXkKd2hlbiB0aGUgYXJyYXkgaXRlbXMgYXJlIG9iamVjdHMgb3IgYXJyYXlzLiBZb3UgY2FuIHJlZ2lzdGVyCnlvdSBvd24gZnVuY3Rpb24gYWNjb3JkaW5nIHRvIHlvdXIgaW5wdXQgZGF0YSB0byBnZXQgYmV0dGVyIHBlcmZvcm1hbmNlOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gUmVnaXN0ZXIgYSBjdXN0b21pemVkIGZ1bmN0aW9uIHVzZWQgdG8gY2hlY2sgdW5pcXVlbmVzcyBvZiBhcnJheS4KCW9wZW5hcGkzLlJlZ2lzdGVyQXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIpCgoJLy8gLi4uIG90aGVyIHZhbGlkYXRlIGNvZGVzCn0KCmZ1bmMgYXJyYXlVbmlxdWVJdGVtc0NoZWNrZXIoaXRlbXMgW11pbnRlcmZhY2V7fSkgYm9vbCB7CgkvLyBDaGVjayB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgaW5wdXQgc2xpY2UKfQpgYGAKCiMjIEN1c3RvbSBmdW5jdGlvbiB0byBjaGFuZ2Ugc2NoZW1hIGVycm9yIG1lc3NhZ2VzCgpCeSBkZWZhdWx0LCB0aGUgZXJyb3IgbWVzc2FnZSByZXR1cm5lZCB3aGVuIHZhbGlkYXRpbmcgYSB2YWx1ZSBpbmNsdWRlcyB0aGUgZXJyb3IgcmVhc29uLCB0aGUgc2NoZW1hLCBhbmQgdGhlIGlucHV0IHZhbHVlLgoKRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgc2NoZW1hOgoKYGBganNvbgp7CiAgInR5cGUiOiAic3RyaW5nIiwKICAiYWxsT2YiOiBbCiAgICB7ICJwYXR0ZXJuIjogIltBLVpdIiB9LAogICAgeyAicGF0dGVybiI6ICJbYS16XSIgfSwKICAgIHsgInBhdHRlcm4iOiAiWzAtOV0iIH0sCiAgICB7ICJwYXR0ZXJuIjogIlshQCMkJV4mKigpXys9LT9+XSIgfQogIF0KfQpgYGAKClBhc3NpbmcgdGhlIGlucHV0IHZhbHVlIGAic2VjcmV0ImAgdG8gdGhpcyBzY2hlbWEgd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZXJyb3IgbWVzc2FnZToKCmBgYApzdHJpbmcgZG9lc24ndCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uICJbQS1aXSIKU2NoZW1hOgogIHsKICAgICJwYXR0ZXJuIjogIltBLVpdIgogIH0KClZhbHVlOgogICJzZWNyZXQiCmBgYAoKSW5jbHVkaW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSBjYW4gYmUgaGVscGZ1bCBmb3IgZGVidWdnaW5nLCBidXQgaXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3Igc2Vuc2l0aXZlIGluZm9ybWF0aW9uIHN1Y2ggYXMgc2VjcmV0cy4KClRvIGRpc2FibGUgdGhlIGV4dHJhIGRldGFpbHMgaW4gdGhlIHNjaGVtYSBlcnJvciBtZXNzYWdlLCB5b3UgY2FuIHNldCB0aGUgYG9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkYCBvcHRpb24gdG8gYHRydWVgOgoKYGBgZ28KZnVuYyBtYWluKCkgewoJLy8gLi4uCgoJLy8gRGlzYWJsZSBzY2hlbWEgZXJyb3IgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMKCW9wZW5hcGkzLlNjaGVtYUVycm9yRGV0YWlsc0Rpc2FibGVkID0gdHJ1ZQoKCS8vIC4uLiBvdGhlciB2YWxpZGF0ZSBjb2Rlcwp9CmBgYAoKVGhpcyB3aWxsIHNob3J0ZW4gdGhlIGVycm9yIG1lc3NhZ2UgdG8gcHJlc2VudCBvbmx5IHRoZSByZWFzb246CgpgYGAKc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAiW0EtWl0iCmBgYAoKRm9yIG1vcmUgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGUgZXJyb3IgbWVzc2FnZSwgeW91IGNhbiBwYXNzIGEgY3VzdG9tIGBvcGVuYXBpM2ZpbHRlci5PcHRpb25zYCBvYmplY3QgdG8gYG9wZW5hcGkzZmlsdGVyLlJlcXVlc3RWYWxpZGF0aW9uSW5wdXRgIHRoYXQgaW5jbHVkZXMgYSBgb3BlbmFwaTNmaWx0ZXIuQ3VzdG9tU2NoZW1hRXJyb3JGdW5jYC4KCmBgYGdvCmZ1bmMgdmFsaWRhdGlvbk9wdGlvbnMoKSAqb3BlbmFwaTNmaWx0ZXIuT3B0aW9ucyB7CglvcHRpb25zIDo9ICZvcGVuYXBpM2ZpbHRlci5PcHRpb25ze30KCW9wdGlvbnMuV2l0aEN1c3RvbVNjaGVtYUVycm9yRnVuYyhzYWZlRXJyb3JNZXNzYWdlKQoJcmV0dXJuIG9wdGlvbnMKfQoKZnVuYyBzYWZlRXJyb3JNZXNzYWdlKGVyciAqb3BlbmFwaTMuU2NoZW1hRXJyb3IpIHN0cmluZyB7CglyZXR1cm4gZXJyLlJlYXNvbgp9CmBgYAoKVGhpcyB3aWxsIGNoYW5nZSB0aGUgc2NoZW1hIHZhbGlkYXRpb24gZXJyb3JzIHRvIHJldHVybiBvbmx5IHRoZSBgUmVhc29uYCBmaWVsZCwgd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBub3QgaW5jbHVkZSB0aGUgb3JpZ2luYWwgdmFsdWUuCgojIyBTdWItdjAgYnJlYWtpbmcgQVBJIGNoYW5nZXMKCiMjIyB2MC4xMTYuMAoqIERyb3BwZWQgYG9wZW5hcGkzZmlsdGVyLkRlZmF1bHRPcHRpb25zYC4gVXNlIGAmb3BlbmFwaTNmaWx0ZXIuT3B0aW9uc3t9YCBkaXJlY3RseSBpbnN0ZWFkLgoKIyMjIHYwLjExMy4wCiogVGhlIHN0cmluZyBmb3JtYXQgYGVtYWlsYCBoYXMgYmVlbiByZW1vdmVkIGJ5IGRlZmF1bHQuIFRvIHVzZSBpdCBwbGVhc2UgY2FsbCBgb3BlbmFwaTMuRGVmaW5lU3RyaW5nRm9ybWF0KCJlbWFpbCIsIG9wZW5hcGkzLkZvcm1hdE9mU3RyaW5nRm9yRW1haWwpYC4KKiBGaWVsZCBgb3BlbmFwaTMuVC5Db21wb25lbnRzYCBpcyBub3cgYSBwb2ludGVyLgoqIEZpZWxkcyBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzYCBhbmQgYG9wZW5hcGkzLlNjaGVtYS5BZGRpdGlvbmFsUHJvcGVydGllc0FsbG93ZWRgIGFyZSByZXBsYWNlZCBieSBgb3BlbmFwaTMuU2NoZW1hLkFkZGl0aW9uYWxQcm9wZXJ0aWVzLlNjaGVtYWAgYW5kIGBvcGVuYXBpMy5TY2hlbWEuQWRkaXRpb25hbFByb3BlcnRpZXMuSGFzYCByZXNwZWN0aXZlbHkuCiogVHlwZSBgb3BlbmFwaTMuRXh0ZW5zaW9uUHJvcHNgIGlzIG5vdyBqdXN0IGBtYXBbc3RyaW5nXWludGVyZmFjZXt9YCBhbmQgZXh0ZW5zaW9ucyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBgRXh0ZW5zaW9uc2AgZmllbGQuCgojIyMgdjAuMTEyLjAKKiBgKG9wZW5hcGkzLlZhbGlkYXRpb25PcHRpb25zKS5FeGFtcGxlc1ZhbGlkYXRpb25EaXNhYmxlZGAgaGFzIGJlZW4gdW5leHBvcnRlZC4KKiBgKG9wZW5hcGkzLlZhbGlkYXRpb25PcHRpb25zKS5TY2hlbWFGb3JtYXRWYWxpZGF0aW9uRW5hYmxlZGAgaGFzIGJlZW4gdW5leHBvcnRlZC4KKiBgKG9wZW5hcGkzLlZhbGlkYXRpb25PcHRpb25zKS5TY2hlbWFQYXR0ZXJuVmFsaWRhdGlvbkRpc2FibGVkYCBoYXMgYmVlbiB1bmV4cG9ydGVkLgoKIyMjIHYwLjExMS4wCiogQ2hhbmdlZCBgZnVuYyAoKl8pIFZhbGlkYXRlKGN0eCBjb250ZXh0LkNvbnRleHQpIGVycm9yYCB0byBgZnVuYyAoKl8pIFZhbGlkYXRlKGN0eCBjb250ZXh0LkNvbnRleHQsIG9wdHMgLi4uVmFsaWRhdGlvbk9wdGlvbikgZXJyb3JgLgoqIGBvcGVuYXBpMy5XaXRoVmFsaWRhdGlvbk9wdGlvbnMoY3R4IGNvbnRleHQuQ29udGV4dCwgb3B0cyAqVmFsaWRhdGlvbk9wdGlvbnMpIGNvbnRleHQuQ29udGV4dGAgcHJvdG90eXBlIGNoYW5nZWQgdG8gYG9wZW5hcGkzLldpdGhWYWxpZGF0aW9uT3B0aW9ucyhjdHggY29udGV4dC5Db250ZXh0LCBvcHRzIC4uLlZhbGlkYXRpb25PcHRpb24pIGNvbnRleHQuQ29udGV4dGAuCgojIyMgdjAuMTAxLjAKKiBgb3BlbmFwaTMuU2NoZW1hRm9ybWF0VmFsaWRhdGlvbkRpc2FibGVkYCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBhbiBvcHRpb24gYG9wZW5hcGkzLkVuYWJsZVNjaGVtYUZvcm1hdFZhbGlkYXRpb24oKWAgcGFzc2VkIHRvIGBvcGVuYXBpMy5ULlZhbGlkYXRlYC4gVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGFsc28gbm93IHRvIG5vdCB2YWxpZGF0ZSBmb3JtYXRzLCBhcyB0aGUgT3BlbkFQSSBzcGVjIG1lbnRpb25zIHRoZSBgZm9ybWF0YCBpcyBhbiBvcGVuIHZhbHVlLgoKIyMjIHYwLjg0LjAKKiBUaGUgcHJvdG90eXBlIG9mIGBvcGVuYXBpM2dlbi5OZXdTY2hlbWFSZWZGb3JWYWx1ZWAgY2hhbmdlZDoKCSogSXQgbm8gbG9uZ2VyIHJldHVybnMgYSBtYXAgYnV0IHRoYXQgaXMgc3RpbGwgYWNjZXNzaWJsZSB1bmRlciB0aGUgZmllbGQgYCgqR2VuZXJhdG9yKS5TY2hlbWFSZWZzYC4KCSogSXQgbm93IHRha2VzIGluIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgKGJhc2ljYWxseSBgZG9jLkNvbXBvbmVudHMuU2NoZW1hc2ApIHdoaWNoIGdldHMgd3JpdHRlbiB0byBzbyBgJHJlZmAgY3ljbGVzIGNhbiBiZSBwcm9wZXJseSBoYW5kbGVkLgoKIyMjIHYwLjYxLjAKKiBSZW5hbWVkIGBvcGVuYXBpMi5Td2FnZ2VyYCB0byBgb3BlbmFwaTIuVGAuCiogUmVuYW1lZCBgb3BlbmFwaTJjb252LkZyb21WM1N3YWdnZXJgIHRvIGBvcGVuYXBpMmNvbnYuRnJvbVYzYC4KKiBSZW5hbWVkIGBvcGVuYXBpMmNvbnYuVG9WM1N3YWdnZXJgIHRvIGBvcGVuYXBpMmNvbnYuVG9WM2AuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tRGF0YWAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tRGF0YWAuCiogUmVuYW1lZCBgb3BlbmFwaTMuTG9hZFN3YWdnZXJGcm9tRGF0YVdpdGhQYXRoYCB0byBgb3BlbmFwaTMuTG9hZEZyb21EYXRhV2l0aFBhdGhgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbUZpbGVgIHRvIGBvcGVuYXBpMy5Mb2FkRnJvbUZpbGVgLgoqIFJlbmFtZWQgYG9wZW5hcGkzLkxvYWRTd2FnZ2VyRnJvbVVSSWAgdG8gYG9wZW5hcGkzLkxvYWRGcm9tVVJJYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5OZXdTd2FnZ2VyTG9hZGVyYCB0byBgb3BlbmFwaTMuTmV3TG9hZGVyYC4KKiBSZW5hbWVkIGBvcGVuYXBpMy5Td2FnZ2VyYCB0byBgb3BlbmFwaTMuVGAuCiogUmVuYW1lZCBgb3BlbmFwaTMuU3dhZ2dlckxvYWRlcmAgdG8gYG9wZW5hcGkzLkxvYWRlcmAuCiogUmVuYW1lZCBgb3BlbmFwaTNmaWx0ZXIuVmFsaWRhdGlvbkhhbmRsZXIuU3dhZ2dlckZpbGVgIHRvIGBvcGVuYXBpM2ZpbHRlci5WYWxpZGF0aW9uSGFuZGxlci5GaWxlYC4KKiBSZW5hbWVkIGByb3V0ZXJzLlJvdXRlLlN3YWdnZXJgIHRvIGByb3V0ZXJzLlJvdXRlLlNwZWNgLgoKIyMjIHYwLjUxLjAKKiBUeXBlIGBvcGVuYXBpM2ZpbHRlci5Sb3V0ZWAgbW92ZWQgdG8gYHJvdXRlcnNgIChhbmQgYFJvdXRlLkhhbmRsZXJgIHdhcyBkcm9wcGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2dldGtpbi9raW4tb3BlbmFwaS9pc3N1ZXMvMzI5KQoqIFR5cGUgYG9wZW5hcGkzZmlsdGVyLlJvdXRlRXJyb3JgIG1vdmVkIHRvIGByb3V0ZXJzYCAoc28gZGlkIGBFcnJQYXRoTm90Rm91bmRgIGFuZCBgRXJyTWV0aG9kTm90QWxsb3dlZGAgd2hpY2ggYXJlIG5vdyBgUm91dGVFcnJvcmBzKQoqIFJvdXRlcnMnIGBGaW5kUm91dGUoLi4uKWAgbWV0aG9kIG5vdyB0YWtlcyBvbmx5IG9uZSBhcmd1bWVudDogYCpodHRwLlJlcXVlc3RgCiogYGdldGtpbi9raW4tb3BlbmFwaS9vcGVuYXBpM2ZpbHRlci5Sb3V0ZXJgIG1vdmVkIHRvIGBnZXRraW4va2luLW9wZW5hcGkvcm91dGVycy9sZWdhY3lgCiogYG9wZW5hcGkzZmlsdGVyLk5ld1JvdXRlcigpYCBhbmQgaXRzIHJlbGF0ZWQgYFdpdGhTd2FnZ2VyRnJvbUZpbGUoc3RyaW5nKWAsIGBXaXRoU3dhZ2dlcigqb3BlbmFwaTMuU3dhZ2dlcilgLCBgQWRkU3dhZ2dlckZyb21GaWxlKHN0cmluZylgIGFuZCBgQWRkU3dhZ2dlcigqb3BlbmFwaTMuU3dhZ2dlcilgIGFyZSBhbGwgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBgPHJvdXRlciBwYWNrYWdlPi5OZXdSb3V0ZXIoKm9wZW5hcGkzLlN3YWdnZXIpYAoJKiBOT1RFOiB0aGUgYE5ld1JvdXRlcihkb2MpYCBjYWxsIG5vdyByZXF1aXJlcyB0aGF0IHRoZSB1c2VyIGVuc3VyZXMgYGRvY2AgaXMgdmFsaWQgKGBkb2MuVmFsaWRhdGUoKSAhPSBuaWxgKS4gVGhpcyB1c2VkIHRvIGJlIGFzc2VydGVkLgoKIyMjIHYwLjQ3LjAKRmllbGQgYCgqb3BlbmFwaTMuU3dhZ2dlckxvYWRlcikuTG9hZFN3YWdnZXJGcm9tVVJJRnVuY2Agb2YgdHlwZSBgZnVuYygqb3BlbmFwaTMuU3dhZ2dlckxvYWRlciwgKnVybC5VUkwpICgqb3BlbmFwaTMuU3dhZ2dlciwgZXJyb3IpYCB3YXMgcmVtb3ZlZCBhZnRlciB0aGUgYWRkaXRpb24gb2YgdGhlIGZpZWxkIGAoKm9wZW5hcGkzLlN3YWdnZXJMb2FkZXIpLlJlYWRGcm9tVVJJRnVuY2Agb2YgdHlwZSBgZnVuYygqb3BlbmFwaTMuU3dhZ2dlckxvYWRlciwgKnVybC5VUkwpIChbXWJ5dGUsIGVycm9yKWAuCg== + readmeEtag: '"70c6e0f87bdb1ce77e6e4d06dda2f026a5153a77c774349fbb0f3c2b4e803704"' + readmeLastModified: Wed, 23 Aug 2023 15:17:30 GMT repositoryId: 94029207 description: >- OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting, validation, and more) created: '2017-06-11T20:12:06Z' - updated: '2023-08-22T15:09:13Z' + updated: '2023-08-23T12:12:03Z' language: Go archived: false - stars: 2063 + stars: 2065 watchers: 19 forks: 359 owner: getkin logo: https://avatars.githubusercontent.com/u/40365715?v=4 license: MIT - repoEtag: '"28866a3d47167f11655e1ee3e76efd8cd0aacd3ad19ed83c0ff00e32fb22e9ee"' - repoLastModified: Tue, 22 Aug 2023 15:09:13 GMT + repoEtag: '"eb6e19bf3418c8f3b4073e7dc5c2c9911b0d20dd0829b246a84e913ca30feb2d"' + repoLastModified: Wed, 23 Aug 2023 12:12:03 GMT foundInMaster: true v2: true id: f6838ce08e87fa4c3dc813c97193ece3 @@ -3158,7 +3158,7 @@ owner: thephpleague logo: https://avatars.githubusercontent.com/u/527621?v=4 license: MIT - repoEtag: '"5058c889615bedb669c5332631eddcf12d6e3a3f4bccf14e862587a066bb5b2b"' + repoEtag: '"7a7496f1aa0b918b09cbd8f79d38671cc10b504497d1b727c356b1b4e05f2190"' repoLastModified: Mon, 14 Aug 2023 07:43:46 GMT foundInMaster: true v3_1_link: https://github.com/thephpleague/openapi-psr7-validator/issues/163 @@ -3190,11 +3190,11 @@ archived: false stars: 441 watchers: 24 - forks: 82 + forks: 83 owner: cebe logo: https://avatars.githubusercontent.com/u/189796?v=4 license: MIT - repoEtag: '"d78181f05136855d8ad934d5a7b389db1166b16202b7fc09876687d80b19b0cb"' + repoEtag: '"c924bb3d03757c1060faba9461d61af47405b85f043a127246ee15725f7b6e1d"' repoLastModified: Tue, 22 Aug 2023 09:23:41 GMT foundInMaster: true v3_1_link: https://github.com/cebe/php-openapi/pull/128 @@ -3311,17 +3311,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-20T11:01:10Z' + updated: '2023-08-23T19:14:16Z' language: C# archived: false - stars: 1190 + stars: 1189 watchers: 64 forks: 199 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"acf20d3d32977c73bf86146ec773cbbd124bca28f7aca33c906755f0abfdd7b7"' - repoLastModified: Sun, 20 Aug 2023 11:01:10 GMT + repoEtag: '"f0c6c8856364e8ef0b8f48a2564cf576808156dcbf2d4dd8c3b81f4502175cf1"' + repoLastModified: Wed, 23 Aug 2023 19:14:16 GMT foundInMaster: true id: 1066748bb5b1f114a70856a29fee4aa7 - source: @@ -3352,7 +3352,7 @@ owner: Nexmo logo: https://avatars.githubusercontent.com/u/551057?v=4 license: MIT - repoEtag: '"3d5fe3df18c4e19858722a1bb6e64a4a1cb29f8bb7f1b42469d143e13705284a"' + repoEtag: '"d750e29cc24d5c78fd69f792ad40bcb43f0d581d66d1a4c72e64fada81ab7e17"' repoLastModified: Thu, 06 Jul 2023 13:35:44 GMT foundInMaster: true id: f2aacc6ec161af737088d825023eb174 @@ -3462,7 +3462,7 @@ owner: DoclerLabs logo: https://avatars.githubusercontent.com/u/12913135?v=4 license: MIT - repoEtag: '"1d21d0809997916e3af04297e05ca2a5612bd426075e61c3ed3469b7a731a7c2"' + repoEtag: '"39d6125366d2bd47fa6ae31650386a56b23add77f5e6c746134999555ce2840f"' repoLastModified: Wed, 16 Aug 2023 08:34:59 GMT foundInMaster: true - source: https://openapi.tools/ @@ -3516,17 +3516,17 @@ repositoryId: 26726495 description: Swagger 2.0 implementation for go created: '2014-11-16T20:13:15Z' - updated: '2023-08-22T15:49:51Z' + updated: '2023-08-24T02:32:24Z' language: Go archived: false stars: 8816 watchers: 120 - forks: 1236 + forks: 1238 owner: go-swagger logo: https://avatars.githubusercontent.com/u/10362650?v=4 license: Apache-2.0 - repoEtag: '"496720607a40ab76b35fff33c583d6252e5d03ff5a16d9868415a4f6a6dc6e98"' - repoLastModified: Tue, 22 Aug 2023 15:49:51 GMT + repoEtag: '"635ac62e1ce391a285451bfba55f35f98c4899e9b8c72a614b160b9b78eee9bd"' + repoLastModified: Thu, 24 Aug 2023 02:32:24 GMT foundInMaster: true id: ef136df9ffb40bb33ccbd76665d8f5b4 - source: @@ -3583,17 +3583,17 @@ repositoryId: 41822320 description: 'The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. ' created: '2015-09-02T19:11:57Z' - updated: '2023-08-22T22:09:02Z' + updated: '2023-08-23T18:05:39Z' language: C# archived: false - stars: 6032 + stars: 6035 watchers: 165 - forks: 1138 + forks: 1139 owner: RicoSuter logo: https://avatars.githubusercontent.com/u/2603405?v=4 license: MIT - repoEtag: '"fe773af082aef7ef7db9fe72424a5e0c7d46b611ab384c30c331fe20cd4a48a8"' - repoLastModified: Tue, 22 Aug 2023 22:09:02 GMT + repoEtag: '"885686db33e76b16b8557d53455877c756c8ca4ccd0d3ffaa110cca7960e028e"' + repoLastModified: Wed, 23 Aug 2023 18:05:39 GMT foundInMaster: true id: 93636e95435e95198d7d15c9d507f0d3 - source: https://openapi.tools/ @@ -3656,17 +3656,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-23T02:19:39Z' + updated: '2023-08-23T11:29:31Z' language: Mustache archived: false - stars: 15919 + stars: 15922 watchers: 423 - forks: 6009 + forks: 6010 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"d9ed22377699f2d372a13a8cca3a26e54aa2e3660fc87b94961ec036da022c03"' - repoLastModified: Wed, 23 Aug 2023 02:19:39 GMT + repoEtag: '"cccd30f0d5c1b79942f77d644317c7163b49b9449c6c72412ea4f5975a5fede7"' + repoLastModified: Wed, 23 Aug 2023 11:29:31 GMT foundInMaster: true id: eda1e66e1b7805496e42f57851791a32 - source: https://openapi.tools/ @@ -3690,17 +3690,17 @@ OpenAPI (f.k.a Swagger) Specification code generator. Supports C#, PowerShell, Go, Java, Node.js, TypeScript, Python created: '2015-02-20T23:02:54Z' - updated: '2023-08-21T15:50:36Z' + updated: '2023-08-23T22:05:18Z' language: TypeScript archived: false - stars: 4304 + stars: 4305 watchers: 820 forks: 741 owner: Azure logo: https://avatars.githubusercontent.com/u/6844498?v=4 license: MIT - repoEtag: '"7a330a90cb6f9b6698df070cab0df236a53af50cacaf152537041d561de5faa0"' - repoLastModified: Mon, 21 Aug 2023 15:50:36 GMT + repoEtag: '"b306a61e5aae2676df72e1d5993aa19ce5c38599e5af6c8bc3fe6f13923b03de"' + repoLastModified: Wed, 23 Aug 2023 22:05:18 GMT foundInMaster: true id: 648d92bca90bf58cd74407e0bcad2936 - source: https://openapi.tools/ @@ -3758,11 +3758,11 @@ archived: false stars: 187 watchers: 20 - forks: 23 + forks: 24 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT - repoEtag: '"be80390e0c1d45a9112699a0d3c3581fca8ce8dae5034ac20210a29728458bfd"' + repoEtag: '"db7e8c988b942c2153aa063ac4edb4ae6013c209d4594138e42c2794ae606a6a"' repoLastModified: Mon, 21 Aug 2023 12:07:22 GMT foundInMaster: true id: 362a4b56c90877840a8032f920389bf6 @@ -3791,17 +3791,17 @@ repositoryId: 81140437 description: 🚀 Automatic SDK generation from an OpenAPI definition created: '2017-02-06T22:31:07Z' - updated: '2023-08-22T13:53:04Z' + updated: '2023-08-23T19:30:28Z' language: TypeScript archived: false - stars: 383 + stars: 384 watchers: 19 forks: 19 owner: readmeio logo: https://avatars.githubusercontent.com/u/6878153?v=4 license: MIT - repoEtag: '"5eb8a1ac62b6d087e632368b8f6a518d9c5a8382271aa8a553a3df8b45ccea0c"' - repoLastModified: Tue, 22 Aug 2023 13:53:04 GMT + repoEtag: '"84ba9e1c6289d5838f50ee59673bd96ce454b95450ba05e4e7c7023fb915ca6a"' + repoLastModified: Wed, 23 Aug 2023 19:30:28 GMT foundInMaster: true - source: https://openapi.tools/ name: oas-normalize @@ -4065,17 +4065,17 @@ repositoryId: 32223373 description: A model-based test case generator created: '2015-03-14T17:22:38Z' - updated: '2023-07-29T01:11:14Z' + updated: '2023-08-23T09:13:46Z' language: Java archived: false - stars: 180 + stars: 181 watchers: 18 forks: 47 owner: Cornutum logo: https://avatars.githubusercontent.com/u/11477145?v=4 license: MIT - repoEtag: '"8f401fa1d4636d2a3c785558409c983671a63afc736fbaacd53e97d0bfd47c4a"' - repoLastModified: Sat, 29 Jul 2023 01:11:14 GMT + repoEtag: '"6abd7678599c52f4977e4b0aef22941ab760522ab51cdbe93450a808ea54fa70"' + repoLastModified: Wed, 23 Aug 2023 09:13:46 GMT foundInMaster: true id: 64dc602f01798a9a39aba18c09d655ae - source: https://openapi.tools/ @@ -4102,17 +4102,17 @@ applications. Currently targeting whitebox and blackbox testing of Web APIs, like REST and GraphQL. created: '2017-05-25T09:11:23Z' - updated: '2023-08-22T16:11:10Z' + updated: '2023-08-23T15:32:07Z' language: Kotlin archived: false - stars: 349 + stars: 351 watchers: 24 forks: 66 owner: EMResearch logo: https://avatars.githubusercontent.com/u/29148026?v=4 license: LGPL-3.0 - repoEtag: '"0e91a5592a2d6b0537fe2f22ba474fb1f10214bef65895fa42baf6bb86ba8417"' - repoLastModified: Tue, 22 Aug 2023 16:11:10 GMT + repoEtag: '"efac28dbcc74be0baf934141e9da87ced485ac3ce2d16dcef7f70a09e999627d"' + repoLastModified: Wed, 23 Aug 2023 15:32:07 GMT foundInMaster: true id: eba0fd1e4a49eb507e337ad2266e9a16 - source: https://openapi.tools/ @@ -4255,17 +4255,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-16T22:30:45Z' + updated: '2023-08-23T10:00:16Z' language: TypeScript archived: false - stars: 182 + stars: 183 watchers: 6 forks: 18 owner: openapi-contrib logo: https://avatars.githubusercontent.com/u/49447320?v=4 license: MIT - repoEtag: '"e90297c63bd9902e71f24ecddb7ad2909b18a30a0e22ffaf7a0ef8df02187f9d"' - repoLastModified: Wed, 16 Aug 2023 22:30:45 GMT + repoEtag: '"0022c4a92de3bf852aa9de49e7f0a14228251588ce7df6bfae47275937474ae9"' + repoLastModified: Wed, 23 Aug 2023 10:00:16 GMT foundInMaster: true id: f6608d418f20d73a1e15b74206edd45a - source: https://openapi.tools/ @@ -4328,17 +4328,17 @@ :scroll: Visual Studio extension to generate OpenAPI (Swagger) web service reference. created: '2019-03-30T18:26:16Z' - updated: '2023-07-27T05:53:19Z' + updated: '2023-08-23T21:32:22Z' language: C# archived: false - stars: 91 + stars: 90 watchers: 2 forks: 14 owner: unchase logo: https://avatars.githubusercontent.com/u/29679226?v=4 license: Apache-2.0 - repoEtag: '"85b9af8be0b0c22bda1c1b7176178951c91589d8b5a10608dbddb3554f3d0b3c"' - repoLastModified: Thu, 27 Jul 2023 05:53:19 GMT + repoEtag: '"6c710c8f91be93f56e426852a530129261d59bc8e536d08afa8833bb0a4de394"' + repoLastModified: Wed, 23 Aug 2023 21:32:22 GMT foundInMaster: true id: b552c4cab06ab1125ad610aaea022ee3 - source: https://openapi.tools/ @@ -4568,7 +4568,7 @@ owner: codekie logo: https://avatars.githubusercontent.com/u/1512840?v=4 license: MIT - repoEtag: '"c003d41a0f7ad8c21b570c6240d810eed10b552797227d318394b26586329e06"' + repoEtag: '"6342f6d46bdd863e51259ea02d3a068675dc0d8f9abc2c39de59831ea9766219"' repoLastModified: Thu, 13 Jul 2023 09:06:29 GMT foundInMaster: true id: 301e3f380f248daf345a88c8971d2a71 @@ -4677,7 +4677,7 @@ owner: github logo: https://avatars.githubusercontent.com/u/9919?v=4 license: MIT - repoEtag: '"6066d94640f8b004088b57eb1798fc435a9bee7107c3fce04e7e09aa8649ff8d"' + repoEtag: '"5de2e35121d98fe1be0074f75d07d26f2a93fe540e0bd023b68b03cb15b51afc"' repoLastModified: Tue, 22 Aug 2023 15:30:39 GMT foundInMaster: true id: ec6a7a1e4a69a9beeb95bdebb88cb36d @@ -4771,17 +4771,17 @@ repositoryId: 36817565 description: The ZAP core project created: '2015-06-03T16:55:01Z' - updated: '2023-08-22T21:39:26Z' + updated: '2023-08-24T03:01:46Z' language: Java archived: false - stars: 11163 + stars: 11165 watchers: 397 - forks: 2114 + forks: 2115 owner: zaproxy logo: https://avatars.githubusercontent.com/u/6716868?v=4 license: Apache-2.0 - repoEtag: '"0c189e2711a66a140d7f0abe7430ad71f5a7519bbc3f1cd6d1fca755f8449d49"' - repoLastModified: Tue, 22 Aug 2023 21:39:26 GMT + repoEtag: '"9d19d9aa51de2420aadb22740b2451798f957d8f9c45fcb4573a1a8bff0446d3"' + repoLastModified: Thu, 24 Aug 2023 03:01:46 GMT foundInMaster: true id: 9eedc1be44837a65f912bcf562844f39 - source: https://openapi.tools/ @@ -4974,7 +4974,7 @@ owner: hotmeteor logo: https://avatars.githubusercontent.com/u/378585?v=4 license: MIT - repoEtag: '"617a33b2e242847486f4c8160e8b27e37752841952d34900c22da8458cd1b62c"' + repoEtag: '"9ec0a89dbb61e12916a9c44aa2f96afd72298a16d2125b2395e0d420a013c1eb"' repoLastModified: Wed, 02 Aug 2023 17:38:21 GMT foundInMaster: true v3_1_link: https://github.com/hotmeteor/spectator/issues/100 @@ -5032,17 +5032,17 @@ repositoryId: 1431547 description: Web APIs for Django. 🎸 created: '2011-03-02T17:13:56Z' - updated: '2023-08-23T01:20:08Z' + updated: '2023-08-24T00:47:35Z' language: Python archived: false - stars: 26178 + stars: 26179 watchers: 617 - forks: 6669 + forks: 6668 owner: encode logo: https://avatars.githubusercontent.com/u/19159390?v=4 license: NOASSERTION - repoEtag: '"0129f694e137ad2183459d49cbeb561e65e08d3ff30465b656ebbac924379633"' - repoLastModified: Wed, 23 Aug 2023 01:20:08 GMT + repoEtag: '"27c0ff4da994d0635b18fcb58086b120622dc2d06e6cf3a6385181675161f570"' + repoLastModified: Thu, 24 Aug 2023 00:47:35 GMT foundInMaster: true id: fb8994c078a380cc3510b024f6ed1202 category: Server Implementations @@ -5223,17 +5223,17 @@ repositoryId: 240776275 description: Generate modern Python clients from OpenAPI created: '2020-02-15T19:33:46Z' - updated: '2023-08-21T04:54:47Z' + updated: '2023-08-23T16:41:06Z' language: Python archived: false - stars: 797 - watchers: 14 - forks: 152 + stars: 798 + watchers: 13 + forks: 153 owner: openapi-generators logo: https://avatars.githubusercontent.com/u/84925606?v=4 license: MIT - repoEtag: '"ba31e052948ea1df8cb8ee9049d52904ed15bac7f648c63dba1d08d13e888e0a"' - repoLastModified: Mon, 21 Aug 2023 04:54:47 GMT + repoEtag: '"670afc9c1e1d5cfce047c5b259fc40717ff4003b20c7b376aacd5a5a2dde75a2"' + repoLastModified: Wed, 23 Aug 2023 16:41:06 GMT foundInMaster: true id: 784ec4adac4e47e4211ea74ef36dd5a5 - source: @@ -5262,17 +5262,17 @@ Build beautiful, interactive API Docs with embeddable React or Web Components, powered by OpenAPI and Markdown. created: '2019-05-03T01:05:01Z' - updated: '2023-08-22T14:56:37Z' + updated: '2023-08-23T03:47:06Z' language: TypeScript archived: false - stars: 1138 + stars: 1139 watchers: 19 - forks: 138 + forks: 139 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: Apache-2.0 - repoEtag: '"cecfd0ea11722ee6799b4a1f79da0b3ab49bac8c1ddcf6cfdf4938391e747559"' - repoLastModified: Tue, 22 Aug 2023 14:56:37 GMT + repoEtag: '"b8353609ba341f62fe030fee36ff310ec47d92a7fe39ce2032cb36bf3230c835"' + repoLastModified: Wed, 23 Aug 2023 03:47:06 GMT foundInMaster: true id: 2f94cc1fc980953b17a9979d4ff2e7ec - source: @@ -5562,7 +5562,7 @@ owner: derveloper logo: https://avatars.githubusercontent.com/u/18556?v=4 license: Apache-2.0 - repoEtag: '"4d3ecde2819a7d38459f9ebff1807a99e1928a9f0478e474732994bef08ba0f6"' + repoEtag: '"cf3850c451717e0d029d578df5bb2e41c6c9deb9d6c505c7329b26bb1b4a1f3f"' repoLastModified: Thu, 10 Aug 2023 08:29:13 GMT foundInMaster: true - source: https://openapi.tools/ @@ -5597,17 +5597,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-22T22:24:10Z' + updated: '2023-08-23T06:56:47Z' language: TypeScript archived: false - stars: 1579 + stars: 1581 watchers: 6 forks: 182 owner: anymaniax logo: https://avatars.githubusercontent.com/u/10516382?v=4 license: MIT - repoEtag: '"f94ae26203d6743c9982e153102c321ce2910f0aabfe20793faae359e0f1f2b4"' - repoLastModified: Tue, 22 Aug 2023 22:24:10 GMT + repoEtag: '"2587df0c0d2892b6b81ccce6913c719659da1f33ddb0212a7f707bee97e21a86"' + repoLastModified: Wed, 23 Aug 2023 06:56:47 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -5696,7 +5696,7 @@ repositoryId: 479515560 description: OpenAPI / Swagger to TypeScript generator and mock server created: '2022-04-08T19:32:15Z' - updated: '2023-08-21T17:50:11Z' + updated: '2023-08-23T23:52:43Z' language: JavaScript archived: false stars: 46 @@ -5705,8 +5705,8 @@ owner: pmcelhaney logo: https://avatars.githubusercontent.com/u/51504?v=4 license: MIT - repoEtag: '"69b4cf4d2c4914ac4f8e5f6b575054fc48f78fd272d485cb25860d1812da6134"' - repoLastModified: Mon, 21 Aug 2023 17:50:11 GMT + repoEtag: '"75737bd9cd8fbe50194aa336c0b8f2ceaca6e394dc05a192601d0a8c3a8223d4"' + repoLastModified: Wed, 23 Aug 2023 23:52:43 GMT category: - Parsers - SDK @@ -5748,9 +5748,9 @@ v3: true repositoryMetadata: base64Readme: >- - IVtsb2dvXShsb2dvLnBuZykKCiMgdmFjdXVtIC0gVGhlIHdvcmxkJ3MgZmFzdGVzdCBPcGVuQVBJICYgU3dhZ2dlciBsaW50ZXIuCgohW1BpcGVsaW5lXShodHRwczovL2dpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtL3dvcmtmbG93cy92YWNjdW0lMjBwaXBlbGluZS9iYWRnZS5zdmcpClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0pXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtKQpbIVtkaXNjb3JkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2Rpc2NvcmQvOTIzMjU4MzYzNTQwODE1OTEyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL1VBY1VGNzhNUU4pClshW0RvY3NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZ29kb2MtcmVmZXJlbmNlLTVmYWZkNyldKGh0dHBzOi8tL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0pClshW0dpdEh1YiBkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2Rvd25sb2Fkcy9kYXZlc2hhbmxleS92YWN1dW0vdG90YWw/bGFiZWw9Z2l0aHViJTIwZG93bmxvYWRzJnN0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bS9yZWxlYXNlcykKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9AcXVvYml4L3ZhY3V1bT9zdHlsZT1mbGF0LXNxdWFyZSZsYWJlbD1ucG0lMjBkb3dubG9hZHMpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AcXVvYml4L3ZhY3V1bSkKWyFbRG9ja2VyIFB1bGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9wdWxscy9kc2hhbmxleS92YWN1dW0/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvZHNoYW5sZXkvdmFjdXVtKQpbIVtNZW50aW9uZWQgaW4gQXdlc29tZSBHb10oaHR0cHM6Ly9hd2Vzb21lLnJlL21lbnRpb25lZC1iYWRnZS1mbGF0LnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmVsaW5vL2F3ZXNvbWUtZ28pCgpBbiAqKnVsdHJhLXN1cGVyLWZhc3QqKiwgbGlnaHR3ZWlnaHQgT3BlbkFQSSBsaW50ZXIgYW5kIHF1YWxpdHkgY2hlY2tpbmcgdG9vbCwgd3JpdHRlbiBpbiBnb2xhbmcgYW5kIGluc3BpcmVkIGJ5IFtTcGVjdHJhbF0oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3NwZWN0cmFsKS4KCkl0J3MgYWxzbyBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcgW1NwZWN0cmFsXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwpIHJ1bGVzZXRzLgoKIyMgSW5zdGFsbCB1c2luZyBbaG9tZWJyZXddKGh0dHBzOi8vYnJldy5zaCkgdGFwCgpgYGAKYnJldyBpbnN0YWxsIGRhdmVzaGFubGV5L3ZhY3V1bS92YWN1dW0KYGBgCgojIyBJbnN0YWxsIHVzaW5nIFtucG1dKGh0dHBzOi8vbnBtanMuY29tKQoKYGBgCm5wbSBpIC1nIEBxdW9iaXgvdmFjdXVtCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBbeWFybl0oaHR0cHM6Ly95YXJucGtnLmNvbS8pCgpgYGAKeWFybiBnbG9iYWwgYWRkIEBxdW9iaXgvdmFjdXVtCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBjdXJsCgpgYGAKY3VybCAtZnNTTCBodHRwczovL3F1b2JpeC5jb20vc2NyaXB0cy9pbnN0YWxsX3ZhY3V1bS5zaCB8IHNoCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBbRG9ja2VyXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvZHNoYW5sZXkvdmFjdXVtKQoKVGhlIGltYWdlIGlzIGF2YWlsYWJsZSBhdDogaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2RzaGFubGV5L3ZhY3V1bQoKYGBgCmRvY2tlciBwdWxsIGRzaGFubGV5L3ZhY3V1bQpgYGAKClRvIHJ1biwgbW91bnQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXIgdG8gdGhlIGNvbnRhaW5lciBhbmQgdXNlIGEgcmVsYXRpdmUgcGF0aCB0byB5b3VyIHNwZWMsIGxpa2Ugc28KCmBgYApkb2NrZXIgcnVuIC0tcm0gLXYgJFBXRDovd29yazpybyBkc2hhbmxleS92YWN1dW0gbGludCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHVsbCBpdCBmcm9tCltHaXRodWIgcGFja2FnZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0vcGtncy9jb250YWluZXIvdmFjdXVtKS4KVG8gZG8gdGhhdCwgcmVwbGFjZSBgZHNoYW5sZXkvdmFjdXVtYCB3aXRoIGBnaGNyLmlvL2RhdmVzaGFubGV5L3ZhY3V1bWAgaW4gdGhlIGFib3ZlIGNvbW1hbmRzLgoKCi0tLQoKCiMjIFNwb25zb3JzCklmIHlvdXIgY29tcGFueSBpcyB1c2luZyBgdmFjdXVtYCwgcGxlYXNlIGNvbnNpZGVyaW5nIFtzdXBwb3J0aW5nIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2RhdmVzaGFubGV5KSwKbGlrZSBvdXIgX3Zlcnkga2luZF8gc3BvbnNvcnM6Cgo8cCBhbGlnbj0iY2VudGVyIj4KCTxhIGhyZWY9Ii8vd3d3LnNwZWFrZWFzeWFwaS5kZXYiPjxpbWcgc3JjPSIuZ2l0aHViL3Nwb25zb3JzL3NwZWFrZWFzeS5wbmciIGFsdD0iU3BlYWtlYXN5IiBoZWlnaHQ9IjEwMHB4Ii8+PC9hPgogICAgPGJyLz4KICAgIDxhIGhyZWY9Ii8vd3d3LnNwZWFrZWFzeWFwaS5kZXYiPlNwZWFrZWFzeTwvYT4KPC9wPgoKLS0tCgojIyBDb21lIGNoYXQgd2l0aCB1cwoKTmVlZCBoZWxwPyBIYXZlIGEgcXVlc3Rpb24/IFdhbnQgdG8gc2hhcmUgeW91ciB3b3JrPyBbSm9pbiBvdXIgZGlzY29yZF0oaHR0cHM6Ly9kaXNjb3JkLmdnL1VBY1VGNzhNUU4pIGFuZApjb21lIHNheSBoaSEKCiMjIERvY3VtZW50YXRpb24KCi0tLQrwn5SlICoqTmV3IGluKiogYHYwLjMuMCtgIPCflKUgOiBbQ3VzdG9tIEphdmFTY3JpcHQgRnVuY3Rpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9jdXN0b20tamF2YXNjcmlwdC1mdW5jdGlvbnMvKSBhcmUgbm93IGF2YWlsYWJsZSBvdXQgb2YgdGhlIGJveC4KCldyaXRlIGN1c3RvbSBmdW5jdGlvbnMgaW4gSmF2YVNjcmlwdCBhbmQgdXNlIHRoZW0gaW4gYW55IHJ1bGVzZXQuIE5vIG5lZWQKdG8gY29tcGlsZSBnb2xhbmcgY29kZSB0byBleHRlbmQgdmFjdXVtIGFueW1vcmUhCgpbTGVhcm4gbW9yZSBhYm91dCBidWlsZGluZyBjdXN0b20gSmF2YVNjcmlwdCBmdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL2N1c3RvbS1qYXZhc2NyaXB0LWZ1bmN0aW9ucy8pLgoKCi0tLQoqKk5ldyBpbioqIGB2MC4yLjArYDogW09XQVNQIEFQSSBydWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9vd2FzcC8pIGFyZSBub3cgYXZhaWxhYmxlIG91dCBvZiB0aGUgYm94LgoKW0xlYXJuIG1vcmUgYWJvdXQgZW5hYmxpbmcgT1dBU1AgQVBJIHJ1bGVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzZXRzL293YXNwLykuCgotLS0KCiMjIyBbUXVpY2sgU3RhcnQgR3VpZGUg8J+agF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9zdGFydCkKClNlZSBhbGwgdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bQoKLSBbSW5zdGFsbGluZyB2YWN1dW1dKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vaW5zdGFsbGluZy8pCi0gW0Fib3V0IHZhY3V1bV0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hYm91dC8pCi0gW1doeSBzaG91bGQgeW91IGNhcmU/XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3doeS8pCi0gW0NvbmNlcHRzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbmNlcHRzLykKLSBbRkFRXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2ZhcS8pCi0gW0NMSSBDb21tYW5kc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9jb21tYW5kcy8pCiAgLSBbbGludF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9jb21tYW5kcy9saW50LykKICAtIFt2YWN1dW0gcmVwb3J0XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL3JlcG9ydC8pCiAgLSBbZGFzaGJvYXJkXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL2Rhc2hib2FyZC8pCiAgLSBbaHRtbC1yZXBvcnRdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvaHRtbC1yZXBvcnQvKQogIC0gW3NwZWN0cmFsLXJlcG9ydF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9jb21tYW5kcy9zcGVjdHJhbC1yZXBvcnQvKQotIFtEZXZlbG9wZXIgQVBJXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9nZXR0aW5nLXN0YXJ0ZWQvKQogIC0gW1VzaW5nIFRoZSBJbmRleF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvc3BlYy1pbmRleC8pCiAgLSBbUnVsZVJlc3VsdFNldF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvcnVsZS1yZXN1bHRzZXQvKQogIC0gW0xvYWRpbmcgYSBSdWxlU2V0XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9sb2FkaW5nLXJ1bGVzZXQvKQogIC0gW0xpbnRpbmcgTm9uLU9wZW5BUEkgRmlsZXNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL25vbi1vcGVuYXBpLykKICAtIFtDdXN0b20gR29sYW5nIEZ1bmN0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvY3VzdG9tLWZ1bmN0aW9ucy8pCiAgLSBbQ3VzdG9tIEphdmFTY3JpcHQgRnVuY3Rpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9jdXN0b20tamF2YXNjcmlwdC1mdW5jdGlvbnMvKQotIFtSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy8pCiAgLSBbRXhhbXBsZXNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvZXhhbXBsZXMvKQogIC0gW1RhZ3NdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvdGFncy8pCiAgLSBbRGVzY3JpcHRpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL2Rlc2NyaXB0aW9ucy8pCiAgLSBbU2NoZW1hc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9zY2hlbWFzLykKICAtIFtTcGVjIEluZm9ybWF0aW9uXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL2luZm9ybWF0aW9uLykKICAtIFtPcGVyYXRpb25zICYgUGF0aHNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvb3BlcmF0aW9ucy8pCiAgLSBbVmFsaWRhdGlvbl0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy92YWxpZGF0aW9uLykKICAtIFtTZWN1cml0eV0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9zZWN1cml0eS8pCiAgLSBbT1dBU1BdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvb3dhc3AvKQotIFtGdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZnVuY3Rpb25zLykKICAtIFtDb3JlIEZ1bmN0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9mdW5jdGlvbnMvY29yZS8pIAogIC0gW09wZW5BUEkgRnVuY3Rpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2Z1bmN0aW9ucy9vcGVuYXBpLykKICAtIFtPV0FTUCBGdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZnVuY3Rpb25zL293YXNwLykKLSBbVW5kZXJzdGFuZGluZyBSdWxlU2V0c10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy91bmRlcnN0YW5kaW5nLykKICAtIFtBbGwgUnVsZXNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXNldHMvYWxsLykKICAtIFtObyBSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy9uby1ydWxlcy8pCiAgLSBbUmVjb21tZW5kZWQgUnVsZXNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXNldHMvcmVjb21tZW5kZWQvKQogIC0gW0N1c3RvbSBSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy9jdXN0b20tcnVsZXNldHMvKQoKLS0tCgo+ICoqdmFjdXVtIGNhbiBzdWNrIGFsbCB0aGUgbGludCBvZiBhIDVtYiBPcGVuQVBJIHNwZWMgaW4gYWJvdXQgMjMwbXMuKioKCkRlc2lnbmVkIHRvIHJlbGlhYmx5IGxpbnQgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucywgKip2ZXJ5LCB2ZXJ5IHF1aWNrbHkqKi4gSW5jbHVkaW5nIF92ZXJ5IGxhcmdlXyBvbmVzLiBTcGVjdHJhbCBjYW4gYmUgcXVpdGUgc2xvdwp3aGVuIHVzZWQgYXMgYW4gQVBJIGFuZCBkb2VzIG5vdCBzY2FsZSBmb3IgZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMuCgp2YWN1dW0gd2lsbCB0ZWxsIHlvdSB3aGF0IGlzIHdyb25nIHdpdGggeW91ciBzcGVjLCB3aHksIHdoZXJlIGFuZCBob3cgdG8gZml4IGl0LiAKCnZhY3V1bSB3aWxsIHdvcmsgYXQgc2NhbGUgYW5kIGlzIGRlc2lnbmVkIGFzIGEgQ0xJICh3aXRoIGEgd2ViIG9yIGNvbnNvbGUgVUkpIGFuZCBhIGxpYnJhcnkgdG8gYmUgY29uc3VtZWQgaW4gb3RoZXIgYXBwbGljYXRpb25zLgoKIyMjIERhc2hib2FyZAoKdmFjdXVtIGNvbWVzIHdpdGggYW4gaW50ZXJhY3RpdmUgZGFzaGJvYXJkIChgdmFjdXVtIGRhc2hib2FyZCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD5gKSBhbGxvd2luZyB5b3UgdG8gZXhwbG9yZQpydWxlcyBhbmQgdmlvbGF0aW9ucyBpbiBhIGNvbnNvbGUsIHdpdGhvdXQgaGF2aW5nIHRvIHNjcm9sbCB0aHJvdWdoIHRob3VzYW5kcyBvZiByZXN1bHRzLgoKIVt2YWN1dW0gZGFzaGJvYXJkXShkYXNoYm9hcmQtc2NyZWVuc2hvdC5wbmcpCgojIyMgSFRNTCBSZXBvcnQKCnZhY3V1bSBjYW4gZ2VuZXJhdGUgYW4gZWFzeSB0byBuYXZpZ2F0ZSBhbmQgdW5kZXJzdGFuZCBIVE1MIHJlcG9ydC4gTGlrZSB0aGUgZGFzaGJvYXJkCnlvdSBjYW4gZXhwbG9yZSBicm9rZW4gcnVsZXMgYW5kIHZpb2xhdGlvbnMsIGJ1dCBpbiB5b3VyIGJyb3dzZXIuCgpObyBleHRlcm5hbCBkZXBlbmRlbmNpZXMsIHRoZSBIVE1MIHJlcG9ydCB3aWxsIHJ1biBjb21wbGV0ZWx5IG9mZmxpbmUuCgohW3ZhY3V1bSBodG1sLXJlcG9ydF0oaHRtbC1yZXBvcnQtc2NyZWVuc2hvdC5wbmcpCgotLS0KCj4gKipfU3VwcG9ydHMgT3BlbkFQSSBWZXJzaW9uIDIgKFN3YWdnZXIpIGFuZCBWZXJzaW9uIDMrXyoqCgpZb3UgY2FuIHVzZSBlaXRoZXIgKipZQU1MKiogb3IgKipKU09OKiosIHZhY3V1bSBzdXBwb3J0cyBib3RoIGZvcm1hdHMuCgojIyBVc2luZyB2YWN1dW0gd2l0aCBwcmUtY29tbWl0CgpWYWN1dW0gY2FuIGJlIHVzZWQgd2l0aCBbcHJlLWNvbW1pdF0oaHR0cHM6Ly9wcmUtY29tbWl0LmNvbSkuCgpUbyBkbyB0aGF0LCBhZGQgdG8geW91ciBgLnByZS1jb21taXQtY29uZmlnLnlhbWxgOgoKYGBgeWFtbApyZXBvczoKICAtIHJlcG86IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0KICAgIHJldjogIyBhIHRhZyBvciBhIGNvbW1pdCBoYXNoIGZyb20gdGhpcyByZXBvLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bS9yZWxlYXNlcwogICAgaG9va3M6CiAgICAgIC0gaWQ6IHZhY3V1bQpgYGAKClNlZSB0aGUgW2hvb2sgZGVmaW5pdGlvbl0oLi8ucHJlLWNvbW1pdC1ob29rcy55YW1sKSBoZXJlIGZvciBkZXRhaWxzIG9uIHdoYXQgb3B0aW9ucyB0aGUgaG9vayB1c2VzIGFuZCB3aGF0IGZpbGVzIGl0IGNoZWNrcyBieSBkZWZhdWx0LgoKSWYgbm8gZmlsZW5hbWVzIG9yIG1vcmUgdGhhbiBvbmUgZmlsZW5hbWUgaW4geW91ciByZXBvc2l0b3J5IG1hdGNoZXMgdGhlIGRlZmF1bHQgYGZpbGVzYCBwYXR0ZXJuIGluIHRoZSBob29rIGRlZmluaXRpb24sCnRoZSBwYXR0ZXJuIG5lZWRzIHRvIGJlIG92ZXJyaWRkZW4gaW4geW91ciBjb25maWcgc28gdGhhdCBpdCBtYXRjaGVzIGV4YWN0bHkgb25lIGZpbGVuYW1lIHRvIGxpbnQgYXQgYSB0aW1lLgpUbyBsaW50IG11bHRpcGxlIGZpbGVzLCBzcGVjaWZ5IHRoZSBob29rIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIGFwcHJvcHJpYXRlIG92ZXJyaWRlcy4KCiMjIEJ1aWxkIGFuIGludGVyYWN0aXZlIEhUTUwgcmVwb3J0IAoKYGBgCi4vdmFjdXVtIGh0bWwtcmVwb3J0IDx5b3VyLW9wZW5hcGktc3BlYy55YW1sIHwgdmFjdXVtLXJlcG9ydC5qc29uLmd6PiA8cmVwb3J0LW5hbWUuaHRtbD4KYGBgCgpZb3UgY2FuIHJlcGxhY2UgYHJlcG9ydC1uYW1lLmh0bWxgIHdpdGggeW91ciBvd24gY2hvaWNlIG9mIGZpbGVuYW1lLiBPcGVuIHRoZSByZXBvcnQKaW4geW91ciBmYXZvcml0ZSBicm93c2VyIGFuZCBleHBsb3JlIHRoZSByZXN1bHRzLiAKCgojIyBTZWUgZnVsbCBsaW50aW5nIHJlcG9ydCAKCmBgYAouL3ZhY3V1bSBsaW50IC1kIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCiMjIFNlZSBmdWxsIGxpbnRpbmcgcmVwb3J0IHdpdGggaW5saW5lIGNvZGUgc25pcHBldHMKCmBgYAouL3ZhY3V1bSBsaW50IC1kIC1zIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCiMjIFNlZSBqdXN0IHRoZSBsaW50aW5nIGVycm9ycwoKYGBgCi4vdmFjdXVtIGxpbnQgLWQgLWUgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKIyMgU2VlIGp1c3QgYSBzcGVjaWZpYyBjYXRlZ29yeSBvZiByZXBvcnQKCgpgYGAKLi92YWN1dW0gbGludCAtZCAtYyBzY2hlbWFzIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKClRoZSBvcHRpb25zIGhlcmUgYXJlOgoKLSBgZXhhbXBsZXNgCi0gYG9wZXJhdGlvbnNgCi0gYGluZm9ybWF0aW9uYAotIGBkZXNjcmlwdGlvbnNgCi0gYHNjaGVtYXNgCi0gYHNlY3VyaXR5YAotIGB0YWdzYAotIGB2YWxpZGF0aW9uYAotIGBvd2FzcGAKCiMjIEdlbmVyYXRlIGEgU3BlY3RyYWwgY29tcGF0aWJsZSByZXBvcnQKCklmIHlvdSdyZSBhbHJlYWR5IHVzaW5nIFNwZWN0cmFsIEpTT04gcmVwb3J0cywgYW5kIHlvdSB3YW50IHRvIHVzZSB2YWN1dW0gaW5zdGVhZCwgdXNlIHRoZSBgc3BlY3RyYWwtcmVwb3J0YCBjb21tYW5kCgpgYGAKLi92YWN1dW0gc3BlY3RyYWwtcmVwb3J0IDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPiA8cmVwb3J0LW91dHB1dC1uYW1lLmpzb24+CmBgYAoKVGhlIHJlcG9ydCBmaWxlIG5hbWUgaXMgX29wdGlvbmFsXy4gVGhlIGRlZmF1bHQgcmVwb3J0IG91dHB1dCBuYW1lIGlzIGB2YWN1dW0tc3BlY3RyYWwtcmVwb3J0Lmpzb25gCgoKIyMgR2VuZXJhdGUgYSBgdmFjdXVtIHJlcG9ydGAKClZhY3V1bSByZXBvcnRzIGFyZSBjb21wbGV0ZSBzbmFwc2hvdHMgaW4gdGltZSBvZiBhIGxpbnRpbmcgcmVwb3J0IGZvciBhIHNwZWNpZmljYXRpb24uIFRoZXNlIHJlcG9ydHMgY2FuIGJlICdyZXBsYXllZCcgCmJhY2sgdGhyb3VnaCB2YWN1dW0uIFVzZSB0aGUgYGRhc2hib2FyZGAgb3IgdGhlIGBodG1sLXJlcG9ydGAgY29tbWFuZHMgdG8gJ3JlcGxheScgdGhlIHJlcG9ydCBhbmQgZXhwbG9yZSB0aGUgcmVzdWx0cwphcyB0aGV5IHdlcmUgd2hlbiB0aGUgcmVwb3J0IHdhcyBnZW5lcmF0ZWQuCgpgYGAKLi92YWN1dW0gcmVwb3J0IC1jIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPiA8cmVwb3J0LXByZWZpeD4KYGBgCgpUaGUgZGVmYXVsdCBuYW1lIG9mIHRoZSByZXBvcnQgd2lsbCBiZSBgdmFjdXVtLXJlcG9ydC1NTS1ERC1ZWS1ISF9NTV9TUy5qc29uYC4gWW91IGNhbiBjaGFuZ2UgdGhlIHByZWZpeCBieSBzdXBwbHlpbmcKaXQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byB0aGUgYHJlcG9ydGAgY29tbWFuZC4gCgpJZGVhbGx5LCAqKnlvdSBzaG91bGQgY29tcHJlc3MgdGhlIHJlcG9ydCB1c2luZyBgLWNgKiouIFRoaXMgc2hyaW5rcyBkb3duIHRoZSBzaXplIHNpZ25pZmljYW50bHkuIHZhY3V1bSBhdXRvbWF0aWNhbGx5CnJlY29nbml6ZXMgYSBjb21wcmVzc2VkIHJlcG9ydCBmaWxlIGFuZCB3aWxsIGRlYWwgd2l0aCBpdCBhdXRvbWF0aWNhbGx5IHdoZW4gcmVhZGluZy4KCj4gV2hlbiB1c2luZyBjb21wcmVzc2lvbiwgdGhlIGZpbGUgbmFtZSB3aWxsIGJlIGB2YWN1dW0tcmVwb3J0LU1NLURELVlZLUhIX01NX1NTLmpzb24uZ3pgLiB2YWN1dW0gdXNlcyBnemlwIGludGVybmFsbHkuCgotLS0KCiMjIFRyeSBvdXQgdGhlIGRhc2hib2FyZAoKVGhpcyBpcyBhbiBlYXJseSwgYnV0IHdvcmtpbmcgY29uc29sZSBVSSBmb3IgdmFjdXVtLiBUaGUgY29kZSBpc24ndCBncmVhdCwgaXQgbmVlZHMgYSBsb3Qgb2YgY2xlYW4gdXAsIGJ1dAppZiB5b3UncmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoaW5ncyBhcmUgcHJvZ3Jlc3NpbmcsIGl0J3MgYXZhaWxhYmxlLgoKYGBgCi4vdmFjdXVtIGRhc2hib2FyZCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbCB8IHZhY3V1bS1yZXBvcnQuanNvbi5nej4KYGBgCgotLS0KIyMgU3VwcGx5IHlvdXIgb3duIFNwZWN0cmFsIGNvbXBhdGlibGUgcnVsZXNldAoKSWYgeW91J3JlIGFscmVhZHkgdXNpbmcgU3BlY3RyYWwgYW5kIHlvdSBoYXZlIHlvdXIgb3duIFtjdXN0b20gcnVsZXNldF0oaHR0cHM6Ly9tZXRhLnN0b3BsaWdodC5pby9kb2NzL3NwZWN0cmFsL2U1Yjk2MTZkNmQ1MGMtY3VzdG9tLXJ1bGVzZXRzI2N1c3RvbS1ydWxlc2V0cyksCnRoZW4geW91IGNhbiB1c2UgaXQgd2l0aCB2YWN1dW0hIAoKVGhlIGBsaW50YCwgYGRhc2hib2FyZGAgYW5kIGBzcGVjdHJhbC1yZXBvcnRgIGNvbW1hbmRzIGFsbCBhY2NlcHQgYSBgLXJgIG9yIGAtLXJ1bGVzZXRgIGZsYWcsIGRlZmluaW5nIHRoZSBwYXRoIHRvIHlvdXIgcnVsZXNldCBmaWxlLgoKIyMjIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgeW91IGNhbiB0cnkKCioqX0FsbCBydWxlcyB0dXJuZWQgb2ZmXyoqCmBgYAouL3ZhY3V1bSBsaW50IC1yIHJ1bGVzZXRzL2V4YW1wbGVzL25vcnVsZXMtcnVsZXNldC55YW1sIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCioqX09ubHkgcmVjb21tZW5kZWQgcnVsZXNfKioKYGBgCi4vdmFjdXVtIGxpbnQgLXIgcnVsZXNldHMvZXhhbXBsZXMvcmVjb21tZW5kZWQtcnVsZXNldC55YW1sIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCioqX0VuYWJsZSBzcGVjaWZpYyBydWxlcyBvbmx5XyoqCmBgYAouL3ZhY3V1bSBsaW50IC1yIHJ1bGVzZXRzL2V4YW1wbGVzL3NwZWNpZmljLXJ1bGVzZXQueWFtbCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCgoqKl9DdXN0b20gcnVsZXNfKioKYGBgCi4vdmFjdXVtIGxpbnQgLXIgcnVsZXNldHMvZXhhbXBsZXMvY3VzdG9tLXJ1bGVzZXQueWFtbCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCgoqKl9BbGwgcnVsZXMsIGFsbCBvZiB0aGVtISoqCmBgYAouL3ZhY3V1bSBsaW50IC1yIHJ1bGVzZXRzL2V4YW1wbGVzL2FsbC1ydWxlc2V0LnlhbWwgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKLS0tCgojIyBDb25maWd1cmF0aW9uCgojIyMgRmlsZQpZb3UgY2FuIGNvbmZpZ3VyZSB2YWN1dW0gdXNpbmcgYSBjb25maWd1cmF0aW9uIGZpbGUgbmFtZWQgYHZhY3V1bS5jb25mLnlhbWxgCgpCeSBkZWZhdWx0LCB2YWN1dW0gc2VhcmNoZXMgZm9yIHRoaXMgZmlsZSBpbiB0aGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzCjEuIFdvcmtpbmcgZGlyZWN0b3J5CjIuIGAkWERHX0NPTkZJR19IT01FYAozLiBgJHtIT01FfS8uY29uZmlnYAoKWW91IGNhbiBhbHNvIHNwZWNpZnkgYSBwYXRoIHRvIGEgZmlsZSB1c2luZyB0aGUgYC0tY29uZmlnYCBmbGFnCgpHbG9iYWwgZmxhZ3MgYXJlIGNvbmZpZ3VyZWQgYXMgdG9wIGxldmVsIG5vZGVzCmBgYHlhbWwKdGltZTogdHJ1ZQpiYXNlOiAnaHR0cDovL2V4YW1wbGUuY29tJwouLi4KYGBgCkNvbW1hbmQgc3BlY2lmaWMgZmxhZ3MgYXJlIGNvbmZpZ3VyZWQgdW5kZXIgYSBub2RlIHdpdGggdGhlIGNvbW1hbmRzIG5hbWUKYGBgeWFtbAouLi4KbGludDoKICBzaWxlbnQ6IHRydWUKICAuLi4KYGBgCgojIyMgRW52aXJvbm1lbnRhbCB2YXJpYWJsZXMKCllvdSBjYW4gY29uZmlndXJlIGdsb2JhbCB2YWN1dW0gZmxhZ3MgdXNpbmcgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgaW4gdGhlIGZvcm0gb2Y6IGBWQUNVVU1fPGZsYWc+YAoKSWYgYSBmbGFnLCBoYXMgYSBgLWAgaW4gaXQsIHJlcGxhY2Ugd2l0aCBgX2AKCj4gTG9nbyBnb3BoZXIgaXMgbW9kaWZpZWQsIG9yaWdpbmFsbHkgZnJvbSBbZWdvbmVsYnJlXShodHRwczovL2dpdGh1Yi5jb20vZWdvbmVsYnJlL2dvcGhlcnMpCg== - readmeEtag: '"3617e964f0033abae3683965dc1780c6a7700edbac4c05be9261afcd6a682797"' - readmeLastModified: Mon, 21 Aug 2023 17:52:56 GMT + IVtsb2dvXShsb2dvLnBuZykKCiMgdmFjdXVtIC0gVGhlIHdvcmxkJ3MgZmFzdGVzdCBPcGVuQVBJICYgU3dhZ2dlciBsaW50ZXIuCgohW2J1aWxkXShodHRwczovL2dpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtL3dvcmtmbG93cy9CdWlsZC9iYWRnZS5zdmcpClshW0dvIFJlcG9ydCBDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0pXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vcmVwb3J0L2dpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtKQpbIVtkaXNjb3JkXShodHRwczovL2ltZy5zaGllbGRzLmlvL2Rpc2NvcmQvOTIzMjU4MzYzNTQwODE1OTEyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL1VBY1VGNzhNUU4pClshW0RvY3NdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvZ29kb2MtcmVmZXJlbmNlLTVmYWZkNyldKGh0dHBzOi8tL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0pClshW0dpdEh1YiBkb3dubG9hZHNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2Rvd25sb2Fkcy9kYXZlc2hhbmxleS92YWN1dW0vdG90YWw/bGFiZWw9Z2l0aHViJTIwZG93bmxvYWRzJnN0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bS9yZWxlYXNlcykKWyFbbnBtXShodHRwczovL2ltZy5zaGllbGRzLmlvL25wbS9kbS9AcXVvYml4L3ZhY3V1bT9zdHlsZT1mbGF0LXNxdWFyZSZsYWJlbD1ucG0lMjBkb3dubG9hZHMpXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AcXVvYml4L3ZhY3V1bSkKWyFbRG9ja2VyIFB1bGxzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2RvY2tlci9wdWxscy9kc2hhbmxleS92YWN1dW0/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvZHNoYW5sZXkvdmFjdXVtKQpbIVtNZW50aW9uZWQgaW4gQXdlc29tZSBHb10oaHR0cHM6Ly9hd2Vzb21lLnJlL21lbnRpb25lZC1iYWRnZS1mbGF0LnN2ZyldKGh0dHBzOi8vZ2l0aHViLmNvbS9hdmVsaW5vL2F3ZXNvbWUtZ28pCgpBbiAqKnVsdHJhLXN1cGVyLWZhc3QqKiwgbGlnaHR3ZWlnaHQgT3BlbkFQSSBsaW50ZXIgYW5kIHF1YWxpdHkgY2hlY2tpbmcgdG9vbCwgd3JpdHRlbiBpbiBnb2xhbmcgYW5kIGluc3BpcmVkIGJ5IFtTcGVjdHJhbF0oaHR0cHM6Ly9naXRodWIuY29tL3N0b3BsaWdodGlvL3NwZWN0cmFsKS4KCkl0J3MgYWxzbyBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcgW1NwZWN0cmFsXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwpIHJ1bGVzZXRzLgoKIyMgSW5zdGFsbCB1c2luZyBbaG9tZWJyZXddKGh0dHBzOi8vYnJldy5zaCkgdGFwCgpgYGAKYnJldyBpbnN0YWxsIGRhdmVzaGFubGV5L3ZhY3V1bS92YWN1dW0KYGBgCgojIyBJbnN0YWxsIHVzaW5nIFtucG1dKGh0dHBzOi8vbnBtanMuY29tKQoKYGBgCm5wbSBpIC1nIEBxdW9iaXgvdmFjdXVtCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBbeWFybl0oaHR0cHM6Ly95YXJucGtnLmNvbS8pCgpgYGAKeWFybiBnbG9iYWwgYWRkIEBxdW9iaXgvdmFjdXVtCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBjdXJsCgpgYGAKY3VybCAtZnNTTCBodHRwczovL3F1b2JpeC5jb20vc2NyaXB0cy9pbnN0YWxsX3ZhY3V1bS5zaCB8IHNoCmBgYAoKIyMgSW5zdGFsbCB1c2luZyBbRG9ja2VyXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3IvZHNoYW5sZXkvdmFjdXVtKQoKVGhlIGltYWdlIGlzIGF2YWlsYWJsZSBhdDogaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL2RzaGFubGV5L3ZhY3V1bQoKYGBgCmRvY2tlciBwdWxsIGRzaGFubGV5L3ZhY3V1bQpgYGAKClRvIHJ1biwgbW91bnQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXIgdG8gdGhlIGNvbnRhaW5lciBhbmQgdXNlIGEgcmVsYXRpdmUgcGF0aCB0byB5b3VyIHNwZWMsIGxpa2Ugc28KCmBgYApkb2NrZXIgcnVuIC0tcm0gLXYgJFBXRDovd29yazpybyBkc2hhbmxleS92YWN1dW0gbGludCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gcHVsbCBpdCBmcm9tCltHaXRodWIgcGFja2FnZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlc2hhbmxleS92YWN1dW0vcGtncy9jb250YWluZXIvdmFjdXVtKS4KVG8gZG8gdGhhdCwgcmVwbGFjZSBgZHNoYW5sZXkvdmFjdXVtYCB3aXRoIGBnaGNyLmlvL2RhdmVzaGFubGV5L3ZhY3V1bWAgaW4gdGhlIGFib3ZlIGNvbW1hbmRzLgoKCi0tLQoKCiMjIFNwb25zb3JzCklmIHlvdXIgY29tcGFueSBpcyB1c2luZyBgdmFjdXVtYCwgcGxlYXNlIGNvbnNpZGVyaW5nIFtzdXBwb3J0aW5nIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2RhdmVzaGFubGV5KSwKbGlrZSBvdXIgX3Zlcnkga2luZF8gc3BvbnNvcnM6CgoKPGEgaHJlZj0iaHR0cHM6Ly9zcGVha2Vhc3lhcGkuZGV2Lz91dG1fc291cmNlPXZhY3V1bStyZXBvJnV0bV9tZWRpdW09Z2l0aHViK3Nwb25zb3JzaGlwIj4KPHBpY3R1cmU+CiAgPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSIuZ2l0aHViL3Nwb25zb3JzL3NwZWFrZWFzeS1naXRodWItc3BvbnNvci1kYXJrLnN2ZyI+CiAgPGltZyBhbHQ9InNwZWFrZWFzeSciIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3ktZ2l0aHViLXNwb25zb3ItbGlnaHQuc3ZnIj4KPC9waWN0dXJlPgo8L2E+CgpbU3BlYWtlYXN5XShodHRwczovL3NwZWFrZWFzeWFwaS5kZXYvP3V0bV9zb3VyY2U9dmFjdXVtK3JlcG8mdXRtX21lZGl1bT1naXRodWIrc3BvbnNvcnNoaXApCgotLS0KCiMjIENvbWUgY2hhdCB3aXRoIHVzCgpOZWVkIGhlbHA/IEhhdmUgYSBxdWVzdGlvbj8gV2FudCB0byBzaGFyZSB5b3VyIHdvcms/IFtKb2luIG91ciBkaXNjb3JkXShodHRwczovL2Rpc2NvcmQuZ2cvVUFjVUY3OE1RTikgYW5kCmNvbWUgc2F5IGhpIQoKIyMgRG9jdW1lbnRhdGlvbgoKLS0tCvCflKUgKipOZXcgaW4qKiBgdjAuMy4wK2Ag8J+UpSA6IFtDdXN0b20gSmF2YVNjcmlwdCBGdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL2N1c3RvbS1qYXZhc2NyaXB0LWZ1bmN0aW9ucy8pIGFyZSBub3cgYXZhaWxhYmxlIG91dCBvZiB0aGUgYm94LgoKV3JpdGUgY3VzdG9tIGZ1bmN0aW9ucyBpbiBKYXZhU2NyaXB0IGFuZCB1c2UgdGhlbSBpbiBhbnkgcnVsZXNldC4gTm8gbmVlZAp0byBjb21waWxlIGdvbGFuZyBjb2RlIHRvIGV4dGVuZCB2YWN1dW0gYW55bW9yZSEKCltMZWFybiBtb3JlIGFib3V0IGJ1aWxkaW5nIGN1c3RvbSBKYXZhU2NyaXB0IGZ1bmN0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvY3VzdG9tLWphdmFzY3JpcHQtZnVuY3Rpb25zLykuCgoKLS0tCioqTmV3IGluKiogYHYwLjIuMCtgOiBbT1dBU1AgQVBJIHJ1bGVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL293YXNwLykgYXJlIG5vdyBhdmFpbGFibGUgb3V0IG9mIHRoZSBib3guCgpbTGVhcm4gbW9yZSBhYm91dCBlbmFibGluZyBPV0FTUCBBUEkgcnVsZXNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXNldHMvb3dhc3AvKS4KCi0tLQoKIyMjIFtRdWljayBTdGFydCBHdWlkZSDwn5qAXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3N0YXJ0KQoKU2VlIGFsbCB0aGUgZG9jdW1lbnRhdGlvbiBhdCBodHRwczovL3F1b2JpeC5jb20vdmFjdXVtCgotIFtJbnN0YWxsaW5nIHZhY3V1bV0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9pbnN0YWxsaW5nLykKLSBbQWJvdXQgdmFjdXVtXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2Fib3V0LykKLSBbV2h5IHNob3VsZCB5b3UgY2FyZT9dKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vd2h5LykKLSBbQ29uY2VwdHNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29uY2VwdHMvKQotIFtGQVFdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZmFxLykKLSBbQ0xJIENvbW1hbmRzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzLykKICAtIFtsaW50XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL2xpbnQvKQogIC0gW3ZhY3V1bSByZXBvcnRdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvcmVwb3J0LykKICAtIFtkYXNoYm9hcmRdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vY29tbWFuZHMvZGFzaGJvYXJkLykKICAtIFtodG1sLXJlcG9ydF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9jb21tYW5kcy9odG1sLXJlcG9ydC8pCiAgLSBbc3BlY3RyYWwtcmVwb3J0XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2NvbW1hbmRzL3NwZWN0cmFsLXJlcG9ydC8pCi0gW0RldmVsb3BlciBBUEldKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL2dldHRpbmctc3RhcnRlZC8pCiAgLSBbVXNpbmcgVGhlIEluZGV4XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9zcGVjLWluZGV4LykKICAtIFtSdWxlUmVzdWx0U2V0XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9ydWxlLXJlc3VsdHNldC8pCiAgLSBbTG9hZGluZyBhIFJ1bGVTZXRdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL2xvYWRpbmctcnVsZXNldC8pCiAgLSBbTGludGluZyBOb24tT3BlbkFQSSBGaWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9hcGkvbm9uLW9wZW5hcGkvKQogIC0gW0N1c3RvbSBHb2xhbmcgRnVuY3Rpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2FwaS9jdXN0b20tZnVuY3Rpb25zLykKICAtIFtDdXN0b20gSmF2YVNjcmlwdCBGdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vYXBpL2N1c3RvbS1qYXZhc2NyaXB0LWZ1bmN0aW9ucy8pCi0gW1J1bGVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzLykKICAtIFtFeGFtcGxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9leGFtcGxlcy8pCiAgLSBbVGFnc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy90YWdzLykKICAtIFtEZXNjcmlwdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvZGVzY3JpcHRpb25zLykKICAtIFtTY2hlbWFzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL3NjaGVtYXMvKQogIC0gW1NwZWMgSW5mb3JtYXRpb25dKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vcnVsZXMvaW5mb3JtYXRpb24vKQogIC0gW09wZXJhdGlvbnMgJiBQYXRoc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9vcGVyYXRpb25zLykKICAtIFtWYWxpZGF0aW9uXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL3ZhbGlkYXRpb24vKQogIC0gW1NlY3VyaXR5XShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzL3NlY3VyaXR5LykKICAtIFtPV0FTUF0oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlcy9vd2FzcC8pCi0gW0Z1bmN0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9mdW5jdGlvbnMvKQogIC0gW0NvcmUgRnVuY3Rpb25zXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL2Z1bmN0aW9ucy9jb3JlLykgCiAgLSBbT3BlbkFQSSBGdW5jdGlvbnNdKGh0dHBzOi8vcXVvYml4LmNvbS92YWN1dW0vZnVuY3Rpb25zL29wZW5hcGkvKQogIC0gW09XQVNQIEZ1bmN0aW9uc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9mdW5jdGlvbnMvb3dhc3AvKQotIFtVbmRlcnN0YW5kaW5nIFJ1bGVTZXRzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzZXRzL3VuZGVyc3RhbmRpbmcvKQogIC0gW0FsbCBSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy9hbGwvKQogIC0gW05vIFJ1bGVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzZXRzL25vLXJ1bGVzLykKICAtIFtSZWNvbW1lbmRlZCBSdWxlc10oaHR0cHM6Ly9xdW9iaXguY29tL3ZhY3V1bS9ydWxlc2V0cy9yZWNvbW1lbmRlZC8pCiAgLSBbQ3VzdG9tIFJ1bGVzXShodHRwczovL3F1b2JpeC5jb20vdmFjdXVtL3J1bGVzZXRzL2N1c3RvbS1ydWxlc2V0cy8pCgotLS0KCj4gKip2YWN1dW0gY2FuIHN1Y2sgYWxsIHRoZSBsaW50IG9mIGEgNW1iIE9wZW5BUEkgc3BlYyBpbiBhYm91dCAyMzBtcy4qKgoKRGVzaWduZWQgdG8gcmVsaWFibHkgbGludCBPcGVuQVBJIHNwZWNpZmljYXRpb25zLCAqKnZlcnksIHZlcnkgcXVpY2tseSoqLiBJbmNsdWRpbmcgX3ZlcnkgbGFyZ2VfIG9uZXMuIFNwZWN0cmFsIGNhbiBiZSBxdWl0ZSBzbG93CndoZW4gdXNlZCBhcyBhbiBBUEkgYW5kIGRvZXMgbm90IHNjYWxlIGZvciBlbnRlcnByaXNlIGFwcGxpY2F0aW9ucy4KCnZhY3V1bSB3aWxsIHRlbGwgeW91IHdoYXQgaXMgd3Jvbmcgd2l0aCB5b3VyIHNwZWMsIHdoeSwgd2hlcmUgYW5kIGhvdyB0byBmaXggaXQuIAoKdmFjdXVtIHdpbGwgd29yayBhdCBzY2FsZSBhbmQgaXMgZGVzaWduZWQgYXMgYSBDTEkgKHdpdGggYSB3ZWIgb3IgY29uc29sZSBVSSkgYW5kIGEgbGlicmFyeSB0byBiZSBjb25zdW1lZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMuCgojIyMgRGFzaGJvYXJkCgp2YWN1dW0gY29tZXMgd2l0aCBhbiBpbnRlcmFjdGl2ZSBkYXNoYm9hcmQgKGB2YWN1dW0gZGFzaGJvYXJkIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPmApIGFsbG93aW5nIHlvdSB0byBleHBsb3JlCnJ1bGVzIGFuZCB2aW9sYXRpb25zIGluIGEgY29uc29sZSwgd2l0aG91dCBoYXZpbmcgdG8gc2Nyb2xsIHRocm91Z2ggdGhvdXNhbmRzIG9mIHJlc3VsdHMuCgohW3ZhY3V1bSBkYXNoYm9hcmRdKGRhc2hib2FyZC1zY3JlZW5zaG90LnBuZykKCiMjIyBIVE1MIFJlcG9ydAoKdmFjdXVtIGNhbiBnZW5lcmF0ZSBhbiBlYXN5IHRvIG5hdmlnYXRlIGFuZCB1bmRlcnN0YW5kIEhUTUwgcmVwb3J0LiBMaWtlIHRoZSBkYXNoYm9hcmQKeW91IGNhbiBleHBsb3JlIGJyb2tlbiBydWxlcyBhbmQgdmlvbGF0aW9ucywgYnV0IGluIHlvdXIgYnJvd3Nlci4KCk5vIGV4dGVybmFsIGRlcGVuZGVuY2llcywgdGhlIEhUTUwgcmVwb3J0IHdpbGwgcnVuIGNvbXBsZXRlbHkgb2ZmbGluZS4KCiFbdmFjdXVtIGh0bWwtcmVwb3J0XShodG1sLXJlcG9ydC1zY3JlZW5zaG90LnBuZykKCi0tLQoKPiAqKl9TdXBwb3J0cyBPcGVuQVBJIFZlcnNpb24gMiAoU3dhZ2dlcikgYW5kIFZlcnNpb24gMytfKioKCllvdSBjYW4gdXNlIGVpdGhlciAqKllBTUwqKiBvciAqKkpTT04qKiwgdmFjdXVtIHN1cHBvcnRzIGJvdGggZm9ybWF0cy4KCiMjIFVzaW5nIHZhY3V1bSB3aXRoIHByZS1jb21taXQKClZhY3V1bSBjYW4gYmUgdXNlZCB3aXRoIFtwcmUtY29tbWl0XShodHRwczovL3ByZS1jb21taXQuY29tKS4KClRvIGRvIHRoYXQsIGFkZCB0byB5b3VyIGAucHJlLWNvbW1pdC1jb25maWcueWFtbGA6CgpgYGB5YW1sCnJlcG9zOgogIC0gcmVwbzogaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bQogICAgcmV2OiAjIGEgdGFnIG9yIGEgY29tbWl0IGhhc2ggZnJvbSB0aGlzIHJlcG8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGF2ZXNoYW5sZXkvdmFjdXVtL3JlbGVhc2VzCiAgICBob29rczoKICAgICAgLSBpZDogdmFjdXVtCmBgYAoKU2VlIHRoZSBbaG9vayBkZWZpbml0aW9uXSguLy5wcmUtY29tbWl0LWhvb2tzLnlhbWwpIGhlcmUgZm9yIGRldGFpbHMgb24gd2hhdCBvcHRpb25zIHRoZSBob29rIHVzZXMgYW5kIHdoYXQgZmlsZXMgaXQgY2hlY2tzIGJ5IGRlZmF1bHQuCgpJZiBubyBmaWxlbmFtZXMgb3IgbW9yZSB0aGFuIG9uZSBmaWxlbmFtZSBpbiB5b3VyIHJlcG9zaXRvcnkgbWF0Y2hlcyB0aGUgZGVmYXVsdCBgZmlsZXNgIHBhdHRlcm4gaW4gdGhlIGhvb2sgZGVmaW5pdGlvbiwKdGhlIHBhdHRlcm4gbmVlZHMgdG8gYmUgb3ZlcnJpZGRlbiBpbiB5b3VyIGNvbmZpZyBzbyB0aGF0IGl0IG1hdGNoZXMgZXhhY3RseSBvbmUgZmlsZW5hbWUgdG8gbGludCBhdCBhIHRpbWUuClRvIGxpbnQgbXVsdGlwbGUgZmlsZXMsIHNwZWNpZnkgdGhlIGhvb2sgbXVsdGlwbGUgdGltZXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgb3ZlcnJpZGVzLgoKIyMgQnVpbGQgYW4gaW50ZXJhY3RpdmUgSFRNTCByZXBvcnQgCgpgYGAKLi92YWN1dW0gaHRtbC1yZXBvcnQgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWwgfCB2YWN1dW0tcmVwb3J0Lmpzb24uZ3o+IDxyZXBvcnQtbmFtZS5odG1sPgpgYGAKCllvdSBjYW4gcmVwbGFjZSBgcmVwb3J0LW5hbWUuaHRtbGAgd2l0aCB5b3VyIG93biBjaG9pY2Ugb2YgZmlsZW5hbWUuIE9wZW4gdGhlIHJlcG9ydAppbiB5b3VyIGZhdm9yaXRlIGJyb3dzZXIgYW5kIGV4cGxvcmUgdGhlIHJlc3VsdHMuIAoKCiMjIFNlZSBmdWxsIGxpbnRpbmcgcmVwb3J0IAoKYGBgCi4vdmFjdXVtIGxpbnQgLWQgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKIyMgU2VlIGZ1bGwgbGludGluZyByZXBvcnQgd2l0aCBpbmxpbmUgY29kZSBzbmlwcGV0cwoKYGBgCi4vdmFjdXVtIGxpbnQgLWQgLXMgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKIyMgU2VlIGp1c3QgdGhlIGxpbnRpbmcgZXJyb3JzCgpgYGAKLi92YWN1dW0gbGludCAtZCAtZSA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCgojIyBTZWUganVzdCBhIHNwZWNpZmljIGNhdGVnb3J5IG9mIHJlcG9ydAoKCmBgYAouL3ZhY3V1bSBsaW50IC1kIC1jIHNjaGVtYXMgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKVGhlIG9wdGlvbnMgaGVyZSBhcmU6CgotIGBleGFtcGxlc2AKLSBgb3BlcmF0aW9uc2AKLSBgaW5mb3JtYXRpb25gCi0gYGRlc2NyaXB0aW9uc2AKLSBgc2NoZW1hc2AKLSBgc2VjdXJpdHlgCi0gYHRhZ3NgCi0gYHZhbGlkYXRpb25gCi0gYG93YXNwYAoKIyMgR2VuZXJhdGUgYSBTcGVjdHJhbCBjb21wYXRpYmxlIHJlcG9ydAoKSWYgeW91J3JlIGFscmVhZHkgdXNpbmcgU3BlY3RyYWwgSlNPTiByZXBvcnRzLCBhbmQgeW91IHdhbnQgdG8gdXNlIHZhY3V1bSBpbnN0ZWFkLCB1c2UgdGhlIGBzcGVjdHJhbC1yZXBvcnRgIGNvbW1hbmQKCmBgYAouL3ZhY3V1bSBzcGVjdHJhbC1yZXBvcnQgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+IDxyZXBvcnQtb3V0cHV0LW5hbWUuanNvbj4KYGBgCgpUaGUgcmVwb3J0IGZpbGUgbmFtZSBpcyBfb3B0aW9uYWxfLiBUaGUgZGVmYXVsdCByZXBvcnQgb3V0cHV0IG5hbWUgaXMgYHZhY3V1bS1zcGVjdHJhbC1yZXBvcnQuanNvbmAKCgojIyBHZW5lcmF0ZSBhIGB2YWN1dW0gcmVwb3J0YAoKVmFjdXVtIHJlcG9ydHMgYXJlIGNvbXBsZXRlIHNuYXBzaG90cyBpbiB0aW1lIG9mIGEgbGludGluZyByZXBvcnQgZm9yIGEgc3BlY2lmaWNhdGlvbi4gVGhlc2UgcmVwb3J0cyBjYW4gYmUgJ3JlcGxheWVkJyAKYmFjayB0aHJvdWdoIHZhY3V1bS4gVXNlIHRoZSBgZGFzaGJvYXJkYCBvciB0aGUgYGh0bWwtcmVwb3J0YCBjb21tYW5kcyB0byAncmVwbGF5JyB0aGUgcmVwb3J0IGFuZCBleHBsb3JlIHRoZSByZXN1bHRzCmFzIHRoZXkgd2VyZSB3aGVuIHRoZSByZXBvcnQgd2FzIGdlbmVyYXRlZC4KCmBgYAouL3ZhY3V1bSByZXBvcnQgLWMgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+IDxyZXBvcnQtcHJlZml4PgpgYGAKClRoZSBkZWZhdWx0IG5hbWUgb2YgdGhlIHJlcG9ydCB3aWxsIGJlIGB2YWN1dW0tcmVwb3J0LU1NLURELVlZLUhIX01NX1NTLmpzb25gLiBZb3UgY2FuIGNoYW5nZSB0aGUgcHJlZml4IGJ5IHN1cHBseWluZwppdCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBgcmVwb3J0YCBjb21tYW5kLiAKCklkZWFsbHksICoqeW91IHNob3VsZCBjb21wcmVzcyB0aGUgcmVwb3J0IHVzaW5nIGAtY2AqKi4gVGhpcyBzaHJpbmtzIGRvd24gdGhlIHNpemUgc2lnbmlmaWNhbnRseS4gdmFjdXVtIGF1dG9tYXRpY2FsbHkKcmVjb2duaXplcyBhIGNvbXByZXNzZWQgcmVwb3J0IGZpbGUgYW5kIHdpbGwgZGVhbCB3aXRoIGl0IGF1dG9tYXRpY2FsbHkgd2hlbiByZWFkaW5nLgoKPiBXaGVuIHVzaW5nIGNvbXByZXNzaW9uLCB0aGUgZmlsZSBuYW1lIHdpbGwgYmUgYHZhY3V1bS1yZXBvcnQtTU0tREQtWVktSEhfTU1fU1MuanNvbi5nemAuIHZhY3V1bSB1c2VzIGd6aXAgaW50ZXJuYWxseS4KCi0tLQoKIyMgVHJ5IG91dCB0aGUgZGFzaGJvYXJkCgpUaGlzIGlzIGFuIGVhcmx5LCBidXQgd29ya2luZyBjb25zb2xlIFVJIGZvciB2YWN1dW0uIFRoZSBjb2RlIGlzbid0IGdyZWF0LCBpdCBuZWVkcyBhIGxvdCBvZiBjbGVhbiB1cCwgYnV0CmlmIHlvdSdyZSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhpbmdzIGFyZSBwcm9ncmVzc2luZywgaXQncyBhdmFpbGFibGUuCgpgYGAKLi92YWN1dW0gZGFzaGJvYXJkIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sIHwgdmFjdXVtLXJlcG9ydC5qc29uLmd6PgpgYGAKCi0tLQojIyBTdXBwbHkgeW91ciBvd24gU3BlY3RyYWwgY29tcGF0aWJsZSBydWxlc2V0CgpJZiB5b3UncmUgYWxyZWFkeSB1c2luZyBTcGVjdHJhbCBhbmQgeW91IGhhdmUgeW91ciBvd24gW2N1c3RvbSBydWxlc2V0XShodHRwczovL21ldGEuc3RvcGxpZ2h0LmlvL2RvY3Mvc3BlY3RyYWwvZTViOTYxNmQ2ZDUwYy1jdXN0b20tcnVsZXNldHMjY3VzdG9tLXJ1bGVzZXRzKSwKdGhlbiB5b3UgY2FuIHVzZSBpdCB3aXRoIHZhY3V1bSEgCgpUaGUgYGxpbnRgLCBgZGFzaGJvYXJkYCBhbmQgYHNwZWN0cmFsLXJlcG9ydGAgY29tbWFuZHMgYWxsIGFjY2VwdCBhIGAtcmAgb3IgYC0tcnVsZXNldGAgZmxhZywgZGVmaW5pbmcgdGhlIHBhdGggdG8geW91ciBydWxlc2V0IGZpbGUuCgojIyMgSGVyZSBhcmUgc29tZSBleGFtcGxlcyB5b3UgY2FuIHRyeQoKKipfQWxsIHJ1bGVzIHR1cm5lZCBvZmZfKioKYGBgCi4vdmFjdXVtIGxpbnQgLXIgcnVsZXNldHMvZXhhbXBsZXMvbm9ydWxlcy1ydWxlc2V0LnlhbWwgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKKipfT25seSByZWNvbW1lbmRlZCBydWxlc18qKgpgYGAKLi92YWN1dW0gbGludCAtciBydWxlc2V0cy9leGFtcGxlcy9yZWNvbW1lbmRlZC1ydWxlc2V0LnlhbWwgPHlvdXItb3BlbmFwaS1zcGVjLnlhbWw+CmBgYAoKKipfRW5hYmxlIHNwZWNpZmljIHJ1bGVzIG9ubHlfKioKYGBgCi4vdmFjdXVtIGxpbnQgLXIgcnVsZXNldHMvZXhhbXBsZXMvc3BlY2lmaWMtcnVsZXNldC55YW1sIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCioqX0N1c3RvbSBydWxlc18qKgpgYGAKLi92YWN1dW0gbGludCAtciBydWxlc2V0cy9leGFtcGxlcy9jdXN0b20tcnVsZXNldC55YW1sIDx5b3VyLW9wZW5hcGktc3BlYy55YW1sPgpgYGAKCioqX0FsbCBydWxlcywgYWxsIG9mIHRoZW0hKioKYGBgCi4vdmFjdXVtIGxpbnQgLXIgcnVsZXNldHMvZXhhbXBsZXMvYWxsLXJ1bGVzZXQueWFtbCA8eW91ci1vcGVuYXBpLXNwZWMueWFtbD4KYGBgCgotLS0KCiMjIENvbmZpZ3VyYXRpb24KCiMjIyBGaWxlCllvdSBjYW4gY29uZmlndXJlIHZhY3V1bSB1c2luZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSBuYW1lZCBgdmFjdXVtLmNvbmYueWFtbGAKCkJ5IGRlZmF1bHQsIHZhY3V1bSBzZWFyY2hlcyBmb3IgdGhpcyBmaWxlIGluIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXMKMS4gV29ya2luZyBkaXJlY3RvcnkKMi4gYCRYREdfQ09ORklHX0hPTUVgCjMuIGAke0hPTUV9Ly5jb25maWdgCgpZb3UgY2FuIGFsc28gc3BlY2lmeSBhIHBhdGggdG8gYSBmaWxlIHVzaW5nIHRoZSBgLS1jb25maWdgIGZsYWcKCkdsb2JhbCBmbGFncyBhcmUgY29uZmlndXJlZCBhcyB0b3AgbGV2ZWwgbm9kZXMKYGBgeWFtbAp0aW1lOiB0cnVlCmJhc2U6ICdodHRwOi8vZXhhbXBsZS5jb20nCi4uLgpgYGAKQ29tbWFuZCBzcGVjaWZpYyBmbGFncyBhcmUgY29uZmlndXJlZCB1bmRlciBhIG5vZGUgd2l0aCB0aGUgY29tbWFuZHMgbmFtZQpgYGB5YW1sCi4uLgpsaW50OgogIHNpbGVudDogdHJ1ZQogIC4uLgpgYGAKCiMjIyBFbnZpcm9ubWVudGFsIHZhcmlhYmxlcwoKWW91IGNhbiBjb25maWd1cmUgZ2xvYmFsIHZhY3V1bSBmbGFncyB1c2luZyBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBpbiB0aGUgZm9ybSBvZjogYFZBQ1VVTV88ZmxhZz5gCgpJZiBhIGZsYWcsIGhhcyBhIGAtYCBpbiBpdCwgcmVwbGFjZSB3aXRoIGBfYAoKPiBMb2dvIGdvcGhlciBpcyBtb2RpZmllZCwgb3JpZ2luYWxseSBmcm9tIFtlZ29uZWxicmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9lZ29uZWxicmUvZ29waGVycykK + readmeEtag: '"fd05e302586f5dc1535d4594a817c4969fa548e0253c179ff5876e0199858d5b"' + readmeLastModified: Wed, 23 Aug 2023 13:00:56 GMT repositoryId: 415667153 description: >- vacuum is the worlds fastest OpenAPI 3, OpenAPI 2 / Swagger linter and @@ -5758,17 +5758,17 @@ you can think. vacuum is compatible with Spectral rulesets and generates compatible reports. created: '2021-10-10T18:24:19Z' - updated: '2023-08-22T16:20:04Z' + updated: '2023-08-24T00:57:33Z' language: Go archived: false - stars: 261 + stars: 263 watchers: 4 forks: 20 owner: daveshanley logo: https://avatars.githubusercontent.com/u/187345?v=4 license: MIT - repoEtag: '"8d19506d8af7469fc8a0a1036e1d1697e4b6f6805c370ec9441c574c88b7f8bb"' - repoLastModified: Tue, 22 Aug 2023 16:20:04 GMT + repoEtag: '"d1738f4a1fb84c1e45aa0e295740548b7753e2b4a13bbd0e1b62b78adbe13d91"' + repoLastModified: Thu, 24 Aug 2023 00:57:33 GMT foundInMaster: true category: - Description Validators @@ -5826,17 +5826,17 @@ repositoryId: 161691324 description: Generate TypeScript types from OpenAPI 3 specs created: '2018-12-13T20:28:01Z' - updated: '2023-08-23T03:11:32Z' + updated: '2023-08-23T23:16:45Z' language: TypeScript archived: false - stars: 3433 + stars: 3435 watchers: 25 forks: 301 owner: drwpow logo: https://avatars.githubusercontent.com/u/1369770?v=4 license: MIT - repoEtag: '"5b56abf11fff06bd81328c9c63cdd66ba182fefc4bf5f2d4dbeaccb1a6c68159"' - repoLastModified: Wed, 23 Aug 2023 03:11:32 GMT + repoEtag: '"2dc72b6b38f4bc549989b635a9b56a043ea844d1a2ef6d58124e5ffabcce1f28"' + repoLastModified: Wed, 23 Aug 2023 23:16:45 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -5847,9 +5847,9 @@ id: 78ab0e104df30dd8b36325f7708a55ae repositoryMetadata: base64Readme: >- - PHAgYWxpZ249ImNlbnRlciI+Cgk8aW1nIHNyYz0ibGlib3BlbmFwaS1sb2dvLnBuZyIgYWx0PSJsaWJvcGVuYXBpIiBoZWlnaHQ9IjMwMHB4IiB3aWR0aD0iNDUwcHgiLz4KPC9wPgoKIyBsaWJvcGVuYXBpIC0gZW50ZXJwcmlzZSBncmFkZSBPcGVuQVBJIHRvb2xzIGZvciBnb2xhbmcuCgoKIVtQaXBlbGluZV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkvd29ya2Zsb3dzL0J1aWxkL2JhZGdlLnN2ZykKWyFbR29SZXBvcnRDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9wYjMzZi9saWJvcGVuYXBpL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz8pXShodHRwczovL2NvZGVjb3YuaW8vZ2gvcGIzM2YvbGlib3BlbmFwaSkKWyFbZGlzY29yZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kaXNjb3JkLzkyMzI1ODM2MzU0MDgxNTkxMildKGh0dHBzOi8vZGlzY29yZC5nZy94N1ZBQ1Z1RUdQKQpbIVtEb2NzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2dvZG9jLXJlZmVyZW5jZS01ZmFmZDcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKQoKbGlib3BlbmFwaSBoYXMgZnVsbCBzdXBwb3J0IGZvciBTd2FnZ2VyIChPcGVuQVBJIDIpLCBPcGVuQVBJIDMsIGFuZCBPcGVuQVBJIDMuMS4gSXQgY2FuIGhhbmRsZSB0aGUgbGFyZ2VzdCBhbmQgbW9zdApjb21wbGV4IHNwZWNpZmljYXRpb25zIHlvdSBjYW4gdGhpbmsgb2YuCgotLS0KCiMjIFNwb25zb3JzICYgdXNlcnMKSWYgeW91ciBjb21wYW55IGlzIHVzaW5nIGBsaWJvcGVuYXBpYCwgcGxlYXNlIGNvbnNpZGVyaW5nIFtzdXBwb3J0aW5nIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2RhdmVzaGFubGV5KSwgCmxpa2Ugb3VyIF92ZXJ5IGtpbmRfIHNwb25zb3JzOgoKPHAgYWxpZ249ImNlbnRlciI+Cgk8YSBocmVmPSIvL3d3dy5zcGVha2Vhc3lhcGkuZGV2Ij48aW1nIHNyYz0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3kucG5nIiBhbHQ9IlNwZWFrZWFzeSIgaGVpZ2h0PSIxMDBweCIvPjwvYT4KICAgIDxici8+CiAgICA8YSBocmVmPSIvL3d3dy5zcGVha2Vhc3lhcGkuZGV2Ij5TcGVha2Vhc3k8L2E+CjwvcD4KCmBsaWJvcGVuYXBpYCBpcyBwcmV0dHkgbmV3LCBzbyBvdXIgbGlzdCBvZiBub3RhYmxlIHByb2plY3RzIHRoYXQgZGVwZW5kIG9uIGBsaWJvcGVuYXBpYCBpcyBzbWFsbCAobGV0IG1lIGtub3cgaWYgeW91J2QgbGlrZSB0byBhZGQgeW91ciBwcm9qZWN0KQoKLSBbZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Jlc3Rpc2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Jlc3Rpc2gpIC0gIlJlc3Rpc2ggaXMgYSBDTEkgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVC1pc2ggSFRUUCBBUElzIgotIFtnaXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bV0oaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bSkgLSAiVGhlIHdvcmxkJ3MgZmFzdGVzdCBhbmQgbW9zdCBzY2FsYWJsZSBPcGVuQVBJL1N3YWdnZXIgbGludGVyL3F1YWxpdHkgdG9vbCIKLSBbZ2l0aHViLmNvbS9wYjMzZi9vcGVuYXBpLWNoYW5nZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9vcGVuYXBpLWNoYW5nZXMpIC0gIlRoZSB3b3JsZCdzICoqc2V4aWVzdCoqIE9wZW5BUEkgZGlmZiB0b29sIgotIFtnaXRodWIuY29tL3NwZWFrZWFzeS1hcGkvc3BlYWtlYXN5XShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kpIC0gIlNwZWFrZWFzeSBDTEkgbWFrZXMgdmFsaWRhdGluZyBPcGVuQVBJIGRvY3MgYW5kIGdlbmVyYXRpbmcgaWRpb21hdGljIFNES3MgZWFzeSEiCgotLS0KCiMjIENvbWUgY2hhdCB3aXRoIHVzCgpOZWVkIGhlbHA/IEhhdmUgYSBxdWVzdGlvbj8gV2FudCB0byBzaGFyZSB5b3VyIHdvcms/IFtKb2luIG91ciBkaXNjb3JkXShodHRwczovL2Rpc2NvcmQuZ2cveDdWQUNWdUVHUCkgYW5kCmNvbWUgc2F5IGhpIQoKIyMgQ2hlY2sgb3V0IHRoZSBgbGlib3BlbmFwaS12YWxpZGF0b3JgCgpOZWVkIHRvIHZhbGlkYXRlIHJlcXVlc3RzLCByZXNwb25zZXMsIHBhcmFtZXRlcnMgb3Igc2NoZW1hcz8gVXNlIHRoZSBuZXcgCltsaWJvcGVuYXBpLXZhbGlkYXRvcl0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGktdmFsaWRhdG9yKSBtb2R1bGUuCgojIyBEb2N1bWVudGF0aW9uCgpTZWUgYWxsIHRoZSBkb2N1bWVudGF0aW9uIGF0IGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS8KCi0gW0luc3RhbGxpbmcgbGlib3BlbmFwaV0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL2luc3RhbGxpbmcvKQotIFtVc2luZyBPcGVuQVBJXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvb3BlbmFwaS8pCi0gW1VzaW5nIFN3YWdnZXJdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9zd2FnZ2VyLykKLSBbVGhlIERhdGEgTW9kZWxdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9tb2RlbC8pCi0gW1ZhbGlkYXRpb25dKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS92YWxpZGF0aW9uLykKLSBbTW9kaWZ5aW5nIC8gTXV0YXRpbmcgdGhlIE9wZW5BUEkgTW9kZWxdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9tb2RpZnlpbmcvKQotIFtVc2luZyBWZW5kb3IgRXh0ZW5zaW9uc10oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL2V4dGVuc2lvbnMvKQotIFtUaGUgSW5kZXhdKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9pbmRleC8pCi0gW1RoZSBSZXNvbHZlcl0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3Jlc29sdmVyLykKLSBbQ2lyY3VsYXIgUmVmZXJlbmNlc10oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL2NpcmN1bGFyLXJlZmVyZW5jZXMvKQotIFtXaGF0IENoYW5nZWQgLyBEaWZmIEVuZ2luZV0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3doYXQtY2hhbmdlZC8pCi0gW0ZBUV0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL2ZhcS8pCi0gW0Fib3V0IGxpYm9wZW5hcGldKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9hYm91dC8pCgo+ICoqUmVhZCB0aGUgZ28gZG9jcyBhdCBbaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaV0oaHR0cHM6Ly9wa2cuZ28uZGV2L2dpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaSkqKgotLS0KCiMjIyBRdWljay1zdGFydCB0dXRvcmlhbAoK8J+RgCAqKkdldCByb2xsaW5nIGZhc3QgdXNpbmcgYGxpYm9wZW5hcGlgIHdpdGggdGhlIApbUGFyc2luZyBPcGVuQVBJIGZpbGVzIHVzaW5nIGdvXShodHRwczovL3F1b2JpeC5jb20vYXJ0aWNsZXMvcGFyc2luZy1vcGVuYXBpLXVzaW5nLWdvLykqKiBndWlkZSDwn5GACgo+IFJlYWQgdGhlIGZ1bGwgZG9jcyBhdCBbaHR0cHM6Ly9wa2cuZ28uZGV2XShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKQoKLS0tCgpMb2dvIGdvcGhlciBpcyBtb2RpZmllZCwgb3JpZ2luYWxseSBmcm9tIFtlZ29uZWxicmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9lZ29uZWxicmUvZ29waGVycykK - readmeEtag: '"05903167152c5292b08e8070b7c5c4baa3c5274f1e6b35021ce2cdbc174ed3cf"' - readmeLastModified: Sun, 23 Apr 2023 15:47:16 GMT + PHAgYWxpZ249ImNlbnRlciI+Cgk8aW1nIHNyYz0ibGlib3BlbmFwaS1sb2dvLnBuZyIgYWx0PSJsaWJvcGVuYXBpIiBoZWlnaHQ9IjMwMHB4IiB3aWR0aD0iNDUwcHgiLz4KPC9wPgoKIyBsaWJvcGVuYXBpIC0gZW50ZXJwcmlzZSBncmFkZSBPcGVuQVBJIHRvb2xzIGZvciBnb2xhbmcuCgoKIVtQaXBlbGluZV0oaHR0cHM6Ly9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkvd29ya2Zsb3dzL0J1aWxkL2JhZGdlLnN2ZykKWyFbR29SZXBvcnRDYXJkXShodHRwczovL2dvcmVwb3J0Y2FyZC5jb20vYmFkZ2UvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKV0oaHR0cHM6Ly9nb3JlcG9ydGNhcmQuY29tL3JlcG9ydC9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9wYjMzZi9saWJvcGVuYXBpL2JyYW5jaC9tYWluL2dyYXBoL2JhZGdlLnN2Zz8pXShodHRwczovL2NvZGVjb3YuaW8vZ2gvcGIzM2YvbGlib3BlbmFwaSkKWyFbZGlzY29yZF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kaXNjb3JkLzkyMzI1ODM2MzU0MDgxNTkxMildKGh0dHBzOi8vZGlzY29yZC5nZy94N1ZBQ1Z1RUdQKQpbIVtEb2NzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL2dvZG9jLXJlZmVyZW5jZS01ZmFmZDcpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKQoKbGlib3BlbmFwaSBoYXMgZnVsbCBzdXBwb3J0IGZvciBTd2FnZ2VyIChPcGVuQVBJIDIpLCBPcGVuQVBJIDMsIGFuZCBPcGVuQVBJIDMuMS4gSXQgY2FuIGhhbmRsZSB0aGUgbGFyZ2VzdCBhbmQgbW9zdApjb21wbGV4IHNwZWNpZmljYXRpb25zIHlvdSBjYW4gdGhpbmsgb2YuCgotLS0KCiMjIFNwb25zb3JzICYgdXNlcnMKSWYgeW91ciBjb21wYW55IGlzIHVzaW5nIGBsaWJvcGVuYXBpYCwgcGxlYXNlIGNvbnNpZGVyaW5nIFtzdXBwb3J0aW5nIHRoaXMgcHJvamVjdF0oaHR0cHM6Ly9naXRodWIuY29tL3Nwb25zb3JzL2RhdmVzaGFubGV5KSwgCmxpa2Ugb3VyIF92ZXJ5IGtpbmRfIHNwb25zb3JzOgoKPGEgaHJlZj0iaHR0cHM6Ly9zcGVha2Vhc3lhcGkuZGV2Lz91dG1fc291cmNlPWxpYm9wZW5hcGkrcmVwbyZ1dG1fbWVkaXVtPWdpdGh1YitzcG9uc29yc2hpcCI+CjxwaWN0dXJlPgogIDxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiIHNyY3NldD0iLmdpdGh1Yi9zcG9uc29ycy9zcGVha2Vhc3ktZ2l0aHViLXNwb25zb3ItZGFyay5zdmciPgogIDxpbWcgYWx0PSJzcGVha2Vhc3knIiBzcmM9Ii5naXRodWIvc3BvbnNvcnMvc3BlYWtlYXN5LWdpdGh1Yi1zcG9uc29yLWxpZ2h0LnN2ZyI+CjwvcGljdHVyZT4KPC9hPgoKW1NwZWFrZWFzeV0oaHR0cHM6Ly9zcGVha2Vhc3lhcGkuZGV2Lz91dG1fc291cmNlPWxpYm9wZW5hcGkrcmVwbyZ1dG1fbWVkaXVtPWdpdGh1YitzcG9uc29yc2hpcCkKCi0tLQoKYGxpYm9wZW5hcGlgIGlzIHByZXR0eSBuZXcsIHNvIG91ciBsaXN0IG9mIG5vdGFibGUgcHJvamVjdHMgdGhhdCBkZXBlbmQgb24gYGxpYm9wZW5hcGlgIGlzIHNtYWxsIChsZXQgbWUga25vdyBpZiB5b3UnZCBsaWtlIHRvIGFkZCB5b3VyIHByb2plY3QpCgotIFtnaXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bV0oaHR0cHM6Ly9naXRodWIuY29tL2RhdmVzaGFubGV5L3ZhY3V1bSkgLSAiVGhlIHdvcmxkJ3MgZmFzdGVzdCBhbmQgbW9zdCBzY2FsYWJsZSBPcGVuQVBJL1N3YWdnZXIgbGludGVyL3F1YWxpdHkgdG9vbCIKLSBbZ2l0aHViLmNvbS9wYjMzZi9vcGVuYXBpLWNoYW5nZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYjMzZi9vcGVuYXBpLWNoYW5nZXMpIC0gIlRoZSB3b3JsZCdzICoqc2V4aWVzdCoqIE9wZW5BUEkgYnJlYWtpbmcgY2hhbmdlcyBkZXRlY3RvciIKLSBbZ2l0aHViLmNvbS9wYjMzZi93aXJldGFwXShodHRwczovL2dpdGh1Yi5jb20vcGIzM2Yvb3BlbmFwaS1jaGFuZ2VzKSAtICJUaGUgd29ybGQncyAqKmNvb2xlc3QqKiBPcGVuQVBJIGNvbXBsaWFuY2UgYW5hbHlzaXMgdG9vbCIKLSBbZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Jlc3Rpc2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5pZWxndGF5bG9yL3Jlc3Rpc2gpIC0gIlJlc3Rpc2ggaXMgYSBDTEkgZm9yIGludGVyYWN0aW5nIHdpdGggUkVTVC1pc2ggSFRUUCBBUElzIgotIFtnaXRodWIuY29tL3NwZWFrZWFzeS1hcGkvc3BlYWtlYXN5XShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kpIC0gIlNwZWFrZWFzeSBDTEkgbWFrZXMgdmFsaWRhdGluZyBPcGVuQVBJIGRvY3MgYW5kIGdlbmVyYXRpbmcgaWRpb21hdGljIFNES3MgZWFzeSEiCi0gW2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdF0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQpIC0gIkFJLXBvd2VyZWQgQVBJIGRldmVsb3BtZW50IHRvb2wiCi0gCi0tLQoKIyMgQ29tZSBjaGF0IHdpdGggdXMKCk5lZWQgaGVscD8gSGF2ZSBhIHF1ZXN0aW9uPyBXYW50IHRvIHNoYXJlIHlvdXIgd29yaz8gW0pvaW4gb3VyIGRpc2NvcmRdKGh0dHBzOi8vZGlzY29yZC5nZy94N1ZBQ1Z1RUdQKSBhbmQKY29tZSBzYXkgaGkhCgojIyBDaGVjayBvdXQgdGhlIGBsaWJvcGVuYXBpLXZhbGlkYXRvcmAKCk5lZWQgdG8gdmFsaWRhdGUgcmVxdWVzdHMsIHJlc3BvbnNlcywgcGFyYW1ldGVycyBvciBzY2hlbWFzPyBVc2UgdGhlIG5ldyAKW2xpYm9wZW5hcGktdmFsaWRhdG9yXShodHRwczovL2dpdGh1Yi5jb20vcGIzM2YvbGlib3BlbmFwaS12YWxpZGF0b3IpIG1vZHVsZS4KCiMjIERvY3VtZW50YXRpb24KClNlZSBhbGwgdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpLwoKLSBbSW5zdGFsbGluZyBsaWJvcGVuYXBpXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvaW5zdGFsbGluZy8pCi0gW1VzaW5nIE9wZW5BUEldKGh0dHBzOi8vcGIzM2YuaW8vbGlib3BlbmFwaS9vcGVuYXBpLykKLSBbVXNpbmcgU3dhZ2dlcl0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3N3YWdnZXIvKQotIFtUaGUgRGF0YSBNb2RlbF0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL21vZGVsLykKLSBbVmFsaWRhdGlvbl0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL3ZhbGlkYXRpb24vKQotIFtNb2RpZnlpbmcgLyBNdXRhdGluZyB0aGUgT3BlbkFQSSBNb2RlbF0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL21vZGlmeWluZy8pCi0gW1VzaW5nIFZlbmRvciBFeHRlbnNpb25zXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvZXh0ZW5zaW9ucy8pCi0gW1RoZSBJbmRleF0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL2luZGV4LykKLSBbVGhlIFJlc29sdmVyXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvcmVzb2x2ZXIvKQotIFtDaXJjdWxhciBSZWZlcmVuY2VzXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvY2lyY3VsYXItcmVmZXJlbmNlcy8pCi0gW1doYXQgQ2hhbmdlZCAvIERpZmYgRW5naW5lXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvd2hhdC1jaGFuZ2VkLykKLSBbRkFRXShodHRwczovL3BiMzNmLmlvL2xpYm9wZW5hcGkvZmFxLykKLSBbQWJvdXQgbGlib3BlbmFwaV0oaHR0cHM6Ly9wYjMzZi5pby9saWJvcGVuYXBpL2Fib3V0LykKCj4gKipSZWFkIHRoZSBnbyBkb2NzIGF0IFtodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpXShodHRwczovL3BrZy5nby5kZXYvZ2l0aHViLmNvbS9wYjMzZi9saWJvcGVuYXBpKSoqCi0tLQoKIyMjIFF1aWNrLXN0YXJ0IHR1dG9yaWFsCgrwn5GAICoqR2V0IHJvbGxpbmcgZmFzdCB1c2luZyBgbGlib3BlbmFwaWAgd2l0aCB0aGUgCltQYXJzaW5nIE9wZW5BUEkgZmlsZXMgdXNpbmcgZ29dKGh0dHBzOi8vcXVvYml4LmNvbS9hcnRpY2xlcy9wYXJzaW5nLW9wZW5hcGktdXNpbmctZ28vKSoqIGd1aWRlIPCfkYAKCj4gUmVhZCB0aGUgZnVsbCBkb2NzIGF0IFtodHRwczovL3BrZy5nby5kZXZdKGh0dHBzOi8vcGtnLmdvLmRldi9naXRodWIuY29tL3BiMzNmL2xpYm9wZW5hcGkpCgotLS0KCkxvZ28gZ29waGVyIGlzIG1vZGlmaWVkLCBvcmlnaW5hbGx5IGZyb20gW2Vnb25lbGJyZV0oaHR0cHM6Ly9naXRodWIuY29tL2Vnb25lbGJyZS9nb3BoZXJzKQo= + readmeEtag: '"082b29796cabd15cfceb9b008ac601baf9eea486ef6687adeb45a0eb436e391a"' + readmeLastModified: Wed, 23 Aug 2023 12:52:44 GMT repositoryId: 514939258 description: >- libopenapi is a fully featured, high performance OpenAPI 3.1, 3.0 and @@ -5864,7 +5864,7 @@ owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"d395ea96ee09e345785beb252f29eae8b5ae8bd3a0edae5f31aa9de1fec0b4e4"' + repoEtag: '"aaa789af03294c8e95046fb662e44d893bcc80934f14666a8f338ae19c4b06d0"' repoLastModified: Wed, 16 Aug 2023 20:03:21 GMT category: Parsers foundInMaster: true @@ -6043,17 +6043,17 @@ repositoryId: 506186592 description: null created: '2022-06-22T09:46:19Z' - updated: '2023-08-13T03:13:35Z' + updated: '2023-08-24T02:43:34Z' language: C# archived: false - stars: 15 + stars: 16 watchers: 8 forks: 5 owner: criteo logo: https://avatars.githubusercontent.com/u/1713646?v=4 license: Apache-2.0 - repoEtag: '"3486b80ca376ef761334819828d77dc5fc37341ac1d36dbd4da17e70fd3b9fc8"' - repoLastModified: Sun, 13 Aug 2023 03:13:35 GMT + repoEtag: '"3f30ae65c13d7915c1646d7fb67e0bd3c9740d6d0618d2c778a77d742cd85160"' + repoLastModified: Thu, 24 Aug 2023 02:43:34 GMT foundInMaster: true category: Parsers - source: https://openapi.tools/ @@ -6134,7 +6134,7 @@ owner: znsio logo: https://avatars.githubusercontent.com/u/75619722?v=4 license: MIT - repoEtag: '"e44fb0c2014f5ea820dea1eb107e72c4a036db0baff3a1ccb64d035a44b24f76"' + repoEtag: '"04ee34b4f4007906ac59919a64013ad38fd950a0c6f9b5139ae1cb6e07e46543"' repoLastModified: Tue, 22 Aug 2023 08:07:05 GMT foundInMaster: true - source: @@ -6159,11 +6159,11 @@ archived: false stars: 35 watchers: 1 - forks: 5 + forks: 6 owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"a141679e290c72f47883d45471f0cc4662ea36f31a032e8d9d69da3232af9a8a"' + repoEtag: '"0218fd64649773b5683e60f0a80ebcf5697302cd538df4b0b9011a7427cf1b8b"' repoLastModified: Thu, 17 Aug 2023 15:07:25 GMT category: - Data Validators @@ -6392,9 +6392,9 @@ id: a2e0064b2092b9d31f862f193256ada8 repositoryMetadata: base64Readme: >- - IyBhbGxvZi1tZXJnZQo8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvYWxsb2YtbWVyZ2UiPiA8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2FsbG9mLW1lcmdlP2xhYmVsPW5wbSI+ICFbR2l0SHViIFdvcmtmbG93IFN0YXR1cyAod2l0aCBldmVudCldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3VkYW1pci9hbGxvZi1tZXJnZS9jaS55bWwpCiA8aW1nIGFsdD0ibnBtIHR5cGUgZGVmaW5pdGlvbnMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdHlwZXMvYWxsb2YtbWVyZ2UiPiAhW0NvdmVyYWxscyBicmFuY2hdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY292ZXJhbGxzQ292ZXJhZ2UvZ2l0aHViL3VkYW1pci9hbGxvZi1tZXJnZSkgPGltZyBhbHQ9IkdpdEh1YiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3VkYW1pci9hbGxvZi1tZXJnZSI+CgpNZXJnZSBzY2hlbWFzIGNvbWJpbmVkIHVzaW5nIGFsbE9mIGludG8gYSBtb3JlIHJlYWRhYmxlIGNvbXBvc2VkIHNjaGVtYSBmcmVlIGZyb20gYWxsT2YuCgojIyBGZWF0dXJlcwotIFNhZmUgbWVyZ2luZyBvZiBzY2hlbWFzIGNvbWJpbmVkIHdpdGggYWxsT2YgaW4gd2hvbGUgSnNvblNjaGVtYSBiYXNlZCBkb2N1bWVudAotIEZhc3Rlc3QgaW1wbG1lbnRhdGlvbiAtIHVwIHRvIHg0IHRpbWVzIGZhc3RlciB0aGVuIG90aGVyIHBvcHVsYXIgbGlicmFyaWVzCi0gTWVyZ2VkIHNjaGVtYSBkb2VzIG5vdCB2YWxpZGF0ZSBtb3JlIG9yIGxlc3MgdGhhbiB0aGUgb3JpZ2luYWwgc2NoZW1hCi0gUmVtb3ZlcyBhbG1vc3QgYWxsIGxvZ2ljYWwgaW1wb3NzaWJpbGl0aWVzCi0gQ29ycmVjdGx5IG1lcmdlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBwYXR0ZXJuUHJvcGVydGllcyBhbmQgcHJvcGVydGllcyB0YWtpbmcgaW50byBhY2NvdW50IGNvbW1vbiB2YWxpZGF0aW9ucwotIENvcnJlY3RseSBtZXJnZSBpdGVtcyBhbmQgYWRkaXRpb25hbEl0ZW1zIHRha2luZyBpbnRvIGFjY291bnQgY29tbW9uIHZhbGlkYXRpb25zCi0gU3VwcG9ydHMgcnVsZXMgZXh0ZW5zaW9uIHRvIG1lcmdlIG90aGVyIGRvY3VtZW50IHR5cGVzIGFuZCBKc29uU2NoZW1hIHZlcnNpb25zCi0gU3VwcG9ydHMgJHJlZnMgYW5kIGNpcmN1bGFyIHJlZmVyZW5jZXMgZWl0aGVyIChpbnRlcm5hbCByZWZlcmVuY2VzIG9ubHkpCi0gVHlwZXNjcmlwdCBzeW50YXggc3VwcG9ydCBvdXQgb2YgdGhlIGJveAotIE5vIGRlcGVuZGVuY2llcyAoZXhjZXB0IGpzb24tY3Jhd2wpLCBjYW4gYmUgdXNlZCBpbiBub2RlanMgb3IgYnJvd3NlcgoKIyMgV29ya3MgcGVyZmVjdGx5IHdpdGggc3BlY2lmaWNhdGlvbnM6CgotIFtKc29uU2NoZW1hXShodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL2pzb24tc2NoZW1hLWNvcmUuaHRtbCkKLSBbT3BlbkFwaSAzLnhdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uL2Jsb2IvbWFpbi92ZXJzaW9ucy8zLjAuMy5tZCkKLSB+flN3YWdnZXIgMi54fn4gKHJvYWRtYXApCi0gfn5Bc3luY0FwaSAyLnh+fiAocm9hZG1hcCkKCiMjIE90aGVyIGxpYnJhcmllcwpUaGVyZSBhcmUgc29tZSBsaWJyYXJpZXMgdGhhdCBjYW4gbWVyZ2Ugc2NoZW1hcyBjb21iaW5lZCB3aXRoIGFsbE9mLiBPbmUgb2YgdGhlIG1vc3QgcG9wdWxhciBpcyBbbW9ra2Fib25uYS9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZl0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2YpLCBidXQgaXQgaGFzIHNvbWUgbGltaXRhdG9uczogRG9lcyBub3Qgc3VwcG9ydCBjaXJjdWxhciAkcmVmcyBhbmQgbm8gVHlwZXNjcmlwdCBzeW50YXggb3V0IG9mIHRoZSBib3guCgojIyBFeHRlcm5hbCAkcmVmCklmIHNjaGVtYSBjb250YWlucyBhbiBleHRlcm5hbCAkcmVmLCB5b3Ugc2hvdWxkIGJ1bmRsZSBpdCB2aWEgW2FwaS1yZWYtYnVuZGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL3VkYW1pci9hcGktcmVmLWJ1bmRsZXIpIGZpcnN0LgoKIyMgSW5zdGFsbGF0aW9uCmBgYFNICm5wbSBpbnN0YWxsIGFsbG9mLW1lcmdlIC0tc2F2ZQpgYGAKCiMjIFVzYWdlCgojIyMgTm9kZWpzCmBgYHRzCmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnYWxsb2YtbWVyZ2UnCgpjb25zdCBkYXRhID0gewogIHR5cGU6IFsnb2JqZWN0JywgJ251bGwnXSwKICBhZGRpdGlvbmFsUHJvcGVydGllczogewogICAgdHlwZTogJ3N0cmluZycsCiAgICBtaW5MZW5ndGg6IDUKICB9LAogIGFsbE9mOiBbewogICAgdHlwZTogWydhcnJheScsICdvYmplY3QnXSwKICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7CiAgICAgIHR5cGU6ICdzdHJpbmcnLAogICAgICBtaW5MZW5ndGg6IDEwLAogICAgICBtYXhMZW5ndGg6IDIwCiAgICB9CiAgfV0KfQoKY29uc3Qgb25NZXJnZUVycm9yID0gKG1zZykgPT4gewogIHRocm93IG5ldyBFcnJvcihtc2cpCn0KCmNvbnN0IG1lcmdlZCA9IG1lcmdlKGRhdGEsIHsgb25NZXJnZUVycm9yIH0pCgpjb25zb2xlLmxvZyhtZXJnZWQpCi8vIHsKLy8gICB0eXBlOiAnb2JqZWN0JywKLy8gICBhZGRpdGlvbmFsUHJvcGVydGllczogewovLyAgICAgdHlwZTogJ3N0cmluZycsCi8vICAgICBtaW5MZW5ndGg6IDEwLAovLyAgICAgbWF4TGVuZ3RoOiAyMAovLyAgIH0KLy8gfQoKYGBgCgojIyMgQnJvd3NlcnMKCkEgYnJvd3NlciB2ZXJzaW9uIG9mIGBhbGxvZi1tZXJnZWAgaXMgYWxzbyBhdmFpbGFibGUgdmlhIENETjoKYGBgaHRtbAo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9hbGxvZi1tZXJnZUBsYXRlc3QvYnJvd3Nlci9hbGxvZi1tZXJnZS5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9hbGxvZi1tZXJnZUBsYXRlc3QvYnJvd3Nlci9hbGxvZi1tZXJnZS5qcyI+PC9zY3JpcHQ+CmBgYAoKUmVmZXJlbmNlIGBhbGxvZi1tZXJnZS5taW4uanNgIGluIHlvdXIgSFRNTCBhbmQgdXNlIHRoZSBnbG9iYWwgdmFyaWFibGUgYEFsbE9mTWVyZ2VgLgpgYGBIVE1MCjxzY3JpcHQ+CiAgdmFyIG1lcmdlZCA9IEFsbE9mTWVyZ2UubWVyZ2UoeyAvKiAuLi4gKi8gfSkKPC9zY3JpcHQ+CmBgYAoKIyMgRG9jdW1lbnRhdGlvbgoKIyMjIGBtZXJnZShkYXRhOiBhbnksIG9wdGlvbnM/OiBNZXJnZU9wdGlvbnMpYApDcmVhdGUgYSBjb3B5IG9mIGBkYXRhYCB3aXRoIG1lcmdlZCBhbGxPZiBzY2hlbWFzOgoKCiMjIyBNZXJnZSBvcHRpb25zCmBgYHRzCmludGVyZmFjZSBNZXJnZU9wdGlvbnMgewogIC8vIHNvdXJjZSBkb2N1bWVudCBpZiBtZXJnaW5nIG9ubHkgcGFydCBvZiBpdAogIC8vIChvcHRpb25hbCkgZGVmYXVsdCA9IGRhdGEKICBzb3VyY2U/OiBhbnkgICAgICAgICAgCiAgCiAgLy8gY3VzdG9tIG1lcmdlIHJ1bGVzCiAgLy8gKG9wdGlvbmFsKSBkZWZhdWwgPSBqc29uU2NoZW1hTWVyZ2VSdWxlcygiZHJhZnQtMDYiKQogIHJ1bGVzPzogTWVyZ2VSdWxlcyAgICAKCiAgLy8gTWVyZ2UgZXJyb3IgaG9vaywgY2FsbGVkIG9uIGFueSBtZXJnZSBjb25mbGljdHMKICBvbk1lcmdlRXJyb3I/OiAobWVzc2FnZTogc3RyaW5nLCBwYXRoOiBKc29uUGF0aCwgdmFsdWVzOiBhbnlbXSkgPT4gdm9pZAp9CmBgYAoKIyMjIFN1cHBvcnRlZCBydWxlcwpZb3UgY2FuIGZpbmQgc3VwcG9ydGVkIHJ1bGVzIGluIHRoZSBzcmMvcnVsZXMgZGlyZWN0b3J5IG9mIHRoaXMgcmVwb3NpdG9yeToKLSBganNvblNjaGVtYU1lcmdlUnVsZXModmVyc2lvbjogImRyYWZ0LTA0IiB8ICJkcmFmdC0wNiIpYAotIGBvcGVuYXBpTWVyZ2VSdWxlcyh2ZXJzaW9uOiAiMy4wLngiIHwgIjMuMS54IilgCgojIyBCZW5jaG1hcmsKYGBgCmFsbG9mLW1lcmdlIHggODAwIG9wcy9zZWMgwrEyLjM1JSAoOTAgcnVucyBzYW1wbGVkKQpqc29uLXNjaGVtYS1tZXJnZS1hbGxvZiB4IDIxNyBvcHMvc2VjIMKxMi4wMyUgKDg2IHJ1bnMgc2FtcGxlZCkKRmFzdGVzdCBpcyBhbGxvZi1tZXJnZQpgYGAKCkNoZWNrIHlvdXJzZWxmOgpgYGBTSApucG0gcnVuIGJlbmNobWFyawpgYGAKCiMjIENvbnRyaWJ1dGluZwpXaGVuIGNvbnRyaWJ1dGluZywga2VlcCBpbiBtaW5kIHRoYXQgaXQgaXMgYW4gb2JqZWN0aXZlIG9mIGBhbGxvZi1tZXJnZWAgdG8gaGF2ZSBubyBhZGRpdGlvbmFsIHBhY2thZ2UgZGVwZW5kZW5jaWVzLgoKUGxlYXNlIHJ1biB0aGUgdW5pdCB0ZXN0cyBiZWZvcmUgc3VibWl0dGluZyB5b3VyIFBSOiBgbnBtIHRlc3RgLiBIb3BlZnVsbHkgeW91ciBQUiBpbmNsdWRlcyBhZGRpdGlvbmFsIHVuaXQgdGVzdHMgdG8gaWxsdXN0cmF0ZSB5b3VyIGNoYW5nZS9tb2RpZmljYXRpb24hCgojIyBMaWNlbnNlCgpNSVQK - readmeEtag: '"e488d31b2b4e9350957da1e6ef9f080db0b79d149c030cec77a5e5ed31e5f1cd"' - readmeLastModified: Tue, 18 Jul 2023 19:30:29 GMT + IyBhbGxvZi1tZXJnZQo8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvYWxsb2YtbWVyZ2UiPiA8aW1nIGFsdD0ibnBtIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL2RtL2FsbG9mLW1lcmdlP2xhYmVsPW5wbSI+ICFbR2l0SHViIFdvcmtmbG93IFN0YXR1cyAod2l0aCBldmVudCldKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL3VkYW1pci9hbGxvZi1tZXJnZS9jaS55bWwpCiA8aW1nIGFsdD0ibnBtIHR5cGUgZGVmaW5pdGlvbnMiIHNyYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vdHlwZXMvYWxsb2YtbWVyZ2UiPiAhW0NvdmVyYWxscyBicmFuY2hdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vY292ZXJhbGxzQ292ZXJhZ2UvZ2l0aHViL3VkYW1pci9hbGxvZi1tZXJnZSkgPGltZyBhbHQ9IkdpdEh1YiIgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL3VkYW1pci9hbGxvZi1tZXJnZSI+CgpNZXJnZSBzY2hlbWFzIGNvbWJpbmVkIHVzaW5nIGFsbE9mIGludG8gYSBtb3JlIHJlYWRhYmxlIGNvbXBvc2VkIHNjaGVtYSBmcmVlIGZyb20gYWxsT2YuCgojIyBGZWF0dXJlcwotIFNhZmUgbWVyZ2luZyBvZiBzY2hlbWFzIGNvbWJpbmVkIHdpdGggYWxsT2YgaW4gd2hvbGUgSnNvblNjaGVtYSBiYXNlZCBkb2N1bWVudAotIEZhc3Rlc3QgaW1wbG1lbnRhdGlvbiAtIHVwIHRvIHg0IHRpbWVzIGZhc3RlciB0aGVuIG90aGVyIHBvcHVsYXIgbGlicmFyaWVzCi0gTWVyZ2VkIHNjaGVtYSBkb2VzIG5vdCB2YWxpZGF0ZSBtb3JlIG9yIGxlc3MgdGhhbiB0aGUgb3JpZ2luYWwgc2NoZW1hCi0gUmVtb3ZlcyBhbG1vc3QgYWxsIGxvZ2ljYWwgaW1wb3NzaWJpbGl0aWVzCi0gQ29ycmVjdGx5IG1lcmdlIGFkZGl0aW9uYWxQcm9wZXJ0aWVzLCBwYXR0ZXJuUHJvcGVydGllcyBhbmQgcHJvcGVydGllcyB0YWtpbmcgaW50byBhY2NvdW50IGNvbW1vbiB2YWxpZGF0aW9ucwotIENvcnJlY3RseSBtZXJnZSBpdGVtcyBhbmQgYWRkaXRpb25hbEl0ZW1zIHRha2luZyBpbnRvIGFjY291bnQgY29tbW9uIHZhbGlkYXRpb25zCi0gU3VwcG9ydHMgcnVsZXMgZXh0ZW5zaW9uIHRvIG1lcmdlIG90aGVyIGRvY3VtZW50IHR5cGVzIGFuZCBKc29uU2NoZW1hIHZlcnNpb25zCi0gU3VwcG9ydHMgJHJlZnMgYW5kIGNpcmN1bGFyIHJlZmVyZW5jZXMgZWl0aGVyIChpbnRlcm5hbCByZWZlcmVuY2VzIG9ubHkpCi0gQ29ycmVjdGx5IG1lcmdlIG9mIHNpYmxpbmcgY29udGVudCB3aXRoICRyZWZzIChvcHRpb25hbGx5KQotIFR5cGVzY3JpcHQgc3ludGF4IHN1cHBvcnQgb3V0IG9mIHRoZSBib3gKLSBObyBkZXBlbmRlbmNpZXMgKGV4Y2VwdCBqc29uLWNyYXdsKSwgY2FuIGJlIHVzZWQgaW4gbm9kZWpzIG9yIGJyb3dzZXIKCiMjIFdvcmtzIHBlcmZlY3RseSB3aXRoIHNwZWNpZmljYXRpb25zOgoKLSBbSnNvblNjaGVtYV0oaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9qc29uLXNjaGVtYS1jb3JlLmh0bWwpCi0gW09wZW5BcGkgMy54XShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbi9ibG9iL21haW4vdmVyc2lvbnMvMy4wLjMubWQpCi0gfn5Td2FnZ2VyIDIueH5+IChyb2FkbWFwKQotIH5+QXN5bmNBcGkgMi54fn4gKHJvYWRtYXApCgojIyBPdGhlciBsaWJyYXJpZXMKVGhlcmUgYXJlIHNvbWUgbGlicmFyaWVzIHRoYXQgY2FuIG1lcmdlIHNjaGVtYXMgY29tYmluZWQgd2l0aCBhbGxPZi4gT25lIG9mIHRoZSBtb3N0IHBvcHVsYXIgaXMgW21va2thYm9ubmEvanNvbi1zY2hlbWEtbWVyZ2UtYWxsb2ZdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mKSwgYnV0IGl0IGhhcyBzb21lIGxpbWl0YXRvbnM6IERvZXMgbm90IHN1cHBvcnQgY2lyY3VsYXIgJHJlZnMgYW5kIG5vIFR5cGVzY3JpcHQgc3ludGF4IG91dCBvZiB0aGUgYm94LgoKIyMgRXh0ZXJuYWwgJHJlZgpJZiBzY2hlbWEgY29udGFpbnMgYW4gZXh0ZXJuYWwgJHJlZiwgeW91IHNob3VsZCBidW5kbGUgaXQgdmlhIFthcGktcmVmLWJ1bmRsZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS91ZGFtaXIvYXBpLXJlZi1idW5kbGVyKSBmaXJzdC4KCiMjIEluc3RhbGxhdGlvbgpgYGBTSApucG0gaW5zdGFsbCBhbGxvZi1tZXJnZSAtLXNhdmUKYGBgCgojIyBVc2FnZQoKIyMjIE5vZGVqcwpgYGB0cwppbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2FsbG9mLW1lcmdlJwoKY29uc3QgZGF0YSA9IHsKICB0eXBlOiBbJ29iamVjdCcsICdudWxsJ10sCiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsKICAgIHR5cGU6ICdzdHJpbmcnLAogICAgbWluTGVuZ3RoOiA1CiAgfSwKICBhbGxPZjogW3sKICAgIHR5cGU6IFsnYXJyYXknLCAnb2JqZWN0J10sCiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogewogICAgICB0eXBlOiAnc3RyaW5nJywKICAgICAgbWluTGVuZ3RoOiAxMCwKICAgICAgbWF4TGVuZ3RoOiAyMAogICAgfQogIH1dCn0KCmNvbnN0IG9uTWVyZ2VFcnJvciA9IChtc2cpID0+IHsKICB0aHJvdyBuZXcgRXJyb3IobXNnKQp9Cgpjb25zdCBtZXJnZWQgPSBtZXJnZShkYXRhLCB7IG9uTWVyZ2VFcnJvciB9KQoKY29uc29sZS5sb2cobWVyZ2VkKQovLyB7Ci8vICAgdHlwZTogJ29iamVjdCcsCi8vICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHsKLy8gICAgIHR5cGU6ICdzdHJpbmcnLAovLyAgICAgbWluTGVuZ3RoOiAxMCwKLy8gICAgIG1heExlbmd0aDogMjAKLy8gICB9Ci8vIH0KCmBgYAoKIyMjIEJyb3dzZXJzCgpBIGJyb3dzZXIgdmVyc2lvbiBvZiBgYWxsb2YtbWVyZ2VgIGlzIGFsc28gYXZhaWxhYmxlIHZpYSBDRE46CmBgYGh0bWwKPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYWxsb2YtbWVyZ2VAbGF0ZXN0L2Jyb3dzZXIvYWxsb2YtbWVyZ2UubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYWxsb2YtbWVyZ2VAbGF0ZXN0L2Jyb3dzZXIvYWxsb2YtbWVyZ2UuanMiPjwvc2NyaXB0PgpgYGAKClJlZmVyZW5jZSBgYWxsb2YtbWVyZ2UubWluLmpzYCBpbiB5b3VyIEhUTUwgYW5kIHVzZSB0aGUgZ2xvYmFsIHZhcmlhYmxlIGBBbGxPZk1lcmdlYC4KYGBgSFRNTAo8c2NyaXB0PgogIHZhciBtZXJnZWQgPSBBbGxPZk1lcmdlLm1lcmdlKHsgLyogLi4uICovIH0pCjwvc2NyaXB0PgpgYGAKCiMjIERvY3VtZW50YXRpb24KCiMjIyBgbWVyZ2UoZGF0YTogYW55LCBvcHRpb25zPzogTWVyZ2VPcHRpb25zKWAKQ3JlYXRlIGEgY29weSBvZiBgZGF0YWAgd2l0aCBtZXJnZWQgYWxsT2Ygc2NoZW1hczoKCgojIyMgTWVyZ2Ugb3B0aW9ucwpgYGB0cwppbnRlcmZhY2UgTWVyZ2VPcHRpb25zIHsKICAvLyBzb3VyY2UgZG9jdW1lbnQgaWYgbWVyZ2luZyBvbmx5IHBhcnQgb2YgaXQKICAvLyAob3B0aW9uYWwpIGRlZmF1bHQgPSBkYXRhCiAgc291cmNlPzogYW55ICAgICAgICAgIAogIAogIC8vIGN1c3RvbSBtZXJnZSBydWxlcwogIC8vIChvcHRpb25hbCkgZGVmYXVsdCA9IGpzb25TY2hlbWFNZXJnZVJ1bGVzKCJkcmFmdC0wNiIpCiAgcnVsZXM/OiBNZXJnZVJ1bGVzICAgIAoKICAvLyBtZXJnZSAkcmVmIGFuZCBzaWJsaW5nIGNvbnRlbnQKICAvLyAob3B0aW9uYWwpIGRlZmF1bHQgPSBmYWxzZQogIG1lcmdlUmVmU2libGluZz86IGJvb2xlYW4gIAoKICAvLyBNZXJnZSBlcnJvciBob29rLCBjYWxsZWQgb24gYW55IG1lcmdlIGNvbmZsaWN0cwogIG9uTWVyZ2VFcnJvcj86IChtZXNzYWdlOiBzdHJpbmcsIHBhdGg6IEpzb25QYXRoLCB2YWx1ZXM6IGFueVtdKSA9PiB2b2lkCn0KYGBgCgojIyMgU3VwcG9ydGVkIHJ1bGVzCllvdSBjYW4gZmluZCBzdXBwb3J0ZWQgcnVsZXMgaW4gdGhlIHNyYy9ydWxlcyBkaXJlY3Rvcnkgb2YgdGhpcyByZXBvc2l0b3J5OgotIGBqc29uU2NoZW1hTWVyZ2VSdWxlcyh2ZXJzaW9uOiAiZHJhZnQtMDQiIHwgImRyYWZ0LTA2IilgCi0gYG9wZW5hcGlNZXJnZVJ1bGVzKHZlcnNpb246ICIzLjAueCIgfCAiMy4xLngiKWAKCiMjIEJlbmNobWFyawpgYGAKYWxsb2YtbWVyZ2UgeCA4MDAgb3BzL3NlYyDCsTIuMzUlICg5MCBydW5zIHNhbXBsZWQpCmpzb24tc2NoZW1hLW1lcmdlLWFsbG9mIHggMjE3IG9wcy9zZWMgwrEyLjAzJSAoODYgcnVucyBzYW1wbGVkKQpGYXN0ZXN0IGlzIGFsbG9mLW1lcmdlCmBgYAoKQ2hlY2sgeW91cnNlbGY6CmBgYFNICm5wbSBydW4gYmVuY2htYXJrCmBgYAoKIyMgQ29udHJpYnV0aW5nCldoZW4gY29udHJpYnV0aW5nLCBrZWVwIGluIG1pbmQgdGhhdCBpdCBpcyBhbiBvYmplY3RpdmUgb2YgYGFsbG9mLW1lcmdlYCB0byBoYXZlIG5vIGFkZGl0aW9uYWwgcGFja2FnZSBkZXBlbmRlbmNpZXMuCgpQbGVhc2UgcnVuIHRoZSB1bml0IHRlc3RzIGJlZm9yZSBzdWJtaXR0aW5nIHlvdXIgUFI6IGBucG0gdGVzdGAuIEhvcGVmdWxseSB5b3VyIFBSIGluY2x1ZGVzIGFkZGl0aW9uYWwgdW5pdCB0ZXN0cyB0byBpbGx1c3RyYXRlIHlvdXIgY2hhbmdlL21vZGlmaWNhdGlvbiEKCiMjIExpY2Vuc2UKCk1JVAo= + readmeEtag: '"c83d0d8a919d9d68d47e68799352b80d2a0245e2f81658524023ba8b89ff6f60"' + readmeLastModified: Wed, 23 Aug 2023 19:48:03 GMT repositoryId: 654923338 description: Simplify your JsonSchema by combining allOf safely. created: '2023-06-17T10:45:41Z' @@ -6407,7 +6407,7 @@ owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT - repoEtag: '"6f8c5f9d5f3352a0f01848b99347a5254ad24ae67a801ca3937d27d2f31e3922"' + repoEtag: '"991af0b423b7cfc230c305dd634fa2e1138dc0d4c48a649e4f059777b190e463"' repoLastModified: Tue, 18 Jul 2023 09:31:40 GMT foundInMaster: true - source: https://openapi.tools/ @@ -6439,7 +6439,7 @@ owner: udamir logo: https://avatars.githubusercontent.com/u/29271460?v=4 license: MIT - repoEtag: '"66ac351a1d78126f9159a11dda07e90830a519187bce492d7e443c74918ab3dd"' + repoEtag: '"5aae34c1c5ef66ec0b93c40b86c58647be13ad42336d3b466e4c0c1b4d62d115"' repoLastModified: Thu, 20 Jul 2023 19:41:49 GMT foundInMaster: true - source: https://openapi.tools/ @@ -6465,17 +6465,17 @@ repositoryId: 29151578 description: Seamlessly adds a Swagger to Rails-based API's created: '2015-01-12T19:08:10Z' - updated: '2023-08-22T23:51:29Z' + updated: '2023-08-23T21:31:50Z' language: Ruby archived: false - stars: 1729 + stars: 1731 watchers: 28 - forks: 386 + forks: 387 owner: rswag logo: https://avatars.githubusercontent.com/u/55741034?v=4 license: MIT - repoEtag: '"0d61b2af6156eadc0bd1c7d2660f6e221b5ab4c4c89e5919b4dc9beb9355edb7"' - repoLastModified: Tue, 22 Aug 2023 23:51:29 GMT + repoEtag: '"b18c3f1720cec848e85013a169543a815f8677b3a543b852cbe57e9874173428"' + repoLastModified: Wed, 23 Aug 2023 21:31:50 GMT foundInMaster: true - source: https://openapi.tools/ name: Fern @@ -6498,17 +6498,17 @@ repositoryId: 476820102 description: Generate SDKs and Documentation for your API created: '2022-04-01T17:56:54Z' - updated: '2023-08-23T01:19:03Z' + updated: '2023-08-23T21:54:04Z' language: TypeScript archived: false - stars: 1759 + stars: 1763 watchers: 11 forks: 61 owner: fern-api logo: https://avatars.githubusercontent.com/u/102944815?v=4 license: MIT - repoEtag: '"58deb024b0ce7aca06eab65997c5b03252357eed1ff9cf6f264043f0baa25371"' - repoLastModified: Wed, 23 Aug 2023 01:19:03 GMT + repoEtag: '"5297c466221b794656691f6334a74574ed75babfe565cfc18c04853074428a3c"' + repoLastModified: Wed, 23 Aug 2023 21:54:04 GMT foundInMaster: true - source: - https://openapi.tools/ @@ -6535,7 +6535,7 @@ owner: pb33f logo: https://avatars.githubusercontent.com/u/104016643?v=4 license: NOASSERTION - repoEtag: '"e8e5b70c19955c9be4ff80f246488d7d3f0e03affe94342f54b276c7564c6bae"' + repoEtag: '"d51b9b963adba5a4586999c4f6a9f517d68c3cd80b1af50d31ce47f5c5c51421"' repoLastModified: Mon, 21 Aug 2023 15:10:14 GMT category: - Testing Tools @@ -6573,17 +6573,17 @@ FastAPI framework, high performance, easy to learn, fast to code, ready for production created: '2018-12-08T08:21:47Z' - updated: '2023-08-23T02:55:24Z' + updated: '2023-08-24T02:20:34Z' language: Python archived: false - stars: 61712 - watchers: 638 - forks: 5197 + stars: 61747 + watchers: 639 + forks: 5203 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"eccd58cd61f11b5b76111f2f97caae87123150cd76c06a86b67ff8cc02b8d421"' - repoLastModified: Wed, 23 Aug 2023 02:55:24 GMT + repoEtag: '"3acd4b9802f8ce491863028e72fd167974d977f1abc1620b47f2a742d2a989be"' + repoLastModified: Thu, 24 Aug 2023 02:20:34 GMT foundInMaster: true id: 8e11fa45d6f090aa2ed68317cf5a7215 - source: @@ -6601,17 +6601,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-22T23:09:24Z' + updated: '2023-08-23T18:21:00Z' language: JavaScript archived: false - stars: 24312 + stars: 24316 watchers: 655 - forks: 8742 + forks: 8743 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"d8cd01f4a927d29c350cdffb2635b1bc8d61c71edf9b8abf585e78e9e15f0c7b"' - repoLastModified: Tue, 22 Aug 2023 23:09:24 GMT + repoEtag: '"ff46a93bbc83aab99ab089677a6f3784dfa6b7008144d15b5409dbb2510cf504"' + repoLastModified: Wed, 23 Aug 2023 18:21:00 GMT foundInMaster: true name: swagger-ui homepage: https://github.com/swagger-api/swagger-UI @@ -6644,17 +6644,17 @@ repositoryId: 45250726 description: 📘 OpenAPI/Swagger-generated API Reference Documentation created: '2015-10-30T12:53:02Z' - updated: '2023-08-23T01:29:27Z' + updated: '2023-08-24T02:42:24Z' language: TypeScript archived: false - stars: 20792 + stars: 20802 watchers: 285 forks: 2217 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"00a7e719f81dd736600832efe21b6bc0db2c64be60781aa905b3aab45d64d6c6"' - repoLastModified: Wed, 23 Aug 2023 01:29:27 GMT + repoEtag: '"231359099f87d2fedee48ae8518c95b1ca49f281a06c1df8995fd3959993b56b"' + repoLastModified: Thu, 24 Aug 2023 02:42:24 GMT foundInMaster: true v3_1: true id: 2725d6db6977c1dd12ceaf9701787e07 @@ -6673,17 +6673,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-22T20:50:59Z' + updated: '2023-08-24T00:09:18Z' language: Python archived: false - stars: 12763 + stars: 12773 watchers: 196 - forks: 2346 + forks: 2348 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"0a0ba8661872c849e5cb76e56cc7ffaaa9c6bb180d77a4fa4c9c4206d5e79288"' - repoLastModified: Tue, 22 Aug 2023 20:50:59 GMT + repoEtag: '"395f4657a00fa73d354d9454313856e04ba8759c853ba27eff83e18bd21d21b1"' + repoLastModified: Thu, 24 Aug 2023 00:09:18 GMT foundInMaster: true category: Server Implementations id: fd87348d3e68e8838b35571b2a88b798 @@ -6700,17 +6700,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-22T05:34:28Z' + updated: '2023-08-23T20:25:30Z' language: Java archived: false - stars: 7249 + stars: 7251 watchers: 313 - forks: 2151 + forks: 2152 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"20e904ae2373747cf68b1f11e1ce0fc465eda411d2864ec9f49bd67ce1b55336"' - repoLastModified: Tue, 22 Aug 2023 05:34:28 GMT + repoEtag: '"dff1831a5fb5b4f767600f1338262f788f93db2b06c2125108d33a16a1eec4e7"' + repoLastModified: Wed, 23 Aug 2023 20:25:30 GMT foundInMaster: true category: Code Generators id: 2093f5c5f56617123b73ae823791176d @@ -6727,17 +6727,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-21T18:54:17Z' + updated: '2023-08-23T13:26:39Z' language: TypeScript archived: false - stars: 5319 + stars: 5320 watchers: 57 - forks: 298 + forks: 297 owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"80a34bf967ea43ef8e344d2d8514b5cd68dd52c1cdfd8a054dc3663d8d2aade6"' - repoLastModified: Mon, 21 Aug 2023 18:54:17 GMT + repoEtag: '"dbbd1308d96ca0f826afc85bc834902a8bfb40676a1720feaf6ea317a07f7b99"' + repoLastModified: Wed, 23 Aug 2023 13:26:39 GMT foundInMaster: true category: Testing id: 8728dfca2c1908dbecdcddd31597fad4 @@ -6779,17 +6779,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-22T18:00:55Z' + updated: '2023-08-23T10:14:30Z' language: null archived: false - stars: 3323 + stars: 3324 watchers: 110 forks: 553 owner: APIs-guru logo: https://avatars.githubusercontent.com/u/10975548?v=4 license: CC0-1.0 - repoEtag: '"3e20b3acf878b3fac2d4c4b50bcbcff4a3eedcfdecdb9dee8507bbf904c17ba1"' - repoLastModified: Tue, 22 Aug 2023 18:00:55 GMT + repoEtag: '"1814180b932ee128e488a9018b10129fc7b04ec420530e6f1e4c8dc75581f4e8"' + repoLastModified: Wed, 23 Aug 2023 10:14:30 GMT foundInMaster: true category: SDK id: 667f2aef78d9d19418fbd6c0a7835abb @@ -6813,17 +6813,17 @@ repositoryId: 196475719 description: Library for OpenAPI 3 with spring-boot created: '2019-07-11T23:08:20Z' - updated: '2023-08-23T01:19:51Z' + updated: '2023-08-23T04:18:00Z' language: Java archived: false - stars: 2742 + stars: 2743 watchers: 41 - forks: 412 + forks: 413 owner: springdoc logo: https://avatars.githubusercontent.com/u/52804136?v=4 license: Apache-2.0 - repoEtag: '"cead3f779351d572df0bfe1d27979ffa8162ff454aa8405f39c1e53d2533a2a7"' - repoLastModified: Wed, 23 Aug 2023 01:19:51 GMT + repoEtag: '"7529276cee0ecea76a09a390b08cf278c1ba66b4ae3ca6754fd72fe861ac4b49"' + repoLastModified: Wed, 23 Aug 2023 04:18:00 GMT foundInMaster: true id: 901410cec129651fcf7374c79f824f27 - source: @@ -6841,17 +6841,17 @@ Javascript library to connect to swagger-enabled APIs via browser or nodejs created: '2012-02-16T00:08:43Z' - updated: '2023-08-21T11:27:31Z' + updated: '2023-08-23T07:26:12Z' language: JavaScript archived: false - stars: 2520 + stars: 2519 watchers: 95 forks: 758 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"b68788ff6686a09578f0aed5541ec0b222e8998be72c523a455cbc2bf99b39a2"' - repoLastModified: Mon, 21 Aug 2023 11:27:31 GMT + repoEtag: '"d05d09c24193825fafe9bb03ea7cbf58b2408c89c061da4e18705ed2558d6673"' + repoLastModified: Wed, 23 Aug 2023 07:26:12 GMT foundInMaster: true category: Code Generators id: 5f98b79464c0723b688cff46ee3500c6 @@ -6870,17 +6870,17 @@ web applications in Python with performance auto-tuning. Optionally with Alpine Linux. created: '2019-01-04T17:33:29Z' - updated: '2023-08-22T16:23:06Z' + updated: '2023-08-23T12:00:01Z' language: Python archived: false - stars: 2325 + stars: 2326 watchers: 28 forks: 308 owner: tiangolo logo: https://avatars.githubusercontent.com/u/1326112?v=4 license: MIT - repoEtag: '"9f3d522a2419db820ecce432d5749a84fee88d05b9c58869f5df8c4e57f7d952"' - repoLastModified: Tue, 22 Aug 2023 16:23:06 GMT + repoEtag: '"29cadbd75437cdcbe0413b06e2ebdb7d6ad14c87da2b8f69c33224b8af268b94"' + repoLastModified: Wed, 23 Aug 2023 12:00:01 GMT foundInMaster: true category: Server Implementations id: d0f3fc0bd35fcadacc8ed2c531780739 @@ -6897,17 +6897,17 @@ A compiler for APIs described by the OpenAPI Specification with plugins for code generation and other API support tasks. created: '2016-11-15T19:21:53Z' - updated: '2023-08-22T10:18:38Z' + updated: '2023-08-23T23:53:56Z' language: Go archived: false - stars: 1815 + stars: 1818 watchers: 38 forks: 216 owner: google logo: https://avatars.githubusercontent.com/u/1342004?v=4 license: Apache-2.0 - repoEtag: '"7b4bf5d24af2350cf92505317e01a04b3c33699274058bf1b57c6cff54572596"' - repoLastModified: Tue, 22 Aug 2023 10:18:38 GMT + repoEtag: '"3f1fcf3b8092816e353352cb69ebdb466c6d46039af682502bb073bca629e27d"' + repoLastModified: Wed, 23 Aug 2023 23:53:56 GMT foundInMaster: true category: Converters id: 46e070512676eb0fd196ee199e6a0b34 @@ -6935,17 +6935,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-22T11:04:44Z' + updated: '2023-08-23T18:36:15Z' language: Python archived: false - stars: 1815 + stars: 1816 watchers: 21 forks: 134 owner: schemathesis logo: https://avatars.githubusercontent.com/u/70383271?v=4 license: MIT - repoEtag: '"4cd3a3cd3d7bf5ef418dd874948705cccdac2adaee4bcf5e98834ae86aa5110d"' - repoLastModified: Tue, 22 Aug 2023 11:04:44 GMT + repoEtag: '"b5325861d5ef8fc249da4fe1eba6343689c22f0c8384961525326525c8f9f400"' + repoLastModified: Wed, 23 Aug 2023 18:36:15 GMT foundInMaster: true id: f4032fb371a703acffa691c0f1239d45 oldLocations: @@ -7015,17 +7015,17 @@ Simple, Fast, Code first and Compile time generated OpenAPI documentation for Rust created: '2021-09-30T22:00:31Z' - updated: '2023-08-22T14:27:06Z' + updated: '2023-08-23T10:45:20Z' language: Rust archived: false - stars: 1290 + stars: 1289 watchers: 9 - forks: 109 + forks: 108 owner: juhaku logo: https://avatars.githubusercontent.com/u/26358664?v=4 license: Apache-2.0 - repoEtag: '"47499579fd98450df61c2eeb6dca3e979fb621f5f20769b2ae2dbcced33b6445"' - repoLastModified: Tue, 22 Aug 2023 14:27:06 GMT + repoEtag: '"ffd12e6860dcdceb846c659a1799bec7acdc9e44f0059ee04a894c9918015195"' + repoLastModified: Wed, 23 Aug 2023 10:45:20 GMT foundInMaster: true category: Parsers id: 14269a89115b3be71493769fca4d995e @@ -7047,17 +7047,17 @@ repositoryId: 71986592 description: GUI / visual editor for creating and editing OpenAPI / Swagger definitions created: '2016-10-26T09:15:55Z' - updated: '2023-08-21T03:07:11Z' + updated: '2023-08-23T10:27:44Z' language: JavaScript archived: false - stars: 1260 + stars: 1262 watchers: 43 forks: 160 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: MIT - repoEtag: '"2e8b48110073aef2798c12d152e6bee2777e6c3e4dd2c1d749d52f9d63f29932"' - repoLastModified: Mon, 21 Aug 2023 03:07:11 GMT + repoEtag: '"8d8ec0e67f8eb38ccff93ea4dc86b11034be17bccfcd51f5f7c1e206e0eb9d28"' + repoLastModified: Wed, 23 Aug 2023 10:27:44 GMT foundInMaster: true id: 71f1a528dc0a6366fb580d1b8c703ea8 - source: openapi3 tags @@ -7074,17 +7074,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-22T03:51:25Z' + updated: '2023-08-24T03:06:35Z' language: Python archived: false - stars: 1198 + stars: 1201 watchers: 15 forks: 38 owner: jcrist logo: https://avatars.githubusercontent.com/u/2783717?v=4 license: BSD-3-Clause - repoEtag: '"36d93552cbd4f7b97134f0511fa00193b2d29ba22f5080328b6be0e5b8d7ad3c"' - repoLastModified: Tue, 22 Aug 2023 03:51:25 GMT + repoEtag: '"4d6f59db4b1db21dc8c53053bcc8bf4d3a531ab827e2ca06c9c6d662b6a0f266"' + repoLastModified: Thu, 24 Aug 2023 03:06:35 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -7132,11 +7132,11 @@ archived: false stars: 1036 watchers: 15 - forks: 116 + forks: 117 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"a6d37adf7e5b577f4d89a4679688d2d025bcff9acbd3e6dc6d09d687373e0564"' + repoEtag: '"1f8959f7680b196bb1e2330d762009d19da642d3afc51b838c22a195660b72dc"' repoLastModified: Tue, 22 Aug 2023 17:03:31 GMT foundInMaster: true category: Code Generators @@ -7153,17 +7153,17 @@ repositoryId: 329190167 description: A lightweight Python web API framework. created: '2021-01-13T04:08:48Z' - updated: '2023-08-19T13:51:27Z' + updated: '2023-08-24T01:56:09Z' language: Python archived: false - stars: 830 + stars: 832 watchers: 18 forks: 101 owner: apiflask logo: https://avatars.githubusercontent.com/u/78075725?v=4 license: MIT - repoEtag: '"7e880dbe159547d548b972b08da2d36316ab7c27b665d507f4484a0d533b443e"' - repoLastModified: Sat, 19 Aug 2023 13:51:27 GMT + repoEtag: '"a9956540e835e2451b9196407f6da2815d038640c5bf9cce3b7c05b219c93d97"' + repoLastModified: Thu, 24 Aug 2023 01:56:09 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -7189,7 +7189,7 @@ owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"ea1b7d8e1be0d1918525459cfeb1d5bd3a5244f90609da1cd390cb6346a3ae68"' + repoEtag: '"d6f44bca9b4294f703451d23e3ee9e8bdd19a1e8b40a222c8b87054c74a05e72"' repoLastModified: Tue, 22 Aug 2023 08:36:12 GMT category: Server Implementations foundInMaster: true @@ -7204,17 +7204,17 @@ repositoryId: 192797744 description: The modern editor for API Design and Technical Writing. created: '2019-06-19T20:09:49Z' - updated: '2023-08-16T06:19:12Z' + updated: '2023-08-23T12:22:45Z' language: null archived: false - stars: 733 + stars: 734 watchers: 28 forks: 47 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 license: NOASSERTION - repoEtag: '"f7af8d7619b5173d577e12d7427ab50bb69ca7885da76fee4ce51349ebcdfe8f"' - repoLastModified: Wed, 16 Aug 2023 06:19:12 GMT + repoEtag: '"2fdda6b9f4299ef489be2422274ab5a3c0c88f0b61413f3f42b74311572030b7"' + repoLastModified: Wed, 23 Aug 2023 12:22:45 GMT foundInMaster: true category: - Description Validators @@ -7236,11 +7236,11 @@ archived: false stars: 668 watchers: 15 - forks: 125 + forks: 126 owner: Mermade logo: https://avatars.githubusercontent.com/u/15950345?v=4 license: BSD-3-Clause - repoEtag: '"a9a6a82fb8ef186da9a5ece03ff01708d9421097c1fe509bab7032ed58bbd4f8"' + repoEtag: '"d9b61fdc59cc14e385b7de25886f25791d9536bd9d4993d8baa1795bc18845ec"' repoLastModified: Sun, 13 Aug 2023 19:03:22 GMT foundInMaster: true category: @@ -7297,7 +7297,7 @@ owner: ogen-go logo: https://avatars.githubusercontent.com/u/85122432?v=4 license: Apache-2.0 - repoEtag: '"a4d9aac4825d6adc36c333771086b53c580c401e6a2e07b7bec4c60fc99feb85"' + repoEtag: '"59b6cdbde9e05af106bb908b59b231bf930f7013529c9958b777a786c55d8c75"' repoLastModified: Tue, 22 Aug 2023 07:36:39 GMT category: Parsers foundInMaster: true @@ -7346,17 +7346,17 @@ repositoryId: 113924383 description: Utility for comparing two OpenAPI specifications. created: '2017-12-12T00:39:30Z' - updated: '2023-08-22T13:39:51Z' + updated: '2023-08-23T07:38:52Z' language: Java archived: false - stars: 634 + stars: 636 watchers: 20 forks: 146 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"b95a0d11314c9a45c39f597fbe29e7e3d25c01eaa6b77e7d80057261b18b737c"' - repoLastModified: Tue, 22 Aug 2023 13:39:51 GMT + repoEtag: '"794fe377b9447a3adfe34d41a37e1cfbfd17b63cdca9fb648c0b78928ac38f2c"' + repoLastModified: Wed, 23 Aug 2023 07:38:52 GMT foundInMaster: true category: Parsers id: c128907e9d949a67c1bda0e0ceda755a @@ -7534,17 +7534,17 @@ repositoryId: 273958287 description: 🦕 OpenAPI plugin for generating API reference docs in Docusaurus v2. created: '2020-06-21T18:06:52Z' - updated: '2023-08-20T16:01:21Z' + updated: '2023-08-23T15:08:53Z' language: TypeScript archived: false - stars: 408 + stars: 409 watchers: 8 forks: 68 owner: cloud-annotations logo: https://avatars.githubusercontent.com/u/47490031?v=4 license: MIT - repoEtag: '"182a4e04b333d9b8dd2c1d68523167033c3120992693efafbe59d7f692f90cc7"' - repoLastModified: Sun, 20 Aug 2023 16:01:21 GMT + repoEtag: '"12044c9eee01501771a00e3595826dd7dc0244f400097b63ab5bbc0426262ffe"' + repoLastModified: Wed, 23 Aug 2023 15:08:53 GMT foundInMaster: true category: SDK id: 5acf9bbe5338a800925f2b0e23eca0a1 @@ -7560,16 +7560,16 @@ repositoryId: 182983428 description: Generate TypeScript clients to tap into OpenAPI servers created: '2019-04-23T09:40:41Z' - updated: '2023-08-20T12:46:29Z' + updated: '2023-08-24T02:53:29Z' language: TypeScript archived: false - stars: 405 - watchers: 9 + stars: 406 + watchers: 10 forks: 65 owner: oazapfts logo: https://avatars.githubusercontent.com/u/119607625?v=4 - repoEtag: '"1f788e67f556f499641d5df926b56092a6edc4b36b88dbec3299d8a16b22403e"' - repoLastModified: Sun, 20 Aug 2023 12:46:29 GMT + repoEtag: '"a9acc84f80a4033e923f0a406a6db2a1b3beff469cd9115bc5208ee6369e7e8b"' + repoLastModified: Thu, 24 Aug 2023 02:53:29 GMT category: Parsers foundInMaster: true oldLocations: @@ -7665,17 +7665,17 @@ repositoryId: 481579846 description: A library that generates OpenAPI (Swagger) docs from Zod schemas created: '2022-04-14T11:32:57Z' - updated: '2023-08-22T14:47:26Z' + updated: '2023-08-23T19:58:39Z' language: TypeScript archived: false - stars: 385 + stars: 387 watchers: 7 forks: 33 owner: asteasolutions logo: https://avatars.githubusercontent.com/u/5244095?v=4 license: MIT - repoEtag: '"a3a2aba088c3982c94dffbc84defbde740c9ced6a28d5fa76526b87f7a6ba827"' - repoLastModified: Tue, 22 Aug 2023 14:47:26 GMT + repoEtag: '"96f21d466444d35549326e6b3665f9817760346a26d522768b886e97fc09a863"' + repoLastModified: Wed, 23 Aug 2023 19:58:39 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -7747,17 +7747,17 @@ response status codes and parameters. At the end, it generates the .json file containing the Swagger format specification. created: '2020-04-13T01:37:33Z' - updated: '2023-08-22T15:36:15Z' + updated: '2023-08-23T12:02:03Z' language: JavaScript archived: false - stars: 333 + stars: 334 watchers: 6 forks: 52 owner: swagger-autogen logo: https://avatars.githubusercontent.com/u/137681762?v=4 license: MIT - repoEtag: '"5e9fb3b41a60efaa74439b0fa5177abacf7e25e559b80eed7c1c190fe81e2ad9"' - repoLastModified: Tue, 22 Aug 2023 15:36:15 GMT + repoEtag: '"3e1bd6262b1117c185267414aa55e72bcbbd3f3090c3dd18f0486fe0855f38fd"' + repoLastModified: Wed, 23 Aug 2023 12:02:03 GMT category: Parsers foundInMaster: true oldLocations: @@ -7773,17 +7773,17 @@ repositoryId: 239108172 description: 📘 Multi-file boilerplate for Open API Specification created: '2020-02-08T10:23:15Z' - updated: '2023-08-20T11:48:46Z' + updated: '2023-08-23T12:04:35Z' language: Shell archived: false - stars: 315 + stars: 316 watchers: 5 forks: 79 owner: dgarcia360 logo: https://avatars.githubusercontent.com/u/9107969?v=4 license: NOASSERTION - repoEtag: '"4df228fd656ef6cf5f691ef64c821613d9b16ebf42af2d23d210e1c50b8c787b"' - repoLastModified: Sun, 20 Aug 2023 11:48:46 GMT + repoEtag: '"48e3478e70406cd4f8b9798f8a4ac28ffba19b2b2a2adc3d2c7651b0ffdf5ef8"' + repoLastModified: Wed, 23 Aug 2023 12:04:35 GMT foundInMaster: true category: - Description Validators @@ -7803,17 +7803,17 @@ traffic with apidump. Model API behavior with apispec. Compare API behavior with apidiff. created: '2021-02-19T00:43:53Z' - updated: '2023-08-18T05:14:09Z' + updated: '2023-08-23T11:20:11Z' language: Go archived: false - stars: 311 + stars: 313 watchers: 9 forks: 21 owner: akitasoftware logo: https://avatars.githubusercontent.com/u/44328574?v=4 license: Apache-2.0 - repoEtag: '"20e1c9daf9b19c988bbbba875aee2eb34eb986486c651ed76da93c7be9e68e62"' - repoLastModified: Fri, 18 Aug 2023 05:14:09 GMT + repoEtag: '"2268e6afdfb0691c3e714daf4f92640b563669f30e2fdab8d92a073c3e423063"' + repoLastModified: Wed, 23 Aug 2023 11:20:11 GMT foundInMaster: true category: - SDK @@ -7864,7 +7864,7 @@ forks: 36 owner: fabien0102 logo: https://avatars.githubusercontent.com/u/1761469?v=4 - repoEtag: '"7f09850bd1246079ab508dff7b698e8fd2a7282b4e0f6bb4847d0626e0913005"' + repoEtag: '"9bdf491b8afa82603adccdb6debd4df4cb2b919a83da9c052ea9c86b490c860c"' repoLastModified: Mon, 21 Aug 2023 00:11:09 GMT category: Testing foundInMaster: true @@ -8163,17 +8163,17 @@ "getting started" sections into slideshow for your workshops. Manage multiple documentations with self-deployed znai hub. created: '2016-12-16T16:42:12Z' - updated: '2023-08-16T20:29:40Z' + updated: '2023-08-23T12:59:23Z' language: Java archived: false - stars: 216 + stars: 217 watchers: 12 forks: 12 owner: testingisdocumenting logo: https://avatars.githubusercontent.com/u/54154955?v=4 license: Apache-2.0 - repoEtag: '"aae0c757db508685519edc604428fafba2ef04f5e30e40cc46d72bf3ac8d3a5d"' - repoLastModified: Wed, 16 Aug 2023 20:29:40 GMT + repoEtag: '"77f6a8d76001cd064bb54992794f1171817650ad2632ea128db9167e0682acc7"' + repoLastModified: Wed, 23 Aug 2023 12:59:23 GMT foundInMaster: true category: Documentation id: e96c15d0478cd8c861932cf44e659757 @@ -8207,9 +8207,9 @@ id: c3406002d5ded68b23a583a8173c775e repositoryMetadata: base64Readme: >- - PGRpdiBhbGlnbj0iY2VudGVyIj4KICAgIDxpbWcgYWx0PSJBcGlDYXQiIHdpZHRoPSIzNTBweCIgc3JjPSJodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMmQwMmZmMmY2YjE5ZDNkNmQzZjEzNGMxODcyNDg0YWEucG5nIi8+CjwvZGl2PgoKIyBBcGlDYXQKCkVuZ2xpc2ggfCBb566A5L2T5Lit5paHXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9ibG9iL21hc3Rlci9SRUFETUUtQ04ubWQpCgpBcGlDYXQgaXMgYW4gQUktcG93ZXJlZCBBUEkgZGV2ZWxvcG1lbnQgdG9vbCB0aGF0IGFpbXMgdG8gYXNzaXN0IGRldmVsb3BlcnMgaW4gYnVpbGRpbmcgQVBJcyBtb3JlIHF1aWNrbHkgYW5kIGVmZmljaWVudGx5IHRocm91Z2ggYXV0b21hdGlvbiBhbmQgaW50ZWxsaWdlbmNlLiBCeSB1dGlsaXppbmcgQXBpQ2F0LCBkZXZlbG9wZXJzIGNhbiBzYXZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHRpbWUgaW4gdGhlIGRldmVsb3BtZW50IGFuZCBtYW5hZ2VtZW50IG9mIEFQSXMuCgpZb3UgY2FuIHZpc2l0IG91ciBbT25saW5lIERlbW9dKGh0dHBzOi8vYXBpY2F0LnplYWJ1ci5hcHApIHRvIHRyeSBpdCBvdXQuCgojIyBGZWF0dXJlcwoKLSAqKkFQSSBkb2N1bWVudGF0aW9uOioqIFlvdSBjYW4gZWFzaWx5IGNyZWF0ZSBhbmQgbWFuYWdlIHlvdXIgQVBJIGRvY3VtZW50YXRpb24KLSAqKkFJIHN1cHBvcnQ6KiogWW91IGNhbiB1c2UgQUkgdG8gaGVscCB5b3UgcXVpY2tseSBnZW5lcmF0ZSBBUEkgZG9jdW1lbnRhdGlvbiwgbW9kZWxzLCByZXNwb25zZXMsIGFuZCBvdGhlciBjb250ZW50Ci0gKipNb2NrOioqIFRoZSB1c2VyLWZyaWVuZGx5IE1vY2sgZmVhdHVyZSBtYWtlcyBBUEkgZGV2ZWxvcG1lbnQgZmFzdGVyIGFuZCBtb3JlIGVmZmljaWVudAotICoqSXRlcmF0aW9uOioqIEhhdmluZyBhIGNsZWFyIGl0ZXJhdGlvbiBwbGFuIGVuYWJsZXMgdGhlIHRlYW0gdG8gZGVmaW5lIHRoZSBzY29wZSBvZiBBUEkgY2hhbmdlcywgZW5zdXJpbmcgZWZmaWNpZW5jeSBhbmQgcXVhbGl0eSBpbiBlYWNoIGRldmVsb3BtZW50IHRhc2suCi0gKipEYXRhIGltcG9ydCBhbmQgZXhwb3J0OioqIEFQSSBkYXRhIGNhbiBiZSBpbXBvcnRlZCBpbiBpdHMgZW50aXJldHkgaW50byBhbnkgc29mdHdhcmUgdGhhdCBzdXBwb3J0cyBPcGVuQVBJIG9yIFN3YWdnZXIsIGFuZCBjYW4gYWxzbyBiZSByZXZlcnNlIGltcG9ydGVkIGludG8gQXBpQ2F0LgoKIyMgSW5zdGFsbGF0aW9uIGFuZCBkZXBsb3ltZW50CgojIyMgRml2ZSBpbnN0YWxsYXRpb24gYW5kIGRlcGxveW1lbnQgbWV0aG9kcwoKIyMjIyAxLiBEb3dubG9hZCB0aGUgZXhlY3V0YWJsZSBmaWxlIGZvciBkZXBsb3ltZW50CgojIyMjIyBTdGVwIDE6IERvd25sb2FkIHRoZSBwcmUtcGFja2FnZWQgZXhlY3V0YWJsZSBmaWxlCgpEb3dubG9hZCB0aGUgcHJlLXBhY2thZ2VkIGV4ZWN1dGFibGUgZmlsZSBbcmVsZWFzZSBhZGRyZXNzXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9yZWxlYXNlcykKCiMjIyMjIFN0ZXAgMjogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYAojIFN0YXJ0IHRoZSBzZXJ2aWNlIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIG9yIGxvYWQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbgouL2FwaWNhdAojIFN0YXJ0IHRoZSBzZXJ2aWNlIGJ5IHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlCi4vYXBpY2F0IC1jIHNldHRpbmcuZXhhbXBsZS55YW1sCmBgYAoKIyMjIyAyLiBEb2NrZXJIdWIgaW5zdGFsbAoKIyMjIyMgU3RlcCAxOiBQdWxsIGltYWdlCgpgYGAKZG9ja2VyIHB1bGwgbmF0dW8vYXBpY2F0OmxhdGVzdApgYGAKCiMjIyMjIFN0ZXAgMjogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYApkb2NrZXIgcnVuIC0tbmFtZSBhcGljYXQtc2VydmVyIC1wIDgwMDA6ODAwMCAtZCAtLWxpbmsgbXlzcWwgbmF0dW8vYXBpY2F0OmxhdGVzdCAtYyAvYXBwL3NldHRpbmcuZGVmYXVsdC55YW1sCmBgYAoKIyMjIyAzLiBJbnN0YWxsIG9uIFplYWJ1cgoKU2lnbiB1cCBmb3IgYSBaZWFidXIgYWNjb3VudCBbWmVhYnVyXShodHRwczovL3plYWJ1ci5jb20vKSwgZmluZCBBcGlDYXQgb25lLWNsaWNrIGRlcGxveW1lbnQgb24gdGhlIE1hcmtldHBsYWNlLgoKIyMjIyA0LiBDb21waWxlIHRoZSBEb2NrZXIgaW1hZ2UgbG9jYWxseQoKIyMjIyMgU3RlcCAxOiBQdWxsIGNvZGUgZnJvbSBnaXRodWIKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQuZ2l0CmBgYAoKIyMjIyMgU3RlcCAyOiBCdWlsZCBhIGxvY2FsIGltYWdlCgpgYGAKZG9ja2VyIGJ1aWxkIC10IGFwaWNhdDpsYXRlc3QgLgpgYGAKCiMjIyMjIFN0ZXAgMzogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYApkb2NrZXIgcnVuIC0tbmFtZSBhcGljYXQtc2VydmVyIC1wIDgwMDA6ODAwMCAtZCAtLWxpbmsgbXlzcWwgbmF0dW8vYXBpY2F0OmxhdGVzdCAtYyAvYXBwL3NldHRpbmcuZGVmYXVsdC55YW1sCmBgYAoKIyMjIyA1LiBJbnN0YWxsIGFuZCBkZXBsb3kgZnJvbSBzb3VyY2UgY29kZQoKIyMjIyMgU3RlcCAxOiBQdWxsIGNvZGUgZnJvbSBnaXRodWIKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQuZ2l0CmBgYAoKIyMjIyMgU3RlcCAyOiBDb21waWxlIHRoZSBmcm9udC1lbmQgY29kZQoKYGBgCmNkIGZyb250ZW5kCnBucG0gaQpwbnBtIGJ1aWxkCmBgYAoKIyMjIyMgU3RlcCAzOiBDb21waWxlIHRoZSBiYWNrZW5kIGNvZGUKCmBgYApnbyBtb2QgdGlkeQpnbyBidWlsZApgYGAKCiMjIyMjIFN0ZXAgNDogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYAojIFN0YXJ0IHRoZSBzZXJ2aWNlIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIG9yIGxvYWQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbgouL2FwaWNhdAojIFN0YXJ0IHRoZSBzZXJ2aWNlIGJ5IHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlCi4vYXBpY2F0IC1jIHNldHRpbmcuZXhhbXBsZS55YW1sCmBgYAoKIyMjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBleHBsYW5hdGlvbgoKWW91IGNhbiBzdGFydCBBcGlDYXQgYW5kIGNvbmZpZ3VyZSBpdCB3aXRoIGN1c3RvbSBzZXR0aW5ncyBpbiB0d28gd2F5czoKCiMjIyMgMS4gUmVhZCB0aGUgY29uZmlndXJhdGlvbiBmaWxlCgpTZWUgdGhlIFtiYWNrZW5kL2NvbmZpZy9zZXR0aW5nLmV4YW1wbGUueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQvYmxvYi9tYWluL2JhY2tlbmQvY29uZmlnL3NldHRpbmcuZXhhbXBsZS55YW1sKQoKIyMjIyAyLiBMb2FkIGVudmlyb25tZW50IHZhcmlhYmxlCgp8IFZhcmlhYmxlIG5hbWUgfCBEZXNjcmlwdGlvbiB8IEV4YW1wbGUgfAp8IC0tLS0tLS0gfCAtLS0gfCAtLS0tIHwKfCBBUElDQVRfQVBQX05BTUUgfCBBUFAgbmFtZSB8IEFwaUNhdCB8CnwgQVBJQ0FUX0FQUF9IT1NUIHwgQm91bmQgSVAgYWRkcmVzcywgRGVmYXVsdDogMC4wLjAuMCB8IDAuMC4wLjAgfAp8IEFQSUNBVF9BUFBfUE9SVCB8IEJvdW5kIHBvcnQsIERlZmF1bHQ6IDgwMDAgfCA4MDAwIHwKfCBBUElDQVRfTE9HX1BBVEggfCBMb2cgZmlsZSBwYXRoLCBPdXRwdXQgdG8gc3Rkb3V0IGlzIGVtcHR5IHwgbG9ncy8gfAp8IEFQSUNBVF9MT0dfTEVWRUwgfCBMb2cgbGV2ZWwgfCBkZWJ1ZyB8CnwgQVBJQ0FUX0RCX0hPU1QgfCBNeVNRTCBJUCBhZGRyZXNzLCByZXF1aXJlZCB8IDEyNy4wLjAuMSB8CnwgQVBJQ0FUX0RCX1BPUlQgfCBNeVNRTCBQb3J0LCByZXF1aXJlZCB8IDMzMDYgfAp8IEFQSUNBVF9EQl9VU0VSIHwgTXlTUUwgdXNlcm5hbWUsIHJlcXVpcmVkIHwgcm9vdCB8CnwgQVBJQ0FUX0RCX1BBU1NXT1JEIHwgTXlTUUwgcGFzc3dvcmQsIHJlcXVpcmVkIHwgMTIzNDU2IHwKfCBBUElDQVRfREJfTkFNRSB8IE15U1FMIGRhdGFiYXNlIG5hbWUsIHJlcXVpcmVkIHwgYXBpY2F0IHwKfCBBUElDQVRfT1BFTkFJX0tFWSB8IE9wZW5BSSBLZXkgfCBzay14eHh4eHggfAoKIyMgQ29udGFjdAoKSWYgeW91IGhhdmUgYW55IHRvcGljcyB5b3Ugd291bGQgbGlrZSB0byBkaXNjdXNzIG9yIGNvbW11bmljYXRlIHdpdGggdXMsIGZlZWwgZnJlZSB0byBqb2luIG91ciBXZUNoYXQgZGlzY3Vzc2lvbiBncm91cC4KCiFbV2VjaGF0IEdyb3VwXShodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMDFiZmIyMzgwMmNkZmFkNDlmMGQ1NjBlZTgwZmM1ZTMucG5nKQoKIyMgU2NyZWVuc2hvdAoKIVtBSS1nZW5lcmF0ZS1zY2hlbWFdKGh0dHBzOi8vY2RuLmFwaWNhdC5uZXQvdXBsb2Fkcy8wYzM1MThjMWJmYzQyMWZjNGYzZjg2YzA4NWYzNTNkMi5naWYpCgohW0FJLWdlbmVyYXRlLWFwaS1ieS1zY2hlbWFdKGh0dHBzOi8vY2RuLmFwaWNhdC5uZXQvdXBsb2Fkcy9iYmNhZTgzNTExZDc5N2QyMjA3N2QwNWQxN2MyNjJjYy5naWYpCgohW0FJLWdlbmVyYXRlLWFwaV0oaHR0cHM6Ly9jZG4uYXBpY2F0Lm5ldC91cGxvYWRzL2NmNjE3YjU2ZmExODY5NjBjMjI4Yzc5NDg3Y2Y2YzVlLmdpZikKCiMjIExpY2Vuc2UKCltNSVRdKGh0dHBzOi8vZ2l0aHViLmNvbS9hcGljYXQvYXBpY2F0L2Jsb2IvbWFpbi9MSUNFTlNFKQ== - readmeEtag: '"feba1cc93f9fd3451aa620d835af9ab4e5496121896110ce4dafcb14ad9f2cfa"' - readmeLastModified: Tue, 08 Aug 2023 07:25:53 GMT + PGRpdiBhbGlnbj0iY2VudGVyIj4KICAgIDxpbWcgYWx0PSJBcGlDYXQiIHdpZHRoPSIzNTBweCIgc3JjPSJodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMmQwMmZmMmY2YjE5ZDNkNmQzZjEzNGMxODcyNDg0YWEucG5nIi8+CjwvZGl2PgoKIyBBcGlDYXQKCkVuZ2xpc2ggfCBb566A5L2T5Lit5paHXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9ibG9iL21hc3Rlci9SRUFETUUtQ04ubWQpCgpBcGlDYXQgaXMgYW4gQUktcG93ZXJlZCBBUEkgZGV2ZWxvcG1lbnQgdG9vbCB0aGF0IGFpbXMgdG8gYXNzaXN0IGRldmVsb3BlcnMgaW4gYnVpbGRpbmcgQVBJcyBtb3JlIHF1aWNrbHkgYW5kIGVmZmljaWVudGx5IHRocm91Z2ggYXV0b21hdGlvbiBhbmQgaW50ZWxsaWdlbmNlLiBCeSB1dGlsaXppbmcgQXBpQ2F0LCBkZXZlbG9wZXJzIGNhbiBzYXZlIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHRpbWUgaW4gdGhlIGRldmVsb3BtZW50IGFuZCBtYW5hZ2VtZW50IG9mIEFQSXMuCgpZb3UgY2FuIHZpc2l0IG91ciBbT25saW5lIERlbW9dKGh0dHBzOi8vYXBpY2F0LnplYWJ1ci5hcHApIHRvIHRyeSBpdCBvdXQuCgojIyBGZWF0dXJlcwoKLSAqKkFQSSBkb2N1bWVudGF0aW9uOioqIFlvdSBjYW4gZWFzaWx5IGNyZWF0ZSBhbmQgbWFuYWdlIHlvdXIgQVBJIGRvY3VtZW50YXRpb24KLSAqKkFJIHN1cHBvcnQ6KiogWW91IGNhbiB1c2UgQUkgdG8gaGVscCB5b3UgcXVpY2tseSBnZW5lcmF0ZSBBUEkgZG9jdW1lbnRhdGlvbiwgbW9kZWxzLCByZXNwb25zZXMsIGFuZCBvdGhlciBjb250ZW50Ci0gKipNb2NrOioqIFRoZSB1c2VyLWZyaWVuZGx5IE1vY2sgZmVhdHVyZSBtYWtlcyBBUEkgZGV2ZWxvcG1lbnQgZmFzdGVyIGFuZCBtb3JlIGVmZmljaWVudAotICoqSXRlcmF0aW9uOioqIEhhdmluZyBhIGNsZWFyIGl0ZXJhdGlvbiBwbGFuIGVuYWJsZXMgdGhlIHRlYW0gdG8gZGVmaW5lIHRoZSBzY29wZSBvZiBBUEkgY2hhbmdlcywgZW5zdXJpbmcgZWZmaWNpZW5jeSBhbmQgcXVhbGl0eSBpbiBlYWNoIGRldmVsb3BtZW50IHRhc2suCi0gKipEYXRhIGltcG9ydCBhbmQgZXhwb3J0OioqIEFQSSBkYXRhIGNhbiBiZSBpbXBvcnRlZCBpbiBpdHMgZW50aXJldHkgaW50byBhbnkgc29mdHdhcmUgdGhhdCBzdXBwb3J0cyBPcGVuQVBJIG9yIFN3YWdnZXIsIGFuZCBjYW4gYWxzbyBiZSByZXZlcnNlIGltcG9ydGVkIGludG8gQXBpQ2F0LgoKIyMgSW5zdGFsbGF0aW9uIGFuZCBkZXBsb3ltZW50CgojIyMgRml2ZSBpbnN0YWxsYXRpb24gYW5kIGRlcGxveW1lbnQgbWV0aG9kcwoKIyMjIyAxLiBEb3dubG9hZCB0aGUgZXhlY3V0YWJsZSBmaWxlIGZvciBkZXBsb3ltZW50CgojIyMjIyBTdGVwIDE6IERvd25sb2FkIHRoZSBwcmUtcGFja2FnZWQgZXhlY3V0YWJsZSBmaWxlCgpEb3dubG9hZCB0aGUgcHJlLXBhY2thZ2VkIGV4ZWN1dGFibGUgZmlsZSBbcmVsZWFzZSBhZGRyZXNzXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9yZWxlYXNlcykKCiMjIyMjIFN0ZXAgMjogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYAojIFN0YXJ0IHRoZSBzZXJ2aWNlIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIG9yIGxvYWQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbgouL2FwaWNhdAojIFN0YXJ0IHRoZSBzZXJ2aWNlIGJ5IHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlCi4vYXBpY2F0IC1jIHNldHRpbmcuZXhhbXBsZS55YW1sCmBgYAoKIyMjIyAyLiBEb2NrZXJIdWIgaW5zdGFsbAoKIyMjIyMgU3RlcCAxOiBQdWxsIGltYWdlCgpgYGAKZG9ja2VyIHB1bGwgbmF0dW8vYXBpY2F0OmxhdGVzdApgYGAKCiMjIyMjIFN0ZXAgMjogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYApkb2NrZXIgcnVuIC0tbmFtZSBhcGljYXQtc2VydmVyIC1wIDgwMDA6ODAwMCAtZCAtLWxpbmsgbXlzcWwgbmF0dW8vYXBpY2F0OmxhdGVzdCAtYyAvYXBwL3NldHRpbmcuZGVmYXVsdC55YW1sCmBgYAoKIyMjIyAzLiBJbnN0YWxsIG9uIFplYWJ1cgoKU2lnbiB1cCBmb3IgYSBaZWFidXIgYWNjb3VudCBbWmVhYnVyXShodHRwczovL3plYWJ1ci5jb20vKSwgZmluZCBBcGlDYXQgb25lLWNsaWNrIGRlcGxveW1lbnQgb24gdGhlIE1hcmtldHBsYWNlLgoKIyMjIyA0LiBDb21waWxlIHRoZSBEb2NrZXIgaW1hZ2UgbG9jYWxseQoKIyMjIyMgU3RlcCAxOiBQdWxsIGNvZGUgZnJvbSBnaXRodWIKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQuZ2l0CmBgYAoKIyMjIyMgU3RlcCAyOiBCdWlsZCBhIGxvY2FsIGltYWdlCgpgYGAKZG9ja2VyIGJ1aWxkIC10IGFwaWNhdDpsYXRlc3QgLgpgYGAKCiMjIyMjIFN0ZXAgMzogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYApkb2NrZXIgcnVuIC0tbmFtZSBhcGljYXQtc2VydmVyIC1wIDgwMDA6ODAwMCAtZCAtLWxpbmsgbXlzcWwgbmF0dW8vYXBpY2F0OmxhdGVzdCAtYyAvYXBwL3NldHRpbmcuZGVmYXVsdC55YW1sCmBgYAoKIyMjIyA1LiBJbnN0YWxsIGFuZCBkZXBsb3kgZnJvbSBzb3VyY2UgY29kZQoKIyMjIyMgU3RlcCAxOiBQdWxsIGNvZGUgZnJvbSBnaXRodWIKCmBgYApnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQuZ2l0CmBgYAoKIyMjIyMgU3RlcCAyOiBDb21waWxlIHRoZSBmcm9udC1lbmQgY29kZQoKYGBgCmNkIGZyb250ZW5kCnBucG0gaQpwbnBtIGJ1aWxkCmBgYAoKIyMjIyMgU3RlcCAzOiBDb21waWxlIHRoZSBiYWNrZW5kIGNvZGUKCmBgYApnbyBtb2QgdGlkeQpnbyBidWlsZApgYGAKCiMjIyMjIFN0ZXAgNDogU3RhcnQgdGhlIHNlcnZpY2UKCmBgYAojIFN0YXJ0IHRoZSBzZXJ2aWNlIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uIG9yIGxvYWQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbgouL2FwaWNhdAojIFN0YXJ0IHRoZSBzZXJ2aWNlIGJ5IHVzaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlCi4vYXBpY2F0IC1jIHNldHRpbmcuZXhhbXBsZS55YW1sCmBgYAoKIyMjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBleHBsYW5hdGlvbgoKWW91IGNhbiBzdGFydCBBcGlDYXQgYW5kIGNvbmZpZ3VyZSBpdCB3aXRoIGN1c3RvbSBzZXR0aW5ncyBpbiB0d28gd2F5czoKCiMjIyMgMS4gUmVhZCB0aGUgY29uZmlndXJhdGlvbiBmaWxlCgpTZWUgdGhlIFtiYWNrZW5kL2NvbmZpZy9zZXR0aW5nLmV4YW1wbGUueWFtbF0oaHR0cHM6Ly9naXRodWIuY29tL2FwaWNhdC9hcGljYXQvYmxvYi9tYWluL2JhY2tlbmQvY29uZmlnL3NldHRpbmcuZXhhbXBsZS55YW1sKQoKIyMjIyAyLiBMb2FkIGVudmlyb25tZW50IHZhcmlhYmxlCgp8IFZhcmlhYmxlIG5hbWUgfCBEZXNjcmlwdGlvbiB8IEV4YW1wbGUgfAp8IC0tLS0tLS0gfCAtLS0gfCAtLS0tIHwKfCBBUElDQVRfQVBQX05BTUUgfCBBUFAgbmFtZSB8IEFwaUNhdCB8CnwgQVBJQ0FUX0FQUF9IT1NUIHwgQm91bmQgSVAgYWRkcmVzcywgRGVmYXVsdDogMC4wLjAuMCB8IDAuMC4wLjAgfAp8IEFQSUNBVF9BUFBfUE9SVCB8IEJvdW5kIHBvcnQsIERlZmF1bHQ6IDgwMDAgfCA4MDAwIHwKfCBBUElDQVRfTE9HX1BBVEggfCBMb2cgZmlsZSBwYXRoLCBPdXRwdXQgdG8gc3Rkb3V0IGlzIGVtcHR5IHwgbG9ncy8gfAp8IEFQSUNBVF9MT0dfTEVWRUwgfCBMb2cgbGV2ZWwgfCBkZWJ1ZyB8CnwgQVBJQ0FUX0RCX0hPU1QgfCBNeVNRTCBJUCBhZGRyZXNzLCByZXF1aXJlZCB8IDEyNy4wLjAuMSB8CnwgQVBJQ0FUX0RCX1BPUlQgfCBNeVNRTCBQb3J0LCByZXF1aXJlZCB8IDMzMDYgfAp8IEFQSUNBVF9EQl9VU0VSIHwgTXlTUUwgdXNlcm5hbWUsIHJlcXVpcmVkIHwgcm9vdCB8CnwgQVBJQ0FUX0RCX1BBU1NXT1JEIHwgTXlTUUwgcGFzc3dvcmQsIHJlcXVpcmVkIHwgMTIzNDU2IHwKfCBBUElDQVRfREJfTkFNRSB8IE15U1FMIGRhdGFiYXNlIG5hbWUsIHJlcXVpcmVkIHwgYXBpY2F0IHwKfCBBUElDQVRfT1BFTkFJX1NPVVJDRSB8IE9wZW5BSSBBUEkgc291cmNlKG9wZW5haSwgYXp1cmUpIHwgb3BlbmFpIHwKfCBBUElDQVRfT1BFTkFJX0tFWSB8IE9wZW5BSSBLZXkgfCBzay14eHh4eHggfAp8IEFQSUNBVF9PUEVOQUlfRU5EUE9JTlQgfCBPcGVuQUkgQVBJIHVybCwgVmFsaWQgd2hlbiBBUElDQVRfT1BFTkFJX1NPVVJDRSBpcyBzZXQgdG8gImF6dXJlIiB8IGh0dHBzOi8veHh4eHh4Lm9wZW5haS5henVyZS5jb20vIHwKCiMjIENvbnRhY3QKCklmIHlvdSBoYXZlIGFueSB0b3BpY3MgeW91IHdvdWxkIGxpa2UgdG8gZGlzY3VzcyBvciBjb21tdW5pY2F0ZSB3aXRoIHVzLCBmZWVsIGZyZWUgdG8gam9pbiBvdXIgV2VDaGF0IGRpc2N1c3Npb24gZ3JvdXAuCgohW1dlY2hhdCBHcm91cF0oaHR0cHM6Ly9jZG4uYXBpY2F0Lm5ldC91cGxvYWRzLzAxYmZiMjM4MDJjZGZhZDQ5ZjBkNTYwZWU4MGZjNWUzLnBuZykKCiMjIFNjcmVlbnNob3QKCiFbQUktZ2VuZXJhdGUtc2NoZW1hXShodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvMGMzNTE4YzFiZmM0MjFmYzRmM2Y4NmMwODVmMzUzZDIuZ2lmKQoKIVtBSS1nZW5lcmF0ZS1hcGktYnktc2NoZW1hXShodHRwczovL2Nkbi5hcGljYXQubmV0L3VwbG9hZHMvYmJjYWU4MzUxMWQ3OTdkMjIwNzdkMDVkMTdjMjYyY2MuZ2lmKQoKIVtBSS1nZW5lcmF0ZS1hcGldKGh0dHBzOi8vY2RuLmFwaWNhdC5uZXQvdXBsb2Fkcy9jZjYxN2I1NmZhMTg2OTYwYzIyOGM3OTQ4N2NmNmM1ZS5naWYpCgojIyBMaWNlbnNlCgpbTUlUXShodHRwczovL2dpdGh1Yi5jb20vYXBpY2F0L2FwaWNhdC9ibG9iL21haW4vTElDRU5TRSk= + readmeEtag: '"0621763857985a780c579b8a6828f0d945d89d8e196b5f9b0a2fb4a63030068b"' + readmeLastModified: Wed, 23 Aug 2023 07:33:28 GMT repositoryId: 488860709 description: >- ApiCat is an API development tool based on AI technology. It analyzes and @@ -8217,17 +8217,17 @@ corresponding API documents and codes to help developers develop APIs more quickly and efficiently. created: '2022-05-05T06:44:36Z' - updated: '2023-08-23T00:18:04Z' + updated: '2023-08-23T17:56:52Z' language: Go archived: false - stars: 203 + stars: 206 watchers: 6 forks: 25 owner: apicat logo: https://avatars.githubusercontent.com/u/64158984?v=4 license: MIT - repoEtag: '"d8d827c0248d9033d186e0e3590e440dd33e126c33ec9adf77552a4346b592e7"' - repoLastModified: Wed, 23 Aug 2023 00:18:04 GMT + repoEtag: '"a0d6c1bd9b33ba24d5886024539726066836f068717176eef2dc1e1faf5f9f7c"' + repoLastModified: Wed, 23 Aug 2023 17:56:52 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -8423,7 +8423,7 @@ owner: asyncapi logo: https://avatars.githubusercontent.com/u/16401334?v=4 license: Apache-2.0 - repoEtag: '"33e93316b1001867560652659f51db5848605995f15553225da52d406ed046ca"' + repoEtag: '"2a6f665eb421bdfc57cb141c64097f4034b96936b44aea845691398f9b2ba5d3"' repoLastModified: Tue, 22 Aug 2023 14:54:22 GMT foundInMaster: true - source: openapi3 tags @@ -8464,17 +8464,17 @@ repositoryId: 32223373 description: A model-based test case generator created: '2015-03-14T17:22:38Z' - updated: '2023-07-29T01:11:14Z' + updated: '2023-08-23T09:13:46Z' language: Java archived: false - stars: 180 + stars: 181 watchers: 18 forks: 47 owner: Cornutum logo: https://avatars.githubusercontent.com/u/11477145?v=4 license: MIT - repoEtag: '"8f401fa1d4636d2a3c785558409c983671a63afc736fbaacd53e97d0bfd47c4a"' - repoLastModified: Sat, 29 Jul 2023 01:11:14 GMT + repoEtag: '"6abd7678599c52f4977e4b0aef22941ab760522ab51cdbe93450a808ea54fa70"' + repoLastModified: Wed, 23 Aug 2023 09:13:46 GMT foundInMaster: true category: Testing id: 0843a8b0533f5128a9b0e3cf353e82cd @@ -8674,17 +8674,17 @@ repositoryId: 479982630 description: Clean Architecture Example using FastAPI framework created: '2022-04-10T10:23:51Z' - updated: '2023-08-22T03:53:40Z' + updated: '2023-08-23T04:12:00Z' language: Python archived: false - stars: 169 + stars: 170 watchers: 3 forks: 37 owner: 0xTheProDev logo: https://avatars.githubusercontent.com/u/14367736?v=4 license: MIT - repoEtag: '"2ada46945d1b3d3294c4568ac42f84114606784c8d2c11b79cb50172b0f5411f"' - repoLastModified: Tue, 22 Aug 2023 03:53:40 GMT + repoEtag: '"45782ca3731233ebe3f5c9a5b3deb25fe7763edfcc06794638a1b13d222e5756"' + repoLastModified: Wed, 23 Aug 2023 04:12:00 GMT category: Server Implementations foundInMaster: true oldLocations: @@ -8862,17 +8862,17 @@ :capital_abcd: Tool for generation samples based on OpenAPI(fka Swagger) payload/response schema created: '2016-05-29T10:29:32Z' - updated: '2023-08-10T04:55:21Z' + updated: '2023-08-23T07:06:06Z' language: JavaScript archived: false - stars: 143 + stars: 144 watchers: 17 - forks: 41 + forks: 42 owner: Redocly logo: https://avatars.githubusercontent.com/u/32099856?v=4 license: MIT - repoEtag: '"73f380958e795d6a07d45e7547c9fcd34ba5fb991fb20ae7b511f799b109629e"' - repoLastModified: Thu, 10 Aug 2023 04:55:21 GMT + repoEtag: '"52ef5099e28b0ba445bf5a8a7983b29f9ca2ceade9e33cd72c4384f0a0260405"' + repoLastModified: Wed, 23 Aug 2023 07:06:06 GMT foundInMaster: true v3_1: true category: @@ -8982,17 +8982,17 @@ repositoryId: 232207964 description: OpenAPI structures for Go created: '2020-01-07T00:07:41Z' - updated: '2023-08-22T09:39:19Z' + updated: '2023-08-24T01:40:48Z' language: Go archived: false - stars: 133 + stars: 135 watchers: 3 forks: 17 owner: swaggest logo: https://avatars.githubusercontent.com/u/19609628?v=4 license: MIT - repoEtag: '"8130ab1d492afa1e31cb002032bed93e44b5871085f7f01bcad0090ce988331d"' - repoLastModified: Tue, 22 Aug 2023 09:39:19 GMT + repoEtag: '"72f7c8757facaa2c7e0c843029c7e54e07726f6ebd87c242b5de29f89ee47da4"' + repoLastModified: Thu, 24 Aug 2023 01:40:48 GMT foundInMaster: true id: 042e78fafa5f6cb0dbca01c64778ab3f - source: openapi3 tags @@ -9282,17 +9282,17 @@ repositoryId: 218804581 description: OpenAPI 3 parser, JSON schema and request validator. created: '2019-10-31T15:59:35Z' - updated: '2023-08-15T15:40:14Z' + updated: '2023-08-23T08:45:48Z' language: Java archived: true - stars: 98 + stars: 99 watchers: 5 forks: 37 owner: openapi4j logo: https://avatars.githubusercontent.com/u/39759775?v=4 license: Apache-2.0 - repoEtag: '"48ba07b6814e06f0a35d83a9d3babcb53322a6105c521545d1a7e175a721120d"' - repoLastModified: Tue, 15 Aug 2023 15:40:14 GMT + repoEtag: '"388244141e7328812f1e6782838aa77490df82ca9e7d6dc09665615a4d682d49"' + repoLastModified: Wed, 23 Aug 2023 08:45:48 GMT foundInMaster: true id: c5b32630ea7cd375c61c41563e2a2f09 - source: openapi3 tags @@ -9446,11 +9446,11 @@ archived: false stars: 86 watchers: 13 - forks: 60 + forks: 61 owner: digitalocean logo: https://avatars.githubusercontent.com/u/4650108?v=4 license: Apache-2.0 - repoEtag: '"bc98b29596f5698176110935c458d0409ef990cf6eba541f2d3051bd2410e051"' + repoEtag: '"78bad093439c67bd0cfcc1ff323758b9dd15651e59d740aab888be915198eee6"' repoLastModified: Tue, 22 Aug 2023 20:44:46 GMT foundInMaster: true category: @@ -9478,7 +9478,7 @@ owner: speakeasy-api logo: https://avatars.githubusercontent.com/u/91446104?v=4 license: NOASSERTION - repoEtag: '"13985f2d8cf966f6070ffea9b12e787ce50a65deabc13f1ea7a695e362bea5be"' + repoEtag: '"071ffc4084ac0f45b775f63556eef5fd3327b2cc69306789e190f267c85f085a"' repoLastModified: Tue, 22 Aug 2023 14:39:24 GMT category: Parsers foundInMaster: true @@ -9793,7 +9793,7 @@ owner: jellyfin logo: https://avatars.githubusercontent.com/u/45698031?v=4 license: LGPL-3.0 - repoEtag: '"155a0a21e3e52adff3b8007fdd59932139237760f1c876ab5ae6c1ce5d724044"' + repoEtag: '"ea1fdd0a81d30a64f0ad17876c012e283cec2f2a09589e4909062bffdd5c3de3"' repoLastModified: Tue, 25 Jul 2023 14:22:28 GMT foundInMaster: true category: Testing @@ -9814,17 +9814,17 @@ OpenAPI schema validator is a Python library that validates schema against OpenAPI Schema Specification v3.0 and v3.1 created: '2020-03-05T09:23:39Z' - updated: '2023-08-10T17:25:19Z' + updated: '2023-08-23T04:45:46Z' language: Python archived: false - stars: 65 + stars: 66 watchers: 4 forks: 27 owner: python-openapi logo: https://avatars.githubusercontent.com/u/126442889?v=4 license: BSD-3-Clause - repoEtag: '"bbbeb4cc930b1a72eb3420c7f19f201671492231ef7382e4e6f72f550e2d0b5d"' - repoLastModified: Thu, 10 Aug 2023 17:25:19 GMT + repoEtag: '"72fabf455a0054b0f35129b5a3d256b8c576490da5a0e3cc6af77de2f33a7c8f"' + repoLastModified: Wed, 23 Aug 2023 04:45:46 GMT category: Parsers oldLocations: - https://github.com/p1c2u/openapi-schema-validator @@ -9899,17 +9899,17 @@ A curated list of awesome JSON Schema resources, tutorials, tools, and more. created: '2021-09-09T11:39:06Z' - updated: '2023-08-14T19:49:59Z' + updated: '2023-08-23T09:57:33Z' language: Handlebars archived: false - stars: 64 + stars: 65 watchers: 6 forks: 1 owner: sourcemeta logo: https://avatars.githubusercontent.com/u/74150453?v=4 license: CC0-1.0 - repoEtag: '"6ab7b4551b1c05950879cb6a33115bfc43687336926fc0b8d7c9959dd68d1096"' - repoLastModified: Mon, 14 Aug 2023 19:49:59 GMT + repoEtag: '"46cf623f7bc5d82a9565eec23f1231d470c8ab44bb00906b5763b0d35c970d2d"' + repoLastModified: Wed, 23 Aug 2023 09:57:33 GMT foundInMaster: true category: Converters id: 40df0f4f4e0e95da0b9f4aeb27567a36 @@ -10074,7 +10074,7 @@ owner: dymmond logo: https://avatars.githubusercontent.com/u/65982469?v=4 license: MIT - repoEtag: '"82b5b7ccac4a670e852850797abf44f69631c992c873c6cde5fdd72860b5eac6"' + repoEtag: '"61bc4cac1aed41583f0fc0276c3f0e5702727dad13f91850688890d37ba60247"' repoLastModified: Mon, 21 Aug 2023 02:33:06 GMT category: Server Implementations foundInMaster: true @@ -10356,7 +10356,7 @@ owner: ahx logo: https://avatars.githubusercontent.com/u/8669?v=4 license: MIT - repoEtag: '"6071315bf4134524e86adcf2b0483dec9f72c6ebf33c885544386763bea897e1"' + repoEtag: '"9b0c91049e5e48738c181ecf18b4688044207eeddf77a0e962c70e78317a9056"' repoLastModified: Thu, 17 Aug 2023 00:32:42 GMT foundInMaster: true category: @@ -10407,11 +10407,11 @@ language: TypeScript archived: false stars: 44 - watchers: 8 + watchers: 9 forks: 8 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 - repoEtag: '"afbb694be527a46575a3edbc60065e4e3a2f13a0a2192be163ce279de35a5cc8"' + repoEtag: '"fd73cb3898c3f598ba7b92916e57f512c05f492ce4c98f731849d2e66262b74e"' repoLastModified: Fri, 18 Aug 2023 13:27:26 GMT category: Parsers foundInMaster: true @@ -10484,11 +10484,11 @@ archived: false stars: 42 watchers: 6 - forks: 44 + forks: 45 owner: OpenAPITools logo: https://avatars.githubusercontent.com/u/37325267?v=4 license: Apache-2.0 - repoEtag: '"0360eb4e6ee2b7a7b923a65cb03d822111394c8da7234d0aa373f32b44638168"' + repoEtag: '"6ad1e365044e7171658ef90dd6288479a88b78ff5f071eceb66b9557859373f5"' repoLastModified: Sun, 20 Aug 2023 12:08:04 GMT foundInMaster: true category: @@ -10509,16 +10509,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-17T12:09:12Z' + updated: '2023-08-23T03:51:53Z' language: JavaScript archived: false - stars: 43 + stars: 44 watchers: 8 forks: 12 owner: OAI logo: https://avatars.githubusercontent.com/u/16343502?v=4 - repoEtag: '"b30fac537776e1ce6405f1a33e4fd98dbd1484b14e752c85c4209943d072d7a5"' - repoLastModified: Thu, 17 Aug 2023 12:09:12 GMT + repoEtag: '"f792e971b710d643db025cf4f44d08af373f5e93a4586f2d949ca9f9e7c5b971"' + repoLastModified: Wed, 23 Aug 2023 03:51:53 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -10617,17 +10617,17 @@ repositoryId: 598846021 description: Refit Client API Generator for OpenAPI created: '2023-02-07T23:18:12Z' - updated: '2023-08-21T12:56:55Z' + updated: '2023-08-23T07:11:03Z' language: C# archived: false - stars: 44 + stars: 45 watchers: 4 forks: 11 owner: christianhelle logo: https://avatars.githubusercontent.com/u/710400?v=4 license: GPL-3.0 - repoEtag: '"4da3a4c91fd2ec08d839d994db40867fdedf3a0807debe2023058d66031bef80"' - repoLastModified: Mon, 21 Aug 2023 12:56:55 GMT + repoEtag: '"16eea265bfa506eee80faa5710ed04cfcfd57a15c884f8ea5fe5971c86a92403"' + repoLastModified: Wed, 23 Aug 2023 07:11:03 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -10706,7 +10706,7 @@ owner: atlassian logo: https://avatars.githubusercontent.com/u/168166?v=4 license: NOASSERTION - repoEtag: '"a33224887ad3db2916c50b2005089bfe42cafe8d795b9bfb81b6a84e0d8a2340"' + repoEtag: '"aab2ef41bca75e634d2bb4c9bd5239c60eb4443f6f67758c8b3cebe8b76a153d"' repoLastModified: Thu, 27 Jul 2023 12:03:30 GMT foundInMaster: true id: 70270b46839e1466d6a425a8da6ded65 @@ -10758,7 +10758,7 @@ forks: 23 owner: piomin logo: https://avatars.githubusercontent.com/u/2892502?v=4 - repoEtag: '"7721c6e9a323faedfb30a5485cc3556aa960eed531fa781eb071577e6f74011d"' + repoEtag: '"b79ce9af355bfb6069563a37d4931470c94af444dfd2b35b1825f0be18d1fc48"' repoLastModified: Sun, 13 Aug 2023 17:57:46 GMT foundInMaster: true category: SDK @@ -10865,7 +10865,7 @@ owner: namsor logo: https://avatars.githubusercontent.com/u/6951565?v=4 license: AGPL-3.0 - repoEtag: '"3688af34b7123bfdb20ff551e90d3dbd13e8eff21fcf0b9b84a1d92c9d396f7e"' + repoEtag: '"5371b5b4f6c3283193eca1581bedf03e8e8c94ade469e609368e38f3b7bfb4a4"' repoLastModified: Mon, 10 Jul 2023 08:23:36 GMT foundInMaster: true category: @@ -10884,17 +10884,17 @@ repositoryId: 628179878 description: Use Zod Schemas to create OpenAPI v3.x documentation created: '2023-04-15T06:28:51Z' - updated: '2023-08-18T09:03:04Z' + updated: '2023-08-23T17:24:24Z' language: TypeScript archived: false - stars: 34 + stars: 35 watchers: 2 forks: 3 owner: samchungy logo: https://avatars.githubusercontent.com/u/18017094?v=4 license: MIT - repoEtag: '"1c2e75f967aaa3669462a779d64a6ffe42b51666ffb41851e0ff0cbf29e3f2c8"' - repoLastModified: Fri, 18 Aug 2023 09:03:04 GMT + repoEtag: '"e7ec35e6c6adb568f21c63424802d3c7d339ff2fa05252c78165de1e379ce76f"' + repoLastModified: Wed, 23 Aug 2023 17:24:24 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -10952,9 +10952,9 @@ v3: true repositoryMetadata: base64Readme: >- - IVtCdWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL0JhY2tiYXNlL2JhY2tiYXNlLW9wZW5hcGktdG9vbHMvd29ya2Zsb3dzL0JPQVQvYmFkZ2Uuc3ZnKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jb20uYmFja2Jhc2Uub3NzJTNBYmFja2Jhc2Utb3BlbmFwaS10b29scyZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jb20uYmFja2Jhc2Uub3NzJTNBYmFja2Jhc2Utb3BlbmFwaS10b29scykKWyFbTXZuIENlbnRyYWxdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9jb20uYmFja2Jhc2Uub3NzL2JhY2tiYXNlLW9wZW5hcGktdG9vbHMvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9jb20uYmFja2Jhc2Uub3NzL2JvYXQtbWF2ZW4tcGx1Z2luKQojIEJhY2tiYXNlIE9wZW5BcGkgVG9vbHMgCgpUaGUgQmFja2Jhc2UgT3BlbiBBUEkgVG9vbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGNyZWF0ZWQgdG8gd29yayBlZmZpY2llbnRseSB3aXRoIE9wZW5BUEkKCkl0IGN1cnJlbnRseSBjb25zaXN0cyBvZgoKKiBDcmVhdGUgRGlmZiBSZXBvcnQgYmV0d2VlbiAyIE9wZW5BUEkgdmVyc2lvbnMgb2YgdGhlIHNhbWUgc3BlYyAoQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3F1ZW4yNDA0L29wZW5hcGktZGlmZikKKiBEZWNvbXBvc2UgVHJhbnNmb3JtZXIgdG8gcmVtb3ZlIENvbXBvc2VkIFNjaGVtYXMgZnJvbSBPcGVuQVBJIHNwZWNzIHRvIGFpZCBpbiBjb2RlIGdlbmVyYXRvcnMKKiBDYXNlIFRyYW5zZm9ybWVyIHRvIHNlZSBob3cgeW91ciBBUEkgbG9va3MgbGlrZSB3aGVuIGdvaW5nIGZyb20gY2FtZWxDYXNlIHRvIHNuYWtlX2Nhc2UgICh0cmFuc2Zvcm1zIGV4YW1wbGVzIHRvbykKKiBbQ29kZSBHZW5lcmF0b3JdKGJvYXQtbWF2ZW4tcGx1Z2luL1JFQURNRS5tZCkgYmFzZWQgb24gW29wZW5hcGktZ2VuZXJhdG9yLnRlY2hdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pIHdpdGggb3B0aW1pemVkIHRlbXBsYXRlcyBhbmQgZml4ZXMuCiogTGludCBtb2pvIGJhc2VkIG9uIFphbGFuZG8gWmFsbHkgYW5kIEJhY2tiYXNlIEFQSQoKVGhlIHByb2plY3QgaXMgdmVyeSBtdWNoIFdvcmsgSW4gUHJvZ3Jlc3MgYW5kIHdpbGwgYmUgcHVibGlzaGVkIG9uIG1hdmVuIGNlbnRyYWwgd2hlbiBjb25zaWRlcmVkIHJlYWR5IGVub3VnaC4gCgojIFJlbGVhc2UgTm90ZXMKQk9BVCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgc3ViamVjdCB0byBjaGFuZ2UuCiMjIDAuMTcuNwoqIEJvYXQgbWF2ZW4gcGx1Z2luCiAgKiBGaXg6IEFkZGVkICdjb250YWluZXJEZWZhdWx0VG9OdWxsJyBkZWZhdWx0IG9wdGlvbiB0byB0aGUgTU9KTyBnZW5lcmF0b3IKIyMgMC4xNy42CiogQm9hdCBlbmdpbmUKICAqIEZpeDogUHJvY2Vzc2luZyBvZiBhIHNpbmdsZSBzdHJpbmcgdHlwZSBleGFtcGxlIG9uIG1lZGlhLXR5cGUuCiMjIDAuMTcuNAoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIE5ldyBmb3JtYXQgZm9yIEFuZ3VsYXIgbW9ja3MsIHdoaWNoIGFyZSBub3cgZXhwb3J0IGFuIGFycmF5IHdpdGggcmVzcG9uc2VzLgojIyAwLjE3LjMKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBNYXAgdGhlIGBTZXRgIHR5cGUgdG8gYEFycmF5YCBieSBkZWZhdWx0IHRvIGF2b2lkIGJyZWFraW5nIGNoYW5nZXMgdnMgY2xpZW50cyBnZW5lcmF0ZWQgd2l0aCAwLjE2LnguIAojIyAwLjE3LjIKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBSZW1vdmUgbGVhZGluZyBjb21tZW50IGZyb20gdHlwZXNjcmlwdCBmaWxlcyBzbyB0aGF0IHRoZXJlIGFyZSBmZXdlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIGZpbGVzIHdoZW4gcmVnZW5lcmF0aW5nIHdpdGggYSBuZXcgc3BlYyB2ZXJzaW9uIChpbmZvIG1vdmVkIHRvIFJFQURNRSkKICAqIFJlbW92ZSBsaWNlbmNlIGZpZWxkIGZyb20gcGFja2FnZS5qc29uCiMjIDAuMTcuMQoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIEFkZGVkIGFydGlmYWN0IGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlZCBwYWNrYWdlLmpzb24KIyMgMC4xNy4wCiogR2VuZXJhbAogICogUmVtb3ZlZCBSQU1MIFN1cHBvcnQKICAqIFJlbW92ZWQgY3VzdG9tIEphdmFTY3JpcHQgY2xpZW50CiAgKiBVcGRhdGUgT3BlbkFQSSBUb29scyB0byA2LjIuMQoqIEJvYXQgSmF2YSBHZW5lcmF0b3IKICAqIEpha2FydGEgRUUgOSBjb21wYXRpYmlsaXR5CiAgKiBgc3ByaW5nLW12Y2AgbGlicmFyeSBpcyByZW1vdmVkIGJlY2F1c2UgaXQgaXMgbm90IHN1cHBvcnRlZCBieSBPcGVuQVBJIFRvb2xzIGFueW1vcmUKICAqIFVzZSBvZiBgU2V0YCBmb3IgdW5pcXVlIGl0ZW1zIGlzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgYXMgT3BlbkFQSSBHZW5lcmF0b3IgZml4ZWQgdGhlaXIgaW1wbGVtZW50YXRpb24KIyMgMC4xNi4xNQoqIEJvYXQgZW5naW5lCiAgKiBGaXg6IFByb2Nlc3Npbmcgb2YgYSBzaW5nbGUgc3RyaW5nIHR5cGUgZXhhbXBsZSBvbiBtZWRpYS10eXBlLgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIE5ldyBmb3JtYXQgZm9yIEFuZ3VsYXIgbW9ja3MsIHdoaWNoIGFyZSBub3cgZXhwb3J0IGFuIGFycmF5IHdpdGggcmVzcG9uc2VzLgojIyAwLjE2LjEzCiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogYEBhbmd1bGFyL2NvbW1vbmAgYWRkZWQgYXMgYSBwZWVyIGRlcGVuZGVuY3kgaW4gdGhlIGdlbmVyYXRlZCBwYWNrYWdlLmpzb24gZmlsZXMKIyMgMC4xNi4xMgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFJlbW92ZSBsZWFkaW5nIGNvbW1lbnQgZnJvbSB0eXBlc2NyaXB0IGZpbGVzIHNvIHRoYXQgdGhlcmUgYXJlIGZld2VyIGRpZmZlcmVuY2VzIGJldHdlZW4gZmlsZXMgd2hlbiByZWdlbmVyYXRpbmcgd2l0aCBhIG5ldyBzcGVjIHZlcnNpb24gKGluZm8gbW92ZWQgdG8gUkVBRE1FKQogICogUmVtb3ZlIGxpY2VuY2UgZmllbGQgZnJvbSBwYWNrYWdlLmpzb24KIyMgMC4xNi4xMQoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFNldCBgcmVtb3ZlQ29tbWVudHM6IGZhbHNlYCBpbiBnZW5lcmF0ZWQgdHNjb25maWcuanNvbiBmaWxlcyB0byByZXRhaW4gYC8qI19fUFVSRV9fKi9gIGFubm90YXRpb24gaW4gY29tcGlsZWQgSlMuCiMjIDAuMTYuMTAKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBSZW1vdmUgdHlwZXMgZnJvbSBnZW5lcmF0ZWQgbW9jayBwcm92aWRlcnMgZHVlIHRvIGEgVHlwZVNjcmlwdCB3aGljaCBwcmV2ZW50cyBgLyojX19QVVJFX18qL2AgYW5ub3RhdGlvbiBmcm9tIHdvcmtpbmcKIyMgMC4xNi45CiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogVXNlIG9mIGAvKiNfX1BVUkVfXyovYCBmb3IgYGNyZWF0ZU1vY2tzYCBmdW5jdGlvbiBjYWxsIGluIHRlbXBsYXRlcyB0byBlbmFibGUgdHJlZS1zaGFraW5nCiMjIDAuMTYuNgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFVzZSBgXmAgaW5zdGVhZCBvZiBgPj1gIGZvciBgZGV2RGVwZW5kZW5jaWVzYCBpbiB0aGUgZ2VuZXJhdGVkIHByb2plY3QsIHNvIHByb2plY3Qgd2lsbCBiZSBidWlsdCB1c2luZyBjb3JyZWN0IHRhcmdldCB2ZXJzaW9uIG9mIG5nLXBhY2thZ3IgJiB0aGUgQW5ndWxhciBDTEkKICAqIERlY2xhcmUgc29tZSBleHRyYSBgZGV2RGVwZW5kZW5jaWVzYCBhdCBleHBsaWNpdCB2ZXJzaW9ucyB0byBmaXggYG5wbSBpbnN0YWxsYCBpc3N1ZXMgaW4gdGhlIGdlbmVyYXRlZCBwcm9qZWN0IHdoZW4gdXNpbmcgYG5wbWAgdjgKIyMgMC4xNi41CiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogQWxsb3cgYW55IGZvcm1hdCBmb3Igc3BlYyB2ZXJzaW9ucy4KIyMgMC4xNi40CiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogQWRkIGFiaWxpdHkgdG8gYmFrZSB0aGUgc3BlYyB2ZXJzaW9uIHVzZWQgaW4gdGhlIHBhY2thZ2UuanNvbiBmaWxlLgojIyAwLjE2LjMKKiAqTWF2ZW4gUGx1Z2luKgogICogRG8gbm90IHRyZWF0IHNwYWNlcyBhcyBkZWxpbWl0ZXJzIGluIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyB3aGljaCB0YWtlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdmFsdWVzLgogICAgRml4ZXMgYW4gaXNzdWUgdGhhdCBwcmV2ZW50ZWQgdGhlIHVzZSBvZiB0YWcgbmFtZXMgY29udGFpbmluZyBzcGFjZXMgaW4gdGhlIGBhcGlzVG9HZW5lcmF0ZWAgcHJvcGVydHkuCiMjIDAuMTYuMgoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFNwZWNpZnkgbWluaW11bSBBbmd1bGFyLXJlbGF0ZWQgcGFja2FnZSB2ZXJzaW9ucyB3aGVuIEFuZ3VsYXIgdjEzIGlzIHVzZWQKIyMgMC4xNi4xCiogQm9hdCBKYXZhIGdlbmVyYXRvcgogICogSmF2YSAxNyBjb21wYXRpYmlsaXR5IHVwZGF0ZQojIyAwLjE2LjAKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBVc2UgYD49YCBmb3IgbWFpbiBwZWVyIGRlcGVuZGVuY3kgdG8gaW1wcm92ZSBmb3J3YXJkIGNvbXBhdGliaWxpdHkKIyMgMC4xNS44CiogKkJvYXQgU2NhZmZvbGQqCiAgKiBNYWtlcyBzdXJlIHRvIG5vdCBhdXRvZ2VuZXJhdGUgZXhhbXBsZXMgZnJvbSBzY2hlbWEgaWYgZXhhbXBsZXMgYXJlIGFscmVhZHkgcHJlc2VudAojIyAwLjE1LjYKKiAqTWF2ZW4gUGx1Z2luKgogICogQWRkIGV4YW1wbGUgb2YgdXNlIHRoZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMgbGlrZSBjcmVhdGVBcGlDb21wb25lbnQKKiAqQm9hdCBBbmd1bGFyIGdlbmVyYXRvcioKICAqIEdlbmVyYXRlIHRoZSBgbmctcGFja2FnZS5qc29uYCBmaWxlIGZvciB1c2Ugd2l0aCB0aGUgYG5nLXBhY2thZ2VgIENMSQojIyAwLjE1LjUKKiAqQm9hdCBMaW50KgogKiBCdW1wZWQgdmVyc2lvbiBvZiBaYWxseSBMaW50aW5nIExpYnJhcmllcyB0aGF0IGNvbnRhaW4gc2V2ZXJhbCB2dWxuZXJhYmlsaXR5IGZpeGVzCiMjIDAuMTUuNAoqICpCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yKgogICogRW5hYmxlIHBhcnRpYWwgSXZ5IGNvbXBpbGF0aW9uIGZvciBsaWJyYXJpZXMuCiMjIDAuMTUuMwoqICpCb2F0IFNjYWZmb2xkKgogKiBBIGZpeCBmb3IgbWFwcGluZyBvZiBNYXAgZm9yIHF1ZXJ5IHBhcmFtcyAoaW4gY2xpZW50IGNvZGUpLiAKIyMgMC4xNS4yCiogKk1hdmVuIFBsdWdpbioKICAqIEZpeGVkIGhhbmRsaW5nIG9mIGFic29sdXRlIGZpbGUgcGF0aHMgZm9yIGxpbnRpbmcgT3BlbkFQSSBzcGVjcwogICogQ2hhbmdlZCBib2F0LWJheSBkYXRlTGlicmFyeSBmb3IgdXBsb2FkIHNwZWMgLgojIyAwLjE1LjEKKiAqTWF2ZW4gUGx1Z2luKgogICogTWFkZSBgYm9hdDpyYWRpb2AgZ29hbCBwcm9wZXJ0aWVzIHcuci50IGJvYXQtYmF5IHNlcnZlciB1bmlxdWUuCiMjIDAuMTUuMAoqICpNYXZlbiBQbHVnaW4qCiAgKiBBZGRlZCBuZXcgZ29hbCBgYm9hdDpyYWRpb2A7IHNlZSB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIFtwbHVnaW4gKipkb2N1bWVudGF0aW9uKipdKGJvYXQtbWF2ZW4tcGx1Z2luL1JFQURNRS5tZCNib2F0cmFkaW8pLgojIyAwLjE0LjEyCiogKkJvYXQgU2NhZmZvbGQqCiAgKiBSZWZlcmVuY2VzIHRvIC9leGFtcGxlcy9mb28gbm93IGFyZSBhbHNvIGRlcmVmZXJlbmNlZAojIyAwLjE0LjEwCiogKkJvYXQgU2NhZmZvbGQqCiAgKiBNYWtlcyBzdXJlIHRvIFVSTERlY29kZSBwYXRocyB3aGlsZSBkZXJlZmVyZW5jaW5nIGV4YW1wbGVzCiMjIDAuMTQuOQoqICpCb2F0IFNjYWZmb2xkKgogICogUmVzb2x2ZSByZWZlcmVuY2VzIHRvIG90aGVyIHBhdGggb3BlcmF0aW9ucycgZXhhbXBsZXMKCiMjIDAuMTQuOAoqICpCb2F0IE1hcmluYSoKICAqIFJlbW92ZXMgZmxhdE9iamVjdHMgYXMgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZAogICogcmVzcG9uc2UubWVzc2FnZSB3YXMgd3JvbmdmdWxseSBlc2NhcGVkLCBlc2NhcGluZyBpbiB0aGUgZG9jcyB0ZW1wbGF0ZSBpbnN0ZWFkCiAgKiBXZSBubyBsb25nZXIgbmVlZCB0byBnZW5lcmF0ZSBtb2RlbCBhbGlhc2VzIGluIGJvYXQgbWFyaW5hCiMjIDAuMTQuNwoqICpCb2F0IE1hcmluYSoKICAqIEV4cG9ydHMgZmxhdE9iamVjdHMgYXMgYSBtb2RlbCB0byBwcmV2ZW50IGVycm9ycyB3aXRoIHJlZmVyZW5jZXMKIyMgMC4xNC42IAoqICpNYXZlbiBQbHVnaW4qCiAgKiBBZGRlZCBgYm9hdDpzaGlwYCBtb2pvIHRvIGF1dG9tYWdpY2FsbHkgemlwIHNwZWNzIGZvdW5kIGluIGBzcmMvbWFpbi9yZXNvdXJjZXNgIGFuZCBhdHRhY2ggaXQgdG8gdGhlIHByb2plY3QgcmVhY3RvciBzbyBgbXZuIGluc3RhbGxgIG9yIGBtdm4gZGVwbG95YCB3aWxsIGFsc28gaW5jbHVkZSBhIHppcCBhcmNoaXZlIG9mIHRoZSBwcm9qZWN0IHdpdGggd2l0aCBgYXBpYCBjbGFzc2lmaWVyCiAgKiBDaGFuZ2VkIGBib2F0OmJ1bmRsZWAgIGBpbmNsdWRlc2AgcGFyYW1ldGVyIHRvIGFuIGFycmF5IG9mIHBhdHRlcm5zIHRvIGFsbG93IHJlY3Vyc2l2ZSBwYXR0ZXJzIHRvIGRpc2NvdmVyIE9wZW5BUElzIAoqICpCb2F0IFNjYWZmb2xkKgogICogRml4ZWQgYnVnIGluIHR5cGVzY3JpcHQgZ2VuZXJhdG9yIHdoZXJlIG9ubHkgb25lIG9mIHRoZSBvdmVybG9hZGVkIGZ1bmN0aW9uIHNpZ25hdHVyZXMgcGVyIGRlcHJlY2F0ZWQgZW5kcG9pbnQgd2FzIG1hcmtlZCBhcyBkZXByZWNhdGVkLgoKCiMjIDAuMTQuNQoqICpCb2F0IE1hcmluYSoKICAqIEFkZGVkIGBib2F0LW1hcmtlcnNgIGRpcmVjdG9yeSBpbiB0YXJnZXQgdG8ga2VlcCB0cmFjayBvZiBzdWNjZXNzZnVsIGFuZCB1bnN1Y2Nlc3NmdWwgYWN0aW9ucyBvbiBPcGVuQVBJIHNwZWNzCgojIyAwLjE0LjQKCiogKkJvYXQgTWFyaW5hKgogICogQWRkZWQgYSBub3cgQk9BVCBTY2FmZm9sZCB0ZW1wbGF0ZSBjYWxsZWQgTWFyaW5hLCBhcyB0aGF0IGlzIHdoZXJlIHRoZSBtb2RlbHMgaGFuZyBvdXQuIFRoZSBCb2F0IE1hcmluYSB0ZW1wbGF0ZSBvdXRwdXRzIGEgc2luZ2xlIEpTT04gZmlsZSB0aGF0IGlzIHVzZWQgdG8gb2ZmZXIgYSByaWNoIHVzZXIgaW50ZXJmYWNlIGJ1aWx0IGZyb20gdGhlIHNwZWNzIGluY2x1ZGluZyBzZWFyY2gsIHBhZ2UgcGVyIG9wZXJhdGlvbiBhbmQgbWFueSBtb3JlIGZlYXR1cmVzIQoKKiAqTWF2ZW4gUGx1Z2luKgogICAgKiBUaGUgYm9hdDpkb2MgZ29hbCBub3cgcmVjdXJzaXZlbHkgc2VhcmNoIE9wZW5BUEkgc3BlY3MgaW4gYSBkaXJlY3RvcnkgdG8gZ2VuZXJhdGUgZG9jcyBmb3IgZWFjaCBmb3VuZCBzcGVjLiAgCgojIyAwLjE0LjMKCiogKk1hdmVuIFBsdWdpbioKICAqIEFkZGVkIG5ldyBnb2FsIGBib2F0OnRyYW5zZm9ybWA7IHNlZSB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIFtwbHVnaW4gZG9jdW1lbnRhdGlvbl0oYm9hdC1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kI2JvYXR0cmFuc2Zvcm0pLgoKIyMgMC4xNC4yCiogKkFuZ3VsYXIgR2VuZXJhdG9yKgogICogQWRkZWQgc3VwcG9ydCBmb3IgQW5ndWxhciB2ZXJzaW9uIHJhbmdlcyBpbiBwZWVyIGRlcGVuZGVuY2llcwogIAojIyAwLjE0LjEKKiAqQW5ndWxhciBHZW5lcmF0b3IqCiAgKiBBZGRlZCBzdXBwb3J0IGZvciBBbmd1bGFyIDExCiAgCiMjIDAuMTQuMAoqICpBbmd1bGFyIEdlbmVyYXRvcioKICAqIFNpbXBsaWZ5IEFuZ3VsYXIgZ2VuZXJhdG9yIG9wdGlvbnMgYnkgcmVtb3ZpbmcgdGhlIHVudXNlZCBvbmVzICh3aXRoSW50ZXJmYWNlcyxwcm92aWRlZEluUm9vdCkKICAqIGZpeCBNb2NrIGlzIG5vdCBnZW5lcmF0ZWQgaWYgSHR0cCBzdGF0dXMgZXF1YWxzIHRvIDIwMSAoU0RLLTIzODgpCgojIyAwLjEzLjAKKiAqTGludCoKICAqIEFkZGVkIHJ1bGVzLiAKICAgICogQ2hlY2sgcGx1cmFscyBvbiBwYXRocyByZXNvdXJjZSBuYW1lcy4gCiAgICAqIENoZWNrIHByZWZpeCBmb3IgcGF0aHMgc2hvdWxkIGNvbnRhaW4gdmVyc2lvbi4KICAqIEVuYWJsZWQgcnVsZXMuCiAgICAqIFVzZSBTdGFuZGFyZCBIVFRQIFN0YXR1cyBDb2Rlcy4KCiMjIDAuMTIuMAoqICpHZW5lcmFsKgogICogSW1wcm92ZWQgY29kZSBxdWFsaXR5CiAgKiBBZGRlZCBtb3JlIHVuaXQgdGVzdHMKICAqIEFkZGVkIG1vcmUgcmVhbGlzdGljIGV4YW1wbGUgcHJvamVjdHMgaW4gYm9hdC1tYXZlbi1wbHVnaW4KICAqIEFkZGVkIGhlbHA6ZGVzY3JpYmUgc3VwcG9ydCBmb3IgYm9hdC1tYXZlbi1wbHVnaW4KICAqIEZpeGVkIGJ1aWxkaW5nIGluIFdpbmRvd3MgCiogKkJvYXQgRG9jcyoKICAqIFJlbmRlciByZXNwb25zZSBleGFtcGxlcyBmcm9tIHJlc3BvbnNlIGluc3RlYWQgb2Ygc2NoZW1hIG9iamVjdAoqICpMaW50KgogICogQWRkZWQgYWRkaXRpb25hbCBydWxlcy4gCiAgICAqIENoZWNrIHgtaWNvbiB2YWx1ZSBpbiB0aGUgaW5mbyBibG9jay4KICAgICogQ2hlY2sgaW5mbyBibG9jayBkZXNjcmlwdGlvbi4KICAgICogQ2hlY2sgdGFncyBhbGxvd2VkLgogICAgKiBDaGVjayBpbmZvIGJsb2NrIHRpdGxlLgogICAgKiBDaGVjayBwcmVmaXggZm9yIHBhdGhzLiBpLmUuICJjbGllbnQtYXBpIiwgInNlcnZpY2UtYXBpIiwgImludGVncmF0aW9uLWFwaSIKICAqIElnbm9yZSBaYWxhbmRvIFJ1bGVzZXQgYnkgZGVmYXVsdCBpbiBib2F0LW1hdmVuLXBsdWdpbgogIAojIyAwLjExLjQKKiAqSmF2YSBUZW1wbGF0ZXMqCiAgKiBDb3JyZWN0IHRoZSBpbXBvcnQgYW5kIHVzZSBvZiBAUXVhbGlmaWVyIGluIEFwaUNsaWVudCB0ZW1wbGF0ZQogICogT25seSBjaGFuZ2UgYmFzZSB0eXBlIHdoZW4gZGF0ZSB1c2VTZXRGb3JVbmlxdWVOYW1lcyBpcyBzZXQgdHJ1ZQogICAgCiogKkJvYXQgRG9jcyoKICAqIEhhbmRsZSBleGFtcGxlcyBmb3IgTWVkaWFUeXBlcyB3aXRob3V0IFNjaGVtYXMgKHN1Y2ggYXMgdGV4dC9jc3YpCiAgCiMjIDAuMTEuMwoKKiAqQW5ndWxhciBHZW5lcmF0b3IqCiAgKiBBcHBseSB0aGUgY29ycmVjdCByZXR1cm4gdHlwZSB3aGVuIG11bHRpcGxlIHJlc3BvbnNlcyBhcmUgcHJlc2VudAogICogR2VuZXJhdGUgbW9ja3MgZm9yIGV4YW1wbGVzIGRlZmluZWQgaW4gZGVyZWZlcmVuY2VkIHNjaGVtYXMKICAKIyMgMC4xMS4xCgoqICpKYXZhIEdlbmVyYXRvciAtIGJvYXQtc3ByaW5nIGxpYnJhcnkqCiAgKiBGaXhlZCByZWFjdGl2ZSBzcHJpbmcgdGVtcGxhdGVzCiAgKiBBdm9pZCBpbXBvcnRpbmcgYEh0dHBTZXJ2bGV0UmVzcG9uc2VgIHdoZW4gdXNpbmcgcmVhY3RpdmUKKiAqQW5ndWxhciBHZW5lcmF0b3IqCiAgKiBIYW5kbGUgZW1wdHkgYm9kaWVzIHByb3Blcmx5IGluIE1vY2sgZ2VuZXJhdGlvbgogICogVXBkYXRlIGZvdW5kYXRpb24tYW5nIHRvIGxhdGVzdCB2ZXJzaW9uCgojIyAwLjExLjAKCiogKk1hdmVuIFBsdWdpbioKICAgKiBBZGRlZCBgcmVtb3ZlRXh0ZW5zaW9uc2AgbW9qbyBwYXJhbWV0ZXIgdG8gYGJvYXQ6YnVuZGxlYCB0byBmaWx0ZXIgb3V0IHRoZSBnaXZlbiB2ZW5kb3IgZXh0ZW5zaW9ucyBmcm9tIGJ1bmRsZS4KICAgKiBBZGRlZCBgaW5jbHVkZXNgIG1vam8gcGFyYW1ldGVyIHRvIGBib2F0OmJ1bmRsZWAgYXMgYSBnbG9iIHBhdHRlcm4gc2VsZWN0aW5nIHRoZSBzcGVjaWZpY2F0aW9uIGZpbGVzIChkZWZhdWx0cyB0byBgKi55YW1sYCkuCiAgICogQWRkZWQgYGFwaXNUb0dlbmVyYXRlYCBtb2pvIHBhcmFtZXRlciB0byBgYm9hdDpnZW5lcmF0ZWAKICAgKiBTZXQgdGhlIGRlZmF1bHQgb2YgYGh0dHBVc2VyQWdlbnRgIHRvIGAke3Byb2plY3QuYXJ0aWZhY3RJZH0tJHtwcm9qZWN0LnZlcnNpb259YC4KCiogKkphdmEgR2VuZXJhdG9yIC0gcmVzdHRlbXBsYXRlIGxpYnJhcnkqCiAgKiBBZGRlZCBgdXNlV2l0aE1vZGlmaWVyc2Agb3B0aW9uIHRvIHVzZSB0aGUgYHdpdGhgIHByZWZpeCBmb3IgUE9KTyBtb2RpZmllcnMgKGRlZmF1bHRzIHRvIGBmYWxzZWApLgogICogYWRkZWQgYHVzZVNldEZvclVuaXF1ZUl0ZW1zYCB0byBtYXAgYXJyYXlzIGNvbnRhaW5pbmcgYHVuaXF1ZUl0ZW1zYCB0byBgU2V0YCAoZGVmYXVsdHMgdG8gYGZhbHNlYCkuCiAgKiBBZGRlZCBgdXNlQ2xhc3NMZXZlbEJlYW5WYWxpZGF0aW9uYCBvcHRpb24gKGRlZmF1bHRzIHRvIGBmYWxzZWApLgogICogQWRkZWQgYHVzZUphY2tzb25Db252ZXJzaW9uYCB0byB1c2UgSmFja3NvbiBmb3IgcGFyYW1ldGVycyBjb252ZXJzaW9uIGluc3RlYWQgb2YgYHRvU3RyaW5nYCAoZGVmYXVsdHMgdG8gYGZhbHNlYCkuCiAgKiBBZGRlZCBgcmVzdFRlbXBsYXRlQmVhbk5hbWVgIHRvIHF1YWxpZnkgdGhlIGF1dG93aXJlZCBSZXN0VGVtcGxhdGUgYmVhbi4KCiogKkFuZ3VsYXIgR2VuZXJhdG9yKgogICogQWRkZWQgYW4gQW5ndWxhciBjbGllbnQgZ2VuZXJhdG9yIGZvciB2ZXJzaW9uIDEwIGFuZCB1cC4gCiAgICBUaGUgZ2VuZXJhdG9yIHRlbXBsYXRlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBzdGFuZGFyZCBvbmUgYXQgW29wZW5hcGktZ2VuZXJhdG9yLnRlY2hdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pLCB3aXRoIHRoZSBhZGRpdGlvbiBvZiBtb2NrIHJlc3BvbnNlcyBhbmQgYSBzZXZlcmFsIGZpeGVzLCBhbW9uZyB3aGljaDoKICAgICogSGFuZGxpbmcgb2YgcmVzZXJ2ZWQgdHlwZXNjcmlwdCB3b3JkcwogICAgKiBBZGRlZCBzdXBwb3J0IGZvciBUeXBlc2NyaXB0IGFuZCBKYXZhc2NyaXB0IGZvciBlc2NhcGluZyBvZiBzdHJpbmdzIGluIGdlbmVyYXRvcnMKICAgICogRXNjYXBpbmcgb2YgbW9kZWwgcHJvcGVydGllcyB3aGVuIG5vdCB1c2luZyBgY2FtZWxDYXNlYAogICAgKiBTdXBwb3J0IGZvciBtdWx0aXBsZSBgTWVkaWFUeXBlc2AKICAqIFRvIGVuYWJsZSBtb2NrcyBnZW5lcmF0aW9uLCBzZXQgdGhlIGB3aXRoTW9ja3NgIG9wdGlvbiB0byBgdHJ1ZWAgIAoKIyMgMC4xMC4wCiogKk1hdmVuIFBsdWdpbioKICAgKiBgYm9hdDpsaW50YCBtb2pvIHdpbGwgZ2VuZXJhdGUgYW4gSFRNTCByZXBvcnQgYmFzZWQgb24gQVBJIEd1aWRlbGluZXMgCiAgICogYGJvYXQ6ZG9jc2AgbW9qbyB3aWxsIGdlbmVyYXRlIEhUTUwgZG9jdW1lbnRhdGlvbiBmcm9tIE9wZW5BUEkgc2hvd2luZyBtdWx0aXBsZSBleGFtcGxlcyBhbmQgcmVxdWVzdHMgYXMgd2VsbCBhcyBDdXN0b20gQW5ub3RhdGlvbnMKKiBHZW5lcmFsIEJ1ZyBGaXhlcwoqIExpbnRpbmcgUnVsZSBFbmdpbmUgZXh0ZW5kZWQgd2l0aCByZXNlcnZlZCB3b3JkIGxpbnRpbmcKKiAqKk5PVEUqKjogVGhlIGxpbnQgcnVsZXMgYXJlIHN0aWxsIGluIGRldmVsb3BtZW50LiBUaGUgZG9jdW1lbnRhdGlvbiBpcyBzdGlsbCBpbiB0aGUgd29ya3MuIAoKIyMgMC45LjAKKiAqTWF2ZW4gUGx1Z2luKgogICogQWRkZWQgYHZlcnNpb25gIHBhcmFtZXRlciB0byBgYnVuZGxlYCBnb2FsLgogICogQWRkZWQgYGJ1bmRsZVNwZWNzYCBwYXJhbWV0ZXIgdG8gYGdlbmVyYXRlYCBnb2FsIHRvIGF1dG9tYXRpY2FsbHkgYnVuZGxlIHNwZWNzIGludG8gc2luZ2xlIGZpbGUKKiBNb2Rlcm5pc2VkIEJPQVQgVGVybWluYWwKKiBJbXByb3ZlZCBCT0FUOkRvY3MgVGVtcGxhdGVzCiogUHJvcGVybHkgZGVyZWZlcmVuY2UgZXhhbXBsZXMKCiMjIDAuOC4wCiogSW1wcm92ZWQgc3R5bGluZyBIVE1MIGRvY3MKKiBwcmV2aWV3IEJPQVQ6UVVBWSBsaW50aW5nIG1vam8gZm9yIGxpbnRpbmcgT3BlbkFQSSBzcGVjcy4KKiBBdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIHdoZW4gZGVyZWZlbmVuY2luZyBPcGVuQVBJIHNwZWNzCgojIyAwLjcuMAoqIFJlbmRlciBtdWx0aXBsZSByZXF1ZXN0cyBhbmQgZXhhbXBsZXMgaW4gYm9hdC1kb2NzCiogQ3JlYXRlZCBIVE1MIHRlbXBsYXRlcyBmb3IgYm9hdC1kb2NzCiogUHJldHR5IFByaW50IEpTT04gRXhhbXBsZXMKKiBBZGRlZCBib2F0OmRvYyBtb2pvIGZvciBnZW5lcmF0aW5nIGJlYXV0aWZ1bCBIVE1MMiBkb2NzCgoqICogU3ByaW5nIEdlbmVyYXRvcioKICAqIFJlc3RvcmVkIGBIdHRwU2VydmxldFJlcXVlc3RgIHBhcmFtZXRlciAocmVncmVzc2lvbikuCiogQWRkZWQgYm9hdDp5YXJkIHRvIGNyZWF0ZSBzdGF0aWMgd2Vic2l0ZSBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3BlY3MKCiMjIDAuNi4wCiogc2ltcGxlIGZpeCB0byBjaGVjayBmb3IgbnVsbCB2YWx1ZSBpbiBvcGVuQXBpLmdldENvbXBvbmVudHMoKS5nZXRTY2hlbWFzKCkKKiBhYmlsaXR5IHRvIHJlc29sdmUgcmVmZXJlbmNlcyBsaWtlICMvY29tcG9uZW50cy9zY2hlbWFzL215T2JqZWN0L2l0ZW1zIG9yICMvY29tcG9uZW50cy9zY2hlbWFzL215T2JqZWN0L3Byb3BlcnRpZXMvZW1iZWRkZWRPYmplY3QKKiBzaW1wbGUgZml4IHRvIGF2b2lkIG5wZSBpbiBTdGF0aWNIdG1sMkdlbmVyYXRpb24gZXNjYXBpbmcgcmVzcG9uc2UgbWVzc2FnZS4KCiMjIDAuNS4wCgoqIEFkZCBEZXJlZmVyZW5jZUNvbXBvbmVudHNQcm9wZXJ0aWVzVHJhbnNmb3JtZXIgKHRoYXQgZG9lcyBhIGJpdCBleHRyYSkKKiBGaXggcmVjdXJzaXZlIHJlZmVyZW5jaW5nIGluIFVuQWxpYXNUcmFuc2Zvcm1lcgoKIyMgMC40LjAKKiBBZGRlZCBidW5kbGUgc2tpcAoqIENoYW5nZWQgbnVtYmVyaW5nIHNjaGVtZQoKIyMgMC4zLjAKCiogKk1hdmVuIFBsdWdpbioKICAqIEFkZGVkIGBidW5kbGUuc2tpcGAgcGFyYW1ldGVyIHRvIGBidW5kbGVgIGdvYWwgKGRlZmF1bHRzIHRvIGZhbHNlKS4KCiogKkhUTUwyIEdlbmVyYXRvcioKICAqIFJlbW92ZXMgZXhhbXBsZXMKICAqIEFkZHMgdGl0bGUgb2YgQVBJIHRvIHRoZSBsZWZ0IG5hdmlnYXRpb24KICAqIFJlbW92ZXMgdW5uZWNlc3Nhcnkgc3BhY2VzIGluIHRoZSBkb2NzCiAgKiBGaXhlcyBpdGVtIGZvY3VzIG9uIGxlZnQgbmF2aWdhdGlvbgogICogVXBkYXRlcyBKc29uIFNjaGVtYSBSZWYgUGFyc2VyIGxpYnJhcnkKICAqIFVwZGF0ZXMgSnNvbiBzY2hlbWEgdmlldyBsaWJyYXJ5CiAgKiBBZGRzIHN1cHBvcnQgZm9yIGFsbE9mIHdpdGggSnNvbiBzY2hlbWEgbWVyZ2UgYWxsIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9tb2trYWJvbm5hL2pzb24tc2NoZW1hLW1lcmdlLWFsbG9mCiAgKiBGaXhlcyBoZWFkZXIgeC0gcGFyYW1zIGJlaW5nIGVzY2FwZWQuIGVnIFgtVG90YWwtQ291bnQgdG8gWE1pbnVzVG90YWxNdW5pc0NvdW50CiAgKiBGaXhlcyBtYXJrZG93biBpbiBkZXNjcmlwdGlvbiBub3QgYmVpbmcgZXNjYXBlZCBhbmQgYnJlYWtpbmcgamF2YXNjcmlwdC4KICAqIEZpeGVzIG1pc3NpbmcgcmVmZXJlbmNlcyB0byBleHRlbmRlZCBzaW1wbGUgdHlwZXMgKHNldCBgdW5BbGlhc2Agb3B0aW9uIHRvIHRydWUpLgogICogRml4ZXMgbWlzc2luZyByZWZlcmVuY2VzIGJlY2F1c2UgY29uZnVzaW9uIG92ZXIgd2hldGhlciB0byByZWZlcmVuY2UgbmFtZSBvciBjbGFzc25hbWUuCiAgKiBNb3ZlZCB0aGUgY29kZSBnZW5lcmF0aW9uIGludG8gYSBzZXBhcmF0ZSBtb2R1bGUgdG8gYmUgdXNlZCBieSBvdGhlciBCT0FUIGNvbXBvbmVudHMuCiAgKiBDbGVhbmluZyB1cCBkZXBlbmRlbmNpZXMKICAqIEFkZGVkIGJvYXQ6YnVuZGxlIG1vam8gdG8gYnVuZGxlIGZyYWdtZW50cyBpbnRvIGEgc2luZ2xlIHNwZWMuCiAgKiBib2F0OmJ1bmRsZSB1bmFsaWFzZXMgdGhlIHNwZWMuIAoKKiAqU3ByaW5nIEdlbmVyYXRvcioKICAqIEFkZGVkIGB1c2VXaXRoTW9kaWZpZXJzYCB0byB1c2UgdGhlIGB3aXRoYCBwcmVmaXggZm9yIFBPSk8gbW9kaWZpZXJzIChkZWZhdWx0cyB0byBgZmFsc2VgOyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgUkFNTCBnZW5lcmF0b3IgbXVzdCBiZSBzZXQgdG8gYHRydWVgKS4KICAqIEZpeGVkIHgtYWJzdHJhY3QgZXh0ZW5zaW9uIChub3QgZ2VuZXJhdGVkKQogICogUmVzZXQgdGhlIGRlZmF1bHRzIG9mIHRoZSBvcHRpb25zIGFkZGVkIGluIDAuMi43IHRvIGF2b2lkIGJyZWFraW5nIGNoYW5nZXMuCiAgICAtIHVzZUxvbWJva0Fubm90YXRpb25zOiBmYWxzZQogICAgLSBvcGVuQXBpTnVsbGFibGU6IHRydWUKICAgIC0gdXNlU2V0Rm9yVW5pcXVlSXRlbXM6IGZhbHNlCgojIyAwLjIuNwoKKiAqU3ByaW5nIEdlbmVyYXRvcioKICAqIGFkZGVkIGluLWNvbnRhaW5lciB2YWxpZGF0aW9uLCBlLmcuIGBMaXN0PEBTaXplKG1heCA9IDM2KSBTdHJpbmc+YCAoc2VlIFtKU1ItMzgwIC0gQ29udGFpbmVyIGVsZW1lbnQgY29uc3RyYWludHNdKGh0dHBzOi8vYmVhbnZhbGlkYXRpb24ub3JnLzIuMC9zcGVjLyNjb25zdHJhaW50ZGVjbGFyYXRpb252YWxpZGF0aW9ucHJvY2Vzcy1jb250YWluZXJlbGVtZW50Y29uc3RyYWludHMpKS4KICAqIGFkZGVkIHZlbmRvciBleHRlbnNpb25zOiBgeC1hYnN0cmFjdGAsIGB4LWltcGxlbWVudHNgLgogICogYWRkZWQgYHVzZUxvbWJva0Fubm90YXRpb25zYCBvcHRpb24gKGRlZmF1bHRzIHRvIGB0cnVlYCkKICAqIGFkZGVkIGBvcGVuQXBpTnVsbGFibGVgIG9wdGlvbiAodGFrZW4gZnJvbSA1LjAsICBicmVha2luZyBjaGFuZ2UsIGRlZmF1bHRzIHRvIGBmYWxzZWAsIHNldCB0byBgdHJ1ZWAgaWYgbm90IHJlYWR5KS4KICAqIGFkZGVkIGB1c2VTZXRGb3JVbmlxdWVJdGVtc2AgdG8gbWFwIGFycmF5cyB3aXRoIGB1bmlxdWVJdGVtc2AgdG8gYFNldGAgaW5zdGVhZCBvZiBgTGlzdGAgKGJyZWFraW5nIGNoYW5nZSwgZGVmYXVsdHMgdG8gYHRydWVgLCBzZXQgdG8gYGZhbHNlYCBpZiBub3QgcmVhZHkpLgogICogYWRkZWQgYGFkZGl0aW9uYWxEZXBlbmRlbmNpZXNgIHRvIGJlIHVzZWQgaW4gYHNwcmluZy1ib290L3BvbS5tdXN0YWNoZWAgdGVtcGxhdGUuCiAgKiBmb3JtYXR0ZWQgbWV0aG9kIHBhcmFtZXRlcnMuCgoqICpNYXZlbiBQbHVnaW4qCiAgKiBhZGRlZCBgYWRkVGVzdENvbXBpbGVTb3VyY2VSb290YCB3aGljaCBhZGRzIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIHRoZSBwcm9qZWN0IGFzIGEgdGVzdCBzb3VyY2Ugcm9vdC4KICAqIGFkZGVkIGBhcGlOYW1lU3VmZml4YCB0byBjdXN0b21pc2UgdGhlIG5hbWUgb2YgdGhlIEFQSSBpbnRlcmZhY2UuCiAgKiBjb3JyZWN0ZWQgYGdlbmVyYXRvck5hbWVgIHByb3BlcnR5IHRvIHBvaW50IHRvIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdG9yTmFtZWAuCiAgKiBmaXhlZCB0aGUgY29kZSBnZW5lcmF0ZWQgZm9yIHByb3BlcnRpZXMgb2YgdHlwZSBgTWFwYCBpbiBtb2RlbC4KICAqIHJlZmFjdG9yZWQgYEdlbmVyYXRlTW9qb2Agc28gYG12biBib2F0OmdlbmVyYXRlIC1EY29kZWdlbi5jb25maWdIZWxwIC1Eb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRvck5hbWU9c3ByaW5nYCB3b3JrcyBjb3JyZWN0bHkuCiAgKiB0ZXN0IHRoZSBnZW5lcmF0ZWQgY29kZSBpbiB0aGUgaW50ZWdyYXRpb24gdGVzdCBwaGFzZQoKIyMgMC4yLjYKKiBFbnN1cmUgUkFNTCB0cmFpdHMgdGhhdCBhcmUgY29udmVydGVkIHRvIE9BUyBleHRlbnNpb25zIGFyZSBhbGwgdXNpbmcgbG93ZXIgY2FzZS4gCgojIyAwLjIuNSAKKiBGaXhlZCBhIGJ1ZyBob3cgZHVwbGljYXRlIG5hbWVzIGFyZSBnZW5lcmF0ZWQgaWYgUkFNTCBzb3VyY2UgaGFzIGR1cGxpY2F0ZSBuYW1lcyBmb3IgcmVmZXJlbmNlcy4gVGhlIHBhcmVudCByZXNvdXJjZSBuYW1lIGlzIG5vdyBwcmVwZW5kZWQgdG8gdGhlIHNjaGVtYSBuYW1lIHdpdGhvdXQgcmVtb3ZpbmcgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBwYXJlbnQgcmVzb3VyY2UgbmFtZQoqIEZpeGVkIGEgYnVnIHdoZW4gaW4gUkFNTCByZXNvdXJjZXMgd2VyZSBpbmxpbmUgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIGdsb2JhbCB0eXBlIHJlZmVyZW5jZXMgZm9yIFJlcXVlc3QgQm9kaWVzIGNhdXNpbmcgUmVzcG9uc2UgU2NoZW1hcyBiZWluZyByZWZlcmVuY2VkIGFzIFJlcXVlc3QgQm9kaWVzCgojIyAwLjIuNCAtIEJyZWFraW5nIENoYW5nZSEKKiAqKkNoYW5nZWQgaG93IG9wZXJhdGlvbklkcyBhcmUgZ2VuZXJhdGVkKiouIFRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBlbmRlZCB1cCBnZW5lcmF0aW5nIHZlcnkgbG9uZyBhbmQgY29uZnVzaW5nIG5hbWVzLiAKICAgIFRoZSBpbXByb3ZlZCBnZW5lcmF0b3IgZ3JlYXRseSBpbXByb3ZlcyB0aGUgbmFtZXMgb2Ygb3BlcmF0aW9uSWQgd2hlbiBjb252ZXJ0aW5nIGZyb20gUkFNTCB0byBPQVMzCiogRGVmYXVsdCB2ZXJzaW9uIG9mIE9wZW5BUEkgaXMgbm93ICoqMy4wLjMqKgoqIEdlbmVyYXRlZCBTVFVCUyBhbmQgQ2xpZW50cyBtdXN0IGJlIHJlZmFjdG9yZWQgdG8gdXNlIHRoZSBuZXcgbmFtZXMhIEl0IHNob3VsZCBub3QgYWZmZWN0IHRoZSBuYW1lcyBvZiBTY2hlbWFzIGNvbnZlcnRlZCBmcm9tIFJBTUwuIAoKCiMjIDAuMi4zCiogVXNlIFJBTUwgRGlzcGxheSBOYW1lIGFzIFN1bW1hcnkgb24gSHR0cCBPcGVyYXRpb25zIHdoZW4gY29udmVydGluZyB0byBPQVMzCiogQWxzbyBpbmNsdWRlIGludGVncmF0aW9uLXNwZWMgYW5kIGFydGlmYWN0cyBlbmRpbmcgb24gc3BlY3MgYXMgZGVmYXVsdCBmb3IgY29udmVyc2lvbiB1c2luZyBgZXhwb3J0LWRlcGAKKiBGaXggSFRNTDIgVGl0bGVzCgojIyAwLjIuMgoqIEZpeGVkIGVudW0gY29udmVyc2lvbi4gRW1wdHkgZW51bXMgYXJlIG5vdyBzZXQgdG8gbnVsbCBhZ2FpbiB3aGVuIGNvbnZlcnRpbmcgZnJvbSByYW1sIHRvIE9wZW5BUEkKKiBBZGRlZCBtb3JlIHJvYnVzdCBjb2RlIGdlbiBtb2pvcwoKCiMjIDAuMi4xCiogSW1wcm92ZWQgT3BlbiBBUEkgRGlmZgoqIFNvbmFyIEZpeGVzIAoKIyMgMC4yLjAKKiBDcmVhdGVkIG5ldyBDb2RlIEdlbmVyYXRpb24gTW9qb3Mgd2l0aCBvcGluaW9uYXRlZCBzZXR0aW5ncyBmb3IKKiogSmF2YSBDbGllbnQgd2l0aCBTcHJpbmcgV2ViQ2xpZW50IChSZWFjdGl2ZSkKKiogSmF2YSBTZXJ2ZXIgU3R1YnMgZm9yIFdlYkZsdXggKFJlYWN0aXZlKQoqKiBKYXZhIENsaWVudCB3aXRoIFNwcmluZyBSZXN0IFRlbXBsYXRlIChOb24gUmVhY3RpdmUpCioqIEphdmEgU2VydmVyIFN0dWJzIGZvciBTcHJpbmcgUmVzdCBDb250cm9sbGVyIChOb24gUmVhY3RpdmUpCioqIEltcHJvdmVkIEphdmEgQ2xpZW50IEFQSSdzIHRvIGJldHRlciBjb3BlIHdpdGggcmVzZXJ2ZWQgd29yZHMKKiBFeHBvcnQgRGVwZW5kZW5jaWVzIHdpbGwgbm93IHRyYXZlcnNlIHRocm91Z2ggdGhlIGFydGlmYWN0IHRvIGZpbmQgYWxsIHJhbWwgc3BlY3MKKiBJbXByb3ZlZCBSQU1MIDIgT3BlbiBBUEkgY29udmVyc2lvbgoqIFVwZ3JhZGVkIE9wZW5BUEkgRGlmZiBsaWJyYXJ5IHRvIG1vcmUgY3VycmVudCB2ZXJzaW9uCiogTW9qbydzIGNhbiBub3cgYnJlYWsgdGhlIGJ1aWxkIGJ5IHNldHRpbmcgYGNvbnRpbnVlT25FcnJvcmAgdG8gZmFsc2UKCiMjIDAuMS45CiogSW1wcm92ZWQgaG93IHNlcnZpY2VzIGFyZSBuYW1lZCBhZnRlciBiYXNlIHVybCBjb252ZXJzaW9uIHdhcyBpbnRyb2R1Y2VkLgoKIyMgMC4xLjgKKiBSZXZlcnNlZCBub3JtYWxpemF0aW9uIG9mIHNjaGVtYSBuYW1lcyBhcyB0aGF0IGNhdXNlcyBzdGFjayBvdmVyZmxvdyBlcnJvcnMuIAoqIEZpeGVkIEJhc2UgVVJMIENvbnZlcnNpb24gZnJvbSBSQU1MIHRvIE9wZW5BUEkKKiBTcGVjaWZ5IHNjaGVtYSB0eXBlIHdoZW4gYWRkaW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcyBpbiBNYXZlbiBwbHVnaW4gdXNpbmcgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzVHlwZWAgY29uZmlndXJhdGlvbiBvcHRpb24KCgojIyAwLjEuNwoqIEFkZGVkIGNvbmZpZ3VyYWJsZSBmbGFnIHRvIGFkZCBIdHRwU2VydmxldFJlcXVlc3QgcGFyYW1ldGVycyB0byBjb2RlZ2VuJ2Qgc2VydmVyIHN0dWJzLgoqIEV4dHJhY3QgaW5saW5lIGV4YW1wbGVzIGZyb20gdGhlIG9idGFpbmVkIE9wZW5BUEkgc3BlYyBhbmQgcHV0IHRoZW0gdW5kZXIgJzxvdXRwdXQtZGlyPi9leGFtcGxlcy8nIGFzIGpzb24gZmlsZXMuCiogQ2hhbmdlZCB0aGUgbm9ybWFsaXphdGlvbiBvZiBTY2hlbWEgTmFtZXMgdG8gZW5zdXJlIGV4aXN0aW5nIGNhc2luZyBpcyBub3QgbG9zdAoKIyMgMC4xLjYKKiBBZGRlZCBkb2N1bWVudGF0aW9uIG9uIGJvYXQtbWF2ZW4tcGx1Z2luCiogVXBncmFkZWQgWUFNTCBMaWJyYXJpZXMgdG8gaW1wcm92ZSBvdXRwdXQgb2YgWUFNTCBmaWxlcwoqIFVzZSBzdGFuZGFyZGl6ZWQgc3dhZ2dlciBZQU1MIG91dHB1dAoqIEFkZGVkIEJlYW4gVmFsaWRhdG9yIGluIENvZGUgR2VuZXJhdG9yCiogQ2hhbmdlZCBPcGVuIEFQSSBMb2FkZXIgdG8gY29ycmVjdGx5IHJlc29sdmUgcmVmZXJlbmNlcyBmcm9tIHJlYWRpbmcgaW5wdXQgbG9jYXRpb24gaW5zdGVhZCBvZiBzdHJpbmcKCiMjIDAuMS41CgoqIFVwZ3JhZGVkIG9wZW5hcGktZ2VuZXJhdG9yIHRvIDQuMy4wCiogRml4ZWQgamF2YSBkb2MgaW4gdGhlIEphdmEgdGVtcGxhdGVzIHRvIGFsbG93IHVzYWdlIGluIEphdmEgMTEgcHJvamVjdHMKKiBSZW5hbWUgdmFyaWFibGUgbmFtZSBgYWNjZXB0YCB0byBgYWNjZXB0TWVkaWFUeXBlYCBpbiBKYXZhIHRlbXBsYXRlcyB0byBhbGxvdyBPcGVuQVBJIFNwZWNzIHdpdGggcGFyYW1ldGVycyBjYWxsZWQgYGFjY2VwdGAKCgojIyAwLjEuNAoKKiBGaXhlZCB0ZW1wbGF0ZSBmb3IgSFRNTDIgZ2VuZXJhdG9yCiogSW5jbHVkZSBjb252ZXJzaW9uIG9mIGFwaS5yYW1sIGZpbGVzIGZvdW5kIGluIGRlcGVuZGVuY2llcwoKIyMgMC4xLjMgIAoKKiBBZGRlZCBDb2RlIEdlbmVyYXRvciBNb2pvIGZyb20gb24gW29wZW5hcGktZ2VuZXJhdG9yLnRlY2hdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pIHdpdGggY3VzdG9tIHRlbXBsYXRlcyBmb3IgSmF2YSwgSmF2YVNwcmluZyBhbmQgSFRNTDIKKiBSZW5hbWVkIGBleHBvcnRgIHRvIGBleHBvcnQtZGVwYCBtb2pvIGZvciBjb252ZXJ0aW5nIFJBTUwgc3BlY3MgdG8gb2FzIGZyb20gZGVwZW5kZW5jaWVzCiogQWRkZWQgYGV4cG9ydGAgbW9qbyBmb3IgY29udmVydGluZyBSQU1MIHNwZWNzIGZyb20gaW5wdXQgZmlsZQoqIEFkZGVkIE5vcm1hbGlzZXIgdHJhbnNmb3JtZXIgZm9yIHRyYW5zZm9ybWluZyBleGFtcGxlcyBuYW1lcyB0byBiZSB1c2VkIGluIEphdmEgY29kZSBnZW5lcmF0aW9uICBhcyBleGFtcGxlIG5hbWVzIGNhbm5vdCBoYXZlIHNwZWNpYWwgY2hhcmFjdGVycy4KKiBJbXByb3ZlIFRpdGxlIGFuZCBEZXNjcmlwdGlvbnMgb2YgY29udmVydGVkIFJBTUwgc3BlY3MKKiBBbHdheXMgd3JhcCBleGFtcGxlcyBpbiBleGFtcGxlIG9iamVjdAoqIE1hbnkgY29kZSBpbXByb3ZlbWVudHMgdG8gYmUgbm90IGFzaGFtZWQgb2YgU29uYXIgUmVwb3J0cy4gIAoKCiMgQnVpbGQgJiBJbnN0YWxsCgpgYGBzaGVsbCBzY3JpcHQKbXZuIGluc3RhbGwKYGBgCgojIyBNYXZlbiBQbHVnaW4gVXNhZ2UKClRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIGdlbmVyYXRlIGBpbmRleC5odG1sYCBmaWxlIGluIHRoZSBzcGVjaWZpZWQgb3V0cHV0IGZvbGRlciB0aGF0IGNvbnRhaW5zIEFQSSBlbmRwb2ludHMgZGVzY3JpcHRpb24uICAKIApgYGBiYXNoCm12biBib2F0OmdlbmVyYXRlQGdlbmVyYXRlLWRvY3MKYGBgCgojIyBHZW5lcmF0ZSBBUEkgaW50ZXJmYWNlcwoKQ29uZmlndXJhdGlvbgpgYGAKPGJ1aWxkPgogIDxwbHVnaW5zPgogICAgPHBsdWdpbj4KICAgICAgPGdyb3VwSWQ+Y29tLmJhY2tiYXNlLm9zczwvZ3JvdXBJZD4KICAgICAgPGFydGlmYWN0SWQ+Ym9hdC1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICAgIDx2ZXJzaW9uPiR7Ym9hdC1tYXZlbi1wbHVnaW4udmVyc2lvbn08L3ZlcnNpb24+CiAgICAgIDxleGVjdXRpb25zPgogICAgICAgIDxleGVjdXRpb24+CiAgICAgICAgICA8aWQ+Z2VuZXJhdGUtYXBpLWNvZGU8L2lkPgogICAgICAgICAgPGdvYWxzPgogICAgICAgICAgICA8Z29hbD5nZW5lcmF0ZTwvZ29hbD4KICAgICAgICAgIDwvZ29hbHM+CiAgICAgICAgICA8cGhhc2U+Z2VuZXJhdGUtc291cmNlczwvcGhhc2U+CiAgICAgICAgICA8Y29uZmlndXJhdGlvbj4KICAgICAgICAgICAgPGlucHV0U3BlYz4ke3Byb2plY3QuYmFzZWRpcn0vc3JjL21haW4vcmVzb3VyY2VzL2FwaS55YW1sPC9pbnB1dFNwZWM+CiAgICAgICAgICAgIDxvdXRwdXQ+JHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vZ2VuZXJhdGVkLXNvdXJjZXMvYXBpPC9vdXRwdXQ+CiAgICAgICAgICAgIDxnZW5lcmF0b3JOYW1lPnNwcmluZzwvZ2VuZXJhdG9yTmFtZT4KICAgICAgICAgICAgWy4uLl0KICAgICAgICAgICAgPGNvbmZpZ09wdGlvbnM+CiAgICAgICAgICAgICAgPGxpYnJhcnk+c3ByaW5nLWJvb3Q8L2xpYnJhcnk+CiAgICAgICAgICAgICAgPGFwaVBhY2thZ2U+Y29tLmV4YW1wbGUubXkuc2VydmljZS5hcGkuaW50ZXJmYWNlczwvYXBpUGFja2FnZT4KICAgICAgICAgICAgICA8bW9kZWxQYWNrYWdlPmNvbS5leGFtcGxlLm15LnNlcnZpY2UubW9kZWxzPC9tb2RlbFBhY2thZ2U+CiAgICAgICAgICAgICAgPGhpZGVHZW5lcmF0aW9uVGltZXN0YW1wPnRydWU8L2hpZGVHZW5lcmF0aW9uVGltZXN0YW1wPgogICAgICAgICAgICAgIDxkYXRlTGlicmFyeT5qYXZhODwvZGF0ZUxpYnJhcnk+CiAgICAgICAgICAgICAgPGludGVyZmFjZU9ubHk+dHJ1ZTwvaW50ZXJmYWNlT25seT4KICAgICAgICAgICAgICA8c2tpcERlZmF1bHRJbnRlcmZhY2U+dHJ1ZTwvc2tpcERlZmF1bHRJbnRlcmZhY2U+CiAgICAgICAgICAgICAgPHVzZUJlYW5WYWxpZGF0aW9uPnRydWU8L3VzZUJlYW5WYWxpZGF0aW9uPgogICAgICAgICAgICAgIDx1c2VUYWdzPnRydWU8L3VzZVRhZ3M+CiAgICAgICAgICAgICAgPGphdmE4PnRydWU8L2phdmE4PgogICAgICAgICAgICAgIDx1c2VPcHRpb25hbD5mYWxzZTwvdXNlT3B0aW9uYWw+CiAgICAgICAgICAgICAgWy4uLl0KICAgICAgICAgICAgPC9jb25maWdPcHRpb25zPgogICAgICAgICAgPC9jb25maWd1cmF0aW9uPgogICAgICAgIDwvZXhlY3V0aW9uPgogICAgICA8L2V4ZWN1dGlvbnM+CiAgICA8L3BsdWdpbj4KIDwvcGx1Z2lucz4KPC9idWlsZD4KYGBgCgpBIGNvbXByZWhlbnNpdmUgbGlzdCBvZiB0aGUgQ29uZmlndXJhdGlvbiBvcHRpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4KCnwgT3B0aW9uIHwgUHJvcGVydHkgfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CnwgYHZlcmJvc2VgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4udmVyYm9zZWAgfCB2ZXJib3NlIG1vZGUgKGBmYWxzZWAgYnkgZGVmYXVsdCkKfCBgaW5wdXRTcGVjYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmlucHV0U3BlY2AgfCBPcGVuQVBJIFNwZWMgZmlsZSBwYXRoCnwgYGxhbmd1YWdlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmxhbmd1YWdlYCB8IHRhcmdldCBnZW5lcmF0aW9uIGxhbmd1YWdlIChkZXByZWNhdGVkLCByZXBsYWNlZCBieSBgZ2VuZXJhdG9yTmFtZWAgYXMgdmFsdWVzIGhlcmUgZG9uJ3QgcmVwcmVzZW50IG9ubHkgJ2xhbmd1YWdlJyBhbnkgbG9uZ2VyKQp8IGBnZW5lcmF0b3JOYW1lYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRvck5hbWVgIHwgdGFyZ2V0IGdlbmVyYXRvciBuYW1lCnwgYG91dHB1dGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5vdXRwdXRgIHwgdGFyZ2V0IG91dHB1dCBwYXRoIChkZWZhdWx0IGlzIGAke3Byb2plY3QuYnVpbGQuZGlyZWN0b3J5fS9nZW5lcmF0ZWQtc291cmNlcy9vcGVuYXBpYC4gQ2FuIGFsc28gYmUgc2V0IGdsb2JhbGx5IHRocm91Z2ggdGhlIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4ub3V0cHV0YCBwcm9wZXJ0eSkKfCBgZ2l0SG9zdGAgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdpdEhvc3RgIHwgVGhlIGdpdCBob3N0LCBlLmcuIGdpdGxhYi5jb20KfCBgZ2l0VXNlcklkYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdpdFVzZXJJZGAgfCBzZXRzIGdpdCBpbmZvcm1hdGlvbiBvZiB0aGUgcHJvamVjdAp8IGBnaXRSZXBvSWRgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5naXRSZXBvSWRgIHwgc2V0cyB0aGUgcmVwbyBJRCAoZS5nLiBvcGVuYXBpLWdlbmVyYXRvcikKfCBgdGVtcGxhdGVEaXJlY3RvcnlgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4udGVtcGxhdGVEaXJlY3RvcnlgIHwgZGlyZWN0b3J5IHdpdGggbXVzdGFjaGUgdGVtcGxhdGVzCnwgYHRlbXBsYXRlUmVzb3VyY2VQYXRoYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnRlbXBsYXRlUmVzb3VyY2VQYXRoYCB8IGRpcmVjdG9yeSB3aXRoIG11c3RhY2hlIHRlbXBsYXRlcyB2aWEgcmVzb3VyY2UgcGF0aC4gVGhpcyBvcHRpb24gd2lsbCBvdmVyd3JpdGUgYW55IG9wdGlvbiBkZWZpbmVkIGluIGB0ZW1wbGF0ZURpcmVjdG9yeWAuCnwgYGVuZ2luZWAgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmVuZ2luZWAgfCBUaGUgbmFtZSBvZiB0ZW1wbGF0aW5nIGVuZ2luZSB0byB1c2UsICJtdXN0YWNoZSIgKGRlZmF1bHQpIG9yICJoYW5kbGViYXJzIiAoYmV0YSkKfCBgYXV0aGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hdXRoYCB8IGFkZHMgYXV0aG9yaXphdGlvbiBoZWFkZXJzIHdoZW4gZmV0Y2hpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMgcmVtb3RlbHkuIFBhc3MgaW4gYSBVUkwtZW5jb2RlZCBzdHJpbmcgb2YgYG5hbWU6aGVhZGVyYCB3aXRoIGEgY29tbWEgc2VwYXJhdGluZyBtdWx0aXBsZSB2YWx1ZXMKfCBgY29uZmlndXJhdGlvbkZpbGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uY29uZmlndXJhdGlvbkZpbGVgIHwgUGF0aCB0byBzZXBhcmF0ZSBqc29uIGNvbmZpZ3VyYXRpb24gZmlsZS4gRmlsZSBjb250ZW50IHNob3VsZCBiZSBpbiBhIGpzb24gZm9ybWF0IHsib3B0aW9uS2V5Ijoib3B0aW9uVmFsdWUiLCAib3B0aW9uS2V5MSI6Im9wdGlvblZhbHVlMSIuLi59IFN1cHBvcnRlZCBvcHRpb25zIGNhbiBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggbGFuZ3VhZ2UuIFJ1biBgY29uZmlnLWhlbHAgLWcge2dlbmVyYXRvciBuYW1lfWAgY29tbWFuZCBmb3IgbGFuZ3VhZ2Ugc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMKfCBgc2tpcE92ZXJ3cml0ZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5za2lwT3ZlcndyaXRlYCB8IFNwZWNpZmllcyBpZiB0aGUgZXhpc3RpbmcgZmlsZXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuIGR1cmluZyB0aGUgZ2VuZXJhdGlvbi4gKGBmYWxzZWAgYnkgZGVmYXVsdCkKfCBgYXBpUGFja2FnZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hcGlQYWNrYWdlYCB8IHRoZSBwYWNrYWdlIHRvIHVzZSBmb3IgZ2VuZXJhdGVkIGFwaSBvYmplY3RzL2NsYXNzZXMKfCBgbW9kZWxQYWNrYWdlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLm1vZGVsUGFja2FnZWAgfCB0aGUgcGFja2FnZSB0byB1c2UgZm9yIGdlbmVyYXRlZCBtb2RlbCBvYmplY3RzL2NsYXNzZXMKfCBgaW52b2tlclBhY2thZ2VgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uaW52b2tlclBhY2thZ2VgIHwgdGhlIHBhY2thZ2UgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGludm9rZXIgb2JqZWN0cwp8IGBwYWNrYWdlTmFtZWAgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnBhY2thZ2VOYW1lYCB8IHRoZSBkZWZhdWx0IHBhY2thZ2UgbmFtZSB0byB1c2UgZm9yIHRoZSBnZW5lcmF0ZWQgb2JqZWN0cwp8IGBncm91cElkYCB8IGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ3JvdXBJZGAgIHwgc2V0cyBwcm9qZWN0IGluZm9ybWF0aW9uIGluIGdlbmVyYXRlZCBwb20ueG1sL2J1aWxkLmdyYWRsZSBvciBvdGhlciBidWlsZCBzY3JpcHQuIExhbmd1YWdlLXNwZWNpZmljIGNvbnZlcnNpb25zIG9jY3VyIGluIG5vbi1qdm0gZ2VuZXJhdG9ycwp8IGBhcnRpZmFjdElkYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFydGlmYWN0SWRgIHwgc2V0cyBwcm9qZWN0IGluZm9ybWF0aW9uIGluIGdlbmVyYXRlZCBwb20ueG1sL2J1aWxkLmdyYWRsZSBvciBvdGhlciBidWlsZCBzY3JpcHQuIExhbmd1YWdlLXNwZWNpZmljIGNvbnZlcnNpb25zIG9jY3VyIGluIG5vbi1qdm0gZ2VuZXJhdG9ycwp8IGBhcnRpZmFjdFZlcnNpb25gIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYXJ0aWZhY3RWZXJzaW9uYCB8IHNldHMgcHJvamVjdCBpbmZvcm1hdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5ncmFkbGUgb3Igb3RoZXIgYnVpbGQgc2NyaXB0LiBMYW5ndWFnZS1zcGVjaWZpYyBjb252ZXJzaW9ucyBvY2N1ciBpbiBub24tanZtIGdlbmVyYXRvcnMKfCBgbGlicmFyeWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5saWJyYXJ5YCB8IGxpYnJhcnkgdGVtcGxhdGUgKHN1Yi10ZW1wbGF0ZSkKfCBgbW9kZWxOYW1lUHJlZml4YCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLm1vZGVsTmFtZVByZWZpeGAgfCBTZXRzIHRoZSBwcmVmaXggZm9yIG1vZGVsIGNsYXNzZXMgYW5kIGVudW1zCnwgYG1vZGVsTmFtZVN1ZmZpeGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5tb2RlbE5hbWVTdWZmaXhgIHwgU2V0cyB0aGUgc3VmZml4IGZvciBtb2RlbCBjbGFzc2VzIGFuZCBlbnVtcwp8IGBpZ25vcmVGaWxlT3ZlcnJpZGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uaWdub3JlRmlsZU92ZXJyaWRlYCB8IHNwZWNpZmllcyB0aGUgZnVsbCBwYXRoIHRvIGEgYC5vcGVuYXBpLWdlbmVyYXRvci1pZ25vcmVgIHVzZWQgZm9yIHBhdHRlcm4gYmFzZWQgb3ZlcnJpZGVzIG9mIGdlbmVyYXRlZCBvdXRwdXRzCnwgYGh0dHBVc2VyQWdlbnRgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5odHRwVXNlckFnZW50YCB8IFNldHMgY3VzdG9tIFVzZXItQWdlbnQgaGVhZGVyIHZhbHVlCnwgYHJlbW92ZU9wZXJhdGlvbklkUHJlZml4YCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnJlbW92ZU9wZXJhdGlvbklkUHJlZml4YCB8IHJlbW92ZSBvcGVyYXRpb25JZCBwcmVmaXggKGUuZy4gdXNlcl9nZXROYW1lID0+IGdldE5hbWUpCnwgYGxvZ1RvU3RkZXJyYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmxvZ1RvU3RkZXJyYCB8IHdyaXRlIGFsbCBsb2cgbWVzc2FnZXMgKG5vdCBqdXN0IGVycm9ycykgdG8gU1RET1VUCnwgYGVuYWJsZVBvc3RQcm9jZXNzRmlsZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5gIHwgZW5hYmxlIGZpbGUgcG9zdC1wcm9jZXNzaW5nIGhvb2sKfCBgc2tpcFZhbGlkYXRlU3BlY2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5za2lwVmFsaWRhdGVTcGVjYCB8IFdoZXRoZXIgb3Igbm90IHRvIHNraXAgdmFsaWRhdGluZyB0aGUgaW5wdXQgc3BlYyBwcmlvciB0byBnZW5lcmF0aW9uLiBCeSBkZWZhdWx0LCBpbnZhbGlkIHNwZWNpZmljYXRpb25zIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgp8IGBzdHJpY3RTcGVjYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnN0cmljdFNwZWNgIHwgV2hldGhlciBvciBub3QgdG8gdHJlYXQgYW4gaW5wdXQgZG9jdW1lbnQgc3RyaWN0bHkgYWdhaW5zdCB0aGUgc3BlYy4gJ01VU1QnIGFuZCAnU0hBTEwnIHdvcmRpbmcgaW4gT3BlbkFQSSBzcGVjIGlzIHN0cmljdGx5IGFkaGVyZWQgdG8uIGUuZy4gd2hlbiBmYWxzZSwgbm8gZml4ZXMgd2lsbCBiZSBhcHBsaWVkIHRvIGRvY3VtZW50cyB3aGljaCBwYXNzIHZhbGlkYXRpb24gYnV0IGRvbid0IGZvbGxvdyB0aGUgc3BlYy4KfCBgZ2VuZXJhdGVBbGlhc0FzTW9kZWxgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBbGlhc0FzTW9kZWxgIHwgZ2VuZXJhdGUgYWxpYXMgKGFycmF5LCBtYXApIGFzIG1vZGVsCnwgYGNvbmZpZ09wdGlvbnNgIHwgIE4vQSB8IGEgKiptYXAqKiBvZiBsYW5ndWFnZS1zcGVjaWZpYyBwYXJhbWV0ZXJzLiBUbyBzaG93IGEgZnVsbCBsaXN0IG9mIGdlbmVyYXRvci1zcGVjaWZpZWQgcGFyYW1ldGVycyAob3B0aW9ucyksIHBsZWFzZSB1c2UgYGNvbmZpZ0hlbHBgIChleHBsYWluZWQgYmVsb3cpCnwgYGluc3RhbnRpYXRpb25UeXBlc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5pbnN0YW50aWF0aW9uVHlwZXNgIHwgc2V0cyBpbnN0YW50aWF0aW9uIHR5cGUgbWFwcGluZ3MgaW4gdGhlIGZvcm1hdCBvZiB0eXBlPWluc3RhbnRpYXRlZFR5cGUsdHlwZT1pbnN0YW50aWF0ZWRUeXBlLiBGb3IgZXhhbXBsZSAoaW4gSmF2YSk6IGBhcnJheT1BcnJheUxpc3QsbWFwPUhhc2hNYXBgLiBJbiBvdGhlciB3b3JkcyBhcnJheSB0eXBlcyB3aWxsIGdldCBpbnN0YW50aWF0ZWQgYXMgQXJyYXlMaXN0IGluIGdlbmVyYXRlZCBjb2RlLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbgp8IGBpbXBvcnRNYXBwaW5nc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5pbXBvcnRNYXBwaW5nc2AgfCBzcGVjaWZpZXMgbWFwcGluZ3MgYmV0d2VlbiBhIGdpdmVuIGNsYXNzIGFuZCB0aGUgaW1wb3J0IHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoYXQgY2xhc3MgaW4gdGhlIGZvcm1hdCBvZiB0eXBlPWltcG9ydCx0eXBlPWltcG9ydC4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24KfCBgdHlwZU1hcHBpbmdzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnR5cGVNYXBwaW5nc2AgfCBzZXRzIG1hcHBpbmdzIGJldHdlZW4gT3BlbkFQSSBzcGVjIHR5cGVzIGFuZCBnZW5lcmF0ZWQgY29kZSB0eXBlcyBpbiB0aGUgZm9ybWF0IG9mIE9wZW5BUElUeXBlPWdlbmVyYXRlZFR5cGUsT3BlbkFQSVR5cGU9Z2VuZXJhdGVkVHlwZS4gRm9yIGV4YW1wbGU6IGBhcnJheT1MaXN0LG1hcD1NYXAsc3RyaW5nPVN0cmluZ2AuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoaXMgb3B0aW9uCnwgYGxhbmd1YWdlU3BlY2lmaWNQcmltaXRpdmVzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmxhbmd1YWdlU3BlY2lmaWNQcmltaXRpdmVzYCB8IHNwZWNpZmllcyBhZGRpdGlvbmFsIGxhbmd1YWdlIHNwZWNpZmljIHByaW1pdGl2ZSB0eXBlcyBpbiB0aGUgZm9ybWF0IG9mIHR5cGUxLHR5cGUyLHR5cGUzLHR5cGUzLiBGb3IgZXhhbXBsZTogYFN0cmluZyxib29sZWFuLEJvb2xlYW4sRG91YmxlYC4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24KfCBgYWRkaXRpb25hbFByb3BlcnRpZXNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYWRkaXRpb25hbFByb3BlcnRpZXNgIHwgc2V0cyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCBieSB0aGUgbXVzdGFjaGUgdGVtcGxhdGVzIGluIHRoZSBmb3JtYXQgb2YgbmFtZT12YWx1ZSxuYW1lPXZhbHVlLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbgp8IGBzZXJ2ZXJWYXJpYWJsZU92ZXJyaWRlc2AgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnNlcnZlclZhcmlhYmxlT3ZlcnJpZGVzYCB8IEEgbWFwIG9mIHNlcnZlciB2YXJpYWJsZSBvdmVycmlkZXMgZm9yIHNwZWNzIHRoYXQgc3VwcG9ydCBzZXJ2ZXIgVVJMIHRlbXBsYXRpbmcKfCBgcmVzZXJ2ZWRXb3Jkc01hcHBpbmdzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnJlc2VydmVkV29yZHNNYXBwaW5nc2AgfCBzcGVjaWZpZXMgaG93IGEgcmVzZXJ2ZWQgbmFtZSBzaG91bGQgYmUgZXNjYXBlZCB0by4gT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBgXzxuYW1lPmAgaXMgdXNlZC4gRm9yIGV4YW1wbGUgYGlkPWlkZW50aWZpZXJgLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbgp8IGBnZW5lcmF0ZUFwaXNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBcGlzYCB8IGdlbmVyYXRlIHRoZSBhcGlzIChgdHJ1ZWAgYnkgZGVmYXVsdCkuIFNwZWNpZmljIGFwaXMgbWF5IGJlIGRlZmluZWQgYXMgYSBDU1YgdmlhIGBhcGlzVG9HZW5lcmF0ZWAuCnwgYGFwaXNUb0dlbmVyYXRlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFwaXNUb0dlbmVyYXRlYCB8IEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXBpcyB0byBnZW5lcmF0ZS4gIEFsbCBhcGlzIGlzIHRoZSBkZWZhdWx0Lgp8IGBnZW5lcmF0ZU1vZGVsc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0ZU1vZGVsc2AgfCBnZW5lcmF0ZSB0aGUgbW9kZWxzIChgdHJ1ZWAgYnkgZGVmYXVsdCkuIFNwZWNpZmljIG1vZGVscyBtYXkgYmUgZGVmaW5lZCBhcyBhIENTViB2aWEgYG1vZGVsc1RvR2VuZXJhdGVgLgp8IGBtb2RlbHNUb0dlbmVyYXRlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLm1vZGVsc1RvR2VuZXJhdGVgIHwgQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBtb2RlbHMgdG8gZ2VuZXJhdGUuICBBbGwgbW9kZWxzIGlzIHRoZSBkZWZhdWx0Lgp8IGBnZW5lcmF0ZVN1cHBvcnRpbmdGaWxlc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0ZVN1cHBvcnRpbmdGaWxlc2AgfCBnZW5lcmF0ZSB0aGUgc3VwcG9ydGluZyBmaWxlcyAoYHRydWVgIGJ5IGRlZmF1bHQpCnwgYHN1cHBvcnRpbmdGaWxlc1RvR2VuZXJhdGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uc3VwcG9ydGluZ0ZpbGVzVG9HZW5lcmF0ZWAgfCBBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHN1cHBvcnRpbmcgZmlsZXMgdG8gZ2VuZXJhdGUuICBBbGwgZmlsZXMgaXMgdGhlIGRlZmF1bHQuCnwgYGdlbmVyYXRlTW9kZWxUZXN0c2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0ZU1vZGVsVGVzdHNgIHwgZ2VuZXJhdGUgdGhlIG1vZGVsIHRlc3RzIChgdHJ1ZWAgYnkgZGVmYXVsdC4gT25seSBhdmFpbGFibGUgaWYgYGdlbmVyYXRlTW9kZWxzYCBpcyBgdHJ1ZWApCnwgYGdlbmVyYXRlTW9kZWxEb2N1bWVudGF0aW9uYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRlTW9kZWxEb2N1bWVudGF0aW9uYCB8IGdlbmVyYXRlIHRoZSBtb2RlbCBkb2N1bWVudGF0aW9uIChgdHJ1ZWAgYnkgZGVmYXVsdC4gT25seSBhdmFpbGFibGUgaWYgYGdlbmVyYXRlTW9kZWxzYCBpcyBgdHJ1ZWApCnwgYGdlbmVyYXRlQXBpVGVzdHNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBcGlUZXN0c2AgfCBnZW5lcmF0ZSB0aGUgYXBpIHRlc3RzIChgdHJ1ZWAgYnkgZGVmYXVsdC4gT25seSBhdmFpbGFibGUgaWYgYGdlbmVyYXRlQXBpc2AgaXMgYHRydWVgKQp8IGBnZW5lcmF0ZUFwaURvY3VtZW50YXRpb25gIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVBcGlEb2N1bWVudGF0aW9uYCB8IGdlbmVyYXRlIHRoZSBhcGkgZG9jdW1lbnRhdGlvbiAoYHRydWVgIGJ5IGRlZmF1bHQuIE9ubHkgYXZhaWxhYmxlIGlmIGBnZW5lcmF0ZUFwaXNgIGlzIGB0cnVlYCkKfCBgd2l0aFhtbGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi53aXRoWG1sYCB8IGVuYWJsZSBYTUwgYW5ub3RhdGlvbnMgaW5zaWRlIHRoZSBnZW5lcmF0ZWQgbW9kZWxzIGFuZCBBUEkgKG9ubHkgd29ya3Mgd2l0aCBKYXZhIGBsYW5ndWFnZWAgYW5kIGxpYnJhcmllcyB0aGF0IHByb3ZpZGUgc3VwcG9ydCBmb3IgSlNPTiBhbmQgWE1MKQp8IGBza2lwYCB8ICBgY29kZWdlbi5za2lwYCB8IHNraXAgY29kZSBnZW5lcmF0aW9uIChgZmFsc2VgIGJ5IGRlZmF1bHQuIENhbiBhbHNvIGJlIHNldCBnbG9iYWxseSB0aHJvdWdoIHRoZSBgY29kZWdlbi5za2lwYCBwcm9wZXJ0eSkKfCBgc2tpcElmU3BlY0lzVW5jaGFuZ2VkYCB8ICBgY29kZWdlbi5za2lwSWZTcGVjSXNVbmNoYW5nZWRgIHwgU2tpcCB0aGUgZXhlY3V0aW9uIGlmIHRoZSBzb3VyY2UgZmlsZSBpcyBvbGRlciB0aGFuIHRoZSBvdXRwdXQgZm9sZGVyIChgZmFsc2VgIGJ5IGRlZmF1bHQuIENhbiBhbHNvIGJlIHNldCBnbG9iYWxseSB0aHJvdWdoIHRoZSBgY29kZWdlbi5za2lwSWZTcGVjSXNVbmNoYW5nZWRgIHByb3BlcnR5KQp8IGBhZGRDb21waWxlU291cmNlUm9vdGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hZGRDb21waWxlU291cmNlUm9vdGAgfCBBZGQgdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gdGhlIHByb2plY3QgYXMgYSBzb3VyY2Ugcm9vdCwgc28gdGhhdCB0aGUgZ2VuZXJhdGVkIGphdmEgdHlwZXMgYXJlIGNvbXBpbGVkIGFuZCBpbmNsdWRlZCBpbiB0aGUgcHJvamVjdCBhcnRpZmFjdCAoYHRydWVgIGJ5IGRlZmF1bHQpLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgYWRkVGVzdENvbXBpbGVTb3VyY2VSb290YC4KfCBgYWRkVGVzdENvbXBpbGVTb3VyY2VSb290YCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFkZFRlc3RDb21waWxlU291cmNlUm9vdGAgfCBBZGQgdGhlIG91dHB1dCBkaXJlY3RvcnkgdG8gdGhlIHByb2plY3QgYXMgYSB0ZXN0IHNvdXJjZSByb290LCBzbyB0aGF0IHRoZSBnZW5lcmF0ZWQgamF2YSB0eXBlcyBhcmUgY29tcGlsZWQgb25seSBmb3IgdGhlIHRlc3QgY2xhc3NwYXRoIG9mIHRoZSBwcm9qZWN0IChgZmFsc2VgIGJ5IGRlZmF1bHQpLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgYWRkQ29tcGlsZVNvdXJjZVJvb3RgLgp8IGBlbnZpcm9ubWVudFZhcmlhYmxlc2AgfCBOL0EgfCBBICoqbWFwKiogb2YgaXRlbXMgY29uY2VwdHVhbGx5IHNpbWlsYXIgdG8gImVudmlyb25tZW50IHZhcmlhYmxlcyIgb3IgInN5c3RlbSBwcm9wZXJ0aWVzIi4gVGhlc2UgYXJlIG1lcmdlZCBpbnRvIGEgbWFwIG9mIGdsb2JhbCBzZXR0aW5ncyBhdmFpbGFibGUgdG8gYWxsIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRpb24gZmxvdy4gVXNlIHRoaXMgbWFwIGZvciBhbnkgb3B0aW9ucyBkb2N1bWVudGVkIGVsc2V3aGVyZSBhcyBgc3lzdGVtUHJvcGVydGllc2AuCnwgYGNvbmZpZ0hlbHBgIHwgIGBjb2RlZ2VuLmNvbmZpZ0hlbHBgIHwgZHVtcHMgdGhlIGNvbmZpZ3VyYXRpb24gaGVscCBmb3IgdGhlIHNwZWNpZmllZCBsaWJyYXJ5IChnZW5lcmF0ZXMgbm8gc291cmNlcykKCkZvciB0aGUgYHNwcmluZ2AgZ2VuZXJhdG9yLCB0aGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlOgoKfCBPcHRpb24gfCBEZXNjcmlwdGlvbiB8CnwtLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IGBzb3J0UGFyYW1zQnlSZXF1aXJlZEZsYWdgIHwgU29ydCBtZXRob2QgYXJndW1lbnRzIHRvIHBsYWNlIHJlcXVpcmVkIHBhcmFtZXRlcnMgYmVmb3JlIG9wdGlvbmFsIHBhcmFtZXRlcnMuIChEZWZhdWx0OiB0cnVlKSB8CnwgYHNvcnRNb2RlbFByb3BlcnRpZXNCeVJlcXVpcmVkRmxhZ2AgfCBTb3J0IG1vZGVsIHByb3BlcnRpZXMgdG8gcGxhY2UgcmVxdWlyZWQgcGFyYW1ldGVycyBiZWZvcmUgb3B0aW9uYWwgcGFyYW1ldGVycy4gKERlZmF1bHQ6IHRydWUpIHwKfCBgZW5zdXJlVW5pcXVlUGFyYW1zYCB8IFdoZXRoZXIgdG8gZW5zdXJlIHBhcmFtZXRlciBuYW1lcyBhcmUgdW5pcXVlIGluIGFuIG9wZXJhdGlvbiAocmVuYW1lIHBhcmFtZXRlcnMgdGhhdCBhcmUgbm90KS4gKERlZmF1bHQ6IHRydWUpIHwKfCBgYWxsb3dVbmljb2RlSWRlbnRpZmllcnNgIHwgYm9vbGVhbiwgdG9nZ2xlcyB3aGV0aGVyIHVuaWNvZGUgaWRlbnRpZmllcnMgYXJlIGFsbG93ZWQgaW4gbmFtZXMgb3Igbm90LCBkZWZhdWx0IGlzIGZhbHNlIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBwcmVwZW5kRm9ybU9yQm9keVBhcmFtZXRlcnNgIHwgQWRkIGZvcm0gb3IgYm9keSBwYXJhbWV0ZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFtZXRlciBsaXN0LiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgbW9kZWxQYWNrYWdlYCB8IHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBtb2RlbHMgKERlZmF1bHQ6IG9yZy5vcGVuYXBpdG9vbHMubW9kZWwpIHwKfCBgYXBpUGFja2FnZWAgfCBwYWNrYWdlIGZvciBnZW5lcmF0ZWQgYXBpIGNsYXNzZXMgKERlZmF1bHQ6IG9yZy5vcGVuYXBpdG9vbHMuYXBpKSB8CnwgYGludm9rZXJQYWNrYWdlYCB8IHJvb3QgcGFja2FnZSBmb3IgZ2VuZXJhdGVkIGNvZGUgKERlZmF1bHQ6IG9yZy5vcGVuYXBpdG9vbHMuYXBpKSB8CnwgYGdyb3VwSWRgIHwgZ3JvdXBJZCBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogb3JnLm9wZW5hcGl0b29scykgfAp8IGBhcnRpZmFjdElkYCB8IGFydGlmYWN0SWQgaW4gZ2VuZXJhdGVkIHBvbS54bWwuIFRoaXMgYWxzbyBiZWNvbWVzIHBhcnQgb2YgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5J3MgZmlsZW5hbWUgKERlZmF1bHQ6IG9wZW5hcGktc3ByaW5nKSB8CnwgYGFydGlmYWN0VmVyc2lvbmAgfCBhcnRpZmFjdCB2ZXJzaW9uIGluIGdlbmVyYXRlZCBwb20ueG1sLiBUaGlzIGFsc28gYmVjb21lcyBwYXJ0IG9mIHRoZSBnZW5lcmF0ZWQgbGlicmFyeSdzIGZpbGVuYW1lIChEZWZhdWx0OiAxLjAuMCkgfAp8IGBhcnRpZmFjdFVybGAgfCBhcnRpZmFjdCBVUkwgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIHwKfCBgYXJ0aWZhY3REZXNjcmlwdGlvbmAgfCBhcnRpZmFjdCBkZXNjcmlwdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogT3BlbkFQSSBKYXZhKSB8CnwgYHNjbUNvbm5lY3Rpb25gIHwgU0NNIGNvbm5lY3Rpb24gaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IHNjbTpnaXQ6Z2l0QGdpdGh1Yi5jb206b3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLmdpdCkgfAp8IGBzY21EZXZlbG9wZXJDb25uZWN0aW9uYCB8IFNDTSBkZXZlbG9wZXIgY29ubmVjdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogc2NtOmdpdDpnaXRAZ2l0aHViLmNvbTpvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IuZ2l0KSB8CnwgYHNjbVVybGAgfCBTQ00gVVJMIGluIGdlbmVyYXRlZCBwb20ueG1sIChEZWZhdWx0OiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSB8CnwgYGRldmVsb3Blck5hbWVgIHwgZGV2ZWxvcGVyIG5hbWUgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IE9wZW5BUEktR2VuZXJhdG9yIENvbnRyaWJ1dG9ycykgfAp8IGBkZXZlbG9wZXJFbWFpbGAgfCBkZXZlbG9wZXIgZW1haWwgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IHRlYW1Ab3BlbmFwaXRvb2xzLm9yZykgfAp8IGBkZXZlbG9wZXJPcmdhbml6YXRpb25gIHwgZGV2ZWxvcGVyIG9yZ2FuaXphdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogT3BlbkFQSVRvb2xzLm9yZykgfAp8IGBkZXZlbG9wZXJPcmdhbml6YXRpb25VcmxgIHwgZGV2ZWxvcGVyIG9yZ2FuaXphdGlvbiBVUkwgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IGh0dHA6Ly9vcGVuYXBpdG9vbHMub3JnKSB8CnwgYGxpY2Vuc2VOYW1lYCB8IFRoZSBuYW1lIG9mIHRoZSBsaWNlbnNlIChEZWZhdWx0OiBVbmxpY2Vuc2UpIHwKfCBgbGljZW5zZVVybGAgfCBUaGUgVVJMIG9mIHRoZSBsaWNlbnNlIChEZWZhdWx0OiBodHRwOi8vdW5saWNlbnNlLm9yZykgfAp8IGBzb3VyY2VGb2xkZXJgIHwgc291cmNlIGZvbGRlciBmb3IgZ2VuZXJhdGVkIGNvZGUgKERlZmF1bHQ6IHNyYy9tYWluL2phdmEpIHwKfCBgc2VyaWFsaXphYmxlTW9kZWxgIHwgYm9vbGVhbiAtIHRvZ2dsZSAiaW1wbGVtZW50cyBTZXJpYWxpemFibGUiIGZvciBnZW5lcmF0ZWQgbW9kZWxzIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBiaWdEZWNpbWFsQXNTdHJpbmdgIHwgVHJlYXQgQmlnRGVjaW1hbCB2YWx1ZXMgYXMgU3RyaW5ncyB0byBhdm9pZCBwcmVjaXNpb24gbG9zcy4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGZ1bGxKYXZhVXRpbGAgfCB3aGV0aGVyIHRvIHVzZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyB1bmRlciBqYXZhLnV0aWwuIFRoaXMgb3B0aW9uIG9ubHkgd29ya3MgZm9yIEphdmEgQVBJIGNsaWVudCAoRGVmYXVsdDogZmFsc2UpIHwKfCBgaGlkZUdlbmVyYXRpb25UaW1lc3RhbXBgIHwgSGlkZXMgdGhlIGdlbmVyYXRpb24gdGltZXN0YW1wIHdoZW4gZmlsZXMgYXJlIGdlbmVyYXRlZC4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHdpdGhYbWxgIHwgd2hldGhlciB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIGFwcGxpY2F0aW9uL3htbCBjb250ZW50IHR5cGUgYW5kIGluY2x1ZGUgWE1MIGFubm90YXRpb25zIGluIHRoZSBtb2RlbCAod29ya3Mgd2l0aCBsaWJyYXJpZXMgdGhhdCBwcm92aWRlIHN1cHBvcnQgZm9yIEpTT04gYW5kIFhNTCkgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGRhdGVMaWJyYXJ5YCB8IE9wdGlvbi4gRGF0ZSBsaWJyYXJ5IHRvIHVzZSAoRGVmYXVsdDogdGhyZWV0ZW5icCk8YnI+am9kYSAtIEpvZGEgKGZvciBsZWdhY3kgYXBwIG9ubHkpPGJyPmxlZ2FjeSAtIExlZ2FjeSBqYXZhLnV0aWwuRGF0ZSAoaWYgeW91IHJlYWxseSBoYXZlIGEgZ29vZCByZWFzb24gbm90IHRvIHVzZSB0aHJlZXRlbmJwPGJyPmphdmE4LWxvY2FsZGF0ZXRpbWUgLSBKYXZhIDggdXNpbmcgTG9jYWxEYXRlVGltZSAoZm9yIGxlZ2FjeSBhcHAgb25seSk8YnI+amF2YTggLSBKYXZhIDggbmF0aXZlIEpTUjMxMCAocHJlZmVycmVkIGZvciBqZGsgMS44KykgLSBub3RlOiB0aGlzIGFsc28gc2V0cyAiamF2YTgiIHRvIHRydWU8YnI+dGhyZWV0ZW5icCAtIEJhY2twb3J0IG9mIEpTUjMxMCAocHJlZmVycmVkIGZvciBqZGsgPCAxLjgpIHwKfCBgamF2YThgIHwgT3B0aW9uLiBVc2UgSmF2YTggY2xhc3NlcyBpbnN0ZWFkIG9mIHRoaXJkIHBhcnR5IGVxdWl2YWxlbnRzIChEZWZhdWx0OiBmYWxzZSk8YnI+dHJ1ZSAtIFVzZSBKYXZhIDggY2xhc3NlcyBzdWNoIGFzIEJhc2U2NC4gVXNlIGphdmE4IGRlZmF1bHQgaW50ZXJmYWNlIHdoZW4gYSByZXNwb25zZVdyYXBwZXIgaXMgdXNlZDxicj5mYWxzZSAtIFZhcmlvdXMgdGhpcmQgcGFydHkgbGlicmFyaWVzIGFzIG5lZWRlZCB8CnwgYGRpc2FibGVIdG1sRXNjYXBpbmdgIHwgRGlzYWJsZSBIVE1MIGVzY2FwaW5nIG9mIEpTT04gc3RyaW5ncyB3aGVuIHVzaW5nIGdzb24gKG5lZWRlZCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGJ5dGVbXSBmaWVsZHMpIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBib29sZWFuR2V0dGVyUHJlZml4YCB8IFNldCBib29sZWFuR2V0dGVyUHJlZml4IChEZWZhdWx0OiBnZXQpIHwKfCBgYWRkaXRpb25hbE1vZGVsVHlwZUFubm90YXRpb25zYCB8IEFkZGl0aW9uYWwgYW5ub3RhdGlvbnMgZm9yIG1vZGVsIHR5cGUoY2xhc3MgbGV2ZWwgYW5ub3RhdGlvbnMpIHwKfCBgcGFyZW50R3JvdXBJZGAgfCBwYXJlbnQgZ3JvdXBJZCBpbiBnZW5lcmF0ZWQgcG9tIE4uQi4gcGFyZW50R3JvdXBJZCwgcGFyZW50QXJ0aWZhY3RJZCBhbmQgcGFyZW50VmVyc2lvbiBtdXN0IGFsbCBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGVtIHRvIHRha2UgZWZmZWN0IHwKfCBgcGFyZW50QXJ0aWZhY3RJZGAgfCBwYXJlbnQgYXJ0aWZhY3RJZCBpbiBnZW5lcmF0ZWQgcG9tIE4uQi4gcGFyZW50R3JvdXBJZCwgcGFyZW50QXJ0aWZhY3RJZCBhbmQgcGFyZW50VmVyc2lvbiBtdXN0IGFsbCBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGVtIHRvIHRha2UgZWZmZWN0IHwKfCBgcGFyZW50VmVyc2lvbmAgfCBwYXJlbnQgdmVyc2lvbiBpbiBnZW5lcmF0ZWQgcG9tIE4uQi4gcGFyZW50R3JvdXBJZCwgcGFyZW50QXJ0aWZhY3RJZCBhbmQgcGFyZW50VmVyc2lvbiBtdXN0IGFsbCBiZSBzcGVjaWZpZWQgZm9yIGFueSBvZiB0aGVtIHRvIHRha2UgZWZmZWN0IHwKfCBgc25hcHNob3RWZXJzaW9uYCB8IFVzZXMgYSBTTkFQU0hPVCB2ZXJzaW9uLiB0cnVlIC0gVXNlIGEgU25hcFNob3QgVmVyc2lvbmZhbHNlIC0gVXNlIGEgUmVsZWFzZSBWZXJzaW9uIHwKfCBgdGl0bGVgIHwgc2VydmVyIHRpdGxlIG5hbWUgb3IgY2xpZW50IHNlcnZpY2UgbmFtZSAoRGVmYXVsdDogT3BlbkFQSSBTcHJpbmcpIHwKfCBgY29uZmlnUGFja2FnZWAgfCBjb25maWd1cmF0aW9uIHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjb2RlIChEZWZhdWx0OiBvcmcub3BlbmFwaXRvb2xzLmNvbmZpZ3VyYXRpb24pIHwKfCBgYmFzZVBhY2thZ2VgIHwgYmFzZSBwYWNrYWdlIChpbnZva2VyUGFja2FnZSkgZm9yIGdlbmVyYXRlZCBjb2RlIChEZWZhdWx0OiBvcmcub3BlbmFwaXRvb2xzKSB8CnwgYGludGVyZmFjZU9ubHlgIHwgV2hldGhlciB0byBnZW5lcmF0ZSBvbmx5IEFQSSBpbnRlcmZhY2Ugc3R1YnMgd2l0aG91dCB0aGUgc2VydmVyIGZpbGVzLiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgZGVsZWdhdGVQYXR0ZXJuYCB8IFdoZXRoZXIgdG8gZ2VuZXJhdGUgdGhlIHNlcnZlciBmaWxlcyB1c2luZyB0aGUgZGVsZWdhdGUgcGF0dGVybiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgc2luZ2xlQ29udGVudFR5cGVzYCB8IFdoZXRoZXIgdG8gc2VsZWN0IG9ubHkgb25lIHByb2R1Y2VzL2NvbnN1bWVzIGNvbnRlbnQtdHlwZSBieSBvcGVyYXRpb24uIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBza2lwRGVmYXVsdEludGVyZmFjZWAgfCBXaGV0aGVyIHRvIGdlbmVyYXRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBqYXZhOCBpbnRlcmZhY2VzIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBhc3luY2AgfCB1c2UgYXN5bmMgQ2FsbGFibGUgY29udHJvbGxlcnMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHJlYWN0aXZlYCB8IHdyYXAgcmVzcG9uc2VzIGluIE1vbm8vRmx1eCBSZWFjdG9yIHR5cGVzIChzcHJpbmctYm9vdCBvbmx5KSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgcmVzcG9uc2VXcmFwcGVyYCB8IHdyYXAgdGhlIHJlc3BvbnNlcyBpbiBnaXZlbiB0eXBlIChGdXR1cmUsIENhbGxhYmxlLCBDb21wbGV0YWJsZUZ1dHVyZSxMaXN0ZW5hYmxlRnV0dXJlLCBEZWZlcnJlZFJlc3VsdCwgSHlzdHJpeENvbW1hbmQsIFJ4T2JzZXJ2YWJsZSwgUnhTaW5nbGUgb3IgZnVsbHkgcXVhbGlmaWVkIHR5cGUpIHwKfCBgdmlydHVhbFNlcnZpY2VgIHwgR2VuZXJhdGVzIHRoZSB2aXJ0dWFsIHNlcnZpY2UuIEZvciBtb3JlIGRldGFpbHMgcmVmZXIgLSBodHRwczovL2dpdGh1Yi5jb20vZWxhbi12ZW50dXJlL3ZpcnR1YWxhbi93aWtpIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB1c2VUYWdzYCB8IHVzZSB0YWdzIGZvciBjcmVhdGluZyBpbnRlcmZhY2UgYW5kIGNvbnRyb2xsZXIgY2xhc3NuYW1lcyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgdXNlQmVhblZhbGlkYXRpb25gIHwgVXNlIEJlYW5WYWxpZGF0aW9uIEFQSSBhbm5vdGF0aW9ucyAoRGVmYXVsdDogdHJ1ZSkgfAp8IGBwZXJmb3JtQmVhblZhbGlkYXRpb25gIHwgVXNlIEJlYW4gVmFsaWRhdGlvbiBJbXBsLiB0byBwZXJmb3JtIEJlYW5WYWxpZGF0aW9uIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB1c2VDbGFzc0xldmVsQmVhblZhbGlkYXRpb25gIHwgQWRkcyBAVmFsaWRhdGVkIGFubm90YXRpb24gdG8gQVBJIGludGVyZmFjZXMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHVzZUxvbWJva0Fubm90YXRpb25zYCB8IFVzZSBMb21ib2sgYW5ub3RhdGlvbnMgdG8gZ2VuZXJhdGUgcHJvcGVydGllcyBhY2Nlc3NvcnMgYW5kIGBoYXNoQ29kZWAvYGVxdWFsc2AgbWV0aG9kcyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgYWRkU2VydmxldFJlcXVlc3RgIHwgQWRkcyBTZXJ2bGV0UmVxdWVzdCBvYmplY3RzIHRvIEFQSSBtZXRob2QgZGVmaW5pdGlvbnMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGFkZEJpbmRpbmdSZXN1bHRgIHwgQWRkcyBCaW5kaW5nUmVzdWx0IHRvIEFwaSBtZXRob2QgZGVmaW5pdGlvbnMnIHJlcXVlc3QgYm9kaWVzIGlmIFVzZUJlYW5WYWxpZGF0aW9uIHRydWUsIGZvciB0aGlzIHRvIGJlIGVmZmVjdGl2ZSB5b3UgbXVzdCBjb25maWd1cmUgVXNlQmVhblZhbGlkYXRpb24sIHRoaXMgaXMgbm90IGRvbmUgYXV0b21hdGljYWxseSAoRGVmYXVsdDogZmFsc2UpfAp8IGBpbXBsaWNpdEhlYWRlcnNgIHwgU2tpcCBoZWFkZXIgcGFyYW1ldGVycyBpbiB0aGUgZ2VuZXJhdGVkIEFQSSBtZXRob2RzIHVzaW5nIEBBcGlJbXBsaWNpdFBhcmFtcyBhbm5vdGF0aW9uLiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgc3dhZ2dlckRvY2tldENvbmZpZ2AgfCBHZW5lcmF0ZSBTcHJpbmcgT3BlbkFQSSBEb2NrZXQgY29uZmlndXJhdGlvbiBjbGFzcy4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGFwaUZpcnN0YCB8IEdlbmVyYXRlIHRoZSBBUEkgZnJvbSB0aGUgT0FJIHNwZWMgYXQgc2VydmVyIGNvbXBpbGUgdGltZSAoQVBJIGZpcnN0IGFwcHJvYWNoKSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgdXNlT3B0aW9uYWxgIHwgVXNlIE9wdGlvbmFsIGNvbnRhaW5lciBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgaGF0ZW9hc2AgfCBVc2UgU3ByaW5nIEhBVEVPQVMgbGlicmFyeSB0byBhbGxvdyBhZGRpbmcgSEFURU9BUyBsaW5rcyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgcmV0dXJuU3VjY2Vzc0NvZGVgIHwgR2VuZXJhdGVkIHNlcnZlciByZXR1cm5zIDJ4eCBjb2RlIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB1bmhhbmRsZWRFeGNlcHRpb25gIHwgRGVjbGFyZSBvcGVyYXRpb24gbWV0aG9kcyB0byB0aHJvdyBhIGdlbmVyaWMgZXhjZXB0aW9uIGFuZCBhbGxvdyB1bmhhbmRsZWQgZXhjZXB0aW9ucyAodXNlZnVsIGZvciBTcHJpbmcgYEBDb250cm9sbGVyQWR2aWNlYCBkaXJlY3RpdmVzKS4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGxpYnJhcnlgIHwgbGlicmFyeSB0ZW1wbGF0ZSAoc3ViLXRlbXBsYXRlKSAoRGVmYXVsdDogc3ByaW5nLWJvb3QpPGJyPnNwcmluZy1ib290IC0gU3ByaW5nLWJvb3QgU2VydmVyIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBTcHJpbmdGb3ggaW50ZWdyYXRpb24uPGJyPnNwcmluZy1tdmMgLSBTcHJpbmctTVZDIFNlcnZlciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgU3ByaW5nRm94IGludGVncmF0aW9uLjxicj5zcHJpbmctY2xvdWQgLSBTcHJpbmctQ2xvdWQtRmVpZ24gY2xpZW50IHdpdGggU3ByaW5nLUJvb3QgYXV0by1jb25maWd1cmVkIHNldHRpbmdzLnwK - readmeEtag: '"9dfe1126cc1dc7203ac7523444960edb5a4abe8a07e9971c491e4bb065ba3fee"' - readmeLastModified: Thu, 03 Aug 2023 14:46:55 GMT + IVtCdWlsZF0oaHR0cHM6Ly9naXRodWIuY29tL0JhY2tiYXNlL2JhY2tiYXNlLW9wZW5hcGktdG9vbHMvd29ya2Zsb3dzL0JPQVQvYmFkZ2Uuc3ZnKQpbIVtRdWFsaXR5IEdhdGUgU3RhdHVzXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jb20uYmFja2Jhc2Uub3NzJTNBYmFja2Jhc2Utb3BlbmFwaS10b29scyZtZXRyaWM9YWxlcnRfc3RhdHVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jb20uYmFja2Jhc2Uub3NzJTNBYmFja2Jhc2Utb3BlbmFwaS10b29scykKWyFbTXZuIENlbnRyYWxdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9jb20uYmFja2Jhc2Uub3NzL2JhY2tiYXNlLW9wZW5hcGktdG9vbHMvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9tdm5yZXBvc2l0b3J5LmNvbS9hcnRpZmFjdC9jb20uYmFja2Jhc2Uub3NzL2JvYXQtbWF2ZW4tcGx1Z2luKQojIEJhY2tiYXNlIE9wZW5BcGkgVG9vbHMgCgpUaGUgQmFja2Jhc2UgT3BlbiBBUEkgVG9vbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGNyZWF0ZWQgdG8gd29yayBlZmZpY2llbnRseSB3aXRoIE9wZW5BUEkKCkl0IGN1cnJlbnRseSBjb25zaXN0cyBvZgoKKiBDcmVhdGUgRGlmZiBSZXBvcnQgYmV0d2VlbiAyIE9wZW5BUEkgdmVyc2lvbnMgb2YgdGhlIHNhbWUgc3BlYyAoQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3F1ZW4yNDA0L29wZW5hcGktZGlmZikKKiBEZWNvbXBvc2UgVHJhbnNmb3JtZXIgdG8gcmVtb3ZlIENvbXBvc2VkIFNjaGVtYXMgZnJvbSBPcGVuQVBJIHNwZWNzIHRvIGFpZCBpbiBjb2RlIGdlbmVyYXRvcnMKKiBDYXNlIFRyYW5zZm9ybWVyIHRvIHNlZSBob3cgeW91ciBBUEkgbG9va3MgbGlrZSB3aGVuIGdvaW5nIGZyb20gY2FtZWxDYXNlIHRvIHNuYWtlX2Nhc2UgICh0cmFuc2Zvcm1zIGV4YW1wbGVzIHRvbykKKiBbQ29kZSBHZW5lcmF0b3JdKGJvYXQtbWF2ZW4tcGx1Z2luL1JFQURNRS5tZCkgYmFzZWQgb24gW29wZW5hcGktZ2VuZXJhdG9yLnRlY2hdKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC8pIHdpdGggb3B0aW1pemVkIHRlbXBsYXRlcyBhbmQgZml4ZXMuCiogTGludCBtb2pvIGJhc2VkIG9uIFphbGFuZG8gWmFsbHkgYW5kIEJhY2tiYXNlIEFQSQoKVGhlIHByb2plY3QgaXMgdmVyeSBtdWNoIFdvcmsgSW4gUHJvZ3Jlc3MgYW5kIHdpbGwgYmUgcHVibGlzaGVkIG9uIG1hdmVuIGNlbnRyYWwgd2hlbiBjb25zaWRlcmVkIHJlYWR5IGVub3VnaC4gCgojIFJlbGVhc2UgTm90ZXMKQk9BVCBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudCBhbmQgc3ViamVjdCB0byBjaGFuZ2UuCiMjIDAuMTcuMTAKKiBCb2F0IG1hdmVuIHBsdWdpbgogICogRml4OiBXaGVuIHVzaW5nIE11bHRpcGFydCwgZ2VuZXJhdGUgd2l0aCBgQFJlcXVlc3RQYXJ0YCBpbnN0ZWFkIG9mIGBAUmVxdWVzdFBhcmFtYAojIyAwLjE3LjkKKiBCb2F0IE1hdmVuIHBsdWdpbgogICogRml4OiBbY29udGFpbmVyRGVmYXVsdFRvTnVsbD10cnVlIGlzIG5vdCBiYWNrd2FyZCBjb21wYXRpYmxlXShodHRwczovL2dpdGh1Yi5jb20vQmFja2Jhc2UvYmFja2Jhc2Utb3BlbmFwaS10b29scy9pc3N1ZXMvNjA0KQojIyAwLjE3LjgKKiBCb2F0IFNwcmluZyBnZW5lcmF0b3IKICAqIEZpeDogW1NlcmlhbGl6YXRpb24gLyBkZXNlcmlhbGl6YXRpb24gaXNzdWVzIG9mIEpzb25TdWJUeXBlcyBkdWUgdG8gaW5jb3JyZWN0IHVzYWdlIG9mIEpzb25JZ25vcmVQcm9wZXJ0aWVzXShodHRwczovL2dpdGh1Yi5jb20vQmFja2Jhc2UvYmFja2Jhc2Utb3BlbmFwaS10b29scy9pc3N1ZXMvNjAxKQojIyAwLjE3LjcKKiBCb2F0IG1hdmVuIHBsdWdpbgogICogRml4OiBBZGRlZCAnY29udGFpbmVyRGVmYXVsdFRvTnVsbCcgZGVmYXVsdCBvcHRpb24gdG8gdGhlIE1PSk8gZ2VuZXJhdG9yCiMjIDAuMTcuNgoqIEJvYXQgZW5naW5lCiAgKiBGaXg6IFByb2Nlc3Npbmcgb2YgYSBzaW5nbGUgc3RyaW5nIHR5cGUgZXhhbXBsZSBvbiBtZWRpYS10eXBlLgojIyAwLjE3LjQKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBOZXcgZm9ybWF0IGZvciBBbmd1bGFyIG1vY2tzLCB3aGljaCBhcmUgbm93IGV4cG9ydCBhbiBhcnJheSB3aXRoIHJlc3BvbnNlcy4KIyMgMC4xNy4zCiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogTWFwIHRoZSBgU2V0YCB0eXBlIHRvIGBBcnJheWAgYnkgZGVmYXVsdCB0byBhdm9pZCBicmVha2luZyBjaGFuZ2VzIHZzIGNsaWVudHMgZ2VuZXJhdGVkIHdpdGggMC4xNi54LiAKIyMgMC4xNy4yCiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogUmVtb3ZlIGxlYWRpbmcgY29tbWVudCBmcm9tIHR5cGVzY3JpcHQgZmlsZXMgc28gdGhhdCB0aGVyZSBhcmUgZmV3ZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiBmaWxlcyB3aGVuIHJlZ2VuZXJhdGluZyB3aXRoIGEgbmV3IHNwZWMgdmVyc2lvbiAoaW5mbyBtb3ZlZCB0byBSRUFETUUpCiAgKiBSZW1vdmUgbGljZW5jZSBmaWVsZCBmcm9tIHBhY2thZ2UuanNvbgojIyAwLjE3LjEKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBBZGRlZCBhcnRpZmFjdCBpbmZvcm1hdGlvbiB0byBnZW5lcmF0ZWQgcGFja2FnZS5qc29uCiMjIDAuMTcuMAoqIEdlbmVyYWwKICAqIFJlbW92ZWQgUkFNTCBTdXBwb3J0CiAgKiBSZW1vdmVkIGN1c3RvbSBKYXZhU2NyaXB0IGNsaWVudAogICogVXBkYXRlIE9wZW5BUEkgVG9vbHMgdG8gNi4yLjEKKiBCb2F0IEphdmEgR2VuZXJhdG9yCiAgKiBKYWthcnRhIEVFIDkgY29tcGF0aWJpbGl0eQogICogYHNwcmluZy1tdmNgIGxpYnJhcnkgaXMgcmVtb3ZlZCBiZWNhdXNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgT3BlbkFQSSBUb29scyBhbnltb3JlCiAgKiBVc2Ugb2YgYFNldGAgZm9yIHVuaXF1ZSBpdGVtcyBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0IGFzIE9wZW5BUEkgR2VuZXJhdG9yIGZpeGVkIHRoZWlyIGltcGxlbWVudGF0aW9uCiMjIDAuMTYuMTUKKiBCb2F0IGVuZ2luZQogICogRml4OiBQcm9jZXNzaW5nIG9mIGEgc2luZ2xlIHN0cmluZyB0eXBlIGV4YW1wbGUgb24gbWVkaWEtdHlwZS4KKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBOZXcgZm9ybWF0IGZvciBBbmd1bGFyIG1vY2tzLCB3aGljaCBhcmUgbm93IGV4cG9ydCBhbiBhcnJheSB3aXRoIHJlc3BvbnNlcy4KIyMgMC4xNi4xMwoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIGBAYW5ndWxhci9jb21tb25gIGFkZGVkIGFzIGEgcGVlciBkZXBlbmRlbmN5IGluIHRoZSBnZW5lcmF0ZWQgcGFja2FnZS5qc29uIGZpbGVzCiMjIDAuMTYuMTIKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBSZW1vdmUgbGVhZGluZyBjb21tZW50IGZyb20gdHlwZXNjcmlwdCBmaWxlcyBzbyB0aGF0IHRoZXJlIGFyZSBmZXdlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIGZpbGVzIHdoZW4gcmVnZW5lcmF0aW5nIHdpdGggYSBuZXcgc3BlYyB2ZXJzaW9uIChpbmZvIG1vdmVkIHRvIFJFQURNRSkKICAqIFJlbW92ZSBsaWNlbmNlIGZpZWxkIGZyb20gcGFja2FnZS5qc29uCiMjIDAuMTYuMTEKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBTZXQgYHJlbW92ZUNvbW1lbnRzOiBmYWxzZWAgaW4gZ2VuZXJhdGVkIHRzY29uZmlnLmpzb24gZmlsZXMgdG8gcmV0YWluIGAvKiNfX1BVUkVfXyovYCBhbm5vdGF0aW9uIGluIGNvbXBpbGVkIEpTLgojIyAwLjE2LjEwCiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogUmVtb3ZlIHR5cGVzIGZyb20gZ2VuZXJhdGVkIG1vY2sgcHJvdmlkZXJzIGR1ZSB0byBhIFR5cGVTY3JpcHQgd2hpY2ggcHJldmVudHMgYC8qI19fUFVSRV9fKi9gIGFubm90YXRpb24gZnJvbSB3b3JraW5nCiMjIDAuMTYuOQoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIFVzZSBvZiBgLyojX19QVVJFX18qL2AgZm9yIGBjcmVhdGVNb2Nrc2AgZnVuY3Rpb24gY2FsbCBpbiB0ZW1wbGF0ZXMgdG8gZW5hYmxlIHRyZWUtc2hha2luZwojIyAwLjE2LjYKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBVc2UgYF5gIGluc3RlYWQgb2YgYD49YCBmb3IgYGRldkRlcGVuZGVuY2llc2AgaW4gdGhlIGdlbmVyYXRlZCBwcm9qZWN0LCBzbyBwcm9qZWN0IHdpbGwgYmUgYnVpbHQgdXNpbmcgY29ycmVjdCB0YXJnZXQgdmVyc2lvbiBvZiBuZy1wYWNrYWdyICYgdGhlIEFuZ3VsYXIgQ0xJCiAgKiBEZWNsYXJlIHNvbWUgZXh0cmEgYGRldkRlcGVuZGVuY2llc2AgYXQgZXhwbGljaXQgdmVyc2lvbnMgdG8gZml4IGBucG0gaW5zdGFsbGAgaXNzdWVzIGluIHRoZSBnZW5lcmF0ZWQgcHJvamVjdCB3aGVuIHVzaW5nIGBucG1gIHY4CiMjIDAuMTYuNQoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIEFsbG93IGFueSBmb3JtYXQgZm9yIHNwZWMgdmVyc2lvbnMuCiMjIDAuMTYuNAoqIEJvYXQgQW5ndWxhciBnZW5lcmF0b3IKICAqIEFkZCBhYmlsaXR5IHRvIGJha2UgdGhlIHNwZWMgdmVyc2lvbiB1c2VkIGluIHRoZSBwYWNrYWdlLmpzb24gZmlsZS4KIyMgMC4xNi4zCiogKk1hdmVuIFBsdWdpbioKICAqIERvIG5vdCB0cmVhdCBzcGFjZXMgYXMgZGVsaW1pdGVycyBpbiBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMgd2hpY2ggdGFrZSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHZhbHVlcy4KICAgIEZpeGVzIGFuIGlzc3VlIHRoYXQgcHJldmVudGVkIHRoZSB1c2Ugb2YgdGFnIG5hbWVzIGNvbnRhaW5pbmcgc3BhY2VzIGluIHRoZSBgYXBpc1RvR2VuZXJhdGVgIHByb3BlcnR5LgojIyAwLjE2LjIKKiBCb2F0IEFuZ3VsYXIgZ2VuZXJhdG9yCiAgKiBTcGVjaWZ5IG1pbmltdW0gQW5ndWxhci1yZWxhdGVkIHBhY2thZ2UgdmVyc2lvbnMgd2hlbiBBbmd1bGFyIHYxMyBpcyB1c2VkCiMjIDAuMTYuMQoqIEJvYXQgSmF2YSBnZW5lcmF0b3IKICAqIEphdmEgMTcgY29tcGF0aWJpbGl0eSB1cGRhdGUKIyMgMC4xNi4wCiogQm9hdCBBbmd1bGFyIGdlbmVyYXRvcgogICogVXNlIGA+PWAgZm9yIG1haW4gcGVlciBkZXBlbmRlbmN5IHRvIGltcHJvdmUgZm9yd2FyZCBjb21wYXRpYmlsaXR5CiMjIDAuMTUuOAoqICpCb2F0IFNjYWZmb2xkKgogICogTWFrZXMgc3VyZSB0byBub3QgYXV0b2dlbmVyYXRlIGV4YW1wbGVzIGZyb20gc2NoZW1hIGlmIGV4YW1wbGVzIGFyZSBhbHJlYWR5IHByZXNlbnQKIyMgMC4xNS42CiogKk1hdmVuIFBsdWdpbioKICAqIEFkZCBleGFtcGxlIG9mIHVzZSB0aGUgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGxpa2UgY3JlYXRlQXBpQ29tcG9uZW50CiogKkJvYXQgQW5ndWxhciBnZW5lcmF0b3IqCiAgKiBHZW5lcmF0ZSB0aGUgYG5nLXBhY2thZ2UuanNvbmAgZmlsZSBmb3IgdXNlIHdpdGggdGhlIGBuZy1wYWNrYWdlYCBDTEkKIyMgMC4xNS41CiogKkJvYXQgTGludCoKICogQnVtcGVkIHZlcnNpb24gb2YgWmFsbHkgTGludGluZyBMaWJyYXJpZXMgdGhhdCBjb250YWluIHNldmVyYWwgdnVsbmVyYWJpbGl0eSBmaXhlcwojIyAwLjE1LjQKKiAqQm9hdCBBbmd1bGFyIGdlbmVyYXRvcioKICAqIEVuYWJsZSBwYXJ0aWFsIEl2eSBjb21waWxhdGlvbiBmb3IgbGlicmFyaWVzLgojIyAwLjE1LjMKKiAqQm9hdCBTY2FmZm9sZCoKICogQSBmaXggZm9yIG1hcHBpbmcgb2YgTWFwIGZvciBxdWVyeSBwYXJhbXMgKGluIGNsaWVudCBjb2RlKS4gCiMjIDAuMTUuMgoqICpNYXZlbiBQbHVnaW4qCiAgKiBGaXhlZCBoYW5kbGluZyBvZiBhYnNvbHV0ZSBmaWxlIHBhdGhzIGZvciBsaW50aW5nIE9wZW5BUEkgc3BlY3MKICAqIENoYW5nZWQgYm9hdC1iYXkgZGF0ZUxpYnJhcnkgZm9yIHVwbG9hZCBzcGVjIC4KIyMgMC4xNS4xCiogKk1hdmVuIFBsdWdpbioKICAqIE1hZGUgYGJvYXQ6cmFkaW9gIGdvYWwgcHJvcGVydGllcyB3LnIudCBib2F0LWJheSBzZXJ2ZXIgdW5pcXVlLgojIyAwLjE1LjAKKiAqTWF2ZW4gUGx1Z2luKgogICogQWRkZWQgbmV3IGdvYWwgYGJvYXQ6cmFkaW9gOyBzZWUgdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBbcGx1Z2luICoqZG9jdW1lbnRhdGlvbioqXShib2F0LW1hdmVuLXBsdWdpbi9SRUFETUUubWQjYm9hdHJhZGlvKS4KIyMgMC4xNC4xMgoqICpCb2F0IFNjYWZmb2xkKgogICogUmVmZXJlbmNlcyB0byAvZXhhbXBsZXMvZm9vIG5vdyBhcmUgYWxzbyBkZXJlZmVyZW5jZWQKIyMgMC4xNC4xMAoqICpCb2F0IFNjYWZmb2xkKgogICogTWFrZXMgc3VyZSB0byBVUkxEZWNvZGUgcGF0aHMgd2hpbGUgZGVyZWZlcmVuY2luZyBleGFtcGxlcwojIyAwLjE0LjkKKiAqQm9hdCBTY2FmZm9sZCoKICAqIFJlc29sdmUgcmVmZXJlbmNlcyB0byBvdGhlciBwYXRoIG9wZXJhdGlvbnMnIGV4YW1wbGVzCgojIyAwLjE0LjgKKiAqQm9hdCBNYXJpbmEqCiAgKiBSZW1vdmVzIGZsYXRPYmplY3RzIGFzIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQKICAqIHJlc3BvbnNlLm1lc3NhZ2Ugd2FzIHdyb25nZnVsbHkgZXNjYXBlZCwgZXNjYXBpbmcgaW4gdGhlIGRvY3MgdGVtcGxhdGUgaW5zdGVhZAogICogV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZ2VuZXJhdGUgbW9kZWwgYWxpYXNlcyBpbiBib2F0IG1hcmluYQojIyAwLjE0LjcKKiAqQm9hdCBNYXJpbmEqCiAgKiBFeHBvcnRzIGZsYXRPYmplY3RzIGFzIGEgbW9kZWwgdG8gcHJldmVudCBlcnJvcnMgd2l0aCByZWZlcmVuY2VzCiMjIDAuMTQuNiAKKiAqTWF2ZW4gUGx1Z2luKgogICogQWRkZWQgYGJvYXQ6c2hpcGAgbW9qbyB0byBhdXRvbWFnaWNhbGx5IHppcCBzcGVjcyBmb3VuZCBpbiBgc3JjL21haW4vcmVzb3VyY2VzYCBhbmQgYXR0YWNoIGl0IHRvIHRoZSBwcm9qZWN0IHJlYWN0b3Igc28gYG12biBpbnN0YWxsYCBvciBgbXZuIGRlcGxveWAgd2lsbCBhbHNvIGluY2x1ZGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgcHJvamVjdCB3aXRoIHdpdGggYGFwaWAgY2xhc3NpZmllcgogICogQ2hhbmdlZCBgYm9hdDpidW5kbGVgICBgaW5jbHVkZXNgIHBhcmFtZXRlciB0byBhbiBhcnJheSBvZiBwYXR0ZXJucyB0byBhbGxvdyByZWN1cnNpdmUgcGF0dGVycyB0byBkaXNjb3ZlciBPcGVuQVBJcyAKKiAqQm9hdCBTY2FmZm9sZCoKICAqIEZpeGVkIGJ1ZyBpbiB0eXBlc2NyaXB0IGdlbmVyYXRvciB3aGVyZSBvbmx5IG9uZSBvZiB0aGUgb3ZlcmxvYWRlZCBmdW5jdGlvbiBzaWduYXR1cmVzIHBlciBkZXByZWNhdGVkIGVuZHBvaW50IHdhcyBtYXJrZWQgYXMgZGVwcmVjYXRlZC4KCgojIyAwLjE0LjUKKiAqQm9hdCBNYXJpbmEqCiAgKiBBZGRlZCBgYm9hdC1tYXJrZXJzYCBkaXJlY3RvcnkgaW4gdGFyZ2V0IHRvIGtlZXAgdHJhY2sgb2Ygc3VjY2Vzc2Z1bCBhbmQgdW5zdWNjZXNzZnVsIGFjdGlvbnMgb24gT3BlbkFQSSBzcGVjcwoKIyMgMC4xNC40CgoqICpCb2F0IE1hcmluYSoKICAqIEFkZGVkIGEgbm93IEJPQVQgU2NhZmZvbGQgdGVtcGxhdGUgY2FsbGVkIE1hcmluYSwgYXMgdGhhdCBpcyB3aGVyZSB0aGUgbW9kZWxzIGhhbmcgb3V0LiBUaGUgQm9hdCBNYXJpbmEgdGVtcGxhdGUgb3V0cHV0cyBhIHNpbmdsZSBKU09OIGZpbGUgdGhhdCBpcyB1c2VkIHRvIG9mZmVyIGEgcmljaCB1c2VyIGludGVyZmFjZSBidWlsdCBmcm9tIHRoZSBzcGVjcyBpbmNsdWRpbmcgc2VhcmNoLCBwYWdlIHBlciBvcGVyYXRpb24gYW5kIG1hbnkgbW9yZSBmZWF0dXJlcyEKCiogKk1hdmVuIFBsdWdpbioKICAgICogVGhlIGJvYXQ6ZG9jIGdvYWwgbm93IHJlY3Vyc2l2ZWx5IHNlYXJjaCBPcGVuQVBJIHNwZWNzIGluIGEgZGlyZWN0b3J5IHRvIGdlbmVyYXRlIGRvY3MgZm9yIGVhY2ggZm91bmQgc3BlYy4gIAoKIyMgMC4xNC4zCgoqICpNYXZlbiBQbHVnaW4qCiAgKiBBZGRlZCBuZXcgZ29hbCBgYm9hdDp0cmFuc2Zvcm1gOyBzZWUgdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBbcGx1Z2luIGRvY3VtZW50YXRpb25dKGJvYXQtbWF2ZW4tcGx1Z2luL1JFQURNRS5tZCNib2F0dHJhbnNmb3JtKS4KCiMjIDAuMTQuMgoqICpBbmd1bGFyIEdlbmVyYXRvcioKICAqIEFkZGVkIHN1cHBvcnQgZm9yIEFuZ3VsYXIgdmVyc2lvbiByYW5nZXMgaW4gcGVlciBkZXBlbmRlbmNpZXMKICAKIyMgMC4xNC4xCiogKkFuZ3VsYXIgR2VuZXJhdG9yKgogICogQWRkZWQgc3VwcG9ydCBmb3IgQW5ndWxhciAxMQogIAojIyAwLjE0LjAKKiAqQW5ndWxhciBHZW5lcmF0b3IqCiAgKiBTaW1wbGlmeSBBbmd1bGFyIGdlbmVyYXRvciBvcHRpb25zIGJ5IHJlbW92aW5nIHRoZSB1bnVzZWQgb25lcyAod2l0aEludGVyZmFjZXMscHJvdmlkZWRJblJvb3QpCiAgKiBmaXggTW9jayBpcyBub3QgZ2VuZXJhdGVkIGlmIEh0dHAgc3RhdHVzIGVxdWFscyB0byAyMDEgKFNESy0yMzg4KQoKIyMgMC4xMy4wCiogKkxpbnQqCiAgKiBBZGRlZCBydWxlcy4gCiAgICAqIENoZWNrIHBsdXJhbHMgb24gcGF0aHMgcmVzb3VyY2UgbmFtZXMuIAogICAgKiBDaGVjayBwcmVmaXggZm9yIHBhdGhzIHNob3VsZCBjb250YWluIHZlcnNpb24uCiAgKiBFbmFibGVkIHJ1bGVzLgogICAgKiBVc2UgU3RhbmRhcmQgSFRUUCBTdGF0dXMgQ29kZXMuCgojIyAwLjEyLjAKKiAqR2VuZXJhbCoKICAqIEltcHJvdmVkIGNvZGUgcXVhbGl0eQogICogQWRkZWQgbW9yZSB1bml0IHRlc3RzCiAgKiBBZGRlZCBtb3JlIHJlYWxpc3RpYyBleGFtcGxlIHByb2plY3RzIGluIGJvYXQtbWF2ZW4tcGx1Z2luCiAgKiBBZGRlZCBoZWxwOmRlc2NyaWJlIHN1cHBvcnQgZm9yIGJvYXQtbWF2ZW4tcGx1Z2luCiAgKiBGaXhlZCBidWlsZGluZyBpbiBXaW5kb3dzIAoqICpCb2F0IERvY3MqCiAgKiBSZW5kZXIgcmVzcG9uc2UgZXhhbXBsZXMgZnJvbSByZXNwb25zZSBpbnN0ZWFkIG9mIHNjaGVtYSBvYmplY3QKKiAqTGludCoKICAqIEFkZGVkIGFkZGl0aW9uYWwgcnVsZXMuIAogICAgKiBDaGVjayB4LWljb24gdmFsdWUgaW4gdGhlIGluZm8gYmxvY2suCiAgICAqIENoZWNrIGluZm8gYmxvY2sgZGVzY3JpcHRpb24uCiAgICAqIENoZWNrIHRhZ3MgYWxsb3dlZC4KICAgICogQ2hlY2sgaW5mbyBibG9jayB0aXRsZS4KICAgICogQ2hlY2sgcHJlZml4IGZvciBwYXRocy4gaS5lLiAiY2xpZW50LWFwaSIsICJzZXJ2aWNlLWFwaSIsICJpbnRlZ3JhdGlvbi1hcGkiCiAgKiBJZ25vcmUgWmFsYW5kbyBSdWxlc2V0IGJ5IGRlZmF1bHQgaW4gYm9hdC1tYXZlbi1wbHVnaW4KICAKIyMgMC4xMS40CiogKkphdmEgVGVtcGxhdGVzKgogICogQ29ycmVjdCB0aGUgaW1wb3J0IGFuZCB1c2Ugb2YgQFF1YWxpZmllciBpbiBBcGlDbGllbnQgdGVtcGxhdGUKICAqIE9ubHkgY2hhbmdlIGJhc2UgdHlwZSB3aGVuIGRhdGUgdXNlU2V0Rm9yVW5pcXVlTmFtZXMgaXMgc2V0IHRydWUKICAgIAoqICpCb2F0IERvY3MqCiAgKiBIYW5kbGUgZXhhbXBsZXMgZm9yIE1lZGlhVHlwZXMgd2l0aG91dCBTY2hlbWFzIChzdWNoIGFzIHRleHQvY3N2KQogIAojIyAwLjExLjMKCiogKkFuZ3VsYXIgR2VuZXJhdG9yKgogICogQXBwbHkgdGhlIGNvcnJlY3QgcmV0dXJuIHR5cGUgd2hlbiBtdWx0aXBsZSByZXNwb25zZXMgYXJlIHByZXNlbnQKICAqIEdlbmVyYXRlIG1vY2tzIGZvciBleGFtcGxlcyBkZWZpbmVkIGluIGRlcmVmZXJlbmNlZCBzY2hlbWFzCiAgCiMjIDAuMTEuMQoKKiAqSmF2YSBHZW5lcmF0b3IgLSBib2F0LXNwcmluZyBsaWJyYXJ5KgogICogRml4ZWQgcmVhY3RpdmUgc3ByaW5nIHRlbXBsYXRlcwogICogQXZvaWQgaW1wb3J0aW5nIGBIdHRwU2VydmxldFJlc3BvbnNlYCB3aGVuIHVzaW5nIHJlYWN0aXZlCiogKkFuZ3VsYXIgR2VuZXJhdG9yKgogICogSGFuZGxlIGVtcHR5IGJvZGllcyBwcm9wZXJseSBpbiBNb2NrIGdlbmVyYXRpb24KICAqIFVwZGF0ZSBmb3VuZGF0aW9uLWFuZyB0byBsYXRlc3QgdmVyc2lvbgoKIyMgMC4xMS4wCgoqICpNYXZlbiBQbHVnaW4qCiAgICogQWRkZWQgYHJlbW92ZUV4dGVuc2lvbnNgIG1vam8gcGFyYW1ldGVyIHRvIGBib2F0OmJ1bmRsZWAgdG8gZmlsdGVyIG91dCB0aGUgZ2l2ZW4gdmVuZG9yIGV4dGVuc2lvbnMgZnJvbSBidW5kbGUuCiAgICogQWRkZWQgYGluY2x1ZGVzYCBtb2pvIHBhcmFtZXRlciB0byBgYm9hdDpidW5kbGVgIGFzIGEgZ2xvYiBwYXR0ZXJuIHNlbGVjdGluZyB0aGUgc3BlY2lmaWNhdGlvbiBmaWxlcyAoZGVmYXVsdHMgdG8gYCoueWFtbGApLgogICAqIEFkZGVkIGBhcGlzVG9HZW5lcmF0ZWAgbW9qbyBwYXJhbWV0ZXIgdG8gYGJvYXQ6Z2VuZXJhdGVgCiAgICogU2V0IHRoZSBkZWZhdWx0IG9mIGBodHRwVXNlckFnZW50YCB0byBgJHtwcm9qZWN0LmFydGlmYWN0SWR9LSR7cHJvamVjdC52ZXJzaW9ufWAuCgoqICpKYXZhIEdlbmVyYXRvciAtIHJlc3R0ZW1wbGF0ZSBsaWJyYXJ5KgogICogQWRkZWQgYHVzZVdpdGhNb2RpZmllcnNgIG9wdGlvbiB0byB1c2UgdGhlIGB3aXRoYCBwcmVmaXggZm9yIFBPSk8gbW9kaWZpZXJzIChkZWZhdWx0cyB0byBgZmFsc2VgKS4KICAqIGFkZGVkIGB1c2VTZXRGb3JVbmlxdWVJdGVtc2AgdG8gbWFwIGFycmF5cyBjb250YWluaW5nIGB1bmlxdWVJdGVtc2AgdG8gYFNldGAgKGRlZmF1bHRzIHRvIGBmYWxzZWApLgogICogQWRkZWQgYHVzZUNsYXNzTGV2ZWxCZWFuVmFsaWRhdGlvbmAgb3B0aW9uIChkZWZhdWx0cyB0byBgZmFsc2VgKS4KICAqIEFkZGVkIGB1c2VKYWNrc29uQ29udmVyc2lvbmAgdG8gdXNlIEphY2tzb24gZm9yIHBhcmFtZXRlcnMgY29udmVyc2lvbiBpbnN0ZWFkIG9mIGB0b1N0cmluZ2AgKGRlZmF1bHRzIHRvIGBmYWxzZWApLgogICogQWRkZWQgYHJlc3RUZW1wbGF0ZUJlYW5OYW1lYCB0byBxdWFsaWZ5IHRoZSBhdXRvd2lyZWQgUmVzdFRlbXBsYXRlIGJlYW4uCgoqICpBbmd1bGFyIEdlbmVyYXRvcioKICAqIEFkZGVkIGFuIEFuZ3VsYXIgY2xpZW50IGdlbmVyYXRvciBmb3IgdmVyc2lvbiAxMCBhbmQgdXAuIAogICAgVGhlIGdlbmVyYXRvciB0ZW1wbGF0ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgc3RhbmRhcmQgb25lIGF0IFtvcGVuYXBpLWdlbmVyYXRvci50ZWNoXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvKSwgd2l0aCB0aGUgYWRkaXRpb24gb2YgbW9jayByZXNwb25zZXMgYW5kIGEgc2V2ZXJhbCBmaXhlcywgYW1vbmcgd2hpY2g6CiAgICAqIEhhbmRsaW5nIG9mIHJlc2VydmVkIHR5cGVzY3JpcHQgd29yZHMKICAgICogQWRkZWQgc3VwcG9ydCBmb3IgVHlwZXNjcmlwdCBhbmQgSmF2YXNjcmlwdCBmb3IgZXNjYXBpbmcgb2Ygc3RyaW5ncyBpbiBnZW5lcmF0b3JzCiAgICAqIEVzY2FwaW5nIG9mIG1vZGVsIHByb3BlcnRpZXMgd2hlbiBub3QgdXNpbmcgYGNhbWVsQ2FzZWAKICAgICogU3VwcG9ydCBmb3IgbXVsdGlwbGUgYE1lZGlhVHlwZXNgCiAgKiBUbyBlbmFibGUgbW9ja3MgZ2VuZXJhdGlvbiwgc2V0IHRoZSBgd2l0aE1vY2tzYCBvcHRpb24gdG8gYHRydWVgICAKCiMjIDAuMTAuMAoqICpNYXZlbiBQbHVnaW4qCiAgICogYGJvYXQ6bGludGAgbW9qbyB3aWxsIGdlbmVyYXRlIGFuIEhUTUwgcmVwb3J0IGJhc2VkIG9uIEFQSSBHdWlkZWxpbmVzIAogICAqIGBib2F0OmRvY3NgIG1vam8gd2lsbCBnZW5lcmF0ZSBIVE1MIGRvY3VtZW50YXRpb24gZnJvbSBPcGVuQVBJIHNob3dpbmcgbXVsdGlwbGUgZXhhbXBsZXMgYW5kIHJlcXVlc3RzIGFzIHdlbGwgYXMgQ3VzdG9tIEFubm90YXRpb25zCiogR2VuZXJhbCBCdWcgRml4ZXMKKiBMaW50aW5nIFJ1bGUgRW5naW5lIGV4dGVuZGVkIHdpdGggcmVzZXJ2ZWQgd29yZCBsaW50aW5nCiogKipOT1RFKio6IFRoZSBsaW50IHJ1bGVzIGFyZSBzdGlsbCBpbiBkZXZlbG9wbWVudC4gVGhlIGRvY3VtZW50YXRpb24gaXMgc3RpbGwgaW4gdGhlIHdvcmtzLiAKCiMjIDAuOS4wCiogKk1hdmVuIFBsdWdpbioKICAqIEFkZGVkIGB2ZXJzaW9uYCBwYXJhbWV0ZXIgdG8gYGJ1bmRsZWAgZ29hbC4KICAqIEFkZGVkIGBidW5kbGVTcGVjc2AgcGFyYW1ldGVyIHRvIGBnZW5lcmF0ZWAgZ29hbCB0byBhdXRvbWF0aWNhbGx5IGJ1bmRsZSBzcGVjcyBpbnRvIHNpbmdsZSBmaWxlCiogTW9kZXJuaXNlZCBCT0FUIFRlcm1pbmFsCiogSW1wcm92ZWQgQk9BVDpEb2NzIFRlbXBsYXRlcwoqIFByb3Blcmx5IGRlcmVmZXJlbmNlIGV4YW1wbGVzCgojIyAwLjguMAoqIEltcHJvdmVkIHN0eWxpbmcgSFRNTCBkb2NzCiogcHJldmlldyBCT0FUOlFVQVkgbGludGluZyBtb2pvIGZvciBsaW50aW5nIE9wZW5BUEkgc3BlY3MuCiogQXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlcyB3aGVuIGRlcmVmZW5lbmNpbmcgT3BlbkFQSSBzcGVjcwoKIyMgMC43LjAKKiBSZW5kZXIgbXVsdGlwbGUgcmVxdWVzdHMgYW5kIGV4YW1wbGVzIGluIGJvYXQtZG9jcwoqIENyZWF0ZWQgSFRNTCB0ZW1wbGF0ZXMgZm9yIGJvYXQtZG9jcwoqIFByZXR0eSBQcmludCBKU09OIEV4YW1wbGVzCiogQWRkZWQgYm9hdDpkb2MgbW9qbyBmb3IgZ2VuZXJhdGluZyBiZWF1dGlmdWwgSFRNTDIgZG9jcwoKKiAqIFNwcmluZyBHZW5lcmF0b3IqCiAgKiBSZXN0b3JlZCBgSHR0cFNlcnZsZXRSZXF1ZXN0YCBwYXJhbWV0ZXIgKHJlZ3Jlc3Npb24pLgoqIEFkZGVkIGJvYXQ6eWFyZCB0byBjcmVhdGUgc3RhdGljIHdlYnNpdGUgYmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHNwZWNzCgojIyAwLjYuMAoqIHNpbXBsZSBmaXggdG8gY2hlY2sgZm9yIG51bGwgdmFsdWUgaW4gb3BlbkFwaS5nZXRDb21wb25lbnRzKCkuZ2V0U2NoZW1hcygpCiogYWJpbGl0eSB0byByZXNvbHZlIHJlZmVyZW5jZXMgbGlrZSAjL2NvbXBvbmVudHMvc2NoZW1hcy9teU9iamVjdC9pdGVtcyBvciAjL2NvbXBvbmVudHMvc2NoZW1hcy9teU9iamVjdC9wcm9wZXJ0aWVzL2VtYmVkZGVkT2JqZWN0Ciogc2ltcGxlIGZpeCB0byBhdm9pZCBucGUgaW4gU3RhdGljSHRtbDJHZW5lcmF0aW9uIGVzY2FwaW5nIHJlc3BvbnNlIG1lc3NhZ2UuCgojIyAwLjUuMAoKKiBBZGQgRGVyZWZlcmVuY2VDb21wb25lbnRzUHJvcGVydGllc1RyYW5zZm9ybWVyICh0aGF0IGRvZXMgYSBiaXQgZXh0cmEpCiogRml4IHJlY3Vyc2l2ZSByZWZlcmVuY2luZyBpbiBVbkFsaWFzVHJhbnNmb3JtZXIKCiMjIDAuNC4wCiogQWRkZWQgYnVuZGxlIHNraXAKKiBDaGFuZ2VkIG51bWJlcmluZyBzY2hlbWUKCiMjIDAuMy4wCgoqICpNYXZlbiBQbHVnaW4qCiAgKiBBZGRlZCBgYnVuZGxlLnNraXBgIHBhcmFtZXRlciB0byBgYnVuZGxlYCBnb2FsIChkZWZhdWx0cyB0byBmYWxzZSkuCgoqICpIVE1MMiBHZW5lcmF0b3IqCiAgKiBSZW1vdmVzIGV4YW1wbGVzCiAgKiBBZGRzIHRpdGxlIG9mIEFQSSB0byB0aGUgbGVmdCBuYXZpZ2F0aW9uCiAgKiBSZW1vdmVzIHVubmVjZXNzYXJ5IHNwYWNlcyBpbiB0aGUgZG9jcwogICogRml4ZXMgaXRlbSBmb2N1cyBvbiBsZWZ0IG5hdmlnYXRpb24KICAqIFVwZGF0ZXMgSnNvbiBTY2hlbWEgUmVmIFBhcnNlciBsaWJyYXJ5CiAgKiBVcGRhdGVzIEpzb24gc2NoZW1hIHZpZXcgbGlicmFyeQogICogQWRkcyBzdXBwb3J0IGZvciBhbGxPZiB3aXRoIEpzb24gc2NoZW1hIG1lcmdlIGFsbCBvZiBodHRwczovL2dpdGh1Yi5jb20vbW9ra2Fib25uYS9qc29uLXNjaGVtYS1tZXJnZS1hbGxvZgogICogRml4ZXMgaGVhZGVyIHgtIHBhcmFtcyBiZWluZyBlc2NhcGVkLiBlZyBYLVRvdGFsLUNvdW50IHRvIFhNaW51c1RvdGFsTXVuaXNDb3VudAogICogRml4ZXMgbWFya2Rvd24gaW4gZGVzY3JpcHRpb24gbm90IGJlaW5nIGVzY2FwZWQgYW5kIGJyZWFraW5nIGphdmFzY3JpcHQuCiAgKiBGaXhlcyBtaXNzaW5nIHJlZmVyZW5jZXMgdG8gZXh0ZW5kZWQgc2ltcGxlIHR5cGVzIChzZXQgYHVuQWxpYXNgIG9wdGlvbiB0byB0cnVlKS4KICAqIEZpeGVzIG1pc3NpbmcgcmVmZXJlbmNlcyBiZWNhdXNlIGNvbmZ1c2lvbiBvdmVyIHdoZXRoZXIgdG8gcmVmZXJlbmNlIG5hbWUgb3IgY2xhc3NuYW1lLgogICogTW92ZWQgdGhlIGNvZGUgZ2VuZXJhdGlvbiBpbnRvIGEgc2VwYXJhdGUgbW9kdWxlIHRvIGJlIHVzZWQgYnkgb3RoZXIgQk9BVCBjb21wb25lbnRzLgogICogQ2xlYW5pbmcgdXAgZGVwZW5kZW5jaWVzCiAgKiBBZGRlZCBib2F0OmJ1bmRsZSBtb2pvIHRvIGJ1bmRsZSBmcmFnbWVudHMgaW50byBhIHNpbmdsZSBzcGVjLgogICogYm9hdDpidW5kbGUgdW5hbGlhc2VzIHRoZSBzcGVjLiAKCiogKlNwcmluZyBHZW5lcmF0b3IqCiAgKiBBZGRlZCBgdXNlV2l0aE1vZGlmaWVyc2AgdG8gdXNlIHRoZSBgd2l0aGAgcHJlZml4IGZvciBQT0pPIG1vZGlmaWVycyAoZGVmYXVsdHMgdG8gYGZhbHNlYDsgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIFJBTUwgZ2VuZXJhdG9yIG11c3QgYmUgc2V0IHRvIGB0cnVlYCkuCiAgKiBGaXhlZCB4LWFic3RyYWN0IGV4dGVuc2lvbiAobm90IGdlbmVyYXRlZCkKICAqIFJlc2V0IHRoZSBkZWZhdWx0cyBvZiB0aGUgb3B0aW9ucyBhZGRlZCBpbiAwLjIuNyB0byBhdm9pZCBicmVha2luZyBjaGFuZ2VzLgogICAgLSB1c2VMb21ib2tBbm5vdGF0aW9uczogZmFsc2UKICAgIC0gb3BlbkFwaU51bGxhYmxlOiB0cnVlCiAgICAtIHVzZVNldEZvclVuaXF1ZUl0ZW1zOiBmYWxzZQoKIyMgMC4yLjcKCiogKlNwcmluZyBHZW5lcmF0b3IqCiAgKiBhZGRlZCBpbi1jb250YWluZXIgdmFsaWRhdGlvbiwgZS5nLiBgTGlzdDxAU2l6ZShtYXggPSAzNikgU3RyaW5nPmAgKHNlZSBbSlNSLTM4MCAtIENvbnRhaW5lciBlbGVtZW50IGNvbnN0cmFpbnRzXShodHRwczovL2JlYW52YWxpZGF0aW9uLm9yZy8yLjAvc3BlYy8jY29uc3RyYWludGRlY2xhcmF0aW9udmFsaWRhdGlvbnByb2Nlc3MtY29udGFpbmVyZWxlbWVudGNvbnN0cmFpbnRzKSkuCiAgKiBhZGRlZCB2ZW5kb3IgZXh0ZW5zaW9uczogYHgtYWJzdHJhY3RgLCBgeC1pbXBsZW1lbnRzYC4KICAqIGFkZGVkIGB1c2VMb21ib2tBbm5vdGF0aW9uc2Agb3B0aW9uIChkZWZhdWx0cyB0byBgdHJ1ZWApCiAgKiBhZGRlZCBgb3BlbkFwaU51bGxhYmxlYCBvcHRpb24gKHRha2VuIGZyb20gNS4wLCAgYnJlYWtpbmcgY2hhbmdlLCBkZWZhdWx0cyB0byBgZmFsc2VgLCBzZXQgdG8gYHRydWVgIGlmIG5vdCByZWFkeSkuCiAgKiBhZGRlZCBgdXNlU2V0Rm9yVW5pcXVlSXRlbXNgIHRvIG1hcCBhcnJheXMgd2l0aCBgdW5pcXVlSXRlbXNgIHRvIGBTZXRgIGluc3RlYWQgb2YgYExpc3RgIChicmVha2luZyBjaGFuZ2UsIGRlZmF1bHRzIHRvIGB0cnVlYCwgc2V0IHRvIGBmYWxzZWAgaWYgbm90IHJlYWR5KS4KICAqIGFkZGVkIGBhZGRpdGlvbmFsRGVwZW5kZW5jaWVzYCB0byBiZSB1c2VkIGluIGBzcHJpbmctYm9vdC9wb20ubXVzdGFjaGVgIHRlbXBsYXRlLgogICogZm9ybWF0dGVkIG1ldGhvZCBwYXJhbWV0ZXJzLgoKKiAqTWF2ZW4gUGx1Z2luKgogICogYWRkZWQgYGFkZFRlc3RDb21waWxlU291cmNlUm9vdGAgd2hpY2ggYWRkcyB0aGUgb3V0cHV0IGRpcmVjdG9yeSB0byB0aGUgcHJvamVjdCBhcyBhIHRlc3Qgc291cmNlIHJvb3QuCiAgKiBhZGRlZCBgYXBpTmFtZVN1ZmZpeGAgdG8gY3VzdG9taXNlIHRoZSBuYW1lIG9mIHRoZSBBUEkgaW50ZXJmYWNlLgogICogY29ycmVjdGVkIGBnZW5lcmF0b3JOYW1lYCBwcm9wZXJ0eSB0byBwb2ludCB0byBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRvck5hbWVgLgogICogZml4ZWQgdGhlIGNvZGUgZ2VuZXJhdGVkIGZvciBwcm9wZXJ0aWVzIG9mIHR5cGUgYE1hcGAgaW4gbW9kZWwuCiAgKiByZWZhY3RvcmVkIGBHZW5lcmF0ZU1vam9gIHNvIGBtdm4gYm9hdDpnZW5lcmF0ZSAtRGNvZGVnZW4uY29uZmlnSGVscCAtRG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0b3JOYW1lPXNwcmluZ2Agd29ya3MgY29ycmVjdGx5LgogICogdGVzdCB0aGUgZ2VuZXJhdGVkIGNvZGUgaW4gdGhlIGludGVncmF0aW9uIHRlc3QgcGhhc2UKCiMjIDAuMi42CiogRW5zdXJlIFJBTUwgdHJhaXRzIHRoYXQgYXJlIGNvbnZlcnRlZCB0byBPQVMgZXh0ZW5zaW9ucyBhcmUgYWxsIHVzaW5nIGxvd2VyIGNhc2UuIAoKIyMgMC4yLjUgCiogRml4ZWQgYSBidWcgaG93IGR1cGxpY2F0ZSBuYW1lcyBhcmUgZ2VuZXJhdGVkIGlmIFJBTUwgc291cmNlIGhhcyBkdXBsaWNhdGUgbmFtZXMgZm9yIHJlZmVyZW5jZXMuIFRoZSBwYXJlbnQgcmVzb3VyY2UgbmFtZSBpcyBub3cgcHJlcGVuZGVkIHRvIHRoZSBzY2hlbWEgbmFtZSB3aXRob3V0IHJlbW92aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgcGFyZW50IHJlc291cmNlIG5hbWUKKiBGaXhlZCBhIGJ1ZyB3aGVuIGluIFJBTUwgcmVzb3VyY2VzIHdlcmUgaW5saW5lIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBnbG9iYWwgdHlwZSByZWZlcmVuY2VzIGZvciBSZXF1ZXN0IEJvZGllcyBjYXVzaW5nIFJlc3BvbnNlIFNjaGVtYXMgYmVpbmcgcmVmZXJlbmNlZCBhcyBSZXF1ZXN0IEJvZGllcwoKIyMgMC4yLjQgLSBCcmVha2luZyBDaGFuZ2UhCiogKipDaGFuZ2VkIGhvdyBvcGVyYXRpb25JZHMgYXJlIGdlbmVyYXRlZCoqLiBUaGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gZW5kZWQgdXAgZ2VuZXJhdGluZyB2ZXJ5IGxvbmcgYW5kIGNvbmZ1c2luZyBuYW1lcy4gCiAgICBUaGUgaW1wcm92ZWQgZ2VuZXJhdG9yIGdyZWF0bHkgaW1wcm92ZXMgdGhlIG5hbWVzIG9mIG9wZXJhdGlvbklkIHdoZW4gY29udmVydGluZyBmcm9tIFJBTUwgdG8gT0FTMwoqIERlZmF1bHQgdmVyc2lvbiBvZiBPcGVuQVBJIGlzIG5vdyAqKjMuMC4zKioKKiBHZW5lcmF0ZWQgU1RVQlMgYW5kIENsaWVudHMgbXVzdCBiZSByZWZhY3RvcmVkIHRvIHVzZSB0aGUgbmV3IG5hbWVzISBJdCBzaG91bGQgbm90IGFmZmVjdCB0aGUgbmFtZXMgb2YgU2NoZW1hcyBjb252ZXJ0ZWQgZnJvbSBSQU1MLiAKCgojIyAwLjIuMwoqIFVzZSBSQU1MIERpc3BsYXkgTmFtZSBhcyBTdW1tYXJ5IG9uIEh0dHAgT3BlcmF0aW9ucyB3aGVuIGNvbnZlcnRpbmcgdG8gT0FTMwoqIEFsc28gaW5jbHVkZSBpbnRlZ3JhdGlvbi1zcGVjIGFuZCBhcnRpZmFjdHMgZW5kaW5nIG9uIHNwZWNzIGFzIGRlZmF1bHQgZm9yIGNvbnZlcnNpb24gdXNpbmcgYGV4cG9ydC1kZXBgCiogRml4IEhUTUwyIFRpdGxlcwoKIyMgMC4yLjIKKiBGaXhlZCBlbnVtIGNvbnZlcnNpb24uIEVtcHR5IGVudW1zIGFyZSBub3cgc2V0IHRvIG51bGwgYWdhaW4gd2hlbiBjb252ZXJ0aW5nIGZyb20gcmFtbCB0byBPcGVuQVBJCiogQWRkZWQgbW9yZSByb2J1c3QgY29kZSBnZW4gbW9qb3MKCgojIyAwLjIuMQoqIEltcHJvdmVkIE9wZW4gQVBJIERpZmYKKiBTb25hciBGaXhlcyAKCiMjIDAuMi4wCiogQ3JlYXRlZCBuZXcgQ29kZSBHZW5lcmF0aW9uIE1vam9zIHdpdGggb3BpbmlvbmF0ZWQgc2V0dGluZ3MgZm9yCioqIEphdmEgQ2xpZW50IHdpdGggU3ByaW5nIFdlYkNsaWVudCAoUmVhY3RpdmUpCioqIEphdmEgU2VydmVyIFN0dWJzIGZvciBXZWJGbHV4IChSZWFjdGl2ZSkKKiogSmF2YSBDbGllbnQgd2l0aCBTcHJpbmcgUmVzdCBUZW1wbGF0ZSAoTm9uIFJlYWN0aXZlKQoqKiBKYXZhIFNlcnZlciBTdHVicyBmb3IgU3ByaW5nIFJlc3QgQ29udHJvbGxlciAoTm9uIFJlYWN0aXZlKQoqKiBJbXByb3ZlZCBKYXZhIENsaWVudCBBUEkncyB0byBiZXR0ZXIgY29wZSB3aXRoIHJlc2VydmVkIHdvcmRzCiogRXhwb3J0IERlcGVuZGVuY2llcyB3aWxsIG5vdyB0cmF2ZXJzZSB0aHJvdWdoIHRoZSBhcnRpZmFjdCB0byBmaW5kIGFsbCByYW1sIHNwZWNzCiogSW1wcm92ZWQgUkFNTCAyIE9wZW4gQVBJIGNvbnZlcnNpb24KKiBVcGdyYWRlZCBPcGVuQVBJIERpZmYgbGlicmFyeSB0byBtb3JlIGN1cnJlbnQgdmVyc2lvbgoqIE1vam8ncyBjYW4gbm93IGJyZWFrIHRoZSBidWlsZCBieSBzZXR0aW5nIGBjb250aW51ZU9uRXJyb3JgIHRvIGZhbHNlCgojIyAwLjEuOQoqIEltcHJvdmVkIGhvdyBzZXJ2aWNlcyBhcmUgbmFtZWQgYWZ0ZXIgYmFzZSB1cmwgY29udmVyc2lvbiB3YXMgaW50cm9kdWNlZC4KCiMjIDAuMS44CiogUmV2ZXJzZWQgbm9ybWFsaXphdGlvbiBvZiBzY2hlbWEgbmFtZXMgYXMgdGhhdCBjYXVzZXMgc3RhY2sgb3ZlcmZsb3cgZXJyb3JzLiAKKiBGaXhlZCBCYXNlIFVSTCBDb252ZXJzaW9uIGZyb20gUkFNTCB0byBPcGVuQVBJCiogU3BlY2lmeSBzY2hlbWEgdHlwZSB3aGVuIGFkZGluZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaW4gTWF2ZW4gcGx1Z2luIHVzaW5nIGBhZGRpdGlvbmFsUHJvcGVydGllc1R5cGVgIGNvbmZpZ3VyYXRpb24gb3B0aW9uCgoKIyMgMC4xLjcKKiBBZGRlZCBjb25maWd1cmFibGUgZmxhZyB0byBhZGQgSHR0cFNlcnZsZXRSZXF1ZXN0IHBhcmFtZXRlcnMgdG8gY29kZWdlbidkIHNlcnZlciBzdHVicy4KKiBFeHRyYWN0IGlubGluZSBleGFtcGxlcyBmcm9tIHRoZSBvYnRhaW5lZCBPcGVuQVBJIHNwZWMgYW5kIHB1dCB0aGVtIHVuZGVyICc8b3V0cHV0LWRpcj4vZXhhbXBsZXMvJyBhcyBqc29uIGZpbGVzLgoqIENoYW5nZWQgdGhlIG5vcm1hbGl6YXRpb24gb2YgU2NoZW1hIE5hbWVzIHRvIGVuc3VyZSBleGlzdGluZyBjYXNpbmcgaXMgbm90IGxvc3QKCiMjIDAuMS42CiogQWRkZWQgZG9jdW1lbnRhdGlvbiBvbiBib2F0LW1hdmVuLXBsdWdpbgoqIFVwZ3JhZGVkIFlBTUwgTGlicmFyaWVzIHRvIGltcHJvdmUgb3V0cHV0IG9mIFlBTUwgZmlsZXMKKiBVc2Ugc3RhbmRhcmRpemVkIHN3YWdnZXIgWUFNTCBvdXRwdXQKKiBBZGRlZCBCZWFuIFZhbGlkYXRvciBpbiBDb2RlIEdlbmVyYXRvcgoqIENoYW5nZWQgT3BlbiBBUEkgTG9hZGVyIHRvIGNvcnJlY3RseSByZXNvbHZlIHJlZmVyZW5jZXMgZnJvbSByZWFkaW5nIGlucHV0IGxvY2F0aW9uIGluc3RlYWQgb2Ygc3RyaW5nCgojIyAwLjEuNQoKKiBVcGdyYWRlZCBvcGVuYXBpLWdlbmVyYXRvciB0byA0LjMuMAoqIEZpeGVkIGphdmEgZG9jIGluIHRoZSBKYXZhIHRlbXBsYXRlcyB0byBhbGxvdyB1c2FnZSBpbiBKYXZhIDExIHByb2plY3RzCiogUmVuYW1lIHZhcmlhYmxlIG5hbWUgYGFjY2VwdGAgdG8gYGFjY2VwdE1lZGlhVHlwZWAgaW4gSmF2YSB0ZW1wbGF0ZXMgdG8gYWxsb3cgT3BlbkFQSSBTcGVjcyB3aXRoIHBhcmFtZXRlcnMgY2FsbGVkIGBhY2NlcHRgCgoKIyMgMC4xLjQKCiogRml4ZWQgdGVtcGxhdGUgZm9yIEhUTUwyIGdlbmVyYXRvcgoqIEluY2x1ZGUgY29udmVyc2lvbiBvZiBhcGkucmFtbCBmaWxlcyBmb3VuZCBpbiBkZXBlbmRlbmNpZXMKCiMjIDAuMS4zICAKCiogQWRkZWQgQ29kZSBHZW5lcmF0b3IgTW9qbyBmcm9tIG9uIFtvcGVuYXBpLWdlbmVyYXRvci50ZWNoXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvKSB3aXRoIGN1c3RvbSB0ZW1wbGF0ZXMgZm9yIEphdmEsIEphdmFTcHJpbmcgYW5kIEhUTUwyCiogUmVuYW1lZCBgZXhwb3J0YCB0byBgZXhwb3J0LWRlcGAgbW9qbyBmb3IgY29udmVydGluZyBSQU1MIHNwZWNzIHRvIG9hcyBmcm9tIGRlcGVuZGVuY2llcwoqIEFkZGVkIGBleHBvcnRgIG1vam8gZm9yIGNvbnZlcnRpbmcgUkFNTCBzcGVjcyBmcm9tIGlucHV0IGZpbGUKKiBBZGRlZCBOb3JtYWxpc2VyIHRyYW5zZm9ybWVyIGZvciB0cmFuc2Zvcm1pbmcgZXhhbXBsZXMgbmFtZXMgdG8gYmUgdXNlZCBpbiBKYXZhIGNvZGUgZ2VuZXJhdGlvbiAgYXMgZXhhbXBsZSBuYW1lcyBjYW5ub3QgaGF2ZSBzcGVjaWFsIGNoYXJhY3RlcnMuCiogSW1wcm92ZSBUaXRsZSBhbmQgRGVzY3JpcHRpb25zIG9mIGNvbnZlcnRlZCBSQU1MIHNwZWNzCiogQWx3YXlzIHdyYXAgZXhhbXBsZXMgaW4gZXhhbXBsZSBvYmplY3QKKiBNYW55IGNvZGUgaW1wcm92ZW1lbnRzIHRvIGJlIG5vdCBhc2hhbWVkIG9mIFNvbmFyIFJlcG9ydHMuICAKCgojIEJ1aWxkICYgSW5zdGFsbAoKYGBgc2hlbGwgc2NyaXB0Cm12biBpbnN0YWxsCmBgYAoKIyMgTWF2ZW4gUGx1Z2luIFVzYWdlCgpUaGUgZm9sbG93aW5nIGNvbW1hbmQgd2lsbCBnZW5lcmF0ZSBgaW5kZXguaHRtbGAgZmlsZSBpbiB0aGUgc3BlY2lmaWVkIG91dHB1dCBmb2xkZXIgdGhhdCBjb250YWlucyBBUEkgZW5kcG9pbnRzIGRlc2NyaXB0aW9uLiAgCiAKYGBgYmFzaAptdm4gYm9hdDpnZW5lcmF0ZUBnZW5lcmF0ZS1kb2NzCmBgYAoKIyMgR2VuZXJhdGUgQVBJIGludGVyZmFjZXMKCkNvbmZpZ3VyYXRpb24KYGBgCjxidWlsZD4KICA8cGx1Z2lucz4KICAgIDxwbHVnaW4+CiAgICAgIDxncm91cElkPmNvbS5iYWNrYmFzZS5vc3M8L2dyb3VwSWQ+CiAgICAgIDxhcnRpZmFjdElkPmJvYXQtbWF2ZW4tcGx1Z2luPC9hcnRpZmFjdElkPgogICAgICA8dmVyc2lvbj4ke2JvYXQtbWF2ZW4tcGx1Z2luLnZlcnNpb259PC92ZXJzaW9uPgogICAgICA8ZXhlY3V0aW9ucz4KICAgICAgICA8ZXhlY3V0aW9uPgogICAgICAgICAgPGlkPmdlbmVyYXRlLWFwaS1jb2RlPC9pZD4KICAgICAgICAgIDxnb2Fscz4KICAgICAgICAgICAgPGdvYWw+Z2VuZXJhdGU8L2dvYWw+CiAgICAgICAgICA8L2dvYWxzPgogICAgICAgICAgPHBoYXNlPmdlbmVyYXRlLXNvdXJjZXM8L3BoYXNlPgogICAgICAgICAgPGNvbmZpZ3VyYXRpb24+CiAgICAgICAgICAgIDxpbnB1dFNwZWM+JHtwcm9qZWN0LmJhc2VkaXJ9L3NyYy9tYWluL3Jlc291cmNlcy9hcGkueWFtbDwvaW5wdXRTcGVjPgogICAgICAgICAgICA8b3V0cHV0PiR7cHJvamVjdC5idWlsZC5kaXJlY3Rvcnl9L2dlbmVyYXRlZC1zb3VyY2VzL2FwaTwvb3V0cHV0PgogICAgICAgICAgICA8Z2VuZXJhdG9yTmFtZT5zcHJpbmc8L2dlbmVyYXRvck5hbWU+CiAgICAgICAgICAgIFsuLi5dCiAgICAgICAgICAgIDxjb25maWdPcHRpb25zPgogICAgICAgICAgICAgIDxsaWJyYXJ5PnNwcmluZy1ib290PC9saWJyYXJ5PgogICAgICAgICAgICAgIDxhcGlQYWNrYWdlPmNvbS5leGFtcGxlLm15LnNlcnZpY2UuYXBpLmludGVyZmFjZXM8L2FwaVBhY2thZ2U+CiAgICAgICAgICAgICAgPG1vZGVsUGFja2FnZT5jb20uZXhhbXBsZS5teS5zZXJ2aWNlLm1vZGVsczwvbW9kZWxQYWNrYWdlPgogICAgICAgICAgICAgIDxoaWRlR2VuZXJhdGlvblRpbWVzdGFtcD50cnVlPC9oaWRlR2VuZXJhdGlvblRpbWVzdGFtcD4KICAgICAgICAgICAgICA8ZGF0ZUxpYnJhcnk+amF2YTg8L2RhdGVMaWJyYXJ5PgogICAgICAgICAgICAgIDxpbnRlcmZhY2VPbmx5PnRydWU8L2ludGVyZmFjZU9ubHk+CiAgICAgICAgICAgICAgPHNraXBEZWZhdWx0SW50ZXJmYWNlPnRydWU8L3NraXBEZWZhdWx0SW50ZXJmYWNlPgogICAgICAgICAgICAgIDx1c2VCZWFuVmFsaWRhdGlvbj50cnVlPC91c2VCZWFuVmFsaWRhdGlvbj4KICAgICAgICAgICAgICA8dXNlVGFncz50cnVlPC91c2VUYWdzPgogICAgICAgICAgICAgIDxqYXZhOD50cnVlPC9qYXZhOD4KICAgICAgICAgICAgICA8dXNlT3B0aW9uYWw+ZmFsc2U8L3VzZU9wdGlvbmFsPgogICAgICAgICAgICAgIFsuLi5dCiAgICAgICAgICAgIDwvY29uZmlnT3B0aW9ucz4KICAgICAgICAgIDwvY29uZmlndXJhdGlvbj4KICAgICAgICA8L2V4ZWN1dGlvbj4KICAgICAgPC9leGVjdXRpb25zPgogICAgPC9wbHVnaW4+CiA8L3BsdWdpbnM+CjwvYnVpbGQ+CmBgYAoKQSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdGhlIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBjYW4gYmUgZm91bmQgYmVsb3cuCgp8IE9wdGlvbiB8IFByb3BlcnR5IHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IGB2ZXJib3NlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnZlcmJvc2VgIHwgdmVyYm9zZSBtb2RlIChgZmFsc2VgIGJ5IGRlZmF1bHQpCnwgYGlucHV0U3BlY2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5pbnB1dFNwZWNgIHwgT3BlbkFQSSBTcGVjIGZpbGUgcGF0aAp8IGBsYW5ndWFnZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5sYW5ndWFnZWAgfCB0YXJnZXQgZ2VuZXJhdGlvbiBsYW5ndWFnZSAoZGVwcmVjYXRlZCwgcmVwbGFjZWQgYnkgYGdlbmVyYXRvck5hbWVgIGFzIHZhbHVlcyBoZXJlIGRvbid0IHJlcHJlc2VudCBvbmx5ICdsYW5ndWFnZScgYW55IGxvbmdlcikKfCBgZ2VuZXJhdG9yTmFtZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0b3JOYW1lYCB8IHRhcmdldCBnZW5lcmF0b3IgbmFtZQp8IGBvdXRwdXRgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4ub3V0cHV0YCB8IHRhcmdldCBvdXRwdXQgcGF0aCAoZGVmYXVsdCBpcyBgJHtwcm9qZWN0LmJ1aWxkLmRpcmVjdG9yeX0vZ2VuZXJhdGVkLXNvdXJjZXMvb3BlbmFwaWAuIENhbiBhbHNvIGJlIHNldCBnbG9iYWxseSB0aHJvdWdoIHRoZSBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLm91dHB1dGAgcHJvcGVydHkpCnwgYGdpdEhvc3RgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5naXRIb3N0YCB8IFRoZSBnaXQgaG9zdCwgZS5nLiBnaXRsYWIuY29tCnwgYGdpdFVzZXJJZGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5naXRVc2VySWRgIHwgc2V0cyBnaXQgaW5mb3JtYXRpb24gb2YgdGhlIHByb2plY3QKfCBgZ2l0UmVwb0lkYCB8IGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2l0UmVwb0lkYCB8IHNldHMgdGhlIHJlcG8gSUQgKGUuZy4gb3BlbmFwaS1nZW5lcmF0b3IpCnwgYHRlbXBsYXRlRGlyZWN0b3J5YCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnRlbXBsYXRlRGlyZWN0b3J5YCB8IGRpcmVjdG9yeSB3aXRoIG11c3RhY2hlIHRlbXBsYXRlcwp8IGB0ZW1wbGF0ZVJlc291cmNlUGF0aGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi50ZW1wbGF0ZVJlc291cmNlUGF0aGAgfCBkaXJlY3Rvcnkgd2l0aCBtdXN0YWNoZSB0ZW1wbGF0ZXMgdmlhIHJlc291cmNlIHBhdGguIFRoaXMgb3B0aW9uIHdpbGwgb3ZlcndyaXRlIGFueSBvcHRpb24gZGVmaW5lZCBpbiBgdGVtcGxhdGVEaXJlY3RvcnlgLgp8IGBlbmdpbmVgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5lbmdpbmVgIHwgVGhlIG5hbWUgb2YgdGVtcGxhdGluZyBlbmdpbmUgdG8gdXNlLCAibXVzdGFjaGUiIChkZWZhdWx0KSBvciAiaGFuZGxlYmFycyIgKGJldGEpCnwgYGF1dGhgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYXV0aGAgfCBhZGRzIGF1dGhvcml6YXRpb24gaGVhZGVycyB3aGVuIGZldGNoaW5nIHRoZSBPcGVuQVBJIGRlZmluaXRpb25zIHJlbW90ZWx5LiBQYXNzIGluIGEgVVJMLWVuY29kZWQgc3RyaW5nIG9mIGBuYW1lOmhlYWRlcmAgd2l0aCBhIGNvbW1hIHNlcGFyYXRpbmcgbXVsdGlwbGUgdmFsdWVzCnwgYGNvbmZpZ3VyYXRpb25GaWxlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmNvbmZpZ3VyYXRpb25GaWxlYCB8IFBhdGggdG8gc2VwYXJhdGUganNvbiBjb25maWd1cmF0aW9uIGZpbGUuIEZpbGUgY29udGVudCBzaG91bGQgYmUgaW4gYSBqc29uIGZvcm1hdCB7Im9wdGlvbktleSI6Im9wdGlvblZhbHVlIiwgIm9wdGlvbktleTEiOiJvcHRpb25WYWx1ZTEiLi4ufSBTdXBwb3J0ZWQgb3B0aW9ucyBjYW4gYmUgZGlmZmVyZW50IGZvciBlYWNoIGxhbmd1YWdlLiBSdW4gYGNvbmZpZy1oZWxwIC1nIHtnZW5lcmF0b3IgbmFtZX1gIGNvbW1hbmQgZm9yIGxhbmd1YWdlIHNwZWNpZmljIGNvbmZpZyBvcHRpb25zCnwgYHNraXBPdmVyd3JpdGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uc2tpcE92ZXJ3cml0ZWAgfCBTcGVjaWZpZXMgaWYgdGhlIGV4aXN0aW5nIGZpbGVzIHNob3VsZCBiZSBvdmVyd3JpdHRlbiBkdXJpbmcgdGhlIGdlbmVyYXRpb24uIChgZmFsc2VgIGJ5IGRlZmF1bHQpCnwgYGFwaVBhY2thZ2VgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYXBpUGFja2FnZWAgfCB0aGUgcGFja2FnZSB0byB1c2UgZm9yIGdlbmVyYXRlZCBhcGkgb2JqZWN0cy9jbGFzc2VzCnwgYG1vZGVsUGFja2FnZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5tb2RlbFBhY2thZ2VgIHwgdGhlIHBhY2thZ2UgdG8gdXNlIGZvciBnZW5lcmF0ZWQgbW9kZWwgb2JqZWN0cy9jbGFzc2VzCnwgYGludm9rZXJQYWNrYWdlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmludm9rZXJQYWNrYWdlYCB8IHRoZSBwYWNrYWdlIHRvIHVzZSBmb3IgdGhlIGdlbmVyYXRlZCBpbnZva2VyIG9iamVjdHMKfCBgcGFja2FnZU5hbWVgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5wYWNrYWdlTmFtZWAgfCB0aGUgZGVmYXVsdCBwYWNrYWdlIG5hbWUgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIG9iamVjdHMKfCBgZ3JvdXBJZGAgfCBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdyb3VwSWRgICB8IHNldHMgcHJvamVjdCBpbmZvcm1hdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5ncmFkbGUgb3Igb3RoZXIgYnVpbGQgc2NyaXB0LiBMYW5ndWFnZS1zcGVjaWZpYyBjb252ZXJzaW9ucyBvY2N1ciBpbiBub24tanZtIGdlbmVyYXRvcnMKfCBgYXJ0aWZhY3RJZGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hcnRpZmFjdElkYCB8IHNldHMgcHJvamVjdCBpbmZvcm1hdGlvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbC9idWlsZC5ncmFkbGUgb3Igb3RoZXIgYnVpbGQgc2NyaXB0LiBMYW5ndWFnZS1zcGVjaWZpYyBjb252ZXJzaW9ucyBvY2N1ciBpbiBub24tanZtIGdlbmVyYXRvcnMKfCBgYXJ0aWZhY3RWZXJzaW9uYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFydGlmYWN0VmVyc2lvbmAgfCBzZXRzIHByb2plY3QgaW5mb3JtYXRpb24gaW4gZ2VuZXJhdGVkIHBvbS54bWwvYnVpbGQuZ3JhZGxlIG9yIG90aGVyIGJ1aWxkIHNjcmlwdC4gTGFuZ3VhZ2Utc3BlY2lmaWMgY29udmVyc2lvbnMgb2NjdXIgaW4gbm9uLWp2bSBnZW5lcmF0b3JzCnwgYGxpYnJhcnlgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4ubGlicmFyeWAgfCBsaWJyYXJ5IHRlbXBsYXRlIChzdWItdGVtcGxhdGUpCnwgYG1vZGVsTmFtZVByZWZpeGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5tb2RlbE5hbWVQcmVmaXhgIHwgU2V0cyB0aGUgcHJlZml4IGZvciBtb2RlbCBjbGFzc2VzIGFuZCBlbnVtcwp8IGBtb2RlbE5hbWVTdWZmaXhgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4ubW9kZWxOYW1lU3VmZml4YCB8IFNldHMgdGhlIHN1ZmZpeCBmb3IgbW9kZWwgY2xhc3NlcyBhbmQgZW51bXMKfCBgaWdub3JlRmlsZU92ZXJyaWRlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmlnbm9yZUZpbGVPdmVycmlkZWAgfCBzcGVjaWZpZXMgdGhlIGZ1bGwgcGF0aCB0byBhIGAub3BlbmFwaS1nZW5lcmF0b3ItaWdub3JlYCB1c2VkIGZvciBwYXR0ZXJuIGJhc2VkIG92ZXJyaWRlcyBvZiBnZW5lcmF0ZWQgb3V0cHV0cwp8IGBodHRwVXNlckFnZW50YCB8IGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uaHR0cFVzZXJBZ2VudGAgfCBTZXRzIGN1c3RvbSBVc2VyLUFnZW50IGhlYWRlciB2YWx1ZQp8IGByZW1vdmVPcGVyYXRpb25JZFByZWZpeGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5yZW1vdmVPcGVyYXRpb25JZFByZWZpeGAgfCByZW1vdmUgb3BlcmF0aW9uSWQgcHJlZml4IChlLmcuIHVzZXJfZ2V0TmFtZSA9PiBnZXROYW1lKQp8IGBsb2dUb1N0ZGVycmAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5sb2dUb1N0ZGVycmAgfCB3cml0ZSBhbGwgbG9nIG1lc3NhZ2VzIChub3QganVzdCBlcnJvcnMpIHRvIFNURE9VVAp8IGBlbmFibGVQb3N0UHJvY2Vzc0ZpbGVgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYCB8IGVuYWJsZSBmaWxlIHBvc3QtcHJvY2Vzc2luZyBob29rCnwgYHNraXBWYWxpZGF0ZVNwZWNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uc2tpcFZhbGlkYXRlU3BlY2AgfCBXaGV0aGVyIG9yIG5vdCB0byBza2lwIHZhbGlkYXRpbmcgdGhlIGlucHV0IHNwZWMgcHJpb3IgdG8gZ2VuZXJhdGlvbi4gQnkgZGVmYXVsdCwgaW52YWxpZCBzcGVjaWZpY2F0aW9ucyB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4KfCBgc3RyaWN0U3BlY2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5zdHJpY3RTcGVjYCB8IFdoZXRoZXIgb3Igbm90IHRvIHRyZWF0IGFuIGlucHV0IGRvY3VtZW50IHN0cmljdGx5IGFnYWluc3QgdGhlIHNwZWMuICdNVVNUJyBhbmQgJ1NIQUxMJyB3b3JkaW5nIGluIE9wZW5BUEkgc3BlYyBpcyBzdHJpY3RseSBhZGhlcmVkIHRvLiBlLmcuIHdoZW4gZmFsc2UsIG5vIGZpeGVzIHdpbGwgYmUgYXBwbGllZCB0byBkb2N1bWVudHMgd2hpY2ggcGFzcyB2YWxpZGF0aW9uIGJ1dCBkb24ndCBmb2xsb3cgdGhlIHNwZWMuCnwgYGdlbmVyYXRlQWxpYXNBc01vZGVsYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRlQWxpYXNBc01vZGVsYCB8IGdlbmVyYXRlIGFsaWFzIChhcnJheSwgbWFwKSBhcyBtb2RlbAp8IGBjb25maWdPcHRpb25zYCB8ICBOL0EgfCBhICoqbWFwKiogb2YgbGFuZ3VhZ2Utc3BlY2lmaWMgcGFyYW1ldGVycy4gVG8gc2hvdyBhIGZ1bGwgbGlzdCBvZiBnZW5lcmF0b3Itc3BlY2lmaWVkIHBhcmFtZXRlcnMgKG9wdGlvbnMpLCBwbGVhc2UgdXNlIGBjb25maWdIZWxwYCAoZXhwbGFpbmVkIGJlbG93KQp8IGBpbnN0YW50aWF0aW9uVHlwZXNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uaW5zdGFudGlhdGlvblR5cGVzYCB8IHNldHMgaW5zdGFudGlhdGlvbiB0eXBlIG1hcHBpbmdzIGluIHRoZSBmb3JtYXQgb2YgdHlwZT1pbnN0YW50aWF0ZWRUeXBlLHR5cGU9aW5zdGFudGlhdGVkVHlwZS4gRm9yIGV4YW1wbGUgKGluIEphdmEpOiBgYXJyYXk9QXJyYXlMaXN0LG1hcD1IYXNoTWFwYC4gSW4gb3RoZXIgd29yZHMgYXJyYXkgdHlwZXMgd2lsbCBnZXQgaW5zdGFudGlhdGVkIGFzIEFycmF5TGlzdCBpbiBnZW5lcmF0ZWQgY29kZS4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24KfCBgaW1wb3J0TWFwcGluZ3NgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uaW1wb3J0TWFwcGluZ3NgIHwgc3BlY2lmaWVzIG1hcHBpbmdzIGJldHdlZW4gYSBnaXZlbiBjbGFzcyBhbmQgdGhlIGltcG9ydCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGF0IGNsYXNzIGluIHRoZSBmb3JtYXQgb2YgdHlwZT1pbXBvcnQsdHlwZT1pbXBvcnQuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoaXMgb3B0aW9uCnwgYHR5cGVNYXBwaW5nc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi50eXBlTWFwcGluZ3NgIHwgc2V0cyBtYXBwaW5ncyBiZXR3ZWVuIE9wZW5BUEkgc3BlYyB0eXBlcyBhbmQgZ2VuZXJhdGVkIGNvZGUgdHlwZXMgaW4gdGhlIGZvcm1hdCBvZiBPcGVuQVBJVHlwZT1nZW5lcmF0ZWRUeXBlLE9wZW5BUElUeXBlPWdlbmVyYXRlZFR5cGUuIEZvciBleGFtcGxlOiBgYXJyYXk9TGlzdCxtYXA9TWFwLHN0cmluZz1TdHJpbmdgLiBZb3UgY2FuIGFsc28gaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGlzIG9wdGlvbgp8IGBsYW5ndWFnZVNwZWNpZmljUHJpbWl0aXZlc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5sYW5ndWFnZVNwZWNpZmljUHJpbWl0aXZlc2AgfCBzcGVjaWZpZXMgYWRkaXRpb25hbCBsYW5ndWFnZSBzcGVjaWZpYyBwcmltaXRpdmUgdHlwZXMgaW4gdGhlIGZvcm1hdCBvZiB0eXBlMSx0eXBlMix0eXBlMyx0eXBlMy4gRm9yIGV4YW1wbGU6IGBTdHJpbmcsYm9vbGVhbixCb29sZWFuLERvdWJsZWAuIFlvdSBjYW4gYWxzbyBoYXZlIG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIHRoaXMgb3B0aW9uCnwgYGFkZGl0aW9uYWxQcm9wZXJ0aWVzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmFkZGl0aW9uYWxQcm9wZXJ0aWVzYCB8IHNldHMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgYnkgdGhlIG11c3RhY2hlIHRlbXBsYXRlcyBpbiB0aGUgZm9ybWF0IG9mIG5hbWU9dmFsdWUsbmFtZT12YWx1ZS4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24KfCBgc2VydmVyVmFyaWFibGVPdmVycmlkZXNgIHwgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5zZXJ2ZXJWYXJpYWJsZU92ZXJyaWRlc2AgfCBBIG1hcCBvZiBzZXJ2ZXIgdmFyaWFibGUgb3ZlcnJpZGVzIGZvciBzcGVjcyB0aGF0IHN1cHBvcnQgc2VydmVyIFVSTCB0ZW1wbGF0aW5nCnwgYHJlc2VydmVkV29yZHNNYXBwaW5nc2AgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5yZXNlcnZlZFdvcmRzTWFwcGluZ3NgIHwgc3BlY2lmaWVzIGhvdyBhIHJlc2VydmVkIG5hbWUgc2hvdWxkIGJlIGVzY2FwZWQgdG8uIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgYF88bmFtZT5gIGlzIHVzZWQuIEZvciBleGFtcGxlIGBpZD1pZGVudGlmaWVyYC4gWW91IGNhbiBhbHNvIGhhdmUgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgdGhpcyBvcHRpb24KfCBgZ2VuZXJhdGVBcGlzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRlQXBpc2AgfCBnZW5lcmF0ZSB0aGUgYXBpcyAoYHRydWVgIGJ5IGRlZmF1bHQpLiBTcGVjaWZpYyBhcGlzIG1heSBiZSBkZWZpbmVkIGFzIGEgQ1NWIHZpYSBgYXBpc1RvR2VuZXJhdGVgLgp8IGBhcGlzVG9HZW5lcmF0ZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hcGlzVG9HZW5lcmF0ZWAgfCBBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFwaXMgdG8gZ2VuZXJhdGUuICBBbGwgYXBpcyBpcyB0aGUgZGVmYXVsdC4KfCBgZ2VuZXJhdGVNb2RlbHNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVNb2RlbHNgIHwgZ2VuZXJhdGUgdGhlIG1vZGVscyAoYHRydWVgIGJ5IGRlZmF1bHQpLiBTcGVjaWZpYyBtb2RlbHMgbWF5IGJlIGRlZmluZWQgYXMgYSBDU1YgdmlhIGBtb2RlbHNUb0dlbmVyYXRlYC4KfCBgbW9kZWxzVG9HZW5lcmF0ZWAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5tb2RlbHNUb0dlbmVyYXRlYCB8IEEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgbW9kZWxzIHRvIGdlbmVyYXRlLiAgQWxsIG1vZGVscyBpcyB0aGUgZGVmYXVsdC4KfCBgZ2VuZXJhdGVTdXBwb3J0aW5nRmlsZXNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVTdXBwb3J0aW5nRmlsZXNgIHwgZ2VuZXJhdGUgdGhlIHN1cHBvcnRpbmcgZmlsZXMgKGB0cnVlYCBieSBkZWZhdWx0KQp8IGBzdXBwb3J0aW5nRmlsZXNUb0dlbmVyYXRlYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLnN1cHBvcnRpbmdGaWxlc1RvR2VuZXJhdGVgIHwgQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBzdXBwb3J0aW5nIGZpbGVzIHRvIGdlbmVyYXRlLiAgQWxsIGZpbGVzIGlzIHRoZSBkZWZhdWx0Lgp8IGBnZW5lcmF0ZU1vZGVsVGVzdHNgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uZ2VuZXJhdGVNb2RlbFRlc3RzYCB8IGdlbmVyYXRlIHRoZSBtb2RlbCB0ZXN0cyAoYHRydWVgIGJ5IGRlZmF1bHQuIE9ubHkgYXZhaWxhYmxlIGlmIGBnZW5lcmF0ZU1vZGVsc2AgaXMgYHRydWVgKQp8IGBnZW5lcmF0ZU1vZGVsRG9jdW1lbnRhdGlvbmAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5nZW5lcmF0ZU1vZGVsRG9jdW1lbnRhdGlvbmAgfCBnZW5lcmF0ZSB0aGUgbW9kZWwgZG9jdW1lbnRhdGlvbiAoYHRydWVgIGJ5IGRlZmF1bHQuIE9ubHkgYXZhaWxhYmxlIGlmIGBnZW5lcmF0ZU1vZGVsc2AgaXMgYHRydWVgKQp8IGBnZW5lcmF0ZUFwaVRlc3RzYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRlQXBpVGVzdHNgIHwgZ2VuZXJhdGUgdGhlIGFwaSB0ZXN0cyAoYHRydWVgIGJ5IGRlZmF1bHQuIE9ubHkgYXZhaWxhYmxlIGlmIGBnZW5lcmF0ZUFwaXNgIGlzIGB0cnVlYCkKfCBgZ2VuZXJhdGVBcGlEb2N1bWVudGF0aW9uYCB8ICBgb3BlbmFwaS5nZW5lcmF0b3IubWF2ZW4ucGx1Z2luLmdlbmVyYXRlQXBpRG9jdW1lbnRhdGlvbmAgfCBnZW5lcmF0ZSB0aGUgYXBpIGRvY3VtZW50YXRpb24gKGB0cnVlYCBieSBkZWZhdWx0LiBPbmx5IGF2YWlsYWJsZSBpZiBgZ2VuZXJhdGVBcGlzYCBpcyBgdHJ1ZWApCnwgYHdpdGhYbWxgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4ud2l0aFhtbGAgfCBlbmFibGUgWE1MIGFubm90YXRpb25zIGluc2lkZSB0aGUgZ2VuZXJhdGVkIG1vZGVscyBhbmQgQVBJIChvbmx5IHdvcmtzIHdpdGggSmF2YSBgbGFuZ3VhZ2VgIGFuZCBsaWJyYXJpZXMgdGhhdCBwcm92aWRlIHN1cHBvcnQgZm9yIEpTT04gYW5kIFhNTCkKfCBgc2tpcGAgfCAgYGNvZGVnZW4uc2tpcGAgfCBza2lwIGNvZGUgZ2VuZXJhdGlvbiAoYGZhbHNlYCBieSBkZWZhdWx0LiBDYW4gYWxzbyBiZSBzZXQgZ2xvYmFsbHkgdGhyb3VnaCB0aGUgYGNvZGVnZW4uc2tpcGAgcHJvcGVydHkpCnwgYHNraXBJZlNwZWNJc1VuY2hhbmdlZGAgfCAgYGNvZGVnZW4uc2tpcElmU3BlY0lzVW5jaGFuZ2VkYCB8IFNraXAgdGhlIGV4ZWN1dGlvbiBpZiB0aGUgc291cmNlIGZpbGUgaXMgb2xkZXIgdGhhbiB0aGUgb3V0cHV0IGZvbGRlciAoYGZhbHNlYCBieSBkZWZhdWx0LiBDYW4gYWxzbyBiZSBzZXQgZ2xvYmFsbHkgdGhyb3VnaCB0aGUgYGNvZGVnZW4uc2tpcElmU3BlY0lzVW5jaGFuZ2VkYCBwcm9wZXJ0eSkKfCBgYWRkQ29tcGlsZVNvdXJjZVJvb3RgIHwgIGBvcGVuYXBpLmdlbmVyYXRvci5tYXZlbi5wbHVnaW4uYWRkQ29tcGlsZVNvdXJjZVJvb3RgIHwgQWRkIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIHRoZSBwcm9qZWN0IGFzIGEgc291cmNlIHJvb3QsIHNvIHRoYXQgdGhlIGdlbmVyYXRlZCBqYXZhIHR5cGVzIGFyZSBjb21waWxlZCBhbmQgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QgYXJ0aWZhY3QgKGB0cnVlYCBieSBkZWZhdWx0KS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYGFkZFRlc3RDb21waWxlU291cmNlUm9vdGAuCnwgYGFkZFRlc3RDb21waWxlU291cmNlUm9vdGAgfCAgYG9wZW5hcGkuZ2VuZXJhdG9yLm1hdmVuLnBsdWdpbi5hZGRUZXN0Q29tcGlsZVNvdXJjZVJvb3RgIHwgQWRkIHRoZSBvdXRwdXQgZGlyZWN0b3J5IHRvIHRoZSBwcm9qZWN0IGFzIGEgdGVzdCBzb3VyY2Ugcm9vdCwgc28gdGhhdCB0aGUgZ2VuZXJhdGVkIGphdmEgdHlwZXMgYXJlIGNvbXBpbGVkIG9ubHkgZm9yIHRoZSB0ZXN0IGNsYXNzcGF0aCBvZiB0aGUgcHJvamVjdCAoYGZhbHNlYCBieSBkZWZhdWx0KS4gTXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggYGFkZENvbXBpbGVTb3VyY2VSb290YC4KfCBgZW52aXJvbm1lbnRWYXJpYWJsZXNgIHwgTi9BIHwgQSAqKm1hcCoqIG9mIGl0ZW1zIGNvbmNlcHR1YWxseSBzaW1pbGFyIHRvICJlbnZpcm9ubWVudCB2YXJpYWJsZXMiIG9yICJzeXN0ZW0gcHJvcGVydGllcyIuIFRoZXNlIGFyZSBtZXJnZWQgaW50byBhIG1hcCBvZiBnbG9iYWwgc2V0dGluZ3MgYXZhaWxhYmxlIHRvIGFsbCBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0aW9uIGZsb3cuIFVzZSB0aGlzIG1hcCBmb3IgYW55IG9wdGlvbnMgZG9jdW1lbnRlZCBlbHNld2hlcmUgYXMgYHN5c3RlbVByb3BlcnRpZXNgLgp8IGBjb25maWdIZWxwYCB8ICBgY29kZWdlbi5jb25maWdIZWxwYCB8IGR1bXBzIHRoZSBjb25maWd1cmF0aW9uIGhlbHAgZm9yIHRoZSBzcGVjaWZpZWQgbGlicmFyeSAoZ2VuZXJhdGVzIG5vIHNvdXJjZXMpCgpGb3IgdGhlIGBzcHJpbmdgIGdlbmVyYXRvciwgdGhlIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZToKCnwgT3B0aW9uIHwgRGVzY3JpcHRpb24gfAp8LS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCBgc29ydFBhcmFtc0J5UmVxdWlyZWRGbGFnYCB8IFNvcnQgbWV0aG9kIGFyZ3VtZW50cyB0byBwbGFjZSByZXF1aXJlZCBwYXJhbWV0ZXJzIGJlZm9yZSBvcHRpb25hbCBwYXJhbWV0ZXJzLiAoRGVmYXVsdDogdHJ1ZSkgfAp8IGBzb3J0TW9kZWxQcm9wZXJ0aWVzQnlSZXF1aXJlZEZsYWdgIHwgU29ydCBtb2RlbCBwcm9wZXJ0aWVzIHRvIHBsYWNlIHJlcXVpcmVkIHBhcmFtZXRlcnMgYmVmb3JlIG9wdGlvbmFsIHBhcmFtZXRlcnMuIChEZWZhdWx0OiB0cnVlKSB8CnwgYGVuc3VyZVVuaXF1ZVBhcmFtc2AgfCBXaGV0aGVyIHRvIGVuc3VyZSBwYXJhbWV0ZXIgbmFtZXMgYXJlIHVuaXF1ZSBpbiBhbiBvcGVyYXRpb24gKHJlbmFtZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIG5vdCkuIChEZWZhdWx0OiB0cnVlKSB8CnwgYGFsbG93VW5pY29kZUlkZW50aWZpZXJzYCB8IGJvb2xlYW4sIHRvZ2dsZXMgd2hldGhlciB1bmljb2RlIGlkZW50aWZpZXJzIGFyZSBhbGxvd2VkIGluIG5hbWVzIG9yIG5vdCwgZGVmYXVsdCBpcyBmYWxzZSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgcHJlcGVuZEZvcm1PckJvZHlQYXJhbWV0ZXJzYCB8IEFkZCBmb3JtIG9yIGJvZHkgcGFyYW1ldGVycyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhbWV0ZXIgbGlzdC4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYG1vZGVsUGFja2FnZWAgfCBwYWNrYWdlIGZvciBnZW5lcmF0ZWQgbW9kZWxzIChEZWZhdWx0OiBvcmcub3BlbmFwaXRvb2xzLm1vZGVsKSB8CnwgYGFwaVBhY2thZ2VgIHwgcGFja2FnZSBmb3IgZ2VuZXJhdGVkIGFwaSBjbGFzc2VzIChEZWZhdWx0OiBvcmcub3BlbmFwaXRvb2xzLmFwaSkgfAp8IGBpbnZva2VyUGFja2FnZWAgfCByb290IHBhY2thZ2UgZm9yIGdlbmVyYXRlZCBjb2RlIChEZWZhdWx0OiBvcmcub3BlbmFwaXRvb2xzLmFwaSkgfAp8IGBncm91cElkYCB8IGdyb3VwSWQgaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IG9yZy5vcGVuYXBpdG9vbHMpIHwKfCBgYXJ0aWZhY3RJZGAgfCBhcnRpZmFjdElkIGluIGdlbmVyYXRlZCBwb20ueG1sLiBUaGlzIGFsc28gYmVjb21lcyBwYXJ0IG9mIHRoZSBnZW5lcmF0ZWQgbGlicmFyeSdzIGZpbGVuYW1lIChEZWZhdWx0OiBvcGVuYXBpLXNwcmluZykgfAp8IGBhcnRpZmFjdFZlcnNpb25gIHwgYXJ0aWZhY3QgdmVyc2lvbiBpbiBnZW5lcmF0ZWQgcG9tLnhtbC4gVGhpcyBhbHNvIGJlY29tZXMgcGFydCBvZiB0aGUgZ2VuZXJhdGVkIGxpYnJhcnkncyBmaWxlbmFtZSAoRGVmYXVsdDogMS4wLjApIHwKfCBgYXJ0aWZhY3RVcmxgIHwgYXJ0aWZhY3QgVVJMIGluIGdlbmVyYXRlZCBwb20ueG1sIChEZWZhdWx0OiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSB8CnwgYGFydGlmYWN0RGVzY3JpcHRpb25gIHwgYXJ0aWZhY3QgZGVzY3JpcHRpb24gaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IE9wZW5BUEkgSmF2YSkgfAp8IGBzY21Db25uZWN0aW9uYCB8IFNDTSBjb25uZWN0aW9uIGluIGdlbmVyYXRlZCBwb20ueG1sIChEZWZhdWx0OiBzY206Z2l0OmdpdEBnaXRodWIuY29tOm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci5naXQpIHwKfCBgc2NtRGV2ZWxvcGVyQ29ubmVjdGlvbmAgfCBTQ00gZGV2ZWxvcGVyIGNvbm5lY3Rpb24gaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IHNjbTpnaXQ6Z2l0QGdpdGh1Yi5jb206b3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLmdpdCkgfAp8IGBzY21VcmxgIHwgU0NNIFVSTCBpbiBnZW5lcmF0ZWQgcG9tLnhtbCAoRGVmYXVsdDogaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcikgfAp8IGBkZXZlbG9wZXJOYW1lYCB8IGRldmVsb3BlciBuYW1lIGluIGdlbmVyYXRlZCBwb20ueG1sIChEZWZhdWx0OiBPcGVuQVBJLUdlbmVyYXRvciBDb250cmlidXRvcnMpIHwKfCBgZGV2ZWxvcGVyRW1haWxgIHwgZGV2ZWxvcGVyIGVtYWlsIGluIGdlbmVyYXRlZCBwb20ueG1sIChEZWZhdWx0OiB0ZWFtQG9wZW5hcGl0b29scy5vcmcpIHwKfCBgZGV2ZWxvcGVyT3JnYW5pemF0aW9uYCB8IGRldmVsb3BlciBvcmdhbml6YXRpb24gaW4gZ2VuZXJhdGVkIHBvbS54bWwgKERlZmF1bHQ6IE9wZW5BUElUb29scy5vcmcpIHwKfCBgZGV2ZWxvcGVyT3JnYW5pemF0aW9uVXJsYCB8IGRldmVsb3BlciBvcmdhbml6YXRpb24gVVJMIGluIGdlbmVyYXRlZCBwb20ueG1sIChEZWZhdWx0OiBodHRwOi8vb3BlbmFwaXRvb2xzLm9yZykgfAp8IGBsaWNlbnNlTmFtZWAgfCBUaGUgbmFtZSBvZiB0aGUgbGljZW5zZSAoRGVmYXVsdDogVW5saWNlbnNlKSB8CnwgYGxpY2Vuc2VVcmxgIHwgVGhlIFVSTCBvZiB0aGUgbGljZW5zZSAoRGVmYXVsdDogaHR0cDovL3VubGljZW5zZS5vcmcpIHwKfCBgc291cmNlRm9sZGVyYCB8IHNvdXJjZSBmb2xkZXIgZm9yIGdlbmVyYXRlZCBjb2RlIChEZWZhdWx0OiBzcmMvbWFpbi9qYXZhKSB8CnwgYHNlcmlhbGl6YWJsZU1vZGVsYCB8IGJvb2xlYW4gLSB0b2dnbGUgImltcGxlbWVudHMgU2VyaWFsaXphYmxlIiBmb3IgZ2VuZXJhdGVkIG1vZGVscyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgYmlnRGVjaW1hbEFzU3RyaW5nYCB8IFRyZWF0IEJpZ0RlY2ltYWwgdmFsdWVzIGFzIFN0cmluZ3MgdG8gYXZvaWQgcHJlY2lzaW9uIGxvc3MuIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBmdWxsSmF2YVV0aWxgIHwgd2hldGhlciB0byB1c2UgZnVsbHkgcXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgdW5kZXIgamF2YS51dGlsLiBUaGlzIG9wdGlvbiBvbmx5IHdvcmtzIGZvciBKYXZhIEFQSSBjbGllbnQgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGhpZGVHZW5lcmF0aW9uVGltZXN0YW1wYCB8IEhpZGVzIHRoZSBnZW5lcmF0aW9uIHRpbWVzdGFtcCB3aGVuIGZpbGVzIGFyZSBnZW5lcmF0ZWQuIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB3aXRoWG1sYCB8IHdoZXRoZXIgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBhcHBsaWNhdGlvbi94bWwgY29udGVudCB0eXBlIGFuZCBpbmNsdWRlIFhNTCBhbm5vdGF0aW9ucyBpbiB0aGUgbW9kZWwgKHdvcmtzIHdpdGggbGlicmFyaWVzIHRoYXQgcHJvdmlkZSBzdXBwb3J0IGZvciBKU09OIGFuZCBYTUwpIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBkYXRlTGlicmFyeWAgfCBPcHRpb24uIERhdGUgbGlicmFyeSB0byB1c2UgKERlZmF1bHQ6IHRocmVldGVuYnApPGJyPmpvZGEgLSBKb2RhIChmb3IgbGVnYWN5IGFwcCBvbmx5KTxicj5sZWdhY3kgLSBMZWdhY3kgamF2YS51dGlsLkRhdGUgKGlmIHlvdSByZWFsbHkgaGF2ZSBhIGdvb2QgcmVhc29uIG5vdCB0byB1c2UgdGhyZWV0ZW5icDxicj5qYXZhOC1sb2NhbGRhdGV0aW1lIC0gSmF2YSA4IHVzaW5nIExvY2FsRGF0ZVRpbWUgKGZvciBsZWdhY3kgYXBwIG9ubHkpPGJyPmphdmE4IC0gSmF2YSA4IG5hdGl2ZSBKU1IzMTAgKHByZWZlcnJlZCBmb3IgamRrIDEuOCspIC0gbm90ZTogdGhpcyBhbHNvIHNldHMgImphdmE4IiB0byB0cnVlPGJyPnRocmVldGVuYnAgLSBCYWNrcG9ydCBvZiBKU1IzMTAgKHByZWZlcnJlZCBmb3IgamRrIDwgMS44KSB8CnwgYGphdmE4YCB8IE9wdGlvbi4gVXNlIEphdmE4IGNsYXNzZXMgaW5zdGVhZCBvZiB0aGlyZCBwYXJ0eSBlcXVpdmFsZW50cyAoRGVmYXVsdDogZmFsc2UpPGJyPnRydWUgLSBVc2UgSmF2YSA4IGNsYXNzZXMgc3VjaCBhcyBCYXNlNjQuIFVzZSBqYXZhOCBkZWZhdWx0IGludGVyZmFjZSB3aGVuIGEgcmVzcG9uc2VXcmFwcGVyIGlzIHVzZWQ8YnI+ZmFsc2UgLSBWYXJpb3VzIHRoaXJkIHBhcnR5IGxpYnJhcmllcyBhcyBuZWVkZWQgfAp8IGBkaXNhYmxlSHRtbEVzY2FwaW5nYCB8IERpc2FibGUgSFRNTCBlc2NhcGluZyBvZiBKU09OIHN0cmluZ3Mgd2hlbiB1c2luZyBnc29uIChuZWVkZWQgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBieXRlW10gZmllbGRzKSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgYm9vbGVhbkdldHRlclByZWZpeGAgfCBTZXQgYm9vbGVhbkdldHRlclByZWZpeCAoRGVmYXVsdDogZ2V0KSB8CnwgYGFkZGl0aW9uYWxNb2RlbFR5cGVBbm5vdGF0aW9uc2AgfCBBZGRpdGlvbmFsIGFubm90YXRpb25zIGZvciBtb2RlbCB0eXBlKGNsYXNzIGxldmVsIGFubm90YXRpb25zKSB8CnwgYHBhcmVudEdyb3VwSWRgIHwgcGFyZW50IGdyb3VwSWQgaW4gZ2VuZXJhdGVkIHBvbSBOLkIuIHBhcmVudEdyb3VwSWQsIHBhcmVudEFydGlmYWN0SWQgYW5kIHBhcmVudFZlcnNpb24gbXVzdCBhbGwgYmUgc3BlY2lmaWVkIGZvciBhbnkgb2YgdGhlbSB0byB0YWtlIGVmZmVjdCB8CnwgYHBhcmVudEFydGlmYWN0SWRgIHwgcGFyZW50IGFydGlmYWN0SWQgaW4gZ2VuZXJhdGVkIHBvbSBOLkIuIHBhcmVudEdyb3VwSWQsIHBhcmVudEFydGlmYWN0SWQgYW5kIHBhcmVudFZlcnNpb24gbXVzdCBhbGwgYmUgc3BlY2lmaWVkIGZvciBhbnkgb2YgdGhlbSB0byB0YWtlIGVmZmVjdCB8CnwgYHBhcmVudFZlcnNpb25gIHwgcGFyZW50IHZlcnNpb24gaW4gZ2VuZXJhdGVkIHBvbSBOLkIuIHBhcmVudEdyb3VwSWQsIHBhcmVudEFydGlmYWN0SWQgYW5kIHBhcmVudFZlcnNpb24gbXVzdCBhbGwgYmUgc3BlY2lmaWVkIGZvciBhbnkgb2YgdGhlbSB0byB0YWtlIGVmZmVjdCB8CnwgYHNuYXBzaG90VmVyc2lvbmAgfCBVc2VzIGEgU05BUFNIT1QgdmVyc2lvbi4gdHJ1ZSAtIFVzZSBhIFNuYXBTaG90IFZlcnNpb25mYWxzZSAtIFVzZSBhIFJlbGVhc2UgVmVyc2lvbiB8CnwgYHRpdGxlYCB8IHNlcnZlciB0aXRsZSBuYW1lIG9yIGNsaWVudCBzZXJ2aWNlIG5hbWUgKERlZmF1bHQ6IE9wZW5BUEkgU3ByaW5nKSB8CnwgYGNvbmZpZ1BhY2thZ2VgIHwgY29uZmlndXJhdGlvbiBwYWNrYWdlIGZvciBnZW5lcmF0ZWQgY29kZSAoRGVmYXVsdDogb3JnLm9wZW5hcGl0b29scy5jb25maWd1cmF0aW9uKSB8CnwgYGJhc2VQYWNrYWdlYCB8IGJhc2UgcGFja2FnZSAoaW52b2tlclBhY2thZ2UpIGZvciBnZW5lcmF0ZWQgY29kZSAoRGVmYXVsdDogb3JnLm9wZW5hcGl0b29scykgfAp8IGBpbnRlcmZhY2VPbmx5YCB8IFdoZXRoZXIgdG8gZ2VuZXJhdGUgb25seSBBUEkgaW50ZXJmYWNlIHN0dWJzIHdpdGhvdXQgdGhlIHNlcnZlciBmaWxlcy4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGRlbGVnYXRlUGF0dGVybmAgfCBXaGV0aGVyIHRvIGdlbmVyYXRlIHRoZSBzZXJ2ZXIgZmlsZXMgdXNpbmcgdGhlIGRlbGVnYXRlIHBhdHRlcm4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHNpbmdsZUNvbnRlbnRUeXBlc2AgfCBXaGV0aGVyIHRvIHNlbGVjdCBvbmx5IG9uZSBwcm9kdWNlcy9jb25zdW1lcyBjb250ZW50LXR5cGUgYnkgb3BlcmF0aW9uLiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgc2tpcERlZmF1bHRJbnRlcmZhY2VgIHwgV2hldGhlciB0byBnZW5lcmF0ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgamF2YTggaW50ZXJmYWNlcyAoRGVmYXVsdDogZmFsc2UpIHwKfCBgYXN5bmNgIHwgdXNlIGFzeW5jIENhbGxhYmxlIGNvbnRyb2xsZXJzIChEZWZhdWx0OiBmYWxzZSkgfAp8IGByZWFjdGl2ZWAgfCB3cmFwIHJlc3BvbnNlcyBpbiBNb25vL0ZsdXggUmVhY3RvciB0eXBlcyAoc3ByaW5nLWJvb3Qgb25seSkgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHJlc3BvbnNlV3JhcHBlcmAgfCB3cmFwIHRoZSByZXNwb25zZXMgaW4gZ2l2ZW4gdHlwZSAoRnV0dXJlLCBDYWxsYWJsZSwgQ29tcGxldGFibGVGdXR1cmUsTGlzdGVuYWJsZUZ1dHVyZSwgRGVmZXJyZWRSZXN1bHQsIEh5c3RyaXhDb21tYW5kLCBSeE9ic2VydmFibGUsIFJ4U2luZ2xlIG9yIGZ1bGx5IHF1YWxpZmllZCB0eXBlKSB8CnwgYHZpcnR1YWxTZXJ2aWNlYCB8IEdlbmVyYXRlcyB0aGUgdmlydHVhbCBzZXJ2aWNlLiBGb3IgbW9yZSBkZXRhaWxzIHJlZmVyIC0gaHR0cHM6Ly9naXRodWIuY29tL2VsYW4tdmVudHVyZS92aXJ0dWFsYW4vd2lraSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgdXNlVGFnc2AgfCB1c2UgdGFncyBmb3IgY3JlYXRpbmcgaW50ZXJmYWNlIGFuZCBjb250cm9sbGVyIGNsYXNzbmFtZXMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHVzZUJlYW5WYWxpZGF0aW9uYCB8IFVzZSBCZWFuVmFsaWRhdGlvbiBBUEkgYW5ub3RhdGlvbnMgKERlZmF1bHQ6IHRydWUpIHwKfCBgcGVyZm9ybUJlYW5WYWxpZGF0aW9uYCB8IFVzZSBCZWFuIFZhbGlkYXRpb24gSW1wbC4gdG8gcGVyZm9ybSBCZWFuVmFsaWRhdGlvbiAoRGVmYXVsdDogZmFsc2UpIHwKfCBgdXNlQ2xhc3NMZXZlbEJlYW5WYWxpZGF0aW9uYCB8IEFkZHMgQFZhbGlkYXRlZCBhbm5vdGF0aW9uIHRvIEFQSSBpbnRlcmZhY2VzIChEZWZhdWx0OiBmYWxzZSkgfAp8IGB1c2VMb21ib2tBbm5vdGF0aW9uc2AgfCBVc2UgTG9tYm9rIGFubm90YXRpb25zIHRvIGdlbmVyYXRlIHByb3BlcnRpZXMgYWNjZXNzb3JzIGFuZCBgaGFzaENvZGVgL2BlcXVhbHNgIG1ldGhvZHMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGFkZFNlcnZsZXRSZXF1ZXN0YCB8IEFkZHMgU2VydmxldFJlcXVlc3Qgb2JqZWN0cyB0byBBUEkgbWV0aG9kIGRlZmluaXRpb25zIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBhZGRCaW5kaW5nUmVzdWx0YCB8IEFkZHMgQmluZGluZ1Jlc3VsdCB0byBBcGkgbWV0aG9kIGRlZmluaXRpb25zJyByZXF1ZXN0IGJvZGllcyBpZiBVc2VCZWFuVmFsaWRhdGlvbiB0cnVlLCBmb3IgdGhpcyB0byBiZSBlZmZlY3RpdmUgeW91IG11c3QgY29uZmlndXJlIFVzZUJlYW5WYWxpZGF0aW9uLCB0aGlzIGlzIG5vdCBkb25lIGF1dG9tYXRpY2FsbHkgKERlZmF1bHQ6IGZhbHNlKXwKfCBgaW1wbGljaXRIZWFkZXJzYCB8IFNraXAgaGVhZGVyIHBhcmFtZXRlcnMgaW4gdGhlIGdlbmVyYXRlZCBBUEkgbWV0aG9kcyB1c2luZyBAQXBpSW1wbGljaXRQYXJhbXMgYW5ub3RhdGlvbi4gKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHN3YWdnZXJEb2NrZXRDb25maWdgIHwgR2VuZXJhdGUgU3ByaW5nIE9wZW5BUEkgRG9ja2V0IGNvbmZpZ3VyYXRpb24gY2xhc3MuIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBhcGlGaXJzdGAgfCBHZW5lcmF0ZSB0aGUgQVBJIGZyb20gdGhlIE9BSSBzcGVjIGF0IHNlcnZlciBjb21waWxlIHRpbWUgKEFQSSBmaXJzdCBhcHByb2FjaCkgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHVzZU9wdGlvbmFsYCB8IFVzZSBPcHRpb25hbCBjb250YWluZXIgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYGhhdGVvYXNgIHwgVXNlIFNwcmluZyBIQVRFT0FTIGxpYnJhcnkgdG8gYWxsb3cgYWRkaW5nIEhBVEVPQVMgbGlua3MgKERlZmF1bHQ6IGZhbHNlKSB8CnwgYHJldHVyblN1Y2Nlc3NDb2RlYCB8IEdlbmVyYXRlZCBzZXJ2ZXIgcmV0dXJucyAyeHggY29kZSAoRGVmYXVsdDogZmFsc2UpIHwKfCBgdW5oYW5kbGVkRXhjZXB0aW9uYCB8IERlY2xhcmUgb3BlcmF0aW9uIG1ldGhvZHMgdG8gdGhyb3cgYSBnZW5lcmljIGV4Y2VwdGlvbiBhbmQgYWxsb3cgdW5oYW5kbGVkIGV4Y2VwdGlvbnMgKHVzZWZ1bCBmb3IgU3ByaW5nIGBAQ29udHJvbGxlckFkdmljZWAgZGlyZWN0aXZlcykuIChEZWZhdWx0OiBmYWxzZSkgfAp8IGBsaWJyYXJ5YCB8IGxpYnJhcnkgdGVtcGxhdGUgKHN1Yi10ZW1wbGF0ZSkgKERlZmF1bHQ6IHNwcmluZy1ib290KTxicj5zcHJpbmctYm9vdCAtIFNwcmluZy1ib290IFNlcnZlciBhcHBsaWNhdGlvbiB1c2luZyB0aGUgU3ByaW5nRm94IGludGVncmF0aW9uLjxicj5zcHJpbmctbXZjIC0gU3ByaW5nLU1WQyBTZXJ2ZXIgYXBwbGljYXRpb24gdXNpbmcgdGhlIFNwcmluZ0ZveCBpbnRlZ3JhdGlvbi48YnI+c3ByaW5nLWNsb3VkIC0gU3ByaW5nLUNsb3VkLUZlaWduIGNsaWVudCB3aXRoIFNwcmluZy1Cb290IGF1dG8tY29uZmlndXJlZCBzZXR0aW5ncy58Cg== + readmeEtag: '"ecc2f8449461377987e2b1e84fa5111b95bc70696a38610d3c6173f851b42d13"' + readmeLastModified: Wed, 23 Aug 2023 12:27:08 GMT repositoryId: 241074287 description: Backbase Open Api Tools (boat) helps manage large OpenAPI projects created: '2020-02-17T10:00:41Z' @@ -10967,7 +10967,7 @@ owner: Backbase logo: https://avatars.githubusercontent.com/u/1914334?v=4 license: NOASSERTION - repoEtag: '"3220e25f4303d8a6115d3885873a8560f2edc56d5f5e79475e44b703bb992319"' + repoEtag: '"71dbe0db49f29d5e4886aa6815a0db0b45c6776bef34f423555f6a97a7debeee"' repoLastModified: Wed, 21 Jun 2023 02:26:27 GMT foundInMaster: true category: SDK @@ -11092,16 +11092,16 @@ Improve the security of your API by detecting common vulnerabilities as defined by OWASP and enforced with Spectral. created: '2022-08-25T18:14:13Z' - updated: '2023-08-09T21:58:02Z' + updated: '2023-08-23T08:12:46Z' language: TypeScript archived: false - stars: 31 + stars: 30 watchers: 4 forks: 7 owner: stoplightio logo: https://avatars.githubusercontent.com/u/10767217?v=4 - repoEtag: '"1b90cbdd764aa9c1dcc655aeee4985fc105ff0910fe48566c600ccc5956a727c"' - repoLastModified: Wed, 09 Aug 2023 21:58:02 GMT + repoEtag: '"56167685a5edea231bb206288f6e0a472d7b25a5855d7d0fa29106068ed4dad4"' + repoLastModified: Wed, 23 Aug 2023 08:12:46 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -11436,7 +11436,7 @@ owner: JaredCE logo: https://avatars.githubusercontent.com/u/770400?v=4 license: MIT - repoEtag: '"58a7e8457ce5f3ba5a5b1779ad7ccd5478d2d5998eeb410b0c9179c0f480faef"' + repoEtag: '"0cb802e78bbdc9d3f8d5d79e9f3636a36d722e72af71a1dcd70627d3230eb452"' repoLastModified: Wed, 16 Aug 2023 09:32:04 GMT category: Parsers foundInMaster: true @@ -11962,7 +11962,7 @@ owner: kota65535 logo: https://avatars.githubusercontent.com/u/10975834?v=4 license: MIT - repoEtag: '"b4141862adc1656bb50a436b4b1df30c36e21ec01779badeea26056c4694f47b"' + repoEtag: '"bd0ddc31b249391327083c79102a9bcde1c4696858375ff061e09ac272132790"' repoLastModified: Tue, 22 Aug 2023 14:32:32 GMT category: Parsers foundInMaster: true @@ -12086,17 +12086,17 @@ repositoryId: 591235475 description: A typed fetch client for openapi-typescript for use with SvelteKit created: '2023-01-20T08:55:39Z' - updated: '2023-08-16T20:54:40Z' + updated: '2023-08-23T08:20:30Z' language: TypeScript archived: false - stars: 20 + stars: 21 watchers: 0 forks: 1 owner: cocreators-ee logo: https://avatars.githubusercontent.com/u/25827530?v=4 license: MIT - repoEtag: '"fd15a78167a1329e17f28a50c6658533940987d00f3c0435326bb30f4fcacff9"' - repoLastModified: Wed, 16 Aug 2023 20:54:40 GMT + repoEtag: '"58d2dc3c7c0167b30b2b3b740c34ab56a4e7dd1e2321a3769f7635fd5bd0ea81"' + repoLastModified: Wed, 23 Aug 2023 08:20:30 GMT category: Parsers foundInMaster: true - source: openapi3 tags @@ -12592,7 +12592,7 @@ forks: 1 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 - repoEtag: '"bcfbb98351f2ca0b0c268494f36367535595b2f2a8c0d9acaa3db85f813c5f12"' + repoEtag: '"ad4035fae16a606ed5ef1d4a8c8b4c8ce0782398a06ba2aadd94933a1f071a6f"' repoLastModified: Tue, 25 Jul 2023 14:52:47 GMT category: Server Implementations foundInMaster: true @@ -13215,16 +13215,16 @@ repositoryId: 400815425 description: 单纯的文件服务, 目前仅仅集成了minio(人在电信外包差点没了) created: '2021-08-28T14:40:30Z' - updated: '2023-04-15T18:41:28Z' + updated: '2023-08-23T10:41:37Z' language: Java archived: false - stars: 14 + stars: 15 watchers: 2 forks: 5 owner: mikuhuyo logo: https://avatars.githubusercontent.com/u/42843191?v=4 - repoEtag: '"ca0260b1d48debcd92c688ebfc0a8ac12a484cb08ab2481c2246533aa26cb7c7"' - repoLastModified: Sat, 15 Apr 2023 18:41:28 GMT + repoEtag: '"030719cea77614fa0046944755ebb4bd7cf12337c33ae711d26dff1dbfb70d5c"' + repoLastModified: Wed, 23 Aug 2023 10:41:37 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -13521,7 +13521,7 @@ owner: mockoon logo: https://avatars.githubusercontent.com/u/49429147?v=4 license: NOASSERTION - repoEtag: '"4788fc3b3725e8fafb1e76ea44eaa5b311989f86bbe28a0b287bbc54c6fea712"' + repoEtag: '"edede8977747c9213ad83dc1b4dfd6824dc370833aea8d2face3b52833b6c26e"' repoLastModified: Mon, 10 Jul 2023 18:11:16 GMT foundInMaster: true category: Testing @@ -13817,7 +13817,7 @@ owner: prince-chrismc logo: https://avatars.githubusercontent.com/u/16867443?v=4 license: MIT - repoEtag: '"9a22740d8fb4f8051324c3b7a4fe85ce95b9736e35ba006d59bdd2796bc30fa8"' + repoEtag: '"ead24441be6c76eca1a575835a3c2ee82120a5c73d28a267294dff50d71c9554"' repoLastModified: Thu, 22 Jun 2023 09:05:31 GMT foundInMaster: true category: Server @@ -14618,7 +14618,7 @@ repositoryId: 242171506 description: 'API Personnes décédées ' created: '2020-02-21T15:33:05Z' - updated: '2023-07-07T16:28:33Z' + updated: '2023-08-23T16:39:42Z' language: TypeScript archived: false stars: 8 @@ -14627,8 +14627,8 @@ owner: matchID-project logo: https://avatars.githubusercontent.com/u/32673019?v=4 license: LGPL-3.0 - repoEtag: '"73f52f260c1f6c0e1bfe1f8e4545defa9baaa1c707014fc78e1118ac586ffec6"' - repoLastModified: Fri, 07 Jul 2023 16:28:33 GMT + repoEtag: '"91362fae87178e91ac42b8999822591451fc56bed5cd87fcb1cfac11e7ebc75f"' + repoLastModified: Wed, 23 Aug 2023 16:39:42 GMT foundInMaster: true category: Server id: a1b78d0ba8dd46d8098f77bf077b6cac @@ -14845,7 +14845,7 @@ owner: Jnig logo: https://avatars.githubusercontent.com/u/3729585?v=4 license: MIT - repoEtag: '"af23b0a92995dbc733e406d45179ce5dd273b59309b070b02d5c4478e99cbdd5"' + repoEtag: '"4f2f9c4bde343fb2729619f81e78ad6ea46dee9822192e3ee693728347385b36"' repoLastModified: Mon, 21 Aug 2023 21:29:33 GMT category: - Data Validators @@ -15521,7 +15521,7 @@ owner: xiaoyao-Ye logo: https://avatars.githubusercontent.com/u/52575104?v=4 license: MIT - repoEtag: '"fba4814860ffb2deb457d1acfa49ea12f839400e589d2e42423ebdbf577e5f3d"' + repoEtag: '"fd625058a6655c1867a8463c8f50982bef02b83cc5c8b5b66e9cb7b26351c483"' repoLastModified: Mon, 10 Jul 2023 08:52:12 GMT category: Parsers foundInMaster: true @@ -15547,7 +15547,7 @@ owner: ikemtz logo: https://avatars.githubusercontent.com/u/6444182?v=4 license: MIT - repoEtag: '"fa7bdd9dd6874a7bfb77ee4df5142a73282f7b00f4311e92ece41bba14dff6fd"' + repoEtag: '"4a61df17d186944e59f87fcfd870dd8571cf5fb37be5f82fa272d2f8aa64868a"' repoLastModified: Sat, 19 Aug 2023 14:54:40 GMT foundInMaster: true category: SDK @@ -15893,7 +15893,7 @@ forks: 0 owner: stackql logo: https://avatars.githubusercontent.com/u/95105302?v=4 - repoEtag: '"b5fcf6bc2e84a318b5fd130f1c97a0d8d7f542eb46780db55a5dac19ecb09520"' + repoEtag: '"5e2ee6053747f9e5377f3d876b32595f774ea43c4b75c120b387692324969abe"' repoLastModified: Tue, 25 Jul 2023 15:04:03 GMT category: Server Implementations foundInMaster: true @@ -16010,24 +16010,25 @@ id: b948369127981444200364f6a085ca8d repositoryMetadata: base64Readme: >- - IyBSRVNUUnVsZXIKClRoZSBSRVNUUnVsZXIgQ0xJIGlzIGEgdG9vbCB0aGF0IGNhbiBldmFsdWF0ZSBSRVNUZnVsIEFQSXMgb24gdGhlIGJhc2lzIG9mIGRlc2lnbiBydWxlIHZpb2xhdGlvbnMuIFRoZXNlIHZpb2xhdGlvbnMgYXJlIGJhc2VkIG9uIHRoZSBkZXNpZ24gcnVsZXMgZnJvbSBNYXJrIE1hc3PDqSdzIGJvb2sgW1JFU1QgQVBJIERlc2lnbiBSdWxlYm9va10oaHR0cHM6Ly93d3cub3JlaWxseS5jb20vbGlicmFyeS92aWV3L3Jlc3QtYXBpLWRlc2lnbi85NzgxNDQ5MzE3OTA0LykuCkN1cnJlbnRseSwgUkVTVFJ1bGVyIGNhbiBwYXJzZSB0aGUgZm9sbG93aW5nIFdlYiBBUEkgZGVzY3JpcHRpb24gbGFuZ3VhZ2VzOgoKKiBbT3BlbkFQSSB2Ml0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vdjIvKQoqIFtPcGVuQVBJIHYzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikKClJFU1RSdWxlciBoYXMgYmVlbiBkZXZlbG9wZWQgaW4gdGhlIFtFbXBpcmljYWwgU29mdHdhcmUgRW5naW5lZXJpbmcgR3JvdXBdKGh0dHBzOi8vd3d3LmlzdGUudW5pLXN0dXR0Z2FydC5kZS9lc2UpIGF0IHRoZSBVbml2ZXJzaXR5IG9mIFN0dXR0Z2FydCwgR2VybWFueSwgYXMgYSByZXNlYXJjaCBwcm90b3R5cGUgd3JpdHRlbiBpbiBKYXZhLgpJdCBpcyBhIGNvbW1hbmQtbGluZSB0b29sIHRoYXQgdGFrZXMgdGhlIHBhdGggb3IgVVJMIHRvIGFuIE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlIGFzIGlucHV0IGFuZCBkaXNwbGF5cyBhIGxpc3Qgb2YgZGVzaWduIHJ1bGUgdmlvbGF0aW9ucyBhcyBvdXRwdXQuCk9wdGlvbmFsbHksIGEgTWFya2Rvd24gcmVwb3J0IGZpbGUgY2FuIGJlIGdlbmVyYXRlZCB3aXRoIGFkZGl0aW9uYWwgZGV0YWlscyBhbmQgaW1wcm92ZW1lbnQgc3VnZ2VzdGlvbnMuCgojIyBEZXNpZ24gUnVsZXMKCkRlc2NyaXB0aW9ucyBvZiB0aGUgaW1wbGVtZW50ZWQgZGVzaWduIHJ1bGVzIGNhbiBiZSBmb3VuZCBpbiBvdXIgW3J1bGUgZG9jdW1lbnRhdGlvbl0oLi9kb2NzL3J1bGVzL1JFQURNRS5tZCkuCgojIyBQcm9qZWN0IEFyY2hpdGVjdHVyZQoKQSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdCBhbmQgaW1wbGVtZW50ZWQgY29tcG9uZW50cyBjYW4gYmUgZm91bmQgaW4gdGhlIFthcmNoaXRlY3R1cmUgZG9jdW1lbnRhdGlvbl0oLi9kb2NzL2FyY2hpdGVjdHVyZS5tZCkuCgojIyBHZW5lcmFsIFVzYWdlIEluc3RydWN0aW9ucwoKUnVuIHRoZXNlIGNvbW1hbmRzIGluIHRoZSByb290IGZvbGRlciB0byBidWlsZCBhbmQgc3RhcnQgdGhlIHRvb2w6CgpgYGBiYXNoCmNkIGNsaQojIGNyZWF0ZSBKQVIgZmlsZQouL2dyYWRsZXcgYXNzZW1ibGUKIyBleGVjdXRlIEpBUiBmaWxlIHRvIGRpc3BsYXkgQ0xJIHBhcmFtZXRlcnMKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLWgKIyBydW4gdGVzdHMKLi9ncmFkbGV3IHRlc3QKIyB0ZXN0IGNvdmVyYWdlIChvdXRwdXQ6IC4vYnVpbGQvcmVwb3J0cy9qYWNvY28vdGVzdC9odG1sL2luZGV4Lmh0bWwpCi4vZ3JhZGxldyBqYWNvY29UZXN0UmVwb3J0CmBgYAoKIyMgVXNhZ2UgRXhhbXBsZQoKYGBgYmFzaAojIFJ1biB3aXRoIGFuIGV4YW1wbGUgQVBJIGZyb20gaHR0cHM6Ly9hcGlzLmd1cnUKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L3YyL3NwZWNzL2NpcmNsZWNpLmNvbS92MS9vcGVuYXBpLnlhbWwKYGBgCgpUaGlzIHByb2R1Y2VzIHRoZSBmb2xsb3dpbmcgb3V0cHV0OgoKYGBgY2xpCmphdmEgLWphciBidWlsZC9saWJzL3Jlc3QtcnVsZXIuamFyIC1wIGh0dHBzOi8vYXBpLmFwaXMuZ3VydS92Mi9zcGVjcy9jaXJjbGVjaS5jb20vdjEvb3BlbmFwaS55YW1sCgotLS0tLS0tLS0tLS0tLS0tLUlORk8gQU5BTFlTSVMtLS0tLS0tLS0tLS0tLS0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpCZXNpZGVzIHRoZSBzdGF0aWMgYW5hbHlzaXMgdGhlcmUgaXMgdGhlIGR5bmFtaWMgYW5hbHlzaXMgZm9yIHdoaWNoIHRoZSBjcmVkZW50aWFscyBmb3IgdGhlIG9wZW5hcGkgZGVmaW5pdGlvbiBuZWVkIHRvIGJlIHByb3ZpZGVkLiBUaGVzZSBhcmUgbm90IHN0b3JlZCB1bmxlc3MgeW91IGFsbG93IGl0LiBObyBjaGFuZ2VzIHdpbGwgYmUgbWFkZSB0byByZXNvdXJjZXMgbm9yIGFyZSB0aGV5IHNhdmVkLiAKSWYgeW91IHdhbnQgdG8gZG8gdGhlIGR5bmFtaWMgYW5hbHlzaXMsIGVudGVyIHllcyBvciB5LCBpZiB5b3UgZG8gbm90IHdhbnQgdG8gZG8gaXQsIGVudGVyIGFueSBvdGhlciBrZXkuClt5ZXMvbm9dCm4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQmVnaW4gd2l0aCB0aGUgYW5hbHlzaXMgb2YgdGhlIGZpbGUgZnJvbTogaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L3YyL3NwZWNzL2NpcmNsZWNpLmNvbS92MS9vcGVuYXBpLnlhbWwKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXVnIDExLCAyMDIzIDM6NDU6MDEgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMSBvZiAxNSBpcyBub3cgY2hlY2tlZDoKQ1JVRCBmdW5jdGlvbiBuYW1lcyBzaG91bGQgbm90IGJlIHVzZWQgaW4gVVJJcwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowMSBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAyIG9mIDE1IGlzIG5vdyBjaGVja2VkOgpHRVQgbXVzdCBiZSB1c2VkIHRvIHJldHJpZXZlIGEgcmVwcmVzZW50YXRpb24gb2YgYSByZXNvdXJjZQpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowMSBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAzIG9mIDE1IGlzIG5vdyBjaGVja2VkOgpGb3J3YXJkIHNsYXNoIHNlcGFyYXRvciAoLykgbXVzdCBiZSB1c2VkIHRvIGluZGljYXRlIGEgaGllcmFyY2hpY2FsIHJlbGF0aW9uc2hpcApbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowMSBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSA0IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpBIHZlcmIgb3IgdmVyYiBwaHJhc2Ugc2hvdWxkIGJlIHVzZWQgZm9yIGNvbnRyb2xsZXIgbmFtZXMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDMgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgNSBvZiAxNSBpcyBub3cgY2hlY2tlZDoKSHlwaGVucyAoLSkgc2hvdWxkIGJlIHVzZWQgdG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkgb2YgVVJJcwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowNCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSA2IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpGaWxlIGV4dGVuc2lvbnMgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBVUklzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA0IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDcgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkdFVCBhbmQgUE9TVCBtdXN0IG5vdCBiZSB1c2VkIHRvIHR1bm5lbCBvdGhlciByZXF1ZXN0IG1ldGhvZHMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDQgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgOCBvZiAxNSBpcyBub3cgY2hlY2tlZDoKQSBzaW5ndWxhciBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBkb2N1bWVudCBuYW1lcwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowOCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSA5IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpEZXNjcmlwdGlvbiBvZiByZXF1ZXN0IHNob3VsZCBtYXRjaCB3aXRoIHRoZSB0eXBlIG9mIHRoZSByZXF1ZXN0LgpBdWcgMTEsIDIwMjMgMzo0NTowOCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAxMCBvZiAxNSBpcyBub3cgY2hlY2tlZDoKNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA4IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDExIG9mIDE1IGlzIG5vdyBjaGVja2VkOgpVbmRlcnNjb3JlcyAoXykgc2hvdWxkIG5vdCBiZSB1c2VkIGluIFVSSQpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowOCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAxMiBvZiAxNSBpcyBub3cgY2hlY2tlZDoKQ29udGVudC1UeXBlIG11c3QgYmUgdXNlZApbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowOCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAxMyBvZiAxNSBpcyBub3cgY2hlY2tlZDoKTG93ZXJjYXNlIGxldHRlcnMgc2hvdWxkIGJlIHByZWZlcnJlZCBpbiBVUkkgcGF0aHMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDggUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMTQgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkEgdHJhaWxpbmcgZm9yd2FyZCBzbGFzaCAoLykgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiBVUklzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA4IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDE1IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpBIHBsdXJhbCBub3VuIHNob3VsZCBiZSB1c2VkIGZvciBjb2xsZWN0aW9uIG9yIHN0b3JlIG5hbWVzCls9PT09PT09PT09XSAxMDAlClJFU1QgQVBJIFNwZWNpZmljYXRpb24gUmVwb3J0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgTGluZSBOby4gfCBMaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJ1bGUgVmlvbGF0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgMjcgICAgICAgfCAvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzggICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzggICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzggICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgODAgICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9idWlsZC1jYWNoZSAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgODAgICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9idWlsZC1jYWNoZSAgICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgODAgICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9idWlsZC1jYWNoZSAgICAgICAgICAgICAgICB8IEEgdmVyYiBvciB2ZXJiIHBocmFzZSBzaG91bGQgYmUgdXNlZCBmb3IgY29udHJvbGxlciBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgOTcgICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9jaGVja291dC1rZXkgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgOTcgICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9jaGVja291dC1rZXkgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgOTcgICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9jaGVja291dC1rZXkgICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTI4ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9jaGVja291dC1rZXkve2ZpbmdlcnByaW50fSB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMTI4ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9jaGVja291dC1rZXkve2ZpbmdlcnByaW50fSB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMTI4ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9jaGVja291dC1rZXkve2ZpbmdlcnByaW50fSB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTU0ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9lbnZ2YXIgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMTU0ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9lbnZ2YXIgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMTU0ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9lbnZ2YXIgICAgICAgICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTU0ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9lbnZ2YXIgICAgICAgICAgICAgICAgICAgICB8IEh5cGhlbnMgKC0pIHNob3VsZCBiZSB1c2VkIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIFVSSXMgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTcwICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9lbnZ2YXIve25hbWV9ICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMTcwICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9lbnZ2YXIve25hbWV9ICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMTcwICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9lbnZ2YXIve25hbWV9ICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMTk3ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9zc2gta2V5ICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMTk3ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS9zc2gta2V5ICAgICAgICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMjM3ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS90cmVlL3ticmFuY2h9ICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMjM3ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS90cmVlL3ticmFuY2h9ICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMjcyICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfSAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMjcyICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfSAgICAgICAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMjg4ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS9hcnRpZmFjdHMgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMjg4ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS9hcnRpZmFjdHMgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMzAzICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS9jYW5jZWwgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzAzICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS9jYW5jZWwgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMzAzICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS9jYW5jZWwgICAgICAgICB8IERlc2NyaXB0aW9uIG9mIHJlcXVlc3Qgc2hvdWxkIG1hdGNoIHdpdGggdGhlIHR5cGUgb2YgdGhlIHJlcXVlc3QuICAgICAgICAgICAgICAgICAgICAgICB8CnwgMzE4ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS9yZXRyeSAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzE4ICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS9yZXRyeSAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMzMzICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS90ZXN0cyAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzMzICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS90ZXN0cyAgICAgICAgICB8IEEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgMzMzICAgICAgfCAvcHJvamVjdC97dXNlcm5hbWV9L3twcm9qZWN0fS97YnVpbGRfbnVtfS90ZXN0cyAgICAgICAgICB8IERlc2NyaXB0aW9uIG9mIHJlcXVlc3Qgc2hvdWxkIG1hdGNoIHdpdGggdGhlIHR5cGUgb2YgdGhlIHJlcXVlc3QuICAgICAgICAgICAgICAgICAgICAgICB8CnwgMzUwICAgICAgfCAvcHJvamVjdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzYyICAgICAgfCAvcmVjZW50LWJ1aWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzc2ICAgICAgfCAvdXNlci9oZXJva3Uta2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwMSAoIlVuYXV0aG9yaXplZCIpIG11c3QgYmUgdXNlZCB3aGVuIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjbGllbnQncyBjcmVkZW50aWFscyB8CnwgMzc2ICAgICAgfCAvdXNlci9oZXJva3Uta2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEh5cGhlbnMgKC0pIHNob3VsZCBiZSB1c2VkIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIFVSSXMgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkluIHRvdGFsIDQwIHJ1bGUgdmlvbGF0aW9ucyB3ZXJlIGZvdW5kCmBgYAoKIyMgQ29tbWFuZCBMaW5lIE9wdGlvbnMKfCBPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXF1aXJlZCB8CnwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0gfAp8IGAtcCAkVVJJX1BBVEhgLDxicj5gLS1wYXRoICRVUklfUEFUSGAgICAgICAgIHwgTG9jYWwgcGF0aCBvciBwdWJsaWMgVVJMIHRvIE9wZW5BUEkgZGVmaW5pdGlvbiAoMi4wIG9yIGhpZ2hlcjsgSlNPTiBvciBZQU1MKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlFUyAgICAgIHwKfCBgLWVgLDxicj5gLS1leHBlcnRNb2RlYCAgICAgICAgICAgICAgICAgICAgICB8IEludGVyYWN0aXZlbHkgc2VsZWN0IHRoZSBydWxlcyBmb3IgdGhlIGFuYWx5c2lzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOTyAgICAgICB8CnwgYC1yYCw8YnI+YC0tcmVwb3J0YCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHZW5lcmF0ZSBhIE1hcmtkb3duIHJlcG9ydCBmaWxlIHdpdGggdGhlIGFuYWx5c2lzIHJlc3VsdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTk8qICAgICAgfAp8IGAtcm4gJEZJTEVOQU1FYCw8YnI+YC0tcmVwb3J0TmFtZSAkRklMRU5BTUVgIHwgU3BlY2lmeSBhIGN1c3RvbSBmaWxlbmFtZSBmb3IgdGhlIE1hcmtkb3duIHJlcG9ydC4gSWYgdGhpcyBvcHRpb24gaXMgc2VsZWN0ZWQsIHRoZSBhYm92ZSBvcHRpb24gZm9yIG91dHB1dCBpcyBub3QgbmVlZGVkLiB8IE5PKiAgICAgIHwKCipJZiBubyBhZGRpdGlvbmFsIG91dHB1dCB3YXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0cyB3aWxsIG9ubHkgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4KCmBgYGJhc2gKIyBSdW4gd2l0aCBsb2NhbCBmaWxlIGFuZCBubyBvdXRwdXQgZmlsZQpqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtcCBwYXRoL3RvL29wZW5hcGkvZGVmaW5pdG9uLmpzb24KCiMgUnVuIHdpdGggcHVibGljIFVSTCBhbmQgbm8gb3V0cHV0IGZpbGUKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgaHR0cHM6Ly93d3cuY3VzdG9tLmRvbWFpbi5jb20vcGF0aC90by9vcGVuYXBpLWRlZmluaXRvbi55YW1sCgojIFJ1biB3aXRoIGN1c3RvbSBmaWxlbmFtZSBmb3IgTWFya2Rvd24gcmVwb3J0CmphdmEgLWphciBidWlsZC9saWJzL3Jlc3QtcnVsZXIuamFyIC1wIHBhdGgvdG8vb3BlbmFwaS9kZWZpbml0b24ueWFtbCAtcm4gY3VzdG9tLWZpbGUtbmFtZQoKIyBSdW4gd2l0aCBnZW5lcmF0ZWQgZmlsZW5hbWUgZm9yIE1hcmtkb3duIHJlcG9ydApqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtcCBwYXRoL3RvL29wZW5hcGkvZGVmaW5pdG9uLnlhbWwgLXIKCiMgUnVuIGluIGV4cGVydCBtb2RlCmphdmEgLWphciBidWlsZC9saWJzL3Jlc3QtcnVsZXIuamFyIC1wIHBhdGgvdG8vb3BlbmFwaS9kZWZpbml0b24uanNvbiAtZQpgYGAK - readmeEtag: '"be9e4b07594a26e21fe34e6f5b469043d7f43675611494ca7660def46405fb19"' - readmeLastModified: Mon, 14 Aug 2023 13:03:54 GMT + IyBSRVNUUnVsZXIKClRoZSBSRVNUUnVsZXIgQ0xJIGlzIGEgdG9vbCB0aGF0IGNhbiBldmFsdWF0ZSBSRVNUZnVsIEFQSXMgb24gdGhlIGJhc2lzIG9mIGRlc2lnbiBydWxlIHZpb2xhdGlvbnMuIFRoZXNlIHZpb2xhdGlvbnMgYXJlIGJhc2VkIG9uIHRoZSBkZXNpZ24gcnVsZXMgZnJvbSBNYXJrIE1hc3PDqSdzIGJvb2sgW1JFU1QgQVBJIERlc2lnbiBSdWxlYm9va10oaHR0cHM6Ly93d3cub3JlaWxseS5jb20vbGlicmFyeS92aWV3L3Jlc3QtYXBpLWRlc2lnbi85NzgxNDQ5MzE3OTA0LykuCkN1cnJlbnRseSwgUkVTVFJ1bGVyIGNhbiBwYXJzZSB0aGUgZm9sbG93aW5nIFdlYiBBUEkgZGVzY3JpcHRpb24gbGFuZ3VhZ2VzOgoKKiBbT3BlbkFQSSB2Ml0oaHR0cHM6Ly9zd2FnZ2VyLmlvL3NwZWNpZmljYXRpb24vdjIvKQoqIFtPcGVuQVBJIHYzXShodHRwczovL2dpdGh1Yi5jb20vT0FJL09wZW5BUEktU3BlY2lmaWNhdGlvbikKClJFU1RSdWxlciBoYXMgYmVlbiBkZXZlbG9wZWQgaW4gdGhlIFtFbXBpcmljYWwgU29mdHdhcmUgRW5naW5lZXJpbmcgR3JvdXBdKGh0dHBzOi8vd3d3LmlzdGUudW5pLXN0dXR0Z2FydC5kZS9lc2UpIGF0IHRoZSBVbml2ZXJzaXR5IG9mIFN0dXR0Z2FydCwgR2VybWFueSwgYXMgYSByZXNlYXJjaCBwcm90b3R5cGUgd3JpdHRlbiBpbiBKYXZhLgpJdCBpcyBhIGNvbW1hbmQtbGluZSB0b29sIHRoYXQgdGFrZXMgdGhlIHBhdGggb3IgVVJMIHRvIGFuIE9wZW5BUEkgZGVmaW5pdGlvbiBmaWxlIGFzIGlucHV0IGFuZCBkaXNwbGF5cyBhIGxpc3Qgb2YgZGVzaWduIHJ1bGUgdmlvbGF0aW9ucyBhcyBvdXRwdXQuCk9wdGlvbmFsbHksIGEgTWFya2Rvd24gcmVwb3J0IGZpbGUgY2FuIGJlIGdlbmVyYXRlZCB3aXRoIGFkZGl0aW9uYWwgZGV0YWlscyBhbmQgaW1wcm92ZW1lbnQgc3VnZ2VzdGlvbnMuCgojIyBEZXNpZ24gUnVsZXMKCkRlc2NyaXB0aW9ucyBvZiB0aGUgaW1wbGVtZW50ZWQgZGVzaWduIHJ1bGVzIGNhbiBiZSBmb3VuZCBpbiBvdXIgW3J1bGUgZG9jdW1lbnRhdGlvbl0oLi9kb2NzL3J1bGVzL1JFQURNRS5tZCkuCgojIyBQcm9qZWN0IEFyY2hpdGVjdHVyZQoKQSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdCBhbmQgaW1wbGVtZW50ZWQgY29tcG9uZW50cyBjYW4gYmUgZm91bmQgaW4gdGhlIFthcmNoaXRlY3R1cmUgZG9jdW1lbnRhdGlvbl0oLi9kb2NzL2FyY2hpdGVjdHVyZS5tZCkuCgojIyBHZW5lcmFsIFVzYWdlIEluc3RydWN0aW9ucwoKRm9yIGEgcXVpY2sgc3RhcnQsIHlvdSBjYW4gc2ltcGx5IGRvd25sb2FkIGByZXN0LXJ1bGVyLmphcmAgZm9yIGEgY2VydGFpbiBbcmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL3Jlc3RmdWwtbWEvcmVzdC1ydWxlci9yZWxlYXNlcykuClRoZW4gZXhlY3V0ZSB0aGVzZSBjb21tYW5kcyBpbiB0aGUgc2FtZSBmb2xkZXIgYXMgdGhlIEpBUiBmaWxlOgoKYGBgYmFzaAojIGV4ZWN1dGUgSkFSIGZpbGUgdG8gZGlzcGxheSBDTEkgcGFyYW1ldGVycwpqYXZhIC1qYXIgcmVzdC1ydWxlci5qYXIgLWgKCiMgcnVuIHdpdGggYW4gZXhhbXBsZSBBUEkgZnJvbSBodHRwczovL2FwaXMuZ3VydQpqYXZhIC1qYXIgcmVzdC1ydWxlci5qYXIgLXAgaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L3YyL3NwZWNzL2NpcmNsZWNpLmNvbS92MS9vcGVuYXBpLnlhbWwKYGBgCgpJZiB5b3Ugd2FudCB0byBkb3dubG9hZCBvciBjbG9uZSB0aGUgZnVsbCByZXBvc2l0b3J5LCBydW4gdGhlc2UgY29tbWFuZHMgaW4gdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSByZXBvc2l0b3J5IHRvIGJ1aWxkIGFuZCBzdGFydCB0aGUgdG9vbDoKCmBgYGJhc2gKY2QgY2xpCiMgY3JlYXRlIEpBUiBmaWxlCi4vZ3JhZGxldyBhc3NlbWJsZQojIGV4ZWN1dGUgSkFSIGZpbGUgdG8gZGlzcGxheSBDTEkgcGFyYW1ldGVycwpqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtaAojIHJ1biB0ZXN0cwouL2dyYWRsZXcgdGVzdAojIHRlc3QgY292ZXJhZ2UgKG91dHB1dDogLi9idWlsZC9yZXBvcnRzL2phY29jby90ZXN0L2h0bWwvaW5kZXguaHRtbCkKLi9ncmFkbGV3IGphY29jb1Rlc3RSZXBvcnQKYGBgCgojIyBVc2FnZSBFeGFtcGxlCgpgYGBiYXNoCiMgcnVuIHdpdGggYW4gZXhhbXBsZSBBUEkgZnJvbSBodHRwczovL2FwaXMuZ3VydQpqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtcCBodHRwczovL2FwaS5hcGlzLmd1cnUvdjIvc3BlY3MvY2lyY2xlY2kuY29tL3YxL29wZW5hcGkueWFtbApgYGAKClRoaXMgcHJvZHVjZXMgdGhlIGZvbGxvd2luZyBvdXRwdXQ6CgpgYGBjbGkKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgaHR0cHM6Ly9hcGkuYXBpcy5ndXJ1L3YyL3NwZWNzL2NpcmNsZWNpLmNvbS92MS9vcGVuYXBpLnlhbWwKCi0tLS0tLS0tLS0tLS0tLS0tSU5GTyBBTkFMWVNJUy0tLS0tLS0tLS0tLS0tLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkJlc2lkZXMgdGhlIHN0YXRpYyBhbmFseXNpcyB0aGVyZSBpcyB0aGUgZHluYW1pYyBhbmFseXNpcyBmb3Igd2hpY2ggdGhlIGNyZWRlbnRpYWxzIGZvciB0aGUgb3BlbmFwaSBkZWZpbml0aW9uIG5lZWQgdG8gYmUgcHJvdmlkZWQuIFRoZXNlIGFyZSBub3Qgc3RvcmVkIHVubGVzcyB5b3UgYWxsb3cgaXQuIE5vIGNoYW5nZXMgd2lsbCBiZSBtYWRlIHRvIHJlc291cmNlcyBub3IgYXJlIHRoZXkgc2F2ZWQuIApJZiB5b3Ugd2FudCB0byBkbyB0aGUgZHluYW1pYyBhbmFseXNpcywgZW50ZXIgeWVzIG9yIHksIGlmIHlvdSBkbyBub3Qgd2FudCB0byBkbyBpdCwgZW50ZXIgYW55IG90aGVyIGtleS4KW3llcy9ub10KbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpCZWdpbiB3aXRoIHRoZSBhbmFseXNpcyBvZiB0aGUgZmlsZSBmcm9tOiBodHRwczovL2FwaS5hcGlzLmd1cnUvdjIvc3BlY3MvY2lyY2xlY2kuY29tL3YxL29wZW5hcGkueWFtbAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpBdWcgMTEsIDIwMjMgMzo0NTowMSBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAxIG9mIDE1IGlzIG5vdyBjaGVja2VkOgpDUlVEIGZ1bmN0aW9uIG5hbWVzIHNob3VsZCBub3QgYmUgdXNlZCBpbiBVUklzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjAxIFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDIgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkdFVCBtdXN0IGJlIHVzZWQgdG8gcmV0cmlldmUgYSByZXByZXNlbnRhdGlvbiBvZiBhIHJlc291cmNlCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjAxIFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDMgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkZvcndhcmQgc2xhc2ggc2VwYXJhdG9yICgvKSBtdXN0IGJlIHVzZWQgdG8gaW5kaWNhdGUgYSBoaWVyYXJjaGljYWwgcmVsYXRpb25zaGlwCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjAxIFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDQgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkEgdmVyYiBvciB2ZXJiIHBocmFzZSBzaG91bGQgYmUgdXNlZCBmb3IgY29udHJvbGxlciBuYW1lcwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowMyBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSA1IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpIeXBoZW5zICgtKSBzaG91bGQgYmUgdXNlZCB0byBpbXByb3ZlIHRoZSByZWFkYWJpbGl0eSBvZiBVUklzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA0IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDYgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkZpbGUgZXh0ZW5zaW9ucyBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIFVSSXMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDQgUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgNyBvZiAxNSBpcyBub3cgY2hlY2tlZDoKR0VUIGFuZCBQT1NUIG11c3Qgbm90IGJlIHVzZWQgdG8gdHVubmVsIG90aGVyIHJlcXVlc3QgbWV0aG9kcwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowNCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSA4IG9mIDE1IGlzIG5vdyBjaGVja2VkOgpBIHNpbmd1bGFyIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGRvY3VtZW50IG5hbWVzCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA4IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDkgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkRlc2NyaXB0aW9uIG9mIHJlcXVlc3Qgc2hvdWxkIG1hdGNoIHdpdGggdGhlIHR5cGUgb2YgdGhlIHJlcXVlc3QuCkF1ZyAxMSwgMjAyMyAzOjQ1OjA4IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDEwIG9mIDE1IGlzIG5vdyBjaGVja2VkOgo0MDEgKCJVbmF1dGhvcml6ZWQiKSBtdXN0IGJlIHVzZWQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY2xpZW50J3MgY3JlZGVudGlhbHMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDggUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMTEgb2YgMTUgaXMgbm93IGNoZWNrZWQ6ClVuZGVyc2NvcmVzIChfKSBzaG91bGQgbm90IGJlIHVzZWQgaW4gVVJJCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA4IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDEyIG9mIDE1IGlzIG5vdyBjaGVja2VkOgpDb250ZW50LVR5cGUgbXVzdCBiZSB1c2VkCls9PT09PT09PT09XSAxMDAlCkF1ZyAxMSwgMjAyMyAzOjQ1OjA4IFBNIGNsaS5hbmFseXplci5SZXN0QW5hbHl6ZXIgcnVuUnVsZVZpb2xhdGlvbkNoZWNrcwpJTkZPOiBSdWxlIDEzIG9mIDE1IGlzIG5vdyBjaGVja2VkOgpMb3dlcmNhc2UgbGV0dGVycyBzaG91bGQgYmUgcHJlZmVycmVkIGluIFVSSSBwYXRocwpbPT09PT09PT09PV0gMTAwJQpBdWcgMTEsIDIwMjMgMzo0NTowOCBQTSBjbGkuYW5hbHl6ZXIuUmVzdEFuYWx5emVyIHJ1blJ1bGVWaW9sYXRpb25DaGVja3MKSU5GTzogUnVsZSAxNCBvZiAxNSBpcyBub3cgY2hlY2tlZDoKQSB0cmFpbGluZyBmb3J3YXJkIHNsYXNoICgvKSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIFVSSXMKWz09PT09PT09PT1dIDEwMCUKQXVnIDExLCAyMDIzIDM6NDU6MDggUE0gY2xpLmFuYWx5emVyLlJlc3RBbmFseXplciBydW5SdWxlVmlvbGF0aW9uQ2hlY2tzCklORk86IFJ1bGUgMTUgb2YgMTUgaXMgbm93IGNoZWNrZWQ6CkEgcGx1cmFsIG5vdW4gc2hvdWxkIGJlIHVzZWQgZm9yIGNvbGxlY3Rpb24gb3Igc3RvcmUgbmFtZXMKWz09PT09PT09PT1dIDEwMCUKUkVTVCBBUEkgU3BlY2lmaWNhdGlvbiBSZXBvcnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KfCBMaW5lIE5vLiB8IExpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUnVsZSBWaW9sYXRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCAyNyAgICAgICB8IC9tZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzOCAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzOCAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzOCAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA4MCAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2J1aWxkLWNhY2hlICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCA4MCAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2J1aWxkLWNhY2hlICAgICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA4MCAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2J1aWxkLWNhY2hlICAgICAgICAgICAgICAgIHwgQSB2ZXJiIG9yIHZlcmIgcGhyYXNlIHNob3VsZCBiZSB1c2VkIGZvciBjb250cm9sbGVyIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA5NyAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2NoZWNrb3V0LWtleSAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCA5NyAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2NoZWNrb3V0LWtleSAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCA5NyAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2NoZWNrb3V0LWtleSAgICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxMjggICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2NoZWNrb3V0LWtleS97ZmluZ2VycHJpbnR9IHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAxMjggICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2NoZWNrb3V0LWtleS97ZmluZ2VycHJpbnR9IHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAxMjggICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2NoZWNrb3V0LWtleS97ZmluZ2VycHJpbnR9IHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxNTQgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2VudnZhciAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAxNTQgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2VudnZhciAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAxNTQgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2VudnZhciAgICAgICAgICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxNTQgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2VudnZhciAgICAgICAgICAgICAgICAgICAgIHwgSHlwaGVucyAoLSkgc2hvdWxkIGJlIHVzZWQgdG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkgb2YgVVJJcyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxNzAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2VudnZhci97bmFtZX0gICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAxNzAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2VudnZhci97bmFtZX0gICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAxNzAgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L2VudnZhci97bmFtZX0gICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAxOTcgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3NzaC1rZXkgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAxOTcgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3NzaC1rZXkgICAgICAgICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAyMzcgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3RyZWUve2JyYW5jaH0gICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAyMzcgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3RyZWUve2JyYW5jaH0gICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAyNzIgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19ICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAyNzIgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19ICAgICAgICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAyODggICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L2FydGlmYWN0cyAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAyODggICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L2FydGlmYWN0cyAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAzMDMgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L2NhbmNlbCAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzMDMgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L2NhbmNlbCAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAzMDMgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L2NhbmNlbCAgICAgICAgIHwgRGVzY3JpcHRpb24gb2YgcmVxdWVzdCBzaG91bGQgbWF0Y2ggd2l0aCB0aGUgdHlwZSBvZiB0aGUgcmVxdWVzdC4gICAgICAgICAgICAgICAgICAgICAgIHwKfCAzMTggICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L3JldHJ5ICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzMTggICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L3JldHJ5ICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAzMzMgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L3Rlc3RzICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzMzMgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L3Rlc3RzICAgICAgICAgIHwgQSBwbHVyYWwgbm91biBzaG91bGQgYmUgdXNlZCBmb3IgY29sbGVjdGlvbiBvciBzdG9yZSBuYW1lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAzMzMgICAgICB8IC9wcm9qZWN0L3t1c2VybmFtZX0ve3Byb2plY3R9L3tidWlsZF9udW19L3Rlc3RzICAgICAgICAgIHwgRGVzY3JpcHRpb24gb2YgcmVxdWVzdCBzaG91bGQgbWF0Y2ggd2l0aCB0aGUgdHlwZSBvZiB0aGUgcmVxdWVzdC4gICAgICAgICAgICAgICAgICAgICAgIHwKfCAzNTAgICAgICB8IC9wcm9qZWN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzNjIgICAgICB8IC9yZWNlbnQtYnVpbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzNzYgICAgICB8IC91c2VyL2hlcm9rdS1rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDAxICgiVW5hdXRob3JpemVkIikgbXVzdCBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGNsaWVudCdzIGNyZWRlbnRpYWxzIHwKfCAzNzYgICAgICB8IC91c2VyL2hlcm9rdS1rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSHlwaGVucyAoLSkgc2hvdWxkIGJlIHVzZWQgdG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkgb2YgVVJJcyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW4gdG90YWwgNDAgcnVsZSB2aW9sYXRpb25zIHdlcmUgZm91bmQKYGBgCgojIyBDb21tYW5kIExpbmUgT3B0aW9ucwp8IE9wdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlcXVpcmVkIHwKfCA6LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCA6LS0tLS0tLSB8CnwgYC1wICRVUklfUEFUSGAsPGJyPmAtLXBhdGggJFVSSV9QQVRIYCAgICAgICAgfCBMb2NhbCBwYXRoIG9yIHB1YmxpYyBVUkwgdG8gT3BlbkFQSSBkZWZpbml0aW9uICgyLjAgb3IgaGlnaGVyOyBKU09OIG9yIFlBTUwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWUVTICAgICAgfAp8IGAtZWAsPGJyPmAtLWV4cGVydE1vZGVgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJhY3RpdmVseSBzZWxlY3QgdGhlIHJ1bGVzIGZvciB0aGUgYW5hbHlzaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5PICAgICAgIHwKfCBgLXJgLDxicj5gLS1yZXBvcnRgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdlbmVyYXRlIGEgTWFya2Rvd24gcmVwb3J0IGZpbGUgd2l0aCB0aGUgYW5hbHlzaXMgcmVzdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOTyogICAgICB8CnwgYC1ybiAkRklMRU5BTUVgLDxicj5gLS1yZXBvcnROYW1lICRGSUxFTkFNRWAgfCBTcGVjaWZ5IGEgY3VzdG9tIGZpbGVuYW1lIGZvciB0aGUgTWFya2Rvd24gcmVwb3J0LiBJZiB0aGlzIG9wdGlvbiBpcyBzZWxlY3RlZCwgdGhlIGFib3ZlIG9wdGlvbiBmb3Igb3V0cHV0IGlzIG5vdCBuZWVkZWQuIHwgTk8qICAgICAgfAoKKklmIG5vIGFkZGl0aW9uYWwgb3V0cHV0IHdhcyBzcGVjaWZpZWQsIHRoZSByZXN1bHRzIHdpbGwgb25seSBiZSBwcmludGVkIHRvIHRoZSBjb25zb2xlLgoKYGBgYmFzaAojIFJ1biB3aXRoIGxvY2FsIGZpbGUgYW5kIG5vIG91dHB1dCBmaWxlCmphdmEgLWphciBidWlsZC9saWJzL3Jlc3QtcnVsZXIuamFyIC1wIHBhdGgvdG8vb3BlbmFwaS9kZWZpbml0b24uanNvbgoKIyBSdW4gd2l0aCBwdWJsaWMgVVJMIGFuZCBubyBvdXRwdXQgZmlsZQpqYXZhIC1qYXIgYnVpbGQvbGlicy9yZXN0LXJ1bGVyLmphciAtcCBodHRwczovL3d3dy5jdXN0b20uZG9tYWluLmNvbS9wYXRoL3RvL29wZW5hcGktZGVmaW5pdG9uLnlhbWwKCiMgUnVuIHdpdGggY3VzdG9tIGZpbGVuYW1lIGZvciBNYXJrZG93biByZXBvcnQKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgcGF0aC90by9vcGVuYXBpL2RlZmluaXRvbi55YW1sIC1ybiBjdXN0b20tZmlsZS1uYW1lCgojIFJ1biB3aXRoIGdlbmVyYXRlZCBmaWxlbmFtZSBmb3IgTWFya2Rvd24gcmVwb3J0CmphdmEgLWphciBidWlsZC9saWJzL3Jlc3QtcnVsZXIuamFyIC1wIHBhdGgvdG8vb3BlbmFwaS9kZWZpbml0b24ueWFtbCAtcgoKIyBSdW4gaW4gZXhwZXJ0IG1vZGUKamF2YSAtamFyIGJ1aWxkL2xpYnMvcmVzdC1ydWxlci5qYXIgLXAgcGF0aC90by9vcGVuYXBpL2RlZmluaXRvbi5qc29uIC1lCmBgYAo= + readmeEtag: '"0e295734f85c84e2aeeb0193c892d1d2aecec6f4b91b16647b5ed0bfe51a19eb"' + readmeLastModified: Wed, 23 Aug 2023 12:46:57 GMT repositoryId: 490623497 description: >- The RESTRuler is a tool that evaluates OpenAPI definitions (version>=2.0) using design rule violations. created: '2022-05-10T09:13:14Z' - updated: '2023-02-10T22:13:24Z' + updated: '2023-08-23T08:49:15Z' language: Java archived: false - stars: 6 + stars: 7 watchers: 3 forks: 2 owner: restful-ma logo: https://avatars.githubusercontent.com/u/57215045?v=4 - repoEtag: '"262bd7c164e2dd41c39997fcc34a14f5a56d3a948c2bdd1459dac347b6dbb567"' - repoLastModified: Fri, 10 Feb 2023 22:13:24 GMT + license: Apache-2.0 + repoEtag: '"b349ba3b8308dd04418966fd79b5d0591503c63b290fca6843ba17ffa95c20c1"' + repoLastModified: Wed, 23 Aug 2023 08:49:15 GMT category: Server Implementations foundInMaster: true - source: openapi3 tags @@ -16241,7 +16242,7 @@ owner: meabed logo: https://avatars.githubusercontent.com/u/45731?v=4 license: MIT - repoEtag: '"cf9899ccba4bbdb9b757618ea0f42a5cb09b3659343390b8daa8a19112937173"' + repoEtag: '"2cff4e5f0031b53e7085c55e8aebc862588d649ceb35f06ae5b5fb0783af0a9e"' repoLastModified: Sun, 02 Apr 2023 20:55:39 GMT foundInMaster: true category: @@ -16268,7 +16269,7 @@ owner: apideck-libraries logo: https://avatars.githubusercontent.com/u/73573473?v=4 license: MIT - repoEtag: '"ca5ba82996c10a530060d336a33656a3bb8c77b5b961703f8041223b0802a218"' + repoEtag: '"6bd74d66c2cab836f7bdfa1f1b0da4a2ab5467d995b143ffc866222c843b6c7c"' repoLastModified: Thu, 22 Jun 2023 19:15:09 GMT foundInMaster: true category: Testing @@ -16967,11 +16968,11 @@ archived: false stars: 4 watchers: 5 - forks: 7 + forks: 8 owner: mulesoft-consulting logo: https://avatars.githubusercontent.com/u/7331519?v=4 license: Unlicense - repoEtag: '"ca30aa801c595250ac869870853db7138b958d03ba0cf6677988f8894bec13cc"' + repoEtag: '"10736d712f95925ac78da51a09537ff171cdd7293fff259133e99fefba5a488b"' repoLastModified: Tue, 28 Feb 2023 10:05:33 GMT foundInMaster: true category: Parsers @@ -18438,17 +18439,17 @@ An akka-http server which implements OpenAPI 3 Spec of https://petstore3.swagger.io. created: '2021-01-02T09:12:55Z' - updated: '2023-02-14T19:18:50Z' + updated: '2023-08-23T13:02:20Z' language: Scala archived: false - stars: 3 + stars: 2 watchers: 2 forks: 1 owner: manuzhang logo: https://avatars.githubusercontent.com/u/1191767?v=4 license: Apache-2.0 - repoEtag: '"9049046aaf75f714472483f3227a2c8d70927addb41d02a7a2cc296ab0f4d375"' - repoLastModified: Tue, 14 Feb 2023 19:18:50 GMT + repoEtag: '"aeecd142836959fbae69d20faa6c814082cf1a1cf44fa735cf722334e1ba7d15"' + repoLastModified: Wed, 23 Aug 2023 13:02:20 GMT foundInMaster: true category: - Server @@ -18573,7 +18574,7 @@ owner: tsingsun logo: https://avatars.githubusercontent.com/u/5848549?v=4 license: MIT - repoEtag: '"82a2ddf816abc40e2456ed69c19072e54b702f58ce1bc6473c7bdb4f753563b8"' + repoEtag: '"6efe8ee92b93567262e93c3a7bcd0d6fe8738c1823ad1ac929e593491c43795a"' repoLastModified: Sun, 20 Aug 2023 07:44:44 GMT category: Server Implementations foundInMaster: true @@ -18885,10 +18886,10 @@ archived: false stars: 3 watchers: 3 - forks: 0 + forks: 1 owner: mheap logo: https://avatars.githubusercontent.com/u/59130?v=4 - repoEtag: '"4811f3fc7100ffef3a6c8974b18ceaae7374233050656ecc352d81f8ae7ffcc4"' + repoEtag: '"4a77c8117025f2da067fe75e6bae93ded35e60555f3ecfd3563641a107f80c50"' repoLastModified: Tue, 06 Jun 2023 12:56:41 GMT foundInMaster: true category: Parsers @@ -18994,7 +18995,7 @@ forks: 0 owner: onmetal logo: https://avatars.githubusercontent.com/u/65116310?v=4 - repoEtag: '"716b926e1724fda28c08d30e89ecb1bd6fd39b462e9a1a9a670b0050b707aa56"' + repoEtag: '"2714a78176eee1bfe641b8e7ef185e00cb719a39f0d122b337dc81e26d71f6b8"' repoLastModified: Thu, 15 Jun 2023 09:10:07 GMT category: Parsers foundInMaster: true @@ -19250,7 +19251,7 @@ owner: sergeyklay logo: https://avatars.githubusercontent.com/u/1256298?v=4 license: MIT - repoEtag: '"f9f2b0b4fa4a88ea7b9412e046e065aa67308100032abe50ed87e00eea861f3e"' + repoEtag: '"694c7b181bdbef6d426e6eaba3aba6d463677365c10ba1866ac85d7250720574"' repoLastModified: Sat, 08 Jul 2023 08:42:03 GMT category: Server Implementations foundInMaster: true @@ -19278,7 +19279,7 @@ owner: crazyoptimist logo: https://avatars.githubusercontent.com/u/55074937?v=4 license: MIT - repoEtag: '"3f02e5b792c590bfc8ba6c4e0e9b1baeb4667c9230a1263876d1a9f74268f86f"' + repoEtag: '"3d6e9928e49627e9d25507086884cf16a7dd09594b50e7f024e90c02ce0944d0"' repoLastModified: Fri, 05 May 2023 10:25:03 GMT category: Server Implementations foundInMaster: true @@ -21004,7 +21005,7 @@ owner: igrek8 logo: https://avatars.githubusercontent.com/u/7078731?v=4 license: MIT - repoEtag: '"6c2b3de9496ae17f5d7f130eaa4462b6fa71b26c9ca694f8b5c24f7f8cda9a9d"' + repoEtag: '"36ee3e6eb7ccefd04340d67b7f4bfa97ad1d10e66305e9964455190263a8d8fe"' repoLastModified: Thu, 15 Jun 2023 13:09:53 GMT category: Parsers foundInMaster: true @@ -21109,7 +21110,7 @@ owner: tidepool-org logo: https://avatars.githubusercontent.com/u/4390820?v=4 license: BSD-2-Clause - repoEtag: '"4ca937c077d6c41fa9e52607bbdf2c4c881caa7ea6d61231d111e94ff90dbe48"' + repoEtag: '"e63b5ceacc8f2a770698b0c9f9aa918a67d6150a9bbc0b92eaecc347e192f371"' repoLastModified: Fri, 09 Jun 2023 22:26:47 GMT category: Server Implementations foundInMaster: true @@ -21136,7 +21137,7 @@ owner: gabrielmaialva33 logo: https://avatars.githubusercontent.com/u/26732067?v=4 license: AGPL-3.0 - repoEtag: '"9155e37b520b57e802e8d515c170af9e52da664251170e2d6efb6a6989a22c6a"' + repoEtag: '"ed469c2951ace23480056af65457478c40eaba2966feb05e6b92c26016fb2e55"' repoLastModified: Wed, 16 Aug 2023 03:04:14 GMT category: Server Implementations foundInMaster: true @@ -21317,7 +21318,7 @@ owner: ruiaraujo012 logo: https://avatars.githubusercontent.com/u/16304685?v=4 license: MIT - repoEtag: '"5be38b80080c05366d51d68edd517b764eddd92eb57591a9e0ad508d82f4350a"' + repoEtag: '"664a60debde333300ad8ebe66a54f809caed4ec9e17b925ac9acfb87b0183ed0"' repoLastModified: Sat, 14 Jan 2023 13:10:28 GMT category: Parsers foundInMaster: true @@ -22015,12 +22016,12 @@ language: JavaScript archived: false stars: 1 - watchers: 18 + watchers: 20 forks: 1 owner: smartrecruiters logo: https://avatars.githubusercontent.com/u/1618540?v=4 license: MIT - repoEtag: '"661c7e94408c728449026fd576d075c91ef28838558085b8bad8cf9831f3e268"' + repoEtag: '"70313e0b1dd59f9f7a419f5c1e7cc5333244f69f7fccadbe761bf21b8bc7bbb6"' repoLastModified: Tue, 22 Nov 2022 08:21:22 GMT foundInMaster: true category: Data Validators @@ -23301,7 +23302,7 @@ owner: SudoKuru logo: https://avatars.githubusercontent.com/u/114212382?v=4 license: GPL-3.0 - repoEtag: '"944d82e438fe823c88f0f20e9a4c6bc562eb78d1ff067a8f2a60f8a0074f516a"' + repoEtag: '"2b71003768a65e104fd80869f581332970b6fd5210d4d0bd3cbca4a618cbad64"' repoLastModified: Fri, 14 Apr 2023 08:29:11 GMT category: Server Implementations foundInMaster: true @@ -23516,7 +23517,7 @@ owner: WFCD logo: https://avatars.githubusercontent.com/u/24436369?v=4 license: MIT - repoEtag: '"0fd5547a2439ccbcdf83a4deaa30d054f7c7cfde9471bafe82bfad5777a56612"' + repoEtag: '"23a2d7090bd2b9dbc73dc6a1e4686c76f90457b11426cab40a4ac7106216d353"' repoLastModified: Tue, 18 Jul 2023 09:08:20 GMT foundInMaster: true category: @@ -24182,7 +24183,7 @@ owner: ExpediaGroup logo: https://avatars.githubusercontent.com/u/38541875?v=4 license: Apache-2.0 - repoEtag: '"d7a2a728ba39ae2cb1a8b74baf23edf27260c724a5eb4389d82f5702a258ec79"' + repoEtag: '"a11e58c5335a7f6d685c9aca4ea75fbf66a3ca0246ae063150ba6d82c4b1b9f1"' repoLastModified: Tue, 18 Jul 2023 09:30:33 GMT category: Parsers foundInMaster: true @@ -28525,7 +28526,7 @@ forks: 1 owner: '3782291211' logo: https://avatars.githubusercontent.com/u/115797459?v=4 - repoEtag: '"914ccf5d03a41e2e529152e704b960a232a5d6a7bd4e4c527dc629082f612879"' + repoEtag: '"dbecee9530b76469c7c2c3a8e4fb583d7cb2d0b48c550024a1e1d28070fb8082"' repoLastModified: Sat, 05 Aug 2023 14:13:45 GMT category: Server Implementations foundInMaster: true @@ -28746,7 +28747,7 @@ forks: 0 owner: asis2016 logo: https://avatars.githubusercontent.com/u/19593234?v=4 - repoEtag: '"ede4d2948d11a11798a51acec76e43a3cb9d206d468f782aa6a5dccda3a80430"' + repoEtag: '"2d56502bac49fb5e322141583caafd5ec986fa3ab6b0d3cd59d26cf996c68d7b"' repoLastModified: Tue, 07 Feb 2023 18:58:15 GMT category: Server Implementations foundInMaster: true @@ -29439,17 +29440,17 @@ repositoryId: 657910869 description: API Server (ogen + ent + golang-migrate + postgres) created: '2023-06-24T07:25:04Z' - updated: '2023-07-29T14:17:39Z' + updated: '2023-08-23T19:21:16Z' language: Go archived: false - stars: 0 + stars: 1 watchers: 1 forks: 0 owner: walkersumida logo: https://avatars.githubusercontent.com/u/12683375?v=4 license: Apache-2.0 - repoEtag: '"8b7bef430dbace22a3f297731e6f49a04cd0364306f24a8906d1fb62b66e2066"' - repoLastModified: Sat, 29 Jul 2023 14:17:39 GMT + repoEtag: '"76219fd7affc188628ffbbde78b66140b293ebe5e463146f5bb7858ec3f3d097"' + repoLastModified: Wed, 23 Aug 2023 19:21:16 GMT foundInMaster: true - source: openapi3 tags repository: https://github.com/livingdocsio/openapi @@ -32080,7 +32081,7 @@ owner: andrii-hrechyn logo: https://avatars.githubusercontent.com/u/38326555?v=4 license: MIT - repoEtag: '"7d8c3f20c0a1caed3f651f46d7d6cbd0ba97cb79566f8baf386e05b338d1902b"' + repoEtag: '"64d1290e46c8bd124fbc0147484b692b0f3f53648481bb143e129615d466e1c4"' repoLastModified: Wed, 19 Jul 2023 09:00:31 GMT category: Parsers foundInMaster: true @@ -32131,7 +32132,7 @@ forks: 0 owner: liankui logo: https://avatars.githubusercontent.com/u/26359513?v=4 - repoEtag: '"02d2b16bf609b61cb8b358b23fb12958877f8a5e26317a1538739007fad8cfdb"' + repoEtag: '"82b537f736a249561b90434750efeb134502a9d803122833da3151b550427d42"' repoLastModified: Mon, 26 Jun 2023 05:41:44 GMT category: Parsers foundInMaster: true @@ -33546,7 +33547,7 @@ owner: czasg logo: https://avatars.githubusercontent.com/u/44974561?v=4 license: MIT - repoEtag: '"82a6a27cb9f382d7a1e0843dc889208c016e21cd32144df61dcc18626e7fe15b"' + repoEtag: '"1ca91b1e2b1f450adcf47f3d79adadf32d13f53232494a9cfb2768a1960391d6"' repoLastModified: Tue, 15 Aug 2023 14:42:53 GMT category: Server Implementations foundInMaster: true @@ -33857,17 +33858,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-22T05:34:28Z' + updated: '2023-08-23T20:25:30Z' language: Java archived: false - stars: 7249 + stars: 7251 watchers: 313 - forks: 2151 + forks: 2152 owner: swagger-api logo: https://avatars.githubusercontent.com/u/7658037?v=4 license: Apache-2.0 - repoEtag: '"20e904ae2373747cf68b1f11e1ce0fc465eda411d2864ec9f49bd67ce1b55336"' - repoLastModified: Tue, 22 Aug 2023 05:34:28 GMT + repoEtag: '"dff1831a5fb5b4f767600f1338262f788f93db2b06c2125108d33a16a1eec4e7"' + repoLastModified: Wed, 23 Aug 2023 20:25:30 GMT id: 266d60df2d48ad8a47539de3c1071f3a - source: IMPLEMENTATIONS.md name: Microsoft.OpenApi.net @@ -33890,17 +33891,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-20T11:01:10Z' + updated: '2023-08-23T19:14:16Z' language: C# archived: false - stars: 1190 + stars: 1189 watchers: 64 forks: 199 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"acf20d3d32977c73bf86146ec773cbbd124bca28f7aca33c906755f0abfdd7b7"' - repoLastModified: Sun, 20 Aug 2023 11:01:10 GMT + repoEtag: '"f0c6c8856364e8ef0b8f48a2564cf576808156dcbf2d4dd8c3b81f4502175cf1"' + repoLastModified: Wed, 23 Aug 2023 19:14:16 GMT id: f3215034d64cfcbcc28a4bdb0205a075 - source: IMPLEMENTATIONS.md name: openapi-validator @@ -34096,17 +34097,17 @@ repositoryId: 32223373 description: A model-based test case generator created: '2015-03-14T17:22:38Z' - updated: '2023-07-29T01:11:14Z' + updated: '2023-08-23T09:13:46Z' language: Java archived: false - stars: 180 + stars: 181 watchers: 18 forks: 47 owner: Cornutum logo: https://avatars.githubusercontent.com/u/11477145?v=4 license: MIT - repoEtag: '"8f401fa1d4636d2a3c785558409c983671a63afc736fbaacd53e97d0bfd47c4a"' - repoLastModified: Sat, 29 Jul 2023 01:11:14 GMT + repoEtag: '"6abd7678599c52f4977e4b0aef22941ab760522ab51cdbe93450a808ea54fa70"' + repoLastModified: Wed, 23 Aug 2023 09:13:46 GMT id: 14da7572a7632f9a9fb1c1ab2acef586 - source: IMPLEMENTATIONS.md name: Vert.x Web API Contract @@ -34204,11 +34205,11 @@ archived: false stars: 3386 watchers: 180 - forks: 994 + forks: 996 owner: mevdschee logo: https://avatars.githubusercontent.com/u/1288217?v=4 license: MIT - repoEtag: '"3728f4aa4774e722991392ac34dc3473228e3d5d8a6ce328e3555c929df50fdd"' + repoEtag: '"b8df3be084cfbbc53c9f81ef9c58e1e0dd547252425e91bdc0cc93259268aca0"' repoLastModified: Tue, 22 Aug 2023 00:49:19 GMT id: 84a7be428932f7789a8ad1a220b22216 - source: IMPLEMENTATIONS.md @@ -34950,11 +34951,11 @@ archived: false stars: 408 watchers: 20 - forks: 60 + forks: 59 owner: openclarity logo: https://avatars.githubusercontent.com/u/89657786?v=4 license: Apache-2.0 - repoEtag: '"a6574e0f04b2c15e0ea82aa566e3363bdd27468f3942399c31499ef3107ddcb7"' + repoEtag: '"3f2c48db771a71c316a37c48539fa08276314c2b9668dc459dc090e46e83165b"' repoLastModified: Fri, 11 Aug 2023 08:54:59 GMT foundInMaster: true id: 68b981acc13af75d4eb8c04143885e13 @@ -35177,7 +35178,7 @@ owner: loopbackio logo: https://avatars.githubusercontent.com/u/22173486?v=4 license: NOASSERTION - repoEtag: '"57201b417fad50a767ea937a9807dd5f12b525b139f16de0cc84f8fe7ee3301c"' + repoEtag: '"621f62d20f4fd779f1ca90f3f62e60922b7d19b732af517e093fbf85831e59b9"' repoLastModified: Tue, 22 Aug 2023 23:10:36 GMT foundInMaster: true id: 9132c25ad468bed25b9dbbe3a352abc2 @@ -35250,17 +35251,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-21T13:20:57Z' + updated: '2023-08-23T08:46:05Z' language: Python archived: false - stars: 2247 + stars: 2248 watchers: 35 - forks: 257 + forks: 258 owner: microsoft logo: https://avatars.githubusercontent.com/u/6154722?v=4 license: MIT - repoEtag: '"57bbbc27e465db323aff98a46a69597e19ca54ae3b195e1df4a9adb6bb3509b5"' - repoLastModified: Mon, 21 Aug 2023 13:20:57 GMT + repoEtag: '"8ee29329658a94cd7e52b34d0f306a0f72a578a03e4a4c04957f660cb59ce3bf"' + repoLastModified: Wed, 23 Aug 2023 08:46:05 GMT foundInMaster: true oldLocations: - https://github.com/microsoft/restler @@ -35276,17 +35277,17 @@ repositoryId: 528459414 description: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution created: '2022-08-24T14:26:52Z' - updated: '2023-08-22T02:03:03Z' + updated: '2023-08-23T08:24:26Z' language: HTML archived: false - stars: 48 + stars: 49 watchers: 2 forks: 18 owner: xiaoymin logo: https://avatars.githubusercontent.com/u/7894406?v=4 license: Apache-2.0 - repoEtag: '"f21f3c70d7663dd06c747b76002e41b9134353c3e657fe269e9ee3754b852bbe"' - repoLastModified: Tue, 22 Aug 2023 02:03:03 GMT + repoEtag: '"739a594420d632211e1e685ffc5456878dccc4e45a0c69bbef0a7b90c168d5e0"' + repoLastModified: Wed, 23 Aug 2023 08:24:26 GMT category: - Low-level Tooling - SDK @@ -35413,7 +35414,7 @@ owner: weikangchia logo: https://avatars.githubusercontent.com/u/2174882?v=4 license: MIT - repoEtag: '"d8e80732df48123d9ddb38386cf43b947078e5c3be390b25079003b3dd7eadf1"' + repoEtag: '"87d820ba7ab4169d7fe4ccf8e08801a9a4450d352c020b9f9a100a1ca94752c5"' repoLastModified: Sat, 20 Nov 2021 15:06:15 GMT foundInMaster: true category: @@ -36179,7 +36180,7 @@ owner: vert-x3 logo: https://avatars.githubusercontent.com/u/8124623?v=4 license: Apache-2.0 - repoEtag: '"64d110ef9761a7b9af2cdcdfd7cad8158aa9b69f1314d0c68e903f72c74c93d3"' + repoEtag: '"9b38eddf69c9686e078cbb042727fd8fdef89861a15666de3015c11e720a6cb6"' repoLastModified: Mon, 21 Aug 2023 08:40:52 GMT foundInMaster: true v3_link: https://github.com/vert-x3/vertx-web/issues/1872 @@ -36216,11 +36217,11 @@ archived: false stars: 1210 watchers: 84 - forks: 222 + forks: 223 owner: unionj-cloud logo: https://avatars.githubusercontent.com/u/79033021?v=4 license: MIT - repoEtag: '"eedf9f11fae6c64258393cba5281227ee321185ebc2d74c53759a7a012dddae6"' + repoEtag: '"008e44496c2ed8a988b3833981658096c6293b23e267b3e2ac7e873b100ea8f2"' repoLastModified: Sun, 20 Aug 2023 12:01:06 GMT foundInMaster: true category: SDK @@ -36324,7 +36325,7 @@ A chrome extension and also a web app. Swagger UI Alternative. Get a pretty rest documentation app easily cloning this stuff :book: created: '2021-06-30T18:26:03Z' - updated: '2023-08-18T17:01:29Z' + updated: '2023-08-23T16:14:39Z' language: TypeScript archived: false stars: 10 @@ -36333,8 +36334,8 @@ owner: CharlyJazz logo: https://avatars.githubusercontent.com/u/12489333?v=4 license: Apache-2.0 - repoEtag: '"288d1595e4e7e5e85b362f2ecd90b089442f78f0950cfe9fc6d91d47bec226e3"' - repoLastModified: Fri, 18 Aug 2023 17:01:29 GMT + repoEtag: '"6d31d6e56843b28ef3e6018e39b4a16edbcd631433bdf7fcf6c48daf28789780"' + repoLastModified: Wed, 23 Aug 2023 16:14:39 GMT foundInMaster: true category: Parsers id: 8c3f8ed37b463f0b95c1e3f78a9bc2c2