diff --git a/docs/categories/all.html b/docs/categories/all.html
index 832b5656..b3336d51 100644
--- a/docs/categories/all.html
+++ b/docs/categories/all.html
@@ -357,7 +357,7 @@
Yes
Yes |
Yes |
- 6193 |
+ 6213 |
@@ -380,7 +380,7 @@ Yes |
No |
No |
- 1170 |
+ 1171 |
@@ -403,7 +403,7 @@ No |
Yes |
No |
- 1698 |
+ 1699 |
@@ -466,7 +466,7 @@ Yes |
Yes |
Yes |
- 23340 |
+ 23345 |
@@ -529,7 +529,7 @@ Yes |
Yes |
Yes |
- 617 |
+ 619 |
@@ -552,7 +552,7 @@ No |
Yes |
No |
- 695 |
+ 697 |
@@ -887,7 +887,7 @@ No |
Yes |
Yes |
- 21399 |
+ 21406 |
@@ -933,7 +933,7 @@ No |
Yes |
Yes |
- 2855 |
+ 2860 |
@@ -1045,7 +1045,7 @@ No |
Yes |
Yes |
- 326 |
+ 327 |
@@ -1410,7 +1410,7 @@ Yes |
Yes |
Yes |
- 4243 |
+ 4245 |
@@ -1433,7 +1433,7 @@ Yes |
Yes |
Yes |
- 1358 |
+ 1360 |
@@ -1587,7 +1587,7 @@ Yes |
Yes |
Yes |
- 1057 |
+ 1060 |
@@ -1610,7 +1610,7 @@ No |
Yes |
No |
- 1106 |
+ 1107 |
@@ -1702,7 +1702,7 @@ No |
Yes |
Yes |
- 8538 |
+ 8540 |
@@ -1748,7 +1748,7 @@ No |
Yes |
No |
- 1852 |
+ 1853 |
@@ -1834,7 +1834,7 @@ No |
Yes |
No |
- 1678 |
+ 1680 |
@@ -1989,7 +1989,7 @@ No |
Yes |
No |
- 1630 |
+ 1632 |
@@ -2033,7 +2033,7 @@ Yes |
Yes |
Yes |
- 2470 |
+ 2471 |
@@ -2230,7 +2230,7 @@ No |
Yes |
Yes |
- 1096 |
+ 1097 |
@@ -2341,7 +2341,7 @@ No |
Yes |
Yes |
- 2562 |
+ 2566 |
@@ -2425,7 +2425,7 @@ No |
Yes |
No |
- 224 |
+ 225 |
@@ -2641,7 +2641,7 @@ No |
No |
Yes |
- 9484 |
+ 9486 |
@@ -2710,7 +2710,7 @@ No |
Yes |
Yes |
- 6708 |
+ 6709 |
@@ -2756,7 +2756,7 @@ No |
Yes |
Yes |
- 16922 |
+ 16924 |
@@ -2777,7 +2777,7 @@ No |
Yes |
Yes |
- 4597 |
+ 4598 |
@@ -2846,7 +2846,7 @@ Yes |
Yes |
Yes |
- 571 |
+ 570 |
@@ -3077,7 +3077,7 @@ No |
Yes |
No |
- 534 |
+ 533 |
@@ -3438,7 +3438,7 @@ No |
Yes |
No |
- 4339 |
+ 4343 |
@@ -3484,7 +3484,7 @@ Yes |
Yes |
No |
- 888 |
+ 895 |
@@ -3593,7 +3593,7 @@ No |
Yes |
Yes |
- 5928 |
+ 5927 |
@@ -3637,7 +3637,7 @@ No |
Yes |
Yes |
- 12547 |
+ 12549 |
@@ -3855,7 +3855,7 @@ No |
Yes |
Yes |
- 421 |
+ 419 |
@@ -3878,7 +3878,7 @@ No |
Yes |
No |
- 28190 |
+ 28197 |
@@ -4030,7 +4030,7 @@ Yes |
Yes |
No |
- 1272 |
+ 1274 |
@@ -4053,7 +4053,7 @@ Yes |
Yes |
Yes |
- 1731 |
+ 1732 |
@@ -4325,7 +4325,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -4369,7 +4369,7 @@ Yes |
Yes |
Yes |
- 573 |
+ 574 |
@@ -4436,7 +4436,7 @@ Yes |
Yes |
Yes |
- 442 |
+ 446 |
@@ -4809,7 +4809,7 @@ Yes |
Yes |
Yes |
- 30 |
+ 32 |
@@ -4897,7 +4897,7 @@ Yes |
Yes |
Yes |
- 2598 |
+ 2600 |
@@ -4964,7 +4964,7 @@ Yes |
Yes |
No |
- 1372 |
+ 1375 |
@@ -4987,7 +4987,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -5282,7 +5282,7 @@ Yes |
Yes |
No |
- 56 |
+ 57 |
@@ -5305,7 +5305,7 @@ No |
Yes |
No |
- 76029 |
+ 76062 |
@@ -5351,7 +5351,7 @@ Yes |
Yes |
No |
- 23340 |
+ 23345 |
@@ -5393,7 +5393,7 @@ No |
Yes |
No |
- 6278 |
+ 6279 |
@@ -5416,7 +5416,7 @@ No |
Yes |
No |
- 6065 |
+ 6070 |
@@ -5439,7 +5439,7 @@ Yes |
Yes |
Yes |
- 5611 |
+ 5614 |
@@ -5460,7 +5460,7 @@ No |
Yes |
No |
- 4088 |
+ 4090 |
@@ -5481,7 +5481,7 @@ No |
Yes |
No |
- 3836 |
+ 3837 |
@@ -5504,7 +5504,7 @@ No |
Yes |
No |
- 3252 |
+ 3255 |
@@ -5567,7 +5567,7 @@ No |
Yes |
No |
- 2323 |
+ 2326 |
@@ -5588,7 +5588,7 @@ No |
Yes |
No |
- 2275 |
+ 2280 |
@@ -5653,7 +5653,7 @@ No |
Yes |
No |
- 1648 |
+ 1649 |
@@ -5674,7 +5674,7 @@ No |
Yes |
No |
- 1420 |
+ 1421 |
@@ -5718,7 +5718,7 @@ No |
Yes |
No |
- 1320 |
+ 1324 |
@@ -5739,7 +5739,7 @@ No |
Yes |
No |
- 1169 |
+ 1171 |
@@ -5760,7 +5760,7 @@ No |
Yes |
No |
- 1021 |
+ 1022 |
@@ -5781,7 +5781,7 @@ No |
Yes |
No |
- 912 |
+ 911 |
@@ -5802,7 +5802,7 @@ No |
Yes |
No |
- 833 |
+ 835 |
@@ -5823,7 +5823,7 @@ No |
Yes |
No |
- 805 |
+ 806 |
@@ -5930,7 +5930,7 @@ Yes |
Yes |
No |
- 669 |
+ 670 |
@@ -6014,7 +6014,7 @@ No |
Yes |
No |
- 541 |
+ 542 |
@@ -6098,7 +6098,7 @@ No |
Yes |
No |
- 488 |
+ 489 |
@@ -6119,7 +6119,7 @@ No |
Yes |
No |
- 510 |
+ 511 |
@@ -6224,7 +6224,7 @@ No |
Yes |
No |
- 413 |
+ 414 |
@@ -6436,7 +6436,7 @@ No |
Yes |
No |
- 328 |
+ 330 |
@@ -7450,7 +7450,7 @@ No |
Yes |
No |
- 127 |
+ 128 |
@@ -7492,7 +7492,7 @@ No |
Yes |
No |
- 118 |
+ 119 |
@@ -7996,7 +7996,7 @@ No |
Yes |
No |
- 88 |
+ 87 |
@@ -8017,7 +8017,7 @@ No |
Yes |
No |
- 83 |
+ 84 |
@@ -8122,7 +8122,7 @@ No |
Yes |
No |
- 76 |
+ 77 |
@@ -8800,7 +8800,7 @@ No |
Yes |
No |
- 47 |
+ 48 |
@@ -13243,7 +13243,7 @@ No |
Yes |
No |
- 7 |
+ 9 |
@@ -24751,7 +24751,7 @@ Yes |
Yes |
No |
- 2228 |
+ 2231 |
@@ -24772,7 +24772,7 @@ Yes |
No |
No |
- 54 |
+ 55 |
@@ -25276,7 +25276,7 @@ No |
Yes |
Yes |
- 2867 |
+ 2868 |
@@ -26981,7 +26981,7 @@ Yes |
Yes |
Yes |
- 659 |
+ 660 |
@@ -27065,7 +27065,7 @@ No |
Yes |
No |
- 26371 |
+ 26464 |
@@ -31329,7 +31329,7 @@ No |
No |
No |
- 149 |
+ 148 |
@@ -31977,7 +31977,7 @@ No |
Yes |
Yes |
- 507 |
+ 508 |
@@ -32157,7 +32157,7 @@ No |
Yes |
Yes |
- 2578 |
+ 2580 |
@@ -32707,7 +32707,7 @@ No |
Yes |
No |
- 1106 |
+ 1107 |
@@ -33586,7 +33586,7 @@ Scalar (link)
|
Stars |
- 6193 |
+ 6213 |
Watchers |
@@ -33594,7 +33594,7 @@ Scalar (link)
Forks |
- 197 |
+ 198 |
Created |
@@ -33602,7 +33602,7 @@ Scalar (link)
Last Updated |
- 2024-09-27T00:40:20Z |
+ 2024-09-28T03:20:44Z |
Archived |
@@ -33637,7 +33637,7 @@ Scramble (link)
Stars |
- 1170 |
+ 1171 |
Watchers |
@@ -33653,7 +33653,7 @@ Scramble (link)
Last Updated |
- 2024-09-26T19:04:08Z |
+ 2024-09-27T20:20:27Z |
Archived |
@@ -33688,7 +33688,7 @@ Scribe (link)
Stars |
- 1698 |
+ 1699 |
Watchers |
@@ -33704,7 +33704,7 @@ Scribe (link)
Last Updated |
- 2024-09-26T16:44:40Z |
+ 2024-09-27T13:55:45Z |
Archived |
@@ -33841,7 +33841,7 @@ ReDoc (link)
Stars |
- 23340 |
+ 23345 |
Watchers |
@@ -33849,7 +33849,7 @@ ReDoc (link)
Forks |
- 2289 |
+ 2290 |
Created |
@@ -33857,7 +33857,7 @@ ReDoc (link)
Last Updated |
- 2024-09-27T03:22:28Z |
+ 2024-09-27T17:55:38Z |
Archived |
@@ -33994,7 +33994,7 @@ OpenAPI-UI (link)
Stars |
- 617 |
+ 619 |
Watchers |
@@ -34010,7 +34010,7 @@ OpenAPI-UI (link)
Last Updated |
- 2024-09-27T02:31:30Z |
+ 2024-09-27T07:29:06Z |
Archived |
@@ -34045,7 +34045,7 @@ oasdiff (link)
Stars |
- 695 |
+ 697 |
Watchers |
@@ -34061,7 +34061,7 @@ oasdiff (link)
Last Updated |
- 2024-09-26T15:04:12Z |
+ 2024-09-27T08:54:18Z |
Archived |
@@ -34810,15 +34810,15 @@ OpenAPI Generator (link)
Stars |
- 21399 |
+ 21406 |
Watchers |
- 220 |
+ 221 |
Forks |
- 6475 |
+ 6476 |
Created |
@@ -34826,7 +34826,7 @@ OpenAPI Generator (link)
Last Updated |
- 2024-09-27T01:05:12Z |
+ 2024-09-27T23:59:23Z |
Archived |
@@ -34912,7 +34912,7 @@ Kiota Api Client Generator (link)
Stars |
- 2855 |
+ 2860 |
Watchers |
@@ -34928,7 +34928,7 @@ Kiota Api Client Generator (link)
Last Updated |
- 2024-09-26T22:28:22Z |
+ 2024-09-28T01:46:18Z |
Archived |
@@ -35167,7 +35167,7 @@ VSCode OpenAPI Editor (link)
Stars |
- 326 |
+ 327 |
Watchers |
@@ -35183,7 +35183,7 @@ VSCode OpenAPI Editor (link)
Last Updated |
- 2024-09-25T12:09:15Z |
+ 2024-09-28T02:38:09Z |
Archived |
@@ -35277,7 +35277,7 @@ Swagger Editor (link)
Forks |
- 2245 |
+ 2246 |
Created |
@@ -35285,7 +35285,7 @@ Swagger Editor (link)
Last Updated |
- 2024-09-27T00:34:16Z |
+ 2024-09-27T04:50:23Z |
Archived |
@@ -36034,7 +36034,7 @@ Prism (link)
Stars |
- 4243 |
+ 4245 |
Watchers |
@@ -36050,7 +36050,7 @@ Prism (link)
Last Updated |
- 2024-09-26T12:25:51Z |
+ 2024-09-27T14:45:54Z |
Archived |
@@ -36085,7 +36085,7 @@ Microcks (link)
Stars |
- 1358 |
+ 1360 |
Watchers |
@@ -36101,7 +36101,7 @@ Microcks (link)
Last Updated |
- 2024-09-26T16:11:30Z |
+ 2024-09-27T18:13:41Z |
Archived |
@@ -36442,7 +36442,7 @@ @hey-api/openapi-ts (link)
Stars |
- 1057 |
+ 1060 |
Watchers |
@@ -36458,7 +36458,7 @@ @hey-api/openapi-ts (link)
Last Updated |
- 2024-09-26T15:55:35Z |
+ 2024-09-27T14:17:30Z |
Archived |
@@ -36493,7 +36493,7 @@ Vert.x Web Api Contract (link)
Stars |
- 1106 |
+ 1107 |
Watchers |
@@ -36509,7 +36509,7 @@ Vert.x Web Api Contract (link)
Last Updated |
- 2024-09-25T14:04:37Z |
+ 2024-09-27T13:26:23Z |
Archived |
@@ -36697,7 +36697,7 @@ API Platform (link)
Stars |
- 8538 |
+ 8540 |
Watchers |
@@ -36713,7 +36713,7 @@ API Platform (link)
Last Updated |
- 2024-09-26T17:41:46Z |
+ 2024-09-27T17:16:15Z |
Archived |
@@ -36799,7 +36799,7 @@ Fusio (link)
Stars |
- 1852 |
+ 1853 |
Watchers |
@@ -36815,7 +36815,7 @@ Fusio (link)
Last Updated |
- 2024-09-25T05:24:56Z |
+ 2024-09-27T04:21:39Z |
Archived |
@@ -37003,7 +37003,7 @@ @nestjs/swagger (link)
Stars |
- 1678 |
+ 1680 |
Watchers |
@@ -37019,7 +37019,7 @@ @nestjs/swagger (link)
Last Updated |
- 2024-09-26T01:32:55Z |
+ 2024-09-28T01:42:41Z |
Archived |
@@ -37325,7 +37325,7 @@ portman (link)
Last Updated |
- 2024-09-11T07:15:03Z |
+ 2024-09-27T18:31:57Z |
Archived |
@@ -37360,7 +37360,7 @@ Step CI (link)
Stars |
- 1630 |
+ 1632 |
Watchers |
@@ -37376,7 +37376,7 @@ Step CI (link)
Last Updated |
- 2024-09-26T07:47:16Z |
+ 2024-09-27T18:43:49Z |
Archived |
@@ -37462,7 +37462,7 @@ Spectral (link)
Stars |
- 2470 |
+ 2471 |
Watchers |
@@ -37478,7 +37478,7 @@ Spectral (link)
Last Updated |
- 2024-09-26T12:01:26Z |
+ 2024-09-27T08:39:35Z |
Archived |
@@ -37776,7 +37776,7 @@ openapi_first (link)
Forks |
- 13 |
+ 14 |
Created |
@@ -37921,7 +37921,7 @@ APIDevTools/swagger-parser (link)
Stars |
- 1096 |
+ 1097 |
Watchers |
@@ -37937,7 +37937,7 @@ APIDevTools/swagger-parser (link)
Last Updated |
- 2024-09-25T20:36:56Z |
+ 2024-09-27T11:29:50Z |
Archived |
@@ -38176,7 +38176,7 @@ kin-openapi (link)
Stars |
- 2562 |
+ 2566 |
Watchers |
@@ -38192,7 +38192,7 @@ kin-openapi (link)
Last Updated |
- 2024-09-27T03:26:38Z |
+ 2024-09-27T16:36:17Z |
Archived |
@@ -38380,7 +38380,7 @@ Object Oriented OpenAPI Specification (
Stars |
- 224 |
+ 225 |
Watchers |
@@ -38396,7 +38396,7 @@ Object Oriented OpenAPI Specification (
Last Updated |
- 2024-08-11T14:35:49Z |
+ 2024-09-28T01:32:54Z |
Archived |
@@ -38890,7 +38890,7 @@ go-swagger (link)
Stars |
- 9484 |
+ 9486 |
Watchers |
@@ -38898,7 +38898,7 @@ go-swagger (link)
Forks |
- 1247 |
+ 1246 |
Created |
@@ -38906,7 +38906,7 @@ go-swagger (link)
Last Updated |
- 2024-09-26T10:44:36Z |
+ 2024-09-27T16:29:03Z |
Archived |
@@ -39043,7 +39043,7 @@ NSwag (link)
Stars |
- 6708 |
+ 6709 |
Watchers |
@@ -39051,7 +39051,7 @@ NSwag (link)
Forks |
- 1241 |
+ 1242 |
Created |
@@ -39059,7 +39059,7 @@ NSwag (link)
Last Updated |
- 2024-09-26T02:43:37Z |
+ 2024-09-27T09:32:08Z |
Archived |
@@ -39145,7 +39145,7 @@ Swagger-Codegen (link)
Stars |
- 16922 |
+ 16924 |
Watchers |
@@ -39161,7 +39161,7 @@ Swagger-Codegen (link)
Last Updated |
- 2024-09-26T21:47:50Z |
+ 2024-09-27T18:22:19Z |
Archived |
@@ -39196,7 +39196,7 @@ Azure AutoRest (link)
Stars |
- 4597 |
+ 4598 |
Watchers |
@@ -39212,7 +39212,7 @@ Azure AutoRest (link)
Last Updated |
- 2024-09-26T03:22:23Z |
+ 2024-09-27T05:10:53Z |
Archived |
@@ -39349,7 +39349,7 @@ api (link)
Stars |
- 571 |
+ 570 |
Watchers |
@@ -39365,7 +39365,7 @@ api (link)
Last Updated |
- 2024-09-26T07:38:53Z |
+ 2024-09-27T22:20:17Z |
Archived |
@@ -39910,7 +39910,7 @@ openapi-fuzzer (link)
Stars |
- 534 |
+ 533 |
Watchers |
@@ -39926,7 +39926,7 @@ openapi-fuzzer (link)
Last Updated |
- 2024-09-26T07:34:10Z |
+ 2024-09-27T09:58:32Z |
Archived |
@@ -39977,7 +39977,7 @@ cats (link)
Last Updated |
- 2024-09-26T07:45:14Z |
+ 2024-09-27T18:08:08Z |
Archived |
@@ -40436,7 +40436,7 @@ OpenApiSpecGeneratorPlugin (link)
Last Updated |
- 2024-09-26T12:11:50Z |
+ 2024-09-27T06:53:23Z |
Archived |
@@ -40726,7 +40726,7 @@ TypeSpec (link)
Stars |
- 4339 |
+ 4343 |
Watchers |
@@ -40734,7 +40734,7 @@ TypeSpec (link)
Forks |
- 200 |
+ 202 |
Created |
@@ -40742,7 +40742,7 @@ TypeSpec (link)
Last Updated |
- 2024-09-27T02:18:41Z |
+ 2024-09-27T18:07:54Z |
Archived |
@@ -40828,7 +40828,7 @@ Restish (link)
Stars |
- 888 |
+ 895 |
Watchers |
@@ -40844,7 +40844,7 @@ Restish (link)
Last Updated |
- 2024-09-24T18:45:02Z |
+ 2024-09-28T03:14:11Z |
Archived |
@@ -40997,7 +40997,7 @@ openapi-format (link)
Last Updated |
- 2024-09-26T11:06:09Z |
+ 2024-09-27T17:15:15Z |
Archived |
@@ -41083,7 +41083,7 @@ SpringFox (link)
Stars |
- 5928 |
+ 5927 |
Watchers |
@@ -41099,7 +41099,7 @@ SpringFox (link)
Last Updated |
- 2024-09-24T18:30:37Z |
+ 2024-09-27T22:43:58Z |
Archived |
@@ -41185,7 +41185,7 @@ OWASP ZAP (link)
Stars |
- 12547 |
+ 12549 |
Watchers |
@@ -41201,7 +41201,7 @@ OWASP ZAP (link)
Last Updated |
- 2024-09-26T11:55:17Z |
+ 2024-09-27T17:50:50Z |
Archived |
@@ -41695,7 +41695,7 @@ APIFuzzer (link)
Stars |
- 421 |
+ 419 |
Watchers |
@@ -41711,7 +41711,7 @@ APIFuzzer (link)
Last Updated |
- 2024-09-24T21:08:31Z |
+ 2024-09-27T09:58:12Z |
Archived |
@@ -41746,7 +41746,7 @@ Django REST Framework (link)
Stars |
- 28190 |
+ 28197 |
Watchers |
@@ -41762,7 +41762,7 @@ Django REST Framework (link)
Last Updated |
- 2024-09-27T03:09:53Z |
+ 2024-09-28T02:45:30Z |
Archived |
@@ -42103,7 +42103,7 @@ openapi-python-client (link)
Stars |
- 1272 |
+ 1274 |
Watchers |
@@ -42119,7 +42119,7 @@ openapi-python-client (link)
Last Updated |
- 2024-09-26T00:42:18Z |
+ 2024-09-27T15:35:10Z |
Archived |
@@ -42154,7 +42154,7 @@ Elements (link)
Stars |
- 1731 |
+ 1732 |
Watchers |
@@ -42162,7 +42162,7 @@ Elements (link)
Forks |
- 199 |
+ 200 |
Created |
@@ -42170,7 +42170,7 @@ Elements (link)
Last Updated |
- 2024-09-25T15:33:27Z |
+ 2024-09-27T22:11:35Z |
Archived |
@@ -42578,7 +42578,7 @@ kotlin-openapi3-dsl (link)
Last Updated |
- 2024-09-24T00:03:51Z |
+ 2024-09-27T15:13:40Z |
Archived |
@@ -42766,7 +42766,7 @@ Counterfact (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -42782,7 +42782,7 @@ Counterfact (link)
Last Updated |
- 2024-09-27T03:25:56Z |
+ 2024-09-27T21:35:45Z |
Archived |
@@ -42868,7 +42868,7 @@ vacuum (link)
Stars |
- 573 |
+ 574 |
Watchers |
@@ -42884,7 +42884,7 @@ vacuum (link)
Last Updated |
- 2024-09-26T23:04:21Z |
+ 2024-09-27T11:38:09Z |
Archived |
@@ -43021,7 +43021,7 @@ libopenapi (link)
Stars |
- 442 |
+ 446 |
Watchers |
@@ -43037,7 +43037,7 @@ libopenapi (link)
Last Updated |
- 2024-09-26T11:18:01Z |
+ 2024-09-28T01:45:53Z |
Archived |
@@ -43496,7 +43496,7 @@ Specmatic (link)
Last Updated |
- 2024-09-26T04:41:27Z |
+ 2024-09-27T15:47:26Z |
Archived |
@@ -43888,7 +43888,7 @@ api-diff-viewer (link)
Stars |
- 30 |
+ 32 |
Watchers |
@@ -43904,7 +43904,7 @@ api-diff-viewer (link)
Last Updated |
- 2024-09-21T03:19:59Z |
+ 2024-09-27T20:24:47Z |
Archived |
@@ -44092,7 +44092,7 @@ 🌿 Fern (link)
Stars |
- 2598 |
+ 2600 |
Watchers |
@@ -44108,7 +44108,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-09-26T22:52:06Z |
+ 2024-09-28T00:40:54Z |
Archived |
@@ -44245,7 +44245,7 @@ Swift OpenAPI Generator (link)
Stars |
- 1372 |
+ 1375 |
Watchers |
@@ -44261,7 +44261,7 @@ Swift OpenAPI Generator (link)
Last Updated |
- 2024-09-25T12:08:40Z |
+ 2024-09-27T19:44:48Z |
Archived |
@@ -44296,7 +44296,7 @@ wiretap (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -44312,7 +44312,7 @@ wiretap (link)
Last Updated |
- 2024-09-25T17:01:49Z |
+ 2024-09-27T17:59:32Z |
Archived |
@@ -44618,7 +44618,7 @@ Fuego (link)
Last Updated |
- 2024-09-26T08:19:25Z |
+ 2024-09-27T10:26:47Z |
Archived |
@@ -44959,7 +44959,7 @@ Zudoku (link)
Stars |
- 56 |
+ 57 |
Watchers |
@@ -44975,7 +44975,7 @@ Zudoku (link)
Last Updated |
- 2024-09-26T02:42:13Z |
+ 2024-09-27T14:13:00Z |
Archived |
@@ -45010,15 +45010,15 @@ FastAPI (link)
Stars |
- 76029 |
+ 76062 |
Watchers |
- 675 |
+ 676 |
Forks |
- 6407 |
+ 6408 |
Created |
@@ -45026,7 +45026,7 @@ FastAPI (link)
Last Updated |
- 2024-09-27T03:30:27Z |
+ 2024-09-27T23:44:05Z |
Archived |
@@ -45069,7 +45069,7 @@ swagger-ui (link)
Forks |
- 8923 |
+ 8922 |
Created |
@@ -45077,7 +45077,7 @@ swagger-ui (link)
Last Updated |
- 2024-09-27T03:22:47Z |
+ 2024-09-27T22:43:58Z |
Archived |
@@ -45112,7 +45112,7 @@ Redoc (link)
Stars |
- 23340 |
+ 23345 |
Watchers |
@@ -45120,7 +45120,7 @@ Redoc (link)
Forks |
- 2289 |
+ 2290 |
Created |
@@ -45128,7 +45128,7 @@ Redoc (link)
Last Updated |
- 2024-09-27T03:22:28Z |
+ 2024-09-27T17:55:38Z |
Archived |
@@ -45214,7 +45214,7 @@ mockoon (link)
Stars |
- 6278 |
+ 6279 |
Watchers |
@@ -45230,7 +45230,7 @@ mockoon (link)
Last Updated |
- 2024-09-26T19:38:26Z |
+ 2024-09-27T10:13:56Z |
Archived |
@@ -45265,7 +45265,7 @@ OpenAPI Server Code Generator (oapi-cod
Stars |
- 6065 |
+ 6070 |
Watchers |
@@ -45273,7 +45273,7 @@ OpenAPI Server Code Generator (oapi-cod
Forks |
- 840 |
+ 841 |
Created |
@@ -45281,7 +45281,7 @@ OpenAPI Server Code Generator (oapi-cod
Last Updated |
- 2024-09-26T16:46:02Z |
+ 2024-09-27T15:11:10Z |
Archived |
@@ -45316,7 +45316,7 @@ OpenAPI TypeScript (link)
Stars |
- 5611 |
+ 5614 |
Watchers |
@@ -45332,7 +45332,7 @@ OpenAPI TypeScript (link)
Last Updated |
- 2024-09-26T23:39:58Z |
+ 2024-09-27T21:51:01Z |
Archived |
@@ -45367,7 +45367,7 @@ knife4j (link)
Stars |
- 4088 |
+ 4090 |
Watchers |
@@ -45383,7 +45383,7 @@ knife4j (link)
Last Updated |
- 2024-09-26T10:38:04Z |
+ 2024-09-28T01:07:26Z |
Archived |
@@ -45418,7 +45418,7 @@ openapi-directory (link)
Stars |
- 3836 |
+ 3837 |
Watchers |
@@ -45434,7 +45434,7 @@ openapi-directory (link)
Last Updated |
- 2024-09-26T16:11:51Z |
+ 2024-09-27T03:47:04Z |
Archived |
@@ -45469,11 +45469,11 @@ springdoc-openapi (link)
Stars |
- 3252 |
+ 3255 |
Watchers |
- 43 |
+ 44 |
Forks |
@@ -45485,7 +45485,7 @@ springdoc-openapi (link)
Last Updated |
- 2024-09-26T09:23:23Z |
+ 2024-09-27T19:23:26Z |
Archived |
@@ -45622,7 +45622,7 @@ drf-spectacular (link)
Stars |
- 2323 |
+ 2326 |
Watchers |
@@ -45638,7 +45638,7 @@ drf-spectacular (link)
Last Updated |
- 2024-09-26T11:24:11Z |
+ 2024-09-27T17:26:06Z |
Archived |
@@ -45673,7 +45673,7 @@ msgspec (link)
Stars |
- 2275 |
+ 2280 |
Watchers |
@@ -45689,7 +45689,7 @@ msgspec (link)
Last Updated |
- 2024-09-26T16:46:32Z |
+ 2024-09-27T21:05:24Z |
Archived |
@@ -45826,7 +45826,7 @@ rapidoc (link)
Stars |
- 1648 |
+ 1649 |
Watchers |
@@ -45842,7 +45842,7 @@ rapidoc (link)
Last Updated |
- 2024-09-27T00:34:15Z |
+ 2024-09-27T21:15:54Z |
Archived |
@@ -45877,7 +45877,7 @@ openapi-generator-cli (link)
Stars |
- 1420 |
+ 1421 |
Watchers |
@@ -45893,7 +45893,7 @@ openapi-generator-cli (link)
Last Updated |
- 2024-09-26T12:55:18Z |
+ 2024-09-28T02:00:43Z |
Archived |
@@ -45979,7 +45979,7 @@ ogen (link)
Stars |
- 1320 |
+ 1324 |
Watchers |
@@ -45995,7 +45995,7 @@ ogen (link)
Last Updated |
- 2024-09-26T16:26:38Z |
+ 2024-09-27T21:14:11Z |
Archived |
@@ -46030,7 +46030,7 @@ apispec (link)
Stars |
- 1169 |
+ 1171 |
Watchers |
@@ -46046,7 +46046,7 @@ apispec (link)
Last Updated |
- 2024-09-14T23:49:20Z |
+ 2024-09-28T02:43:36Z |
Archived |
@@ -46081,7 +46081,7 @@ apiflask (link)
Stars |
- 1021 |
+ 1022 |
Watchers |
@@ -46097,7 +46097,7 @@ apiflask (link)
Last Updated |
- 2024-09-26T06:39:40Z |
+ 2024-09-27T13:10:35Z |
Archived |
@@ -46132,7 +46132,7 @@ zod-to-openapi (link)
Stars |
- 912 |
+ 911 |
Watchers |
@@ -46148,7 +46148,7 @@ zod-to-openapi (link)
Last Updated |
- 2024-09-27T01:37:54Z |
+ 2024-09-27T18:21:00Z |
Archived |
@@ -46183,7 +46183,7 @@ json-schema-validator (link)
Stars |
- 833 |
+ 835 |
Watchers |
@@ -46199,7 +46199,7 @@ json-schema-validator (link)
Last Updated |
- 2024-09-25T16:20:00Z |
+ 2024-09-27T20:18:27Z |
Archived |
@@ -46234,7 +46234,7 @@ studio (link)
Stars |
- 805 |
+ 806 |
Watchers |
@@ -46250,7 +46250,7 @@ studio (link)
Last Updated |
- 2024-09-18T08:35:20Z |
+ 2024-09-27T12:02:13Z |
Archived |
@@ -46293,7 +46293,7 @@ openapi-diff (link)
Forks |
- 153 |
+ 154 |
Created |
@@ -46489,7 +46489,7 @@ create-openapi-repo (link)
Stars |
- 669 |
+ 670 |
Watchers |
@@ -46505,7 +46505,7 @@ create-openapi-repo (link)
Last Updated |
- 2024-09-21T16:22:43Z |
+ 2024-09-27T22:56:08Z |
Archived |
@@ -46693,7 +46693,7 @@ hibiapi (link)
Stars |
- 541 |
+ 542 |
Watchers |
@@ -46709,7 +46709,7 @@ hibiapi (link)
Last Updated |
- 2024-09-20T17:17:32Z |
+ 2024-09-27T08:51:41Z |
Archived |
@@ -46897,7 +46897,7 @@ openapi-mock (link)
Stars |
- 488 |
+ 489 |
Watchers |
@@ -46913,7 +46913,7 @@ openapi-mock (link)
Last Updated |
- 2024-09-26T19:34:58Z |
+ 2024-09-27T05:34:31Z |
Archived |
@@ -46948,7 +46948,7 @@ stackql (link)
Stars |
- 510 |
+ 511 |
Watchers |
@@ -46964,7 +46964,7 @@ stackql (link)
Last Updated |
- 2024-09-25T13:19:41Z |
+ 2024-09-27T20:56:16Z |
Archived |
@@ -47203,7 +47203,7 @@ fastapi-gino-arq-uvicorn (link)
Stars |
- 413 |
+ 414 |
Watchers |
@@ -47219,7 +47219,7 @@ fastapi-gino-arq-uvicorn (link)
Last Updated |
- 2024-08-12T13:21:05Z |
+ 2024-09-27T17:42:26Z |
Archived |
@@ -47713,7 +47713,7 @@ beacon-apis (link)
Stars |
- 328 |
+ 330 |
Watchers |
@@ -47729,7 +47729,7 @@ beacon-apis (link)
Last Updated |
- 2024-09-24T21:56:40Z |
+ 2024-09-27T22:51:49Z |
Archived |
@@ -47831,7 +47831,7 @@ modelina (link)
Last Updated |
- 2024-09-26T02:46:05Z |
+ 2024-09-27T14:51:23Z |
Archived |
@@ -47933,7 +47933,7 @@ chanfana (link)
Last Updated |
- 2024-09-26T02:19:33Z |
+ 2024-09-27T13:50:00Z |
Archived |
@@ -48188,7 +48188,7 @@ zod-openapi (link)
Last Updated |
- 2024-09-23T03:37:39Z |
+ 2024-09-28T02:46:31Z |
Archived |
@@ -48482,7 +48482,7 @@ thema (link)
Watchers |
- 144 |
+ 143 |
Forks |
@@ -49208,7 +49208,7 @@ typescript-backend-toolkit (link)
Last Updated |
- 2024-09-25T17:59:59Z |
+ 2024-09-27T11:12:25Z |
Archived |
@@ -49412,7 +49412,7 @@ refitter (link)
Last Updated |
- 2024-09-26T19:44:30Z |
+ 2024-09-27T09:54:02Z |
Archived |
@@ -49514,7 +49514,7 @@ speakeasy (link)
Last Updated |
- 2024-09-26T18:18:05Z |
+ 2024-09-27T18:26:01Z |
Archived |
@@ -49616,7 +49616,7 @@ apiclientcodegen (link)
Last Updated |
- 2024-09-26T08:27:43Z |
+ 2024-09-27T10:41:06Z |
Archived |
@@ -50118,7 +50118,7 @@ yii2-openapi (link)
Forks |
- 21 |
+ 22 |
Created |
@@ -50161,7 +50161,7 @@ apistos (link)
Stars |
- 127 |
+ 128 |
Watchers |
@@ -50177,7 +50177,7 @@ apistos (link)
Last Updated |
- 2024-09-25T06:29:12Z |
+ 2024-09-27T19:28:26Z |
Archived |
@@ -50263,7 +50263,7 @@ awesome-jsonschema (link)
Stars |
- 118 |
+ 119 |
Watchers |
@@ -50279,7 +50279,7 @@ awesome-jsonschema (link)
Last Updated |
- 2024-09-26T20:18:18Z |
+ 2024-09-27T05:04:20Z |
Archived |
@@ -50789,7 +50789,7 @@ openapi (link)
Last Updated |
- 2024-09-26T17:37:03Z |
+ 2024-09-27T18:55:55Z |
Archived |
@@ -51146,7 +51146,7 @@ tools.openapis.org (link)
Last Updated |
- 2024-09-26T03:33:49Z |
+ 2024-09-27T03:38:15Z |
Archived |
@@ -51197,7 +51197,7 @@ openapi-to-plantuml (link)
Last Updated |
- 2024-09-24T17:24:56Z |
+ 2024-09-27T17:16:49Z |
Archived |
@@ -51487,11 +51487,11 @@ jellyfin-sdk-kotlin (link)
Stars |
- 88 |
+ 87 |
Watchers |
- 10 |
+ 9 |
Forks |
@@ -51503,7 +51503,7 @@ jellyfin-sdk-kotlin (link)
Last Updated |
- 2024-09-24T06:46:11Z |
+ 2024-09-27T08:11:15Z |
Archived |
@@ -51538,7 +51538,7 @@ goapi (link)
Stars |
- 83 |
+ 84 |
Watchers |
@@ -51554,7 +51554,7 @@ goapi (link)
Last Updated |
- 2024-09-26T02:46:58Z |
+ 2024-09-27T03:53:47Z |
Archived |
@@ -51793,7 +51793,7 @@ httpgenerator (link)
Stars |
- 76 |
+ 77 |
Watchers |
@@ -51809,7 +51809,7 @@ httpgenerator (link)
Last Updated |
- 2024-09-26T08:27:42Z |
+ 2024-09-27T09:13:20Z |
Archived |
@@ -52013,7 +52013,7 @@ apidom (link)
Last Updated |
- 2024-09-24T04:35:55Z |
+ 2024-09-28T00:08:25Z |
Archived |
@@ -52413,7 +52413,7 @@ openapi (link)
Forks |
- 91 |
+ 92 |
Created |
@@ -53382,7 +53382,7 @@ swagger-editor-validate (link)
Forks |
- 11 |
+ 12 |
Created |
@@ -53425,7 +53425,7 @@ rest (link)
Stars |
- 47 |
+ 48 |
Watchers |
@@ -53441,7 +53441,7 @@ rest (link)
Last Updated |
- 2024-09-26T19:24:49Z |
+ 2024-09-27T16:35:36Z |
Archived |
@@ -53900,7 +53900,7 @@ backbase-openapi-tools (link)
Last Updated |
- 2024-09-23T08:01:06Z |
+ 2024-09-27T15:04:37Z |
Archived |
@@ -54971,7 +54971,7 @@ data-fair (link)
Last Updated |
- 2024-09-25T14:47:20Z |
+ 2024-09-27T12:13:17Z |
Archived |
@@ -55583,7 +55583,7 @@ hei-admin-api (link)
Last Updated |
- 2024-09-26T12:00:10Z |
+ 2024-09-27T13:31:53Z |
Archived |
@@ -60479,7 +60479,7 @@ fastify-flux (link)
Last Updated |
- 2024-09-26T01:13:56Z |
+ 2024-09-27T22:56:25Z |
Archived |
@@ -61754,7 +61754,7 @@ mds-openapi (link)
Last Updated |
- 2024-08-06T14:59:46Z |
+ 2024-09-27T15:56:52Z |
Archived |
@@ -63641,7 +63641,7 @@ sandbox (link)
Last Updated |
- 2024-09-26T15:17:59Z |
+ 2024-09-27T15:10:22Z |
Archived |
@@ -64186,7 +64186,7 @@ aiohttp-deps (link)
Stars |
- 7 |
+ 9 |
Watchers |
@@ -64202,7 +64202,7 @@ aiohttp-deps (link)
Last Updated |
- 2023-09-17T09:07:21Z |
+ 2024-09-27T10:41:54Z |
Archived |
@@ -66140,7 +66140,7 @@ stackql-azure-openapi (link)
Last Updated |
- 2024-09-26T23:07:56Z |
+ 2024-09-27T07:33:41Z |
Archived |
@@ -73127,7 +73127,7 @@ iot (link)
Last Updated |
- 2024-09-23T08:19:41Z |
+ 2024-09-27T16:17:41Z |
Archived |
@@ -76391,7 +76391,7 @@ java-spring-boot (link)
Last Updated |
- 2024-08-08T11:34:42Z |
+ 2024-09-27T08:57:55Z |
Archived |
@@ -76634,7 +76634,7 @@ nuxeo-openapi (link)
Watchers |
- 23 |
+ 22 |
Forks |
@@ -79247,7 +79247,7 @@ goapi (link)
Last Updated |
- 2024-09-26T08:34:52Z |
+ 2024-09-27T08:35:18Z |
Archived |
@@ -80573,7 +80573,7 @@ openapi-to-java-records-mustache-templa
Last Updated |
- 2024-09-26T21:52:38Z |
+ 2024-09-27T20:52:48Z |
Archived |
@@ -83225,7 +83225,7 @@ yaml-doc-tool (link)
Last Updated |
- 2024-06-02T13:37:03Z |
+ 2024-09-27T23:45:16Z |
Archived |
@@ -88223,7 +88223,7 @@ hub (link)
Last Updated |
- 2024-09-20T13:16:08Z |
+ 2024-09-27T10:01:01Z |
Archived |
@@ -92134,7 +92134,7 @@ utoipa (link)
Stars |
- 2228 |
+ 2231 |
Watchers |
@@ -92150,7 +92150,7 @@ utoipa (link)
Last Updated |
- 2024-09-27T00:04:35Z |
+ 2024-09-28T00:40:13Z |
Archived |
@@ -92185,7 +92185,7 @@ oas_rails (link)
Stars |
- 54 |
+ 55 |
Watchers |
@@ -92201,7 +92201,7 @@ oas_rails (link)
Last Updated |
- 2024-09-21T08:05:20Z |
+ 2024-09-27T22:02:53Z |
Archived |
@@ -93409,7 +93409,7 @@ orval (link)
Stars |
- 2867 |
+ 2868 |
Watchers |
@@ -93425,7 +93425,7 @@ orval (link)
Last Updated |
- 2024-09-27T02:09:45Z |
+ 2024-09-28T03:25:38Z |
Archived |
@@ -94904,7 +94904,7 @@ EvoMaster (link)
Last Updated |
- 2024-09-26T18:59:56Z |
+ 2024-09-27T11:25:34Z |
Archived |
@@ -97540,7 +97540,7 @@ kubb (link)
Stars |
- 659 |
+ 660 |
Watchers |
@@ -97548,7 +97548,7 @@ kubb (link)
Forks |
- 50 |
+ 51 |
Created |
@@ -97556,7 +97556,7 @@ kubb (link)
Last Updated |
- 2024-09-26T14:54:12Z |
+ 2024-09-27T22:21:08Z |
Archived |
@@ -97744,15 +97744,15 @@ full-stack-fastapi-template (link)
Stars |
- 26371 |
+ 26464 |
Watchers |
- 264 |
+ 263 |
Forks |
- 4634 |
+ 4647 |
Created |
@@ -97760,7 +97760,7 @@ full-stack-fastapi-template (link)
Last Updated |
- 2024-09-27T01:44:26Z |
+ 2024-09-28T03:15:29Z |
Archived |
@@ -98984,7 +98984,7 @@ spring-boot-starter-tomcat (link)
Last Updated |
- 2024-09-24T00:05:52Z |
+ 2024-09-27T20:04:05Z |
Archived |
@@ -108148,7 +108148,7 @@ lincoln (link)
Stars |
- 149 |
+ 148 |
Watchers |
@@ -108164,7 +108164,7 @@ lincoln (link)
Last Updated |
- 2024-08-01T09:16:04Z |
+ 2024-09-27T10:55:56Z |
Archived |
@@ -109678,7 +109678,7 @@ APIClarity (link)
Stars |
- 507 |
+ 508 |
Watchers |
@@ -109694,7 +109694,7 @@ APIClarity (link)
Last Updated |
- 2024-09-13T14:30:59Z |
+ 2024-09-27T10:03:31Z |
Archived |
@@ -110086,7 +110086,7 @@ RESTler (link)
Stars |
- 2578 |
+ 2580 |
Watchers |
@@ -110102,7 +110102,7 @@ RESTler (link)
Last Updated |
- 2024-09-26T22:47:41Z |
+ 2024-09-27T06:52:34Z |
Archived |
@@ -111412,7 +111412,7 @@ Vert.x Web API Service (link)
Stars |
- 1106 |
+ 1107 |
Watchers |
@@ -111428,7 +111428,7 @@ Vert.x Web API Service (link)
Last Updated |
- 2024-09-25T14:04:37Z |
+ 2024-09-27T13:26:23Z |
Archived |
diff --git a/docs/categories/auto-generators.html b/docs/categories/auto-generators.html
index ca7a11d7..20aa7439 100644
--- a/docs/categories/auto-generators.html
+++ b/docs/categories/auto-generators.html
@@ -91,7 +91,7 @@ Yes
No |
No |
- 1170 |
+ 1171 |
@@ -273,7 +273,7 @@ No |
Yes |
No |
- 4339 |
+ 4343 |
@@ -373,7 +373,7 @@ Scramble (link)
|
Stars |
- 1170 |
+ 1171 |
Watchers |
@@ -389,7 +389,7 @@ Scramble (link)
Last Updated |
- 2024-09-26T19:04:08Z |
+ 2024-09-27T20:20:27Z |
Archived |
@@ -491,7 +491,7 @@ OpenApiSpecGeneratorPlugin (link)
Last Updated |
- 2024-09-26T12:11:50Z |
+ 2024-09-27T06:53:23Z |
Archived |
@@ -781,7 +781,7 @@ TypeSpec (link)
Stars |
- 4339 |
+ 4343 |
Watchers |
@@ -789,7 +789,7 @@ TypeSpec (link)
Forks |
- 200 |
+ 202 |
Created |
@@ -797,7 +797,7 @@ TypeSpec (link)
Last Updated |
- 2024-09-27T02:18:41Z |
+ 2024-09-27T18:07:54Z |
Archived |
@@ -848,7 +848,7 @@ Fuego (link)
Last Updated |
- 2024-09-26T08:19:25Z |
+ 2024-09-27T10:26:47Z |
Archived |
diff --git a/docs/categories/code-generators.html b/docs/categories/code-generators.html
index 9b4ee2db..b5a3933a 100644
--- a/docs/categories/code-generators.html
+++ b/docs/categories/code-generators.html
@@ -114,7 +114,7 @@ No
Yes |
Yes |
- 21399 |
+ 21406 |
@@ -160,7 +160,7 @@ No |
Yes |
Yes |
- 2855 |
+ 2860 |
@@ -248,7 +248,7 @@ No |
Yes |
Yes |
- 16922 |
+ 16924 |
@@ -340,7 +340,7 @@ Yes |
Yes |
Yes |
- 2598 |
+ 2600 |
@@ -430,7 +430,7 @@ No |
Yes |
No |
- 6065 |
+ 6070 |
@@ -472,7 +472,7 @@ No |
Yes |
No |
- 1420 |
+ 1421 |
@@ -493,7 +493,7 @@ Yes |
Yes |
No |
- 669 |
+ 670 |
@@ -1381,7 +1381,7 @@ No |
Yes |
Yes |
- 2867 |
+ 2868 |
@@ -1591,7 +1591,7 @@ Yes |
Yes |
Yes |
- 659 |
+ 660 |
@@ -2168,15 +2168,15 @@ OpenAPI Generator (link)
|
Stars |
- 21399 |
+ 21406 |
Watchers |
- 220 |
+ 221 |
Forks |
- 6475 |
+ 6476 |
Created |
@@ -2184,7 +2184,7 @@ OpenAPI Generator (link)
Last Updated |
- 2024-09-27T01:05:12Z |
+ 2024-09-27T23:59:23Z |
Archived |
@@ -2270,7 +2270,7 @@ Kiota Api Client Generator (link)
Stars |
- 2855 |
+ 2860 |
Watchers |
@@ -2286,7 +2286,7 @@ Kiota Api Client Generator (link)
Last Updated |
- 2024-09-26T22:28:22Z |
+ 2024-09-28T01:46:18Z |
Archived |
@@ -2474,7 +2474,7 @@ Swagger-Codegen (link)
Stars |
- 16922 |
+ 16924 |
Watchers |
@@ -2490,7 +2490,7 @@ Swagger-Codegen (link)
Last Updated |
- 2024-09-26T21:47:50Z |
+ 2024-09-27T18:22:19Z |
Archived |
@@ -2678,7 +2678,7 @@ 🌿 Fern (link)
Stars |
- 2598 |
+ 2600 |
Watchers |
@@ -2694,7 +2694,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-09-26T22:52:06Z |
+ 2024-09-28T00:40:54Z |
Archived |
@@ -2788,7 +2788,7 @@ swagger-ui (link)
Forks |
- 8923 |
+ 8922 |
Created |
@@ -2796,7 +2796,7 @@ swagger-ui (link)
Last Updated |
- 2024-09-27T03:22:47Z |
+ 2024-09-27T22:43:58Z |
Archived |
@@ -2882,7 +2882,7 @@ OpenAPI Server Code Generator (oapi-cod
Stars |
- 6065 |
+ 6070 |
Watchers |
@@ -2890,7 +2890,7 @@ OpenAPI Server Code Generator (oapi-cod
Forks |
- 840 |
+ 841 |
Created |
@@ -2898,7 +2898,7 @@ OpenAPI Server Code Generator (oapi-cod
Last Updated |
- 2024-09-26T16:46:02Z |
+ 2024-09-27T15:11:10Z |
Archived |
@@ -2984,7 +2984,7 @@ openapi-generator-cli (link)
Stars |
- 1420 |
+ 1421 |
Watchers |
@@ -3000,7 +3000,7 @@ openapi-generator-cli (link)
Last Updated |
- 2024-09-26T12:55:18Z |
+ 2024-09-28T02:00:43Z |
Archived |
@@ -3035,7 +3035,7 @@ create-openapi-repo (link)
Stars |
- 669 |
+ 670 |
Watchers |
@@ -3051,7 +3051,7 @@ create-openapi-repo (link)
Last Updated |
- 2024-09-21T16:22:43Z |
+ 2024-09-27T22:56:08Z |
Archived |
@@ -3561,7 +3561,7 @@ hei-admin-api (link)
Last Updated |
- 2024-09-26T12:00:10Z |
+ 2024-09-27T13:31:53Z |
Archived |
@@ -4224,7 +4224,7 @@ iot (link)
Last Updated |
- 2024-09-23T08:19:41Z |
+ 2024-09-27T16:17:41Z |
Archived |
@@ -5177,7 +5177,7 @@ orval (link)
Stars |
- 2867 |
+ 2868 |
Watchers |
@@ -5193,7 +5193,7 @@ orval (link)
Last Updated |
- 2024-09-27T02:09:45Z |
+ 2024-09-28T03:25:38Z |
Archived |
@@ -5687,7 +5687,7 @@ kubb (link)
Stars |
- 659 |
+ 660 |
Watchers |
@@ -5695,7 +5695,7 @@ kubb (link)
Forks |
- 50 |
+ 51 |
Created |
@@ -5703,7 +5703,7 @@ kubb (link)
Last Updated |
- 2024-09-26T14:54:12Z |
+ 2024-09-27T22:21:08Z |
Archived |
diff --git a/docs/categories/converters.html b/docs/categories/converters.html
index 1c31e4d1..d9b9f750 100644
--- a/docs/categories/converters.html
+++ b/docs/categories/converters.html
@@ -221,7 +221,7 @@ Yes
Yes |
Yes |
- 1057 |
+ 1060 |
@@ -267,7 +267,7 @@ No |
Yes |
No |
- 1630 |
+ 1632 |
@@ -290,7 +290,7 @@ No |
No |
Yes |
- 9484 |
+ 9486 |
@@ -359,7 +359,7 @@ Yes |
Yes |
Yes |
- 571 |
+ 570 |
@@ -493,7 +493,7 @@ Yes |
Yes |
No |
- 1272 |
+ 1274 |
@@ -604,7 +604,7 @@ Yes |
Yes |
Yes |
- 5611 |
+ 5614 |
@@ -688,7 +688,7 @@ No |
Yes |
No |
- 118 |
+ 119 |
@@ -1470,7 +1470,7 @@ @hey-api/openapi-ts (link)
|
Stars |
- 1057 |
+ 1060 |
Watchers |
@@ -1486,7 +1486,7 @@ @hey-api/openapi-ts (link)
Last Updated |
- 2024-09-26T15:55:35Z |
+ 2024-09-27T14:17:30Z |
Archived |
@@ -1537,7 +1537,7 @@ portman (link)
Last Updated |
- 2024-09-11T07:15:03Z |
+ 2024-09-27T18:31:57Z |
Archived |
@@ -1572,7 +1572,7 @@ Step CI (link)
Stars |
- 1630 |
+ 1632 |
Watchers |
@@ -1588,7 +1588,7 @@ Step CI (link)
Last Updated |
- 2024-09-26T07:47:16Z |
+ 2024-09-27T18:43:49Z |
Archived |
@@ -1623,7 +1623,7 @@ go-swagger (link)
Stars |
- 9484 |
+ 9486 |
Watchers |
@@ -1631,7 +1631,7 @@ go-swagger (link)
Forks |
- 1247 |
+ 1246 |
Created |
@@ -1639,7 +1639,7 @@ go-swagger (link)
Last Updated |
- 2024-09-26T10:44:36Z |
+ 2024-09-27T16:29:03Z |
Archived |
@@ -1776,7 +1776,7 @@ api (link)
Stars |
- 571 |
+ 570 |
Watchers |
@@ -1792,7 +1792,7 @@ api (link)
Last Updated |
- 2024-09-26T07:38:53Z |
+ 2024-09-27T22:20:17Z |
Archived |
@@ -2047,7 +2047,7 @@ openapi-format (link)
Last Updated |
- 2024-09-26T11:06:09Z |
+ 2024-09-27T17:15:15Z |
Archived |
@@ -2082,7 +2082,7 @@ openapi-python-client (link)
Stars |
- 1272 |
+ 1274 |
Watchers |
@@ -2098,7 +2098,7 @@ openapi-python-client (link)
Last Updated |
- 2024-09-26T00:42:18Z |
+ 2024-09-27T15:35:10Z |
Archived |
@@ -2337,7 +2337,7 @@ OpenAPI TypeScript (link)
Stars |
- 5611 |
+ 5614 |
Watchers |
@@ -2353,7 +2353,7 @@ OpenAPI TypeScript (link)
Last Updated |
- 2024-09-26T23:39:58Z |
+ 2024-09-27T21:51:01Z |
Archived |
@@ -2541,7 +2541,7 @@ awesome-jsonschema (link)
Stars |
- 118 |
+ 119 |
Watchers |
@@ -2557,7 +2557,7 @@ awesome-jsonschema (link)
Last Updated |
- 2024-09-26T20:18:18Z |
+ 2024-09-27T05:04:20Z |
Archived |
diff --git a/docs/categories/data-validators.html b/docs/categories/data-validators.html
index 013c839a..5a43e05b 100644
--- a/docs/categories/data-validators.html
+++ b/docs/categories/data-validators.html
@@ -177,7 +177,7 @@ No
Yes |
No |
- 1630 |
+ 1632 |
@@ -309,7 +309,7 @@ No |
Yes |
Yes |
- 2562 |
+ 2566 |
@@ -458,7 +458,7 @@ No |
Yes |
Yes |
- 421 |
+ 419 |
@@ -527,7 +527,7 @@ Yes |
Yes |
Yes |
- 573 |
+ 574 |
@@ -640,7 +640,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -2172,7 +2172,7 @@ Step CI (link)
|
Stars |
- 1630 |
+ 1632 |
Watchers |
@@ -2188,7 +2188,7 @@ Step CI (link)
Last Updated |
- 2024-09-26T07:47:16Z |
+ 2024-09-27T18:43:49Z |
Archived |
@@ -2384,7 +2384,7 @@ openapi_first (link)
Forks |
- 13 |
+ 14 |
Created |
@@ -2478,7 +2478,7 @@ kin-openapi (link)
Stars |
- 2562 |
+ 2566 |
Watchers |
@@ -2494,7 +2494,7 @@ kin-openapi (link)
Last Updated |
- 2024-09-27T03:26:38Z |
+ 2024-09-27T16:36:17Z |
Archived |
@@ -2835,7 +2835,7 @@ APIFuzzer (link)
Stars |
- 421 |
+ 419 |
Watchers |
@@ -2851,7 +2851,7 @@ APIFuzzer (link)
Last Updated |
- 2024-09-24T21:08:31Z |
+ 2024-09-27T09:58:12Z |
Archived |
@@ -2988,7 +2988,7 @@ vacuum (link)
Stars |
- 573 |
+ 574 |
Watchers |
@@ -3004,7 +3004,7 @@ vacuum (link)
Last Updated |
- 2024-09-26T23:04:21Z |
+ 2024-09-27T11:38:09Z |
Archived |
@@ -3243,7 +3243,7 @@ wiretap (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -3259,7 +3259,7 @@ wiretap (link)
Last Updated |
- 2024-09-25T17:01:49Z |
+ 2024-09-27T17:59:32Z |
Archived |
@@ -3310,7 +3310,7 @@ Fuego (link)
Last Updated |
- 2024-09-26T08:19:25Z |
+ 2024-09-27T10:26:47Z |
Archived |
@@ -4279,7 +4279,7 @@ fastify-flux (link)
Last Updated |
- 2024-09-26T01:13:56Z |
+ 2024-09-27T22:56:25Z |
Archived |
diff --git a/docs/categories/description-validators.html b/docs/categories/description-validators.html
index 1e246e4d..e6c599ae 100644
--- a/docs/categories/description-validators.html
+++ b/docs/categories/description-validators.html
@@ -197,7 +197,7 @@ Yes
Yes |
Yes |
- 2470 |
+ 2471 |
@@ -352,7 +352,7 @@ Yes |
Yes |
Yes |
- 571 |
+ 570 |
@@ -440,7 +440,7 @@ Yes |
Yes |
Yes |
- 573 |
+ 574 |
@@ -553,7 +553,7 @@ No |
Yes |
No |
- 805 |
+ 806 |
@@ -616,7 +616,7 @@ No |
Yes |
No |
- 488 |
+ 489 |
@@ -1912,7 +1912,7 @@ Spectral (link)
|
Stars |
- 2470 |
+ 2471 |
Watchers |
@@ -1928,7 +1928,7 @@ Spectral (link)
Last Updated |
- 2024-09-26T12:01:26Z |
+ 2024-09-27T08:39:35Z |
Archived |
@@ -2269,7 +2269,7 @@ api (link)
Stars |
- 571 |
+ 570 |
Watchers |
@@ -2285,7 +2285,7 @@ api (link)
Last Updated |
- 2024-09-26T07:38:53Z |
+ 2024-09-27T22:20:17Z |
Archived |
@@ -2473,7 +2473,7 @@ vacuum (link)
Stars |
- 573 |
+ 574 |
Watchers |
@@ -2489,7 +2489,7 @@ vacuum (link)
Last Updated |
- 2024-09-26T23:04:21Z |
+ 2024-09-27T11:38:09Z |
Archived |
@@ -2728,7 +2728,7 @@ studio (link)
Stars |
- 805 |
+ 806 |
Watchers |
@@ -2744,7 +2744,7 @@ studio (link)
Last Updated |
- 2024-09-18T08:35:20Z |
+ 2024-09-27T12:02:13Z |
Archived |
@@ -2881,7 +2881,7 @@ openapi-mock (link)
Stars |
- 488 |
+ 489 |
Watchers |
@@ -2897,7 +2897,7 @@ openapi-mock (link)
Last Updated |
- 2024-09-26T19:34:58Z |
+ 2024-09-27T05:34:31Z |
Archived |
diff --git a/docs/categories/documentation.html b/docs/categories/documentation.html
index f72fde3c..c1466ef6 100644
--- a/docs/categories/documentation.html
+++ b/docs/categories/documentation.html
@@ -169,7 +169,7 @@ Yes
Yes |
Yes |
- 6193 |
+ 6213 |
@@ -192,7 +192,7 @@ Yes |
No |
No |
- 1170 |
+ 1171 |
@@ -215,7 +215,7 @@ No |
Yes |
No |
- 1698 |
+ 1699 |
@@ -259,7 +259,7 @@ Yes |
Yes |
Yes |
- 23340 |
+ 23345 |
@@ -322,7 +322,7 @@ Yes |
Yes |
Yes |
- 617 |
+ 619 |
@@ -657,7 +657,7 @@ Yes |
Yes |
No |
- 888 |
+ 895 |
@@ -722,7 +722,7 @@ Yes |
Yes |
Yes |
- 1731 |
+ 1732 |
@@ -936,7 +936,7 @@ Yes |
Yes |
Yes |
- 30 |
+ 32 |
@@ -959,7 +959,7 @@ Yes |
Yes |
Yes |
- 2598 |
+ 2600 |
@@ -1072,7 +1072,7 @@ Yes |
Yes |
No |
- 56 |
+ 57 |
@@ -1093,7 +1093,7 @@ No |
Yes |
No |
- 1648 |
+ 1649 |
@@ -1114,7 +1114,7 @@ No |
Yes |
No |
- 328 |
+ 330 |
@@ -2602,7 +2602,7 @@ Scalar (link)
|
Stars |
- 6193 |
+ 6213 |
Watchers |
@@ -2610,7 +2610,7 @@ Scalar (link)
Forks |
- 197 |
+ 198 |
Created |
@@ -2618,7 +2618,7 @@ Scalar (link)
Last Updated |
- 2024-09-27T00:40:20Z |
+ 2024-09-28T03:20:44Z |
Archived |
@@ -2653,7 +2653,7 @@ Scramble (link)
Stars |
- 1170 |
+ 1171 |
Watchers |
@@ -2669,7 +2669,7 @@ Scramble (link)
Last Updated |
- 2024-09-26T19:04:08Z |
+ 2024-09-27T20:20:27Z |
Archived |
@@ -2704,7 +2704,7 @@ Scribe (link)
Stars |
- 1698 |
+ 1699 |
Watchers |
@@ -2720,7 +2720,7 @@ Scribe (link)
Last Updated |
- 2024-09-26T16:44:40Z |
+ 2024-09-27T13:55:45Z |
Archived |
@@ -2806,7 +2806,7 @@ ReDoc (link)
Stars |
- 23340 |
+ 23345 |
Watchers |
@@ -2814,7 +2814,7 @@ ReDoc (link)
Forks |
- 2289 |
+ 2290 |
Created |
@@ -2822,7 +2822,7 @@ ReDoc (link)
Last Updated |
- 2024-09-27T03:22:28Z |
+ 2024-09-27T17:55:38Z |
Archived |
@@ -2959,7 +2959,7 @@ OpenAPI-UI (link)
Stars |
- 617 |
+ 619 |
Watchers |
@@ -2975,7 +2975,7 @@ OpenAPI-UI (link)
Last Updated |
- 2024-09-27T02:31:30Z |
+ 2024-09-27T07:29:06Z |
Archived |
@@ -3724,7 +3724,7 @@ Restish (link)
Stars |
- 888 |
+ 895 |
Watchers |
@@ -3740,7 +3740,7 @@ Restish (link)
Last Updated |
- 2024-09-24T18:45:02Z |
+ 2024-09-28T03:14:11Z |
Archived |
@@ -3877,7 +3877,7 @@ Elements (link)
Stars |
- 1731 |
+ 1732 |
Watchers |
@@ -3885,7 +3885,7 @@ Elements (link)
Forks |
- 199 |
+ 200 |
Created |
@@ -3893,7 +3893,7 @@ Elements (link)
Last Updated |
- 2024-09-25T15:33:27Z |
+ 2024-09-27T22:11:35Z |
Archived |
@@ -4387,7 +4387,7 @@ api-diff-viewer (link)
Stars |
- 30 |
+ 32 |
Watchers |
@@ -4403,7 +4403,7 @@ api-diff-viewer (link)
Last Updated |
- 2024-09-21T03:19:59Z |
+ 2024-09-27T20:24:47Z |
Archived |
@@ -4438,7 +4438,7 @@ 🌿 Fern (link)
Stars |
- 2598 |
+ 2600 |
Watchers |
@@ -4454,7 +4454,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-09-26T22:52:06Z |
+ 2024-09-28T00:40:54Z |
Archived |
@@ -4693,7 +4693,7 @@ Zudoku (link)
Stars |
- 56 |
+ 57 |
Watchers |
@@ -4709,7 +4709,7 @@ Zudoku (link)
Last Updated |
- 2024-09-26T02:42:13Z |
+ 2024-09-27T14:13:00Z |
Archived |
@@ -4744,7 +4744,7 @@ rapidoc (link)
Stars |
- 1648 |
+ 1649 |
Watchers |
@@ -4760,7 +4760,7 @@ rapidoc (link)
Last Updated |
- 2024-09-27T00:34:15Z |
+ 2024-09-27T21:15:54Z |
Archived |
@@ -4795,7 +4795,7 @@ beacon-apis (link)
Stars |
- 328 |
+ 330 |
Watchers |
@@ -4811,7 +4811,7 @@ beacon-apis (link)
Last Updated |
- 2024-09-24T21:56:40Z |
+ 2024-09-27T22:51:49Z |
Archived |
@@ -5219,7 +5219,7 @@ data-fair (link)
Last Updated |
- 2024-09-25T14:47:20Z |
+ 2024-09-27T12:13:17Z |
Archived |
diff --git a/docs/categories/dsl.html b/docs/categories/dsl.html
index 5709a7e5..cc4749ac 100644
--- a/docs/categories/dsl.html
+++ b/docs/categories/dsl.html
@@ -584,7 +584,7 @@ kotlin-openapi3-dsl (link)
Last Updated |
- 2024-09-24T00:03:51Z |
+ 2024-09-27T15:13:40Z |
Archived |
diff --git a/docs/categories/gateway.html b/docs/categories/gateway.html
index 63ecf4c9..9d906848 100644
--- a/docs/categories/gateway.html
+++ b/docs/categories/gateway.html
@@ -110,7 +110,7 @@ No
Yes |
No |
- 1852 |
+ 1853 |
@@ -217,7 +217,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -345,7 +345,7 @@ Fusio (link)
|
Stars |
- 1852 |
+ 1853 |
Watchers |
@@ -361,7 +361,7 @@ Fusio (link)
Last Updated |
- 2024-09-25T05:24:56Z |
+ 2024-09-27T04:21:39Z |
Archived |
@@ -600,7 +600,7 @@ wiretap (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -616,7 +616,7 @@ wiretap (link)
Last Updated |
- 2024-09-25T17:01:49Z |
+ 2024-09-27T17:59:32Z |
Archived |
diff --git a/docs/categories/learning.html b/docs/categories/learning.html
index 41e41ba8..25089251 100644
--- a/docs/categories/learning.html
+++ b/docs/categories/learning.html
@@ -269,7 +269,7 @@ No
Yes |
Yes |
- 507 |
+ 508 |
@@ -754,7 +754,7 @@ APIClarity (link)
|
Stars |
- 507 |
+ 508 |
Watchers |
@@ -770,7 +770,7 @@ APIClarity (link)
Last Updated |
- 2024-09-13T14:30:59Z |
+ 2024-09-27T10:03:31Z |
Archived |
diff --git a/docs/categories/low-level-tooling.html b/docs/categories/low-level-tooling.html
index 238568bd..ee367c50 100644
--- a/docs/categories/low-level-tooling.html
+++ b/docs/categories/low-level-tooling.html
@@ -91,7 +91,7 @@ No
Yes |
No |
- 3252 |
+ 3255 |
@@ -1440,11 +1440,11 @@ springdoc-openapi (link)
|
Stars |
- 3252 |
+ 3255 |
Watchers |
- 43 |
+ 44 |
Forks |
@@ -1456,7 +1456,7 @@ springdoc-openapi (link)
Last Updated |
- 2024-09-26T09:23:23Z |
+ 2024-09-27T19:23:26Z |
Archived |
diff --git a/docs/categories/mock-testing.html b/docs/categories/mock-testing.html
index a6c47386..6d9a8747 100644
--- a/docs/categories/mock-testing.html
+++ b/docs/categories/mock-testing.html
@@ -91,7 +91,7 @@ Yes
Yes |
Yes |
- 1358 |
+ 1360 |
@@ -145,7 +145,7 @@ Microcks (link)
|
Stars |
- 1358 |
+ 1360 |
Watchers |
@@ -161,7 +161,7 @@ Microcks (link)
Last Updated |
- 2024-09-26T16:11:30Z |
+ 2024-09-27T18:13:41Z |
Archived |
diff --git a/docs/categories/mock.html b/docs/categories/mock.html
index f3a3a087..ebefc5f9 100644
--- a/docs/categories/mock.html
+++ b/docs/categories/mock.html
@@ -110,7 +110,7 @@ Yes
Yes |
Yes |
- 4243 |
+ 4245 |
@@ -304,7 +304,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -543,7 +543,7 @@ No |
Yes |
Yes |
- 2867 |
+ 2868 |
@@ -821,7 +821,7 @@ Prism (link)
|
Stars |
- 4243 |
+ 4245 |
Watchers |
@@ -837,7 +837,7 @@ Prism (link)
Last Updated |
- 2024-09-26T12:25:51Z |
+ 2024-09-27T14:45:54Z |
Archived |
@@ -1280,7 +1280,7 @@ Counterfact (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -1296,7 +1296,7 @@ Counterfact (link)
Last Updated |
- 2024-09-27T03:25:56Z |
+ 2024-09-27T21:35:45Z |
Archived |
@@ -1449,7 +1449,7 @@ Specmatic (link)
Last Updated |
- 2024-09-26T04:41:27Z |
+ 2024-09-27T15:47:26Z |
Archived |
@@ -1841,7 +1841,7 @@ orval (link)
Stars |
- 2867 |
+ 2868 |
Watchers |
@@ -1857,7 +1857,7 @@ orval (link)
Last Updated |
- 2024-09-27T02:09:45Z |
+ 2024-09-28T03:25:38Z |
Archived |
diff --git a/docs/categories/parsers.html b/docs/categories/parsers.html
index 0368c6cd..a061fd02 100644
--- a/docs/categories/parsers.html
+++ b/docs/categories/parsers.html
@@ -91,7 +91,7 @@ Yes
Yes |
Yes |
- 23340 |
+ 23345 |
@@ -114,7 +114,7 @@ No |
Yes |
No |
- 695 |
+ 697 |
@@ -608,7 +608,7 @@ No |
Yes |
Yes |
- 1096 |
+ 1097 |
@@ -719,7 +719,7 @@ No |
Yes |
Yes |
- 2562 |
+ 2566 |
@@ -763,7 +763,7 @@ No |
Yes |
No |
- 224 |
+ 225 |
@@ -918,7 +918,7 @@ No |
No |
Yes |
- 9484 |
+ 9486 |
@@ -1010,7 +1010,7 @@ Yes |
Yes |
Yes |
- 571 |
+ 570 |
@@ -1056,7 +1056,7 @@ No |
Yes |
No |
- 534 |
+ 533 |
@@ -1391,7 +1391,7 @@ Yes |
Yes |
No |
- 1272 |
+ 1274 |
@@ -1529,7 +1529,7 @@ Yes |
Yes |
Yes |
- 442 |
+ 446 |
@@ -1801,7 +1801,7 @@ Yes |
Yes |
No |
- 23340 |
+ 23345 |
@@ -1822,7 +1822,7 @@ No |
Yes |
No |
- 1420 |
+ 1421 |
@@ -1843,7 +1843,7 @@ No |
Yes |
No |
- 1320 |
+ 1324 |
@@ -1864,7 +1864,7 @@ No |
Yes |
No |
- 1169 |
+ 1171 |
@@ -1885,7 +1885,7 @@ No |
Yes |
No |
- 912 |
+ 911 |
@@ -1906,7 +1906,7 @@ No |
Yes |
No |
- 833 |
+ 835 |
@@ -1969,7 +1969,7 @@ Yes |
Yes |
No |
- 669 |
+ 670 |
@@ -2053,7 +2053,7 @@ No |
Yes |
No |
- 488 |
+ 489 |
@@ -2584,7 +2584,7 @@ No |
Yes |
No |
- 127 |
+ 128 |
@@ -2962,7 +2962,7 @@ No |
Yes |
No |
- 76 |
+ 77 |
@@ -3281,7 +3281,7 @@ No |
Yes |
No |
- 47 |
+ 48 |
@@ -8917,7 +8917,7 @@ Yes |
Yes |
No |
- 2228 |
+ 2231 |
@@ -8938,7 +8938,7 @@ Yes |
No |
No |
- 54 |
+ 55 |
@@ -10544,7 +10544,7 @@ No |
No |
No |
- 149 |
+ 148 |
@@ -10963,7 +10963,7 @@ ReDoc (link)
|
Stars |
- 23340 |
+ 23345 |
Watchers |
@@ -10971,7 +10971,7 @@ ReDoc (link)
Forks |
- 2289 |
+ 2290 |
Created |
@@ -10979,7 +10979,7 @@ ReDoc (link)
Last Updated |
- 2024-09-27T03:22:28Z |
+ 2024-09-27T17:55:38Z |
Archived |
@@ -11014,7 +11014,7 @@ oasdiff (link)
Stars |
- 695 |
+ 697 |
Watchers |
@@ -11030,7 +11030,7 @@ oasdiff (link)
Last Updated |
- 2024-09-26T15:04:12Z |
+ 2024-09-27T08:54:18Z |
Archived |
@@ -12136,7 +12136,7 @@ APIDevTools/swagger-parser (link)
Stars |
- 1096 |
+ 1097 |
Watchers |
@@ -12152,7 +12152,7 @@ APIDevTools/swagger-parser (link)
Last Updated |
- 2024-09-25T20:36:56Z |
+ 2024-09-27T11:29:50Z |
Archived |
@@ -12391,7 +12391,7 @@ kin-openapi (link)
Stars |
- 2562 |
+ 2566 |
Watchers |
@@ -12407,7 +12407,7 @@ kin-openapi (link)
Last Updated |
- 2024-09-27T03:26:38Z |
+ 2024-09-27T16:36:17Z |
Archived |
@@ -12493,7 +12493,7 @@ Object Oriented OpenAPI Specification (
Stars |
- 224 |
+ 225 |
Watchers |
@@ -12509,7 +12509,7 @@ Object Oriented OpenAPI Specification (
Last Updated |
- 2024-08-11T14:35:49Z |
+ 2024-09-28T01:32:54Z |
Archived |
@@ -12850,7 +12850,7 @@ go-swagger (link)
Stars |
- 9484 |
+ 9486 |
Watchers |
@@ -12858,7 +12858,7 @@ go-swagger (link)
Forks |
- 1247 |
+ 1246 |
Created |
@@ -12866,7 +12866,7 @@ go-swagger (link)
Last Updated |
- 2024-09-26T10:44:36Z |
+ 2024-09-27T16:29:03Z |
Archived |
@@ -13054,7 +13054,7 @@ api (link)
Stars |
- 571 |
+ 570 |
Watchers |
@@ -13070,7 +13070,7 @@ api (link)
Last Updated |
- 2024-09-26T07:38:53Z |
+ 2024-09-27T22:20:17Z |
Archived |
@@ -13156,7 +13156,7 @@ openapi-fuzzer (link)
Stars |
- 534 |
+ 533 |
Watchers |
@@ -13172,7 +13172,7 @@ openapi-fuzzer (link)
Last Updated |
- 2024-09-26T07:34:10Z |
+ 2024-09-27T09:58:32Z |
Archived |
@@ -13631,7 +13631,7 @@ openapi-format (link)
Last Updated |
- 2024-09-26T11:06:09Z |
+ 2024-09-27T17:15:15Z |
Archived |
@@ -13921,7 +13921,7 @@ openapi-python-client (link)
Stars |
- 1272 |
+ 1274 |
Watchers |
@@ -13937,7 +13937,7 @@ openapi-python-client (link)
Last Updated |
- 2024-09-26T00:42:18Z |
+ 2024-09-27T15:35:10Z |
Archived |
@@ -14090,7 +14090,7 @@ kotlin-openapi3-dsl (link)
Last Updated |
- 2024-09-24T00:03:51Z |
+ 2024-09-27T15:13:40Z |
Archived |
@@ -14227,7 +14227,7 @@ libopenapi (link)
Stars |
- 442 |
+ 446 |
Watchers |
@@ -14243,7 +14243,7 @@ libopenapi (link)
Last Updated |
- 2024-09-26T11:18:01Z |
+ 2024-09-28T01:45:53Z |
Archived |
@@ -14839,7 +14839,7 @@ Redoc (link)
Stars |
- 23340 |
+ 23345 |
Watchers |
@@ -14847,7 +14847,7 @@ Redoc (link)
Forks |
- 2289 |
+ 2290 |
Created |
@@ -14855,7 +14855,7 @@ Redoc (link)
Last Updated |
- 2024-09-27T03:22:28Z |
+ 2024-09-27T17:55:38Z |
Archived |
@@ -14890,7 +14890,7 @@ openapi-generator-cli (link)
Stars |
- 1420 |
+ 1421 |
Watchers |
@@ -14906,7 +14906,7 @@ openapi-generator-cli (link)
Last Updated |
- 2024-09-26T12:55:18Z |
+ 2024-09-28T02:00:43Z |
Archived |
@@ -14941,7 +14941,7 @@ ogen (link)
Stars |
- 1320 |
+ 1324 |
Watchers |
@@ -14957,7 +14957,7 @@ ogen (link)
Last Updated |
- 2024-09-26T16:26:38Z |
+ 2024-09-27T21:14:11Z |
Archived |
@@ -14992,7 +14992,7 @@ apispec (link)
Stars |
- 1169 |
+ 1171 |
Watchers |
@@ -15008,7 +15008,7 @@ apispec (link)
Last Updated |
- 2024-09-14T23:49:20Z |
+ 2024-09-28T02:43:36Z |
Archived |
@@ -15043,7 +15043,7 @@ zod-to-openapi (link)
Stars |
- 912 |
+ 911 |
Watchers |
@@ -15059,7 +15059,7 @@ zod-to-openapi (link)
Last Updated |
- 2024-09-27T01:37:54Z |
+ 2024-09-27T18:21:00Z |
Archived |
@@ -15094,7 +15094,7 @@ json-schema-validator (link)
Stars |
- 833 |
+ 835 |
Watchers |
@@ -15110,7 +15110,7 @@ json-schema-validator (link)
Last Updated |
- 2024-09-25T16:20:00Z |
+ 2024-09-27T20:18:27Z |
Archived |
@@ -15153,7 +15153,7 @@ openapi-diff (link)
Forks |
- 153 |
+ 154 |
Created |
@@ -15247,7 +15247,7 @@ create-openapi-repo (link)
Stars |
- 669 |
+ 670 |
Watchers |
@@ -15263,7 +15263,7 @@ create-openapi-repo (link)
Last Updated |
- 2024-09-21T16:22:43Z |
+ 2024-09-27T22:56:08Z |
Archived |
@@ -15451,7 +15451,7 @@ openapi-mock (link)
Stars |
- 488 |
+ 489 |
Watchers |
@@ -15467,7 +15467,7 @@ openapi-mock (link)
Last Updated |
- 2024-09-26T19:34:58Z |
+ 2024-09-27T05:34:31Z |
Archived |
@@ -15875,7 +15875,7 @@ zod-openapi (link)
Last Updated |
- 2024-09-23T03:37:39Z |
+ 2024-09-28T02:46:31Z |
Archived |
@@ -16385,7 +16385,7 @@ refitter (link)
Last Updated |
- 2024-09-26T19:44:30Z |
+ 2024-09-27T09:54:02Z |
Archived |
@@ -16487,7 +16487,7 @@ speakeasy (link)
Last Updated |
- 2024-09-26T18:18:05Z |
+ 2024-09-27T18:26:01Z |
Archived |
@@ -16683,7 +16683,7 @@ yii2-openapi (link)
Forks |
- 21 |
+ 22 |
Created |
@@ -16726,7 +16726,7 @@ apistos (link)
Stars |
- 127 |
+ 128 |
Watchers |
@@ -16742,7 +16742,7 @@ apistos (link)
Last Updated |
- 2024-09-25T06:29:12Z |
+ 2024-09-27T19:28:26Z |
Archived |
@@ -17150,7 +17150,7 @@ openapi (link)
Last Updated |
- 2024-09-26T17:37:03Z |
+ 2024-09-27T18:55:55Z |
Archived |
@@ -17644,7 +17644,7 @@ httpgenerator (link)
Stars |
- 76 |
+ 77 |
Watchers |
@@ -17660,7 +17660,7 @@ httpgenerator (link)
Last Updated |
- 2024-09-26T08:27:42Z |
+ 2024-09-27T09:13:20Z |
Archived |
@@ -17762,7 +17762,7 @@ apidom (link)
Last Updated |
- 2024-09-24T04:35:55Z |
+ 2024-09-28T00:08:25Z |
Archived |
@@ -18009,7 +18009,7 @@ openapi (link)
Forks |
- 91 |
+ 92 |
Created |
@@ -18409,7 +18409,7 @@ rest (link)
Stars |
- 47 |
+ 48 |
Watchers |
@@ -18425,7 +18425,7 @@ rest (link)
Last Updated |
- 2024-09-26T19:24:49Z |
+ 2024-09-27T16:35:36Z |
Archived |
@@ -21536,7 +21536,7 @@ fastify-flux (link)
Last Updated |
- 2024-09-26T01:13:56Z |
+ 2024-09-27T22:56:25Z |
Archived |
@@ -22097,7 +22097,7 @@ mds-openapi (link)
Last Updated |
- 2024-08-06T14:59:46Z |
+ 2024-09-27T15:56:52Z |
Archived |
@@ -23627,7 +23627,7 @@ stackql-azure-openapi (link)
Last Updated |
- 2024-09-26T23:07:56Z |
+ 2024-09-27T07:33:41Z |
Archived |
@@ -27032,7 +27032,7 @@ nuxeo-openapi (link)
Watchers |
- 23 |
+ 22 |
Forks |
@@ -27656,7 +27656,7 @@ goapi (link)
Last Updated |
- 2024-09-26T08:34:52Z |
+ 2024-09-27T08:35:18Z |
Archived |
@@ -28064,7 +28064,7 @@ openapi-to-java-records-mustache-templa
Last Updated |
- 2024-09-26T21:52:38Z |
+ 2024-09-27T20:52:48Z |
Archived |
@@ -29135,7 +29135,7 @@ yaml-doc-tool (link)
Last Updated |
- 2024-06-02T13:37:03Z |
+ 2024-09-27T23:45:16Z |
Archived |
@@ -32077,7 +32077,7 @@ utoipa (link)
Stars |
- 2228 |
+ 2231 |
Watchers |
@@ -32093,7 +32093,7 @@ utoipa (link)
Last Updated |
- 2024-09-27T00:04:35Z |
+ 2024-09-28T00:40:13Z |
Archived |
@@ -32128,7 +32128,7 @@ oas_rails (link)
Stars |
- 54 |
+ 55 |
Watchers |
@@ -32144,7 +32144,7 @@ oas_rails (link)
Last Updated |
- 2024-09-21T08:05:20Z |
+ 2024-09-27T22:02:53Z |
Archived |
@@ -36004,7 +36004,7 @@ lincoln (link)
Stars |
- 149 |
+ 148 |
Watchers |
@@ -36020,7 +36020,7 @@ lincoln (link)
Last Updated |
- 2024-08-01T09:16:04Z |
+ 2024-09-27T10:55:56Z |
Archived |
diff --git a/docs/categories/sdk.html b/docs/categories/sdk.html
index 7ad0d0b0..096ba02f 100644
--- a/docs/categories/sdk.html
+++ b/docs/categories/sdk.html
@@ -114,7 +114,7 @@ No
Yes |
Yes |
- 21399 |
+ 21406 |
@@ -160,7 +160,7 @@ No |
Yes |
Yes |
- 2855 |
+ 2860 |
@@ -206,7 +206,7 @@ Yes |
Yes |
Yes |
- 1358 |
+ 1360 |
@@ -229,7 +229,7 @@ Yes |
Yes |
Yes |
- 1057 |
+ 1060 |
@@ -313,7 +313,7 @@ No |
No |
Yes |
- 9484 |
+ 9486 |
@@ -382,7 +382,7 @@ No |
Yes |
Yes |
- 6708 |
+ 6709 |
@@ -426,7 +426,7 @@ No |
Yes |
Yes |
- 4597 |
+ 4598 |
@@ -537,7 +537,7 @@ No |
Yes |
Yes |
- 12547 |
+ 12549 |
@@ -675,7 +675,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -765,7 +765,7 @@ Yes |
Yes |
Yes |
- 2598 |
+ 2600 |
@@ -832,7 +832,7 @@ Yes |
Yes |
No |
- 1372 |
+ 1375 |
@@ -878,7 +878,7 @@ Yes |
Yes |
Yes |
- 5611 |
+ 5614 |
@@ -899,7 +899,7 @@ No |
Yes |
No |
- 4088 |
+ 4090 |
@@ -920,7 +920,7 @@ No |
Yes |
No |
- 3836 |
+ 3837 |
@@ -3169,15 +3169,15 @@ OpenAPI Generator (link)
|
Stars |
- 21399 |
+ 21406 |
Watchers |
- 220 |
+ 221 |
Forks |
- 6475 |
+ 6476 |
Created |
@@ -3185,7 +3185,7 @@ OpenAPI Generator (link)
Last Updated |
- 2024-09-27T01:05:12Z |
+ 2024-09-27T23:59:23Z |
Archived |
@@ -3271,7 +3271,7 @@ Kiota Api Client Generator (link)
Stars |
- 2855 |
+ 2860 |
Watchers |
@@ -3287,7 +3287,7 @@ Kiota Api Client Generator (link)
Last Updated |
- 2024-09-26T22:28:22Z |
+ 2024-09-28T01:46:18Z |
Archived |
@@ -3373,7 +3373,7 @@ Microcks (link)
Stars |
- 1358 |
+ 1360 |
Watchers |
@@ -3389,7 +3389,7 @@ Microcks (link)
Last Updated |
- 2024-09-26T16:11:30Z |
+ 2024-09-27T18:13:41Z |
Archived |
@@ -3424,7 +3424,7 @@ @hey-api/openapi-ts (link)
Stars |
- 1057 |
+ 1060 |
Watchers |
@@ -3440,7 +3440,7 @@ @hey-api/openapi-ts (link)
Last Updated |
- 2024-09-26T15:55:35Z |
+ 2024-09-27T14:17:30Z |
Archived |
@@ -3628,7 +3628,7 @@ go-swagger (link)
Stars |
- 9484 |
+ 9486 |
Watchers |
@@ -3636,7 +3636,7 @@ go-swagger (link)
Forks |
- 1247 |
+ 1246 |
Created |
@@ -3644,7 +3644,7 @@ go-swagger (link)
Last Updated |
- 2024-09-26T10:44:36Z |
+ 2024-09-27T16:29:03Z |
Archived |
@@ -3781,7 +3781,7 @@ NSwag (link)
Stars |
- 6708 |
+ 6709 |
Watchers |
@@ -3789,7 +3789,7 @@ NSwag (link)
Forks |
- 1241 |
+ 1242 |
Created |
@@ -3797,7 +3797,7 @@ NSwag (link)
Last Updated |
- 2024-09-26T02:43:37Z |
+ 2024-09-27T09:32:08Z |
Archived |
@@ -3883,7 +3883,7 @@ Azure AutoRest (link)
Stars |
- 4597 |
+ 4598 |
Watchers |
@@ -3899,7 +3899,7 @@ Azure AutoRest (link)
Last Updated |
- 2024-09-26T03:22:23Z |
+ 2024-09-27T05:10:53Z |
Archived |
@@ -4138,7 +4138,7 @@ OWASP ZAP (link)
Stars |
- 12547 |
+ 12549 |
Watchers |
@@ -4154,7 +4154,7 @@ OWASP ZAP (link)
Last Updated |
- 2024-09-26T11:55:17Z |
+ 2024-09-27T17:50:50Z |
Archived |
@@ -4444,7 +4444,7 @@ Counterfact (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -4460,7 +4460,7 @@ Counterfact (link)
Last Updated |
- 2024-09-27T03:25:56Z |
+ 2024-09-27T21:35:45Z |
Archived |
@@ -4648,7 +4648,7 @@ 🌿 Fern (link)
Stars |
- 2598 |
+ 2600 |
Watchers |
@@ -4664,7 +4664,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-09-26T22:52:06Z |
+ 2024-09-28T00:40:54Z |
Archived |
@@ -4801,7 +4801,7 @@ Swift OpenAPI Generator (link)
Stars |
- 1372 |
+ 1375 |
Watchers |
@@ -4817,7 +4817,7 @@ Swift OpenAPI Generator (link)
Last Updated |
- 2024-09-25T12:08:40Z |
+ 2024-09-27T19:44:48Z |
Archived |
@@ -4903,7 +4903,7 @@ OpenAPI TypeScript (link)
Stars |
- 5611 |
+ 5614 |
Watchers |
@@ -4919,7 +4919,7 @@ OpenAPI TypeScript (link)
Last Updated |
- 2024-09-26T23:39:58Z |
+ 2024-09-27T21:51:01Z |
Archived |
@@ -4954,7 +4954,7 @@ knife4j (link)
Stars |
- 4088 |
+ 4090 |
Watchers |
@@ -4970,7 +4970,7 @@ knife4j (link)
Last Updated |
- 2024-09-26T10:38:04Z |
+ 2024-09-28T01:07:26Z |
Archived |
@@ -5005,7 +5005,7 @@ openapi-directory (link)
Stars |
- 3836 |
+ 3837 |
Watchers |
@@ -5021,7 +5021,7 @@ openapi-directory (link)
Last Updated |
- 2024-09-26T16:11:51Z |
+ 2024-09-27T03:47:04Z |
Archived |
@@ -5378,7 +5378,7 @@ apiclientcodegen (link)
Last Updated |
- 2024-09-26T08:27:43Z |
+ 2024-09-27T10:41:06Z |
Archived |
@@ -5429,7 +5429,7 @@ openapi-to-plantuml (link)
Last Updated |
- 2024-09-24T17:24:56Z |
+ 2024-09-27T17:16:49Z |
Archived |
@@ -5786,7 +5786,7 @@ backbase-openapi-tools (link)
Last Updated |
- 2024-09-23T08:01:06Z |
+ 2024-09-27T15:04:37Z |
Archived |
@@ -7673,7 +7673,7 @@ java-spring-boot (link)
Last Updated |
- 2024-08-08T11:34:42Z |
+ 2024-09-27T08:57:55Z |
Archived |
diff --git a/docs/categories/security.html b/docs/categories/security.html
index 2abf1ad9..ab5eba22 100644
--- a/docs/categories/security.html
+++ b/docs/categories/security.html
@@ -175,7 +175,7 @@ No
Yes |
No |
- 534 |
+ 533 |
@@ -240,7 +240,7 @@ No |
Yes |
Yes |
- 12547 |
+ 12549 |
@@ -326,7 +326,7 @@ No |
Yes |
Yes |
- 2578 |
+ 2580 |
@@ -584,7 +584,7 @@ openapi-fuzzer (link)
|
Stars |
- 534 |
+ 533 |
Watchers |
@@ -600,7 +600,7 @@ openapi-fuzzer (link)
Last Updated |
- 2024-09-26T07:34:10Z |
+ 2024-09-27T09:58:32Z |
Archived |
@@ -651,7 +651,7 @@ cats (link)
Last Updated |
- 2024-09-26T07:45:14Z |
+ 2024-09-27T18:08:08Z |
Archived |
@@ -737,7 +737,7 @@ OWASP ZAP (link)
Stars |
- 12547 |
+ 12549 |
Watchers |
@@ -753,7 +753,7 @@ OWASP ZAP (link)
Last Updated |
- 2024-09-26T11:55:17Z |
+ 2024-09-27T17:50:50Z |
Archived |
@@ -941,7 +941,7 @@ RESTler (link)
Stars |
- 2578 |
+ 2580 |
Watchers |
@@ -957,7 +957,7 @@ RESTler (link)
Last Updated |
- 2024-09-26T22:47:41Z |
+ 2024-09-27T06:52:34Z |
Archived |
diff --git a/docs/categories/server-implementations.html b/docs/categories/server-implementations.html
index 00ec300a..c64be310 100644
--- a/docs/categories/server-implementations.html
+++ b/docs/categories/server-implementations.html
@@ -137,7 +137,7 @@ Yes
No |
No |
- 1170 |
+ 1171 |
@@ -275,7 +275,7 @@ No |
Yes |
Yes |
- 326 |
+ 327 |
@@ -344,7 +344,7 @@ Yes |
Yes |
Yes |
- 4243 |
+ 4245 |
@@ -367,7 +367,7 @@ No |
Yes |
Yes |
- 8538 |
+ 8540 |
@@ -390,7 +390,7 @@ No |
Yes |
No |
- 1852 |
+ 1853 |
@@ -549,7 +549,7 @@ No |
Yes |
No |
- 4339 |
+ 4343 |
@@ -616,7 +616,7 @@ No |
Yes |
No |
- 28190 |
+ 28197 |
@@ -685,7 +685,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -777,7 +777,7 @@ No |
Yes |
No |
- 76029 |
+ 76062 |
@@ -800,7 +800,7 @@ No |
Yes |
No |
- 3252 |
+ 3255 |
@@ -842,7 +842,7 @@ No |
Yes |
No |
- 2323 |
+ 2326 |
@@ -863,7 +863,7 @@ No |
Yes |
No |
- 2275 |
+ 2280 |
@@ -907,7 +907,7 @@ No |
Yes |
No |
- 1648 |
+ 1649 |
@@ -951,7 +951,7 @@ No |
Yes |
No |
- 1021 |
+ 1022 |
@@ -972,7 +972,7 @@ No |
Yes |
No |
- 805 |
+ 806 |
@@ -1016,7 +1016,7 @@ No |
Yes |
No |
- 510 |
+ 511 |
@@ -1058,7 +1058,7 @@ No |
Yes |
No |
- 413 |
+ 414 |
@@ -1186,7 +1186,7 @@ No |
Yes |
No |
- 328 |
+ 330 |
@@ -1564,7 +1564,7 @@ No |
Yes |
No |
- 83 |
+ 84 |
@@ -3330,7 +3330,7 @@ No |
Yes |
No |
- 7 |
+ 9 |
@@ -9277,7 +9277,7 @@ No |
Yes |
No |
- 26371 |
+ 26464 |
@@ -11406,7 +11406,7 @@ No |
Yes |
Yes |
- 507 |
+ 508 |
@@ -11820,7 +11820,7 @@ Scramble (link)
|
Stars |
- 1170 |
+ 1171 |
Watchers |
@@ -11836,7 +11836,7 @@ Scramble (link)
Last Updated |
- 2024-09-26T19:04:08Z |
+ 2024-09-27T20:20:27Z |
Archived |
@@ -12126,7 +12126,7 @@ VSCode OpenAPI Editor (link)
Stars |
- 326 |
+ 327 |
Watchers |
@@ -12142,7 +12142,7 @@ VSCode OpenAPI Editor (link)
Last Updated |
- 2024-09-25T12:09:15Z |
+ 2024-09-28T02:38:09Z |
Archived |
@@ -12185,7 +12185,7 @@ Swagger Editor (link)
Forks |
- 2245 |
+ 2246 |
Created |
@@ -12193,7 +12193,7 @@ Swagger Editor (link)
Last Updated |
- 2024-09-27T00:34:16Z |
+ 2024-09-27T04:50:23Z |
Archived |
@@ -12279,7 +12279,7 @@ Prism (link)
Stars |
- 4243 |
+ 4245 |
Watchers |
@@ -12295,7 +12295,7 @@ Prism (link)
Last Updated |
- 2024-09-26T12:25:51Z |
+ 2024-09-27T14:45:54Z |
Archived |
@@ -12330,7 +12330,7 @@ API Platform (link)
Stars |
- 8538 |
+ 8540 |
Watchers |
@@ -12346,7 +12346,7 @@ API Platform (link)
Last Updated |
- 2024-09-26T17:41:46Z |
+ 2024-09-27T17:16:15Z |
Archived |
@@ -12381,7 +12381,7 @@ Fusio (link)
Stars |
- 1852 |
+ 1853 |
Watchers |
@@ -12397,7 +12397,7 @@ Fusio (link)
Last Updated |
- 2024-09-25T05:24:56Z |
+ 2024-09-27T04:21:39Z |
Archived |
@@ -12550,7 +12550,7 @@ cats (link)
Last Updated |
- 2024-09-26T07:45:14Z |
+ 2024-09-27T18:08:08Z |
Archived |
@@ -12652,7 +12652,7 @@ OpenApiSpecGeneratorPlugin (link)
Last Updated |
- 2024-09-26T12:11:50Z |
+ 2024-09-27T06:53:23Z |
Archived |
@@ -12738,7 +12738,7 @@ TypeSpec (link)
Stars |
- 4339 |
+ 4343 |
Watchers |
@@ -12746,7 +12746,7 @@ TypeSpec (link)
Forks |
- 200 |
+ 202 |
Created |
@@ -12754,7 +12754,7 @@ TypeSpec (link)
Last Updated |
- 2024-09-27T02:18:41Z |
+ 2024-09-27T18:07:54Z |
Archived |
@@ -12891,7 +12891,7 @@ Django REST Framework (link)
Stars |
- 28190 |
+ 28197 |
Watchers |
@@ -12907,7 +12907,7 @@ Django REST Framework (link)
Last Updated |
- 2024-09-27T03:09:53Z |
+ 2024-09-28T02:45:30Z |
Archived |
@@ -13044,7 +13044,7 @@ Counterfact (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -13060,7 +13060,7 @@ Counterfact (link)
Last Updated |
- 2024-09-27T03:25:56Z |
+ 2024-09-27T21:35:45Z |
Archived |
@@ -13248,15 +13248,15 @@ FastAPI (link)
Stars |
- 76029 |
+ 76062 |
Watchers |
- 675 |
+ 676 |
Forks |
- 6407 |
+ 6408 |
Created |
@@ -13264,7 +13264,7 @@ FastAPI (link)
Last Updated |
- 2024-09-27T03:30:27Z |
+ 2024-09-27T23:44:05Z |
Archived |
@@ -13299,11 +13299,11 @@ springdoc-openapi (link)
Stars |
- 3252 |
+ 3255 |
Watchers |
- 43 |
+ 44 |
Forks |
@@ -13315,7 +13315,7 @@ springdoc-openapi (link)
Last Updated |
- 2024-09-26T09:23:23Z |
+ 2024-09-27T19:23:26Z |
Archived |
@@ -13401,7 +13401,7 @@ drf-spectacular (link)
Stars |
- 2323 |
+ 2326 |
Watchers |
@@ -13417,7 +13417,7 @@ drf-spectacular (link)
Last Updated |
- 2024-09-26T11:24:11Z |
+ 2024-09-27T17:26:06Z |
Archived |
@@ -13452,7 +13452,7 @@ msgspec (link)
Stars |
- 2275 |
+ 2280 |
Watchers |
@@ -13468,7 +13468,7 @@ msgspec (link)
Last Updated |
- 2024-09-26T16:46:32Z |
+ 2024-09-27T21:05:24Z |
Archived |
@@ -13554,7 +13554,7 @@ rapidoc (link)
Stars |
- 1648 |
+ 1649 |
Watchers |
@@ -13570,7 +13570,7 @@ rapidoc (link)
Last Updated |
- 2024-09-27T00:34:15Z |
+ 2024-09-27T21:15:54Z |
Archived |
@@ -13656,7 +13656,7 @@ apiflask (link)
Stars |
- 1021 |
+ 1022 |
Watchers |
@@ -13672,7 +13672,7 @@ apiflask (link)
Last Updated |
- 2024-09-26T06:39:40Z |
+ 2024-09-27T13:10:35Z |
Archived |
@@ -13707,7 +13707,7 @@ studio (link)
Stars |
- 805 |
+ 806 |
Watchers |
@@ -13723,7 +13723,7 @@ studio (link)
Last Updated |
- 2024-09-18T08:35:20Z |
+ 2024-09-27T12:02:13Z |
Archived |
@@ -13809,7 +13809,7 @@ stackql (link)
Stars |
- 510 |
+ 511 |
Watchers |
@@ -13825,7 +13825,7 @@ stackql (link)
Last Updated |
- 2024-09-25T13:19:41Z |
+ 2024-09-27T20:56:16Z |
Archived |
@@ -13911,7 +13911,7 @@ fastapi-gino-arq-uvicorn (link)
Stars |
- 413 |
+ 414 |
Watchers |
@@ -13927,7 +13927,7 @@ fastapi-gino-arq-uvicorn (link)
Last Updated |
- 2024-08-12T13:21:05Z |
+ 2024-09-27T17:42:26Z |
Archived |
@@ -14217,7 +14217,7 @@ beacon-apis (link)
Stars |
- 328 |
+ 330 |
Watchers |
@@ -14233,7 +14233,7 @@ beacon-apis (link)
Last Updated |
- 2024-09-24T21:56:40Z |
+ 2024-09-27T22:51:49Z |
Archived |
@@ -14284,7 +14284,7 @@ chanfana (link)
Last Updated |
- 2024-09-26T02:19:33Z |
+ 2024-09-27T13:50:00Z |
Archived |
@@ -14527,7 +14527,7 @@ thema (link)
Watchers |
- 144 |
+ 143 |
Forks |
@@ -14590,7 +14590,7 @@ typescript-backend-toolkit (link)
Last Updated |
- 2024-09-25T17:59:59Z |
+ 2024-09-27T11:12:25Z |
Archived |
@@ -15100,7 +15100,7 @@ tools.openapis.org (link)
Last Updated |
- 2024-09-26T03:33:49Z |
+ 2024-09-27T03:38:15Z |
Archived |
@@ -15135,7 +15135,7 @@ goapi (link)
Stars |
- 83 |
+ 84 |
Watchers |
@@ -15151,7 +15151,7 @@ goapi (link)
Last Updated |
- 2024-09-26T02:46:58Z |
+ 2024-09-27T03:53:47Z |
Archived |
@@ -15602,7 +15602,7 @@ swagger-editor-validate (link)
Forks |
- 11 |
+ 12 |
Created |
@@ -16222,7 +16222,7 @@ data-fair (link)
Last Updated |
- 2024-09-25T14:47:20Z |
+ 2024-09-27T12:13:17Z |
Archived |
@@ -18415,7 +18415,7 @@ mds-openapi (link)
Last Updated |
- 2024-08-06T14:59:46Z |
+ 2024-09-27T15:56:52Z |
Archived |
@@ -19180,7 +19180,7 @@ sandbox (link)
Last Updated |
- 2024-09-26T15:17:59Z |
+ 2024-09-27T15:10:22Z |
Archived |
@@ -19419,7 +19419,7 @@ aiohttp-deps (link)
Stars |
- 7 |
+ 9 |
Watchers |
@@ -19435,7 +19435,7 @@ aiohttp-deps (link)
Last Updated |
- 2023-09-17T09:07:21Z |
+ 2024-09-27T10:41:54Z |
Archived |
@@ -24178,7 +24178,7 @@ java-spring-boot (link)
Last Updated |
- 2024-08-08T11:34:42Z |
+ 2024-09-27T08:57:55Z |
Archived |
@@ -29176,7 +29176,7 @@ hub (link)
Last Updated |
- 2024-09-20T13:16:08Z |
+ 2024-09-27T10:01:01Z |
Archived |
@@ -33852,15 +33852,15 @@ full-stack-fastapi-template (link)
Stars |
- 26371 |
+ 26464 |
Watchers |
- 264 |
+ 263 |
Forks |
- 4634 |
+ 4647 |
Created |
@@ -33868,7 +33868,7 @@ full-stack-fastapi-template (link)
Last Updated |
- 2024-09-27T01:44:26Z |
+ 2024-09-28T03:15:29Z |
Archived |
@@ -34480,7 +34480,7 @@ spring-boot-starter-tomcat (link)
Last Updated |
- 2024-09-24T00:05:52Z |
+ 2024-09-27T20:04:05Z |
Archived |
@@ -39003,7 +39003,7 @@ APIClarity (link)
Stars |
- 507 |
+ 508 |
Watchers |
@@ -39019,7 +39019,7 @@ APIClarity (link)
Last Updated |
- 2024-09-13T14:30:59Z |
+ 2024-09-27T10:03:31Z |
Archived |
diff --git a/docs/categories/server.html b/docs/categories/server.html
index 97fbd1f9..3288470b 100644
--- a/docs/categories/server.html
+++ b/docs/categories/server.html
@@ -137,7 +137,7 @@ No
Yes |
No |
- 1106 |
+ 1107 |
@@ -229,7 +229,7 @@ No |
Yes |
Yes |
- 8538 |
+ 8540 |
@@ -275,7 +275,7 @@ No |
Yes |
No |
- 1852 |
+ 1853 |
@@ -342,7 +342,7 @@ No |
Yes |
No |
- 1678 |
+ 1680 |
@@ -433,7 +433,7 @@ No |
Yes |
Yes |
- 5928 |
+ 5927 |
@@ -546,7 +546,7 @@ Yes |
Yes |
Yes |
- 2598 |
+ 2600 |
@@ -569,7 +569,7 @@ Yes |
Yes |
No |
- 1372 |
+ 1375 |
@@ -2838,7 +2838,7 @@ No |
Yes |
No |
- 1106 |
+ 1107 |
@@ -2994,7 +2994,7 @@ Vert.x Web Api Contract (link)
|
Stars |
- 1106 |
+ 1107 |
Watchers |
@@ -3010,7 +3010,7 @@ Vert.x Web Api Contract (link)
Last Updated |
- 2024-09-25T14:04:37Z |
+ 2024-09-27T13:26:23Z |
Archived |
@@ -3198,7 +3198,7 @@ API Platform (link)
Stars |
- 8538 |
+ 8540 |
Watchers |
@@ -3214,7 +3214,7 @@ API Platform (link)
Last Updated |
- 2024-09-26T17:41:46Z |
+ 2024-09-27T17:16:15Z |
Archived |
@@ -3300,7 +3300,7 @@ Fusio (link)
Stars |
- 1852 |
+ 1853 |
Watchers |
@@ -3316,7 +3316,7 @@ Fusio (link)
Last Updated |
- 2024-09-25T05:24:56Z |
+ 2024-09-27T04:21:39Z |
Archived |
@@ -3453,7 +3453,7 @@ @nestjs/swagger (link)
Stars |
- 1678 |
+ 1680 |
Watchers |
@@ -3469,7 +3469,7 @@ @nestjs/swagger (link)
Last Updated |
- 2024-09-26T01:32:55Z |
+ 2024-09-28T01:42:41Z |
Archived |
@@ -3657,7 +3657,7 @@ SpringFox (link)
Stars |
- 5928 |
+ 5927 |
Watchers |
@@ -3673,7 +3673,7 @@ SpringFox (link)
Last Updated |
- 2024-09-24T18:30:37Z |
+ 2024-09-27T22:43:58Z |
Archived |
@@ -3912,7 +3912,7 @@ 🌿 Fern (link)
Stars |
- 2598 |
+ 2600 |
Watchers |
@@ -3928,7 +3928,7 @@ 🌿 Fern (link)
Last Updated |
- 2024-09-26T22:52:06Z |
+ 2024-09-28T00:40:54Z |
Archived |
@@ -3963,7 +3963,7 @@ Swift OpenAPI Generator (link)
Stars |
- 1372 |
+ 1375 |
Watchers |
@@ -3979,7 +3979,7 @@ Swift OpenAPI Generator (link)
Last Updated |
- 2024-09-25T12:08:40Z |
+ 2024-09-27T19:44:48Z |
Archived |
@@ -4030,7 +4030,7 @@ Fuego (link)
Last Updated |
- 2024-09-26T08:19:25Z |
+ 2024-09-27T10:26:47Z |
Archived |
@@ -4171,7 +4171,7 @@ thema (link)
Watchers |
- 144 |
+ 143 |
Forks |
@@ -9420,7 +9420,7 @@ Vert.x Web API Service (link)
Stars |
- 1106 |
+ 1107 |
Watchers |
@@ -9436,7 +9436,7 @@ Vert.x Web API Service (link)
Last Updated |
- 2024-09-25T14:04:37Z |
+ 2024-09-27T13:26:23Z |
Archived |
diff --git a/docs/categories/testing-tools.html b/docs/categories/testing-tools.html
index 265dc32b..99d933bf 100644
--- a/docs/categories/testing-tools.html
+++ b/docs/categories/testing-tools.html
@@ -91,7 +91,7 @@ Yes
Yes |
Yes |
- 101 |
+ 102 |
@@ -191,7 +191,7 @@ wiretap (link)
|
Stars |
- 101 |
+ 102 |
Watchers |
@@ -207,7 +207,7 @@ wiretap (link)
Last Updated |
- 2024-09-25T17:01:49Z |
+ 2024-09-27T17:59:32Z |
Archived |
diff --git a/docs/categories/testing.html b/docs/categories/testing.html
index 77540780..e4b88fcb 100644
--- a/docs/categories/testing.html
+++ b/docs/categories/testing.html
@@ -240,7 +240,7 @@ No
Yes |
No |
- 1630 |
+ 1632 |
@@ -368,7 +368,7 @@ Yes |
Yes |
No |
- 888 |
+ 895 |
@@ -677,7 +677,7 @@ Yes |
Yes |
Yes |
- 101 |
+ 102 |
@@ -717,7 +717,7 @@ No |
Yes |
No |
- 6278 |
+ 6279 |
@@ -738,7 +738,7 @@ No |
Yes |
No |
- 541 |
+ 542 |
@@ -927,7 +927,7 @@ No |
Yes |
No |
- 88 |
+ 87 |
@@ -2640,7 +2640,7 @@ No |
Yes |
Yes |
- 2578 |
+ 2580 |
@@ -3056,7 +3056,7 @@ portman (link)
|
Last Updated |
- 2024-09-11T07:15:03Z |
+ 2024-09-27T18:31:57Z |
Archived |
@@ -3091,7 +3091,7 @@ Step CI (link)
Stars |
- 1630 |
+ 1632 |
Watchers |
@@ -3107,7 +3107,7 @@ Step CI (link)
Last Updated |
- 2024-09-26T07:47:16Z |
+ 2024-09-27T18:43:49Z |
Archived |
@@ -3397,7 +3397,7 @@ Restish (link)
Stars |
- 888 |
+ 895 |
Watchers |
@@ -3413,7 +3413,7 @@ Restish (link)
Last Updated |
- 2024-09-24T18:45:02Z |
+ 2024-09-28T03:14:11Z |
Archived |
@@ -3974,7 +3974,7 @@ Specmatic (link)
Last Updated |
- 2024-09-26T04:41:27Z |
+ 2024-09-27T15:47:26Z |
Archived |
@@ -4111,7 +4111,7 @@ wiretap (link)
Stars |
- 101 |
+ 102 |
Watchers |
@@ -4127,7 +4127,7 @@ wiretap (link)
Last Updated |
- 2024-09-25T17:01:49Z |
+ 2024-09-27T17:59:32Z |
Archived |
@@ -4213,7 +4213,7 @@ mockoon (link)
Stars |
- 6278 |
+ 6279 |
Watchers |
@@ -4229,7 +4229,7 @@ mockoon (link)
Last Updated |
- 2024-09-26T19:38:26Z |
+ 2024-09-27T10:13:56Z |
Archived |
@@ -4264,7 +4264,7 @@ hibiapi (link)
Stars |
- 541 |
+ 542 |
Watchers |
@@ -4280,7 +4280,7 @@ hibiapi (link)
Last Updated |
- 2024-09-20T17:17:32Z |
+ 2024-09-27T08:51:41Z |
Archived |
@@ -4688,7 +4688,7 @@ openapi (link)
Last Updated |
- 2024-09-26T17:37:03Z |
+ 2024-09-27T18:55:55Z |
Archived |
@@ -4723,11 +4723,11 @@ jellyfin-sdk-kotlin (link)
Stars |
- 88 |
+ 87 |
Watchers |
- 10 |
+ 9 |
Forks |
@@ -4739,7 +4739,7 @@ jellyfin-sdk-kotlin (link)
Last Updated |
- 2024-09-24T06:46:11Z |
+ 2024-09-27T08:11:15Z |
Archived |
@@ -7442,7 +7442,7 @@ EvoMaster (link)
Last Updated |
- 2024-09-26T18:59:56Z |
+ 2024-09-27T11:25:34Z |
Archived |
@@ -8854,7 +8854,7 @@ RESTler (link)
Stars |
- 2578 |
+ 2580 |
Watchers |
@@ -8870,7 +8870,7 @@ RESTler (link)
Last Updated |
- 2024-09-26T22:47:41Z |
+ 2024-09-27T06:52:34Z |
Archived |
diff --git a/docs/categories/text-editors.html b/docs/categories/text-editors.html
index 579b8e89..22bb1db0 100644
--- a/docs/categories/text-editors.html
+++ b/docs/categories/text-editors.html
@@ -111,7 +111,7 @@ No
Yes |
Yes |
- 326 |
+ 327 |
@@ -492,7 +492,7 @@ VSCode OpenAPI Editor (link)
|
Stars |
- 326 |
+ 327 |
Watchers |
@@ -508,7 +508,7 @@ VSCode OpenAPI Editor (link)
Last Updated |
- 2024-09-25T12:09:15Z |
+ 2024-09-28T02:38:09Z |
Archived |
@@ -602,7 +602,7 @@ Swagger Editor (link)
Forks |
- 2245 |
+ 2246 |
Created |
@@ -610,7 +610,7 @@ Swagger Editor (link)
Last Updated |
- 2024-09-27T00:34:16Z |
+ 2024-09-27T04:50:23Z |
Archived |
diff --git a/docs/categories/unclassified.html b/docs/categories/unclassified.html
index 40b6fd8b..9f76498b 100644
--- a/docs/categories/unclassified.html
+++ b/docs/categories/unclassified.html
@@ -1216,7 +1216,7 @@ modelina (link)
Last Updated |
- 2024-09-26T02:46:05Z |
+ 2024-09-27T14:51:23Z |
Archived |
diff --git a/docs/categories/user-interfaces.html b/docs/categories/user-interfaces.html
index 0d191516..10f7b858 100644
--- a/docs/categories/user-interfaces.html
+++ b/docs/categories/user-interfaces.html
@@ -114,7 +114,7 @@ Yes
Yes |
No |
- 23340 |
+ 23345 |
@@ -202,7 +202,7 @@ No |
No |
No |
- 149 |
+ 148 |
@@ -283,7 +283,7 @@ swagger-ui (link)
|
Forks |
- 8923 |
+ 8922 |
Created |
@@ -291,7 +291,7 @@ swagger-ui (link)
Last Updated |
- 2024-09-27T03:22:47Z |
+ 2024-09-27T22:43:58Z |
Archived |
@@ -326,7 +326,7 @@ Redoc (link)
Stars |
- 23340 |
+ 23345 |
Watchers |
@@ -334,7 +334,7 @@ Redoc (link)
Forks |
- 2289 |
+ 2290 |
Created |
@@ -342,7 +342,7 @@ Redoc (link)
Last Updated |
- 2024-09-27T03:22:28Z |
+ 2024-09-27T17:55:38Z |
Archived |
@@ -530,7 +530,7 @@ lincoln (link)
Stars |
- 149 |
+ 148 |
Watchers |
@@ -546,7 +546,7 @@ lincoln (link)
Last Updated |
- 2024-08-01T09:16:04Z |
+ 2024-09-27T10:55:56Z |
Archived |
diff --git a/src/_data/tools.yaml b/src/_data/tools.yaml
index a0c3695f..47d922df 100644
--- a/src/_data/tools.yaml
+++ b/src/_data/tools.yaml
@@ -151,7 +151,7 @@
owner: spec-first
logo: https://avatars.githubusercontent.com/u/58754196?v=4
license: Apache-2.0
- repoEtag: '"688d4412b1c44a14abe35c6e2cce886df4a52a87249f1cb957d6f80b424c5f90"'
+ repoEtag: '"125c299e637b7a5b776b052fcd8a311146edabf663ed2efd9400c849cd6ebf6c"'
repoLastModified: Thu, 26 Sep 2024 18:03:58 GMT
foundInMaster: true
homepage: https://github.com/zalando/connexion
@@ -268,9 +268,9 @@
id: 9cad3caafc5e01c5c1cd167696f30f10
repositoryMetadata:
base64Readme: >-
- WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL3NjYWxhci9zY2FsYXIpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9ncmFwaHMvY29udHJpYnV0b3JzKQpbIVtHaXRIdWIgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9zY2FsYXIvc2NhbGFyKV0oaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhci9zY2FsYXIvYmxvYi9tYWluL0xJQ0VOU0UpClshW0Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC8xMTM1MzMwMjA3OTYwNjc4NDEwP3N0eWxlPWZsYXQmY29sb3I9NTg2NUYyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcikKCjxoMT4KCTxwPlNjYWxhcjwvcD4KCTxwPgoJCTxhIGhyZWY9Imh0dHBzOi8vc2NhbGFyLmNvbS9kb3dubG9hZCIgdGFyZ2V0PSJfYmxhbmsiPgoJCQk8cGljdHVyZT4KCQkJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8xNzkyMjNhYi01MjA2LTQ4OGUtODlmMi1iYTI4Njk0MjM4MWYiPgoJCQkJPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYTgxODFlYjMtM2MzYy00YmYxLTk0OGUtYzk1ZmMwOWQyZGNhIj4KCQkJCTxpbWcgd2lkdGg9IjQ4LjQ5NCUiIGhlaWdodD0iMjAwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8xNzkyMjNhYi01MjA2LTQ4OGUtODlmMi1iYTI4Njk0MjM4MWYjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlNjYWxhciBBUEkgY2xpZW50Ij4KCQkJPC9waWN0dXJlPgoJCTwvYT4KCQk8YSBocmVmPSJodHRwczovL2RvY3Muc2NhbGFyLmNvbS9zd2FnZ2VyLWVkaXRvciIgdGFyZ2V0PSJfYmxhbmsiPgoJCQk8cGljdHVyZT4KCQkJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83Njg2OGU2ZC00NjZjLTQwOTctOGQ0Mi1mNDI2NTU3NzUyYmEiPgoJCQkJPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMjAyOWJlYzAtNThlOS00ZmExLWFkODAtMDA0NWU4Mjg5NzhlIj4KCQkJCTxpbWcgd2lkdGg9IjQ4LjQ5NCUiIGhlaWdodD0iMjAwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83Njg2OGU2ZC00NjZjLTQwOTctOGQ0Mi1mNDI2NTU3NzUyYmEjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlNjYWxhciBBUEkgUmVmZXJlbmNlIj4KCQkJPC9waWN0dXJlPgoJIAk8L2E+Cgk8L3A+CjwvaDE+Cgo8cD4KCTxpbWcgd2lkdGg9IjgzMCIgaGVpZ2h0PSI1MDAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2Q0YmExNzE3LTE1ODMtNDRiNy05YjAwLWY3YWNkNDU1MGVlYSNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iODMwIiBoZWlnaHQ9IjUwMCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvOGM2NzAxNjQtNjIxOC00N2IwLTg1OTUtZjYyNDRkMWExY2QyI2doLWRhcmstbW9kZS1vbmx5Ij4KPC9wPgoKIyMjIEFuIG9mZmxpbmUgZmlyc3QgQVBJIENsaWVudCBidWlsdCBmb3IgT3BlbkFQSQoKPHA+Cgk8YSBocmVmPSJodHRwczovL3NjYWxhci5jb20vZG93bmxvYWQiPkRvd25sb2FkPC9hPiAmbmJzcDsmbmJzcDsKCTxhIGhyZWY9Imh0dHBzOi8vY2xpZW50LnNjYWxhci5jb20vIj5UcnkgRGVtbzwvYT4KPC9wPgoKPCEtLSBtaW5pbWFsIGxpbmUgYnJlYWstLT4KPHA+Cgk8aW1nIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdkN2U3YmE3LTJiMDItNDlmMy1hYmNkLWIyNGM1NjZhM2MxNiNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8zNDFiZmIxZC01Y2IwLTRlYzYtODllYi00YjFkY2MwN2VlYjcjZ2gtZGFyay1tb2RlLW9ubHkiPgo8L3A+CjwhLS0gZW5kIG1pbmltYWwgbGluZSBicmVhay0tPgoKPHA+Cgk8aW1nIHdpZHRoPSI4MzAiIGhlaWdodD0iNTAwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9jNDlkYTk3OS0zYjZkLTQ1OTQtYmViNC0wODY3NzdkOGZkMTcjZ2gtbGlnaHQtbW9kZS1vbmx5Ij4KCTxpbWcgd2lkdGg9IjgzMCIgaGVpZ2h0PSI1MDAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzgwZGEyNmFmLTBjN2QtNGMxMy1iMzdkLWU0ZDJiZWVjNThkYiNnaC1kYXJrLW1vZGUtb25seSI+CjwvcD4KCjxoMz5JbnRlcmFjdGl2ZSBBUEkgUmVmZXJlbmNlIGZyb20gT3BlbkFQSS9Td2FnZ2VyPC9oMz4KPHA+Cgk8YSBocmVmPSJodHRwczovL2RvY3Muc2NhbGFyLmNvbS9zd2FnZ2VyLWVkaXRvciI+VHJ5IERlbW88L2E+ICZuYnNwOyZuYnNwOwo8L3A+Cgo8IS0tIG1pbmltYWwgbGluZSBicmVhay0tPgo8cD4KCTxpbWcgd2lkdGg9IjEyMDAiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvN2Q3ZTdiYTctMmIwMi00OWYzLWFiY2QtYjI0YzU2NmEzYzE2I2doLWxpZ2h0LW1vZGUtb25seSI+Cgk8aW1nIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzM0MWJmYjFkLTVjYjAtNGVjNi04OWViLTRiMWRjYzA3ZWViNyNnaC1kYXJrLW1vZGUtb25seSI+CjwvcD4KPCEtLSBlbmQgbWluaW1hbCBsaW5lIGJyZWFrLS0+CgojIyMgVHJ1c3RlZCBieToKCjxicj4KCjxwPgoJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzczZGNlZjk1LWZjNGYtNDExMS1iYjA5LWYzY2UzNzQ1M2E4MSNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzFkYTZiOTA0LTM0YmUtNDc2MC1iNTM1LTBkZDIxNjBlNmQxMiNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2M3OTJjOTc3LTg1NTEtNDMyYy05NDE3LTNlYTA1ZTQwODE1MSNnaC1kYXJrLW1vZGUtb25seSI+Cgk8aW1nIHdpZHRoPSI0OC40OTQlIiBoZWlnaHQ9IjMzMCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNTRhOWVhNjktYzUwYS00ZjQ5LThjM2UtZGRkNmY4ZmJlMWYzI2doLWRhcmstbW9kZS1vbmx5Ij4KPC9wPgoKPGJyPgoKIyMjIEZlYXR1cmVzCgotIFVzZXMgT3BlbkFQSS9Td2FnZ2VyIGRvY3VtZW50cwotIFJlcXVlc3QgZXhhbXBsZXMgZm9yIG1hbnkgZmF2b3JpdGUgbGFuZ3VhZ2VzIGFuZCBmcmFtZXdvcmtzCi0gQ29tZXMgd2l0aCBhbiBpbnRlZ3JhdGVkIEFQSSBjbGllbnQKLSBJbnRlZ3JhdGVzIHdpdGggeW91ciBmYXZvcml0ZSBmcmFtZXdvcmsKLSBEb2VzbuKAmXQgbG9vayBsaWtlIGl04oCZcyAyMDExCgo8YnI+CgojIyMgUXVpY2tzdGFydAoKWW914oCZcmUganVzdCBvbmUgSFRNTCBmaWxlIGF3YXkgZnJvbSBoYXZpbmcgYW4gYXdlc29tZSBBUEkgcmVmZXJlbmNlOgoKYGBgaHRtbAo8IWRvY3R5cGUgaHRtbD4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+U2NhbGFyIEFQSSBSZWZlcmVuY2U8L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8bWV0YQogICAgICBuYW1lPSJ2aWV3cG9ydCIKICAgICAgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPCEtLSBOZWVkIGEgQ3VzdG9tIEhlYWRlcj8gQ2hlY2sgb3V0IHRoaXMgZXhhbXBsZSBodHRwczovL2NvZGVwZW4uaW8vc2NhbGFyb3JnL3Blbi9Wd09YcWFtIC0tPgogICAgPHNjcmlwdAogICAgICBpZD0iYXBpLXJlZmVyZW5jZSIKICAgICAgZGF0YS11cmw9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQHNjYWxhci9nYWxheHkvZGlzdC9sYXRlc3QueWFtbCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9Ac2NhbGFyL2FwaS1yZWZlcmVuY2UiPjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgpgYGAKCkFuZCB0aGVyZeKAmXMgYW4gZXZlci1ncm93aW5nIGxpc3Qgb2YgcGx1Z2lucyBhbmQgaW50ZWdyYXRpb25zOgoKIyMjIEludGVncmF0aW9ucwoKLSBbSFRNTF0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvaHRtbC5tZCkKLSBbLk5FVF0ocGFja2FnZXMvc2NhbGFyLmFzcG5ldGNvcmUvUkVBRE1FLm1kKQotIFtBZG9uaXNKU10oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvYWRvbmlzanMubWQpCi0gW0RvY3VzYXVydXNdKHBhY2thZ2VzL2RvY3VzYXVydXMvUkVBRE1FLm1kKQotIFtFbHlzaWFKU10oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvZWx5c2lhanMubWQpCi0gW0V4cHJlc3NdKHBhY2thZ2VzL2V4cHJlc3MtYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW0Zhc3RBUEldKHBhY2thZ2VzL3NjYWxhcl9mYXN0YXBpL1JFQURNRS5tZCkKLSBbRmFzdGlmeV0ocGFja2FnZXMvZmFzdGlmeS1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbR29dKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL2dvLm1kKQotIFtIb25vXShwYWNrYWdlcy9ob25vLWFwaS1yZWZlcmVuY2UvUkVBRE1FLm1kKQotIFtMYXJhdmVsIFNjcmliZV0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvbGFyYXZlbC1zY3JpYmUubWQpCi0gW0xpdGVzdGFyXShodHRwczovL2RvY3MubGl0ZXN0YXIuZGV2L2xhdGVzdC91c2FnZS9vcGVuYXBpL3VpX3BsdWdpbnMuaHRtbCkKLSBbTmVzdEpTXShwYWNrYWdlcy9uZXN0anMtYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW05leHQuanNdKHBhY2thZ2VzL25leHRqcy1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbTml0cm9dKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL25pdHJvLm1kKQotIFtOdXh0XShwYWNrYWdlcy9udXh0L1JFQURNRS5tZCkKLSBbUGxhdGZvcm1hdGljXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9wbGF0Zm9ybWF0aWMubWQpCi0gW1JlYWN0XShwYWNrYWdlcy9hcGktcmVmZXJlbmNlLXJlYWN0L1JFQURNRS5tZCkKLSBbUnVzdF0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvcnVzdC5tZCkKLSBbVnVlLmpzXShwYWNrYWdlcy9hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKCjxicj4KCiMjIyBNYW5hZ2VkIEhvc3RpbmcKCldl4oCZcmUgb2ZmZXJpbmcgYSBmcmVlIGFuZCBwYWlkIG1hbmFnZWQgaG9zdGluZyBvbiB0aGUgZWRnZSwgdG9vOgoKLSBXcml0ZSB5b3VyIEFQSSBkb2N1bWVudGF0aW9uIGFuZCBwdWJsaXNoIHlvdXIgQVBJIHJlZmVyZW5jZXMgKGZyZWUpCi0gR2V0IFNTTCBhbmQgYSBzdXBlciBjb29sIGAqLmFwaWRvY3VtZW50YXRpb24uY29tYCBzdWJkb21haW4gKGZyZWUpCi0gV3JpdGUgZnJlZSB0ZXh0IGRvY3VtZW50YXRpb24gKHBhaWQpCi0gQ29sbGFib3JhdGUgd2l0aCB5b3VyIHdob2xlIHRlYW0gKHBhaWQpCi0gVXNlIGFueSBkb21haW4gKHBhaWQpCgpSZWFkeT8gW0NyZWF0ZSB5b3VyIGFjY291bnQgb24gc2NhbGFyLmNvbV0oaHR0cHM6Ly9zY2FsYXIuY29tKS4KCjxicj4KCiMjIyBQcm9qZWN0cwoKfCBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgW1NjYWxhciBBUEkgQ2xpZW50XShwYWNrYWdlcy9hcGktY2xpZW50L1JFQURNRS5tZCkgICAgICAgICAgfCBBUEkgY2xpZW50ICAgICAgICAgICAgIHwKfCBbU2NhbGFyIENMSV0ocGFja2FnZXMvY2xpL1JFQURNRS5tZCkgICAgICAgICAgICAgICAgICAgICAgICB8IENvbW1hbmQtbGluZSBpbnRlcmZhY2UgfAp8IFtTY2FsYXIgR2FsYXh5XShwYWNrYWdlcy9nYWxheHkvUkVBRE1FLm1kKSAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSBFeGFtcGxlICAgICAgICB8CnwgW1NjYWxhciBQbGF5IEJ1dHRvbl0ocGFja2FnZXMvcGxheS1idXR0b24vUkVBRE1FLm1kKSAgICAgICAgfCBRdWljayBBUEkgQ2xpZW50IEVtYmVkIHwKfCBbU2NhbGFyIE1vY2sgU2VydmVyXShwYWNrYWdlcy9tb2NrLXNlcnZlci9SRUFETUUubWQpICAgICAgICB8IE9wZW5BUEkgTW9jayBTZXJ2ZXIgICAgfAp8IFtTY2FsYXIgVm9pZCBTZXJ2ZXJdKHBhY2thZ2VzL3ZvaWQtc2VydmVyL1JFQURNRS5tZCkgICAgICAgIHwgSFRUUCBSZXF1ZXN0IE1pcnJvciAgICB8CnwgW1NjYWxhciBPcGVuIEFQSSBQYXJzZXJdKHBhY2thZ2VzL29wZW5hcGktcGFyc2VyL1JFQURNRS5tZCkgfCBPcGVuQVBJIFNESyAgICAgICAgICAgIHwKfCBbU2NhbGFyIFNhbmRib3hdKGh0dHBzOi8vc2FuZGJveC5zY2FsYXIuY29tLykgICAgICAgICAgICAgICB8IE9ubGluZSBPcGVuQVBJIEVkaXRvciAgfAoKPGJyPgoKIyMjIERvY3VtZW50YXRpb24KCnwgVG9waWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFtUaGVtZXNdKGRvY3VtZW50YXRpb24vdGhlbWVzLm1kKSAgICAgICAgICAgICAgIHwgVGhlbWVzLCBsYXlvdXRzICYgc3R5bGluZyAgICAgICAgICB8CnwgW0NvbmZpZ3VyYXRpb25dKGRvY3VtZW50YXRpb24vY29uZmlndXJhdGlvbi5tZCkgfCBUaGUgdW5pdmVyc2FsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHwKfCBbT3BlbkFQSV0oZG9jdW1lbnRhdGlvbi9vcGVuYXBpLm1kKSAgICAgICAgICAgICB8IE9wZW5BUEkgYW5kIG91ciBleHRlbnNpb25zIHRvIGl0ICAgfAp8IFtNYXJrZG93bl0oZG9jdW1lbnRhdGlvbi9tYXJrZG93bi5tZCkgICAgICAgICAgIHwgTWFya2Rvd24gc3ludGF4ICAgICAgICAgICAgICAgICAgICB8Cgo8YnI+CgojIyMgQ29tbXVuaXR5CgpXZSBhcmUgQVBJIG5lcmRzLiBZb3UgdG9vPyBMZXTigJlzIGNoYXQgb24gRGlzY29yZDogPGh0dHBzOi8vZGlzY29yZC5nZy9zY2FsYXI+Cgo8YnI+CgojIyMgQ29udHJpYnV0b3JzCgpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lISBSZWFkIHRoZSBbYENPTlRSSUJVVElOR2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcpIGd1aWRlLgoKPGJyPgoKPCEtLSByZWFkbWU6IGNvbGxhYm9yYXRvcnMsY29udHJpYnV0b3JzIC1zdGFydCAtLT4KPHRhYmxlPgoJPHRib2R5PgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hhbnNwYWdlbCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTc3OTkyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaGFuc3BhZ2VsIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5oYW5zcGFnZWw8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbXJpdGsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjAzOTUzOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFtcml0ayIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW1yaXRrPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdG1hc3Ryb20iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzY1MjUzMjk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0bWFzdHJvbSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+dG1hc3Ryb208L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjbGF2ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MTc2MzE0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWFyY2xhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1hcmNsYXZlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaHdrciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82Mzc0MDkwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaHdrciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aHdrcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FudGxpbyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDk2NjE1NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFudGxpbyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW50bGlvPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2FtZXJvbnJvaGFuaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MjAxNDA3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2FtZXJvbnJvaGFuaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2FtZXJvbnJvaGFuaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dlb2ZmZ3Njb3R0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU5MjA2MTAwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZ2VvZmZnc2NvdHQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdlb2ZmZ3Njb3R0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaW55b3VydGltZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjExMTAzMD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImlueW91cnRpbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmlueW91cnRpbWU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BbW9yaW0zMyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MjYyNDg2OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkFtb3JpbTMzIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5BbW9yaW0zMzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3hDMGRleCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMjkxODM2Nj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InhDMGRleCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eEMwZGV4PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWRqc2t5Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ5MzA1MjE5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYWRqc2t5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5hZGpza3k8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BVFJFQVkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjY1ODUyOTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJBVFJFQVkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkFUUkVBWTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0VkZ2FyYXN6cyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NTY5NjI2OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkVkZ2FyYXN6cyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+RWRnYXJhc3pzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTW9oaWI4MzQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDczMTY0NjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNb2hpYjgzNCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TW9oaWI4MzQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tY29sbGluYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MjE5NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1jb2xsaW5hIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tY29sbGluYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvdWxjaGlsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81OTY0Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNvdWxjaGlsZCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+c291bGNoaWxkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXBtaW5hcmRpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzg1ODc1Njc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtcG1pbmFyZGkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1wbWluYXJkaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hleDBpZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81Mjc2MjYxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaGV4MGlkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5oZXgwaWQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS95a2Rvam8iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgxMTY1MT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InlrZG9qbyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eWtkb2pvPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGltaGV1ZXIiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDgyMT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InRpbWhldWVyIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50aW1oZXVlcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21vdWhhbm5hZC1zaCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODQ5NTc0MD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1vdWhhbm5hZC1zaCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bW91aGFubmFkLXNoPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFzb24tYXQtcGllY2VzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMzQyMTA4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1hc29uLWF0LXBpZWNlcyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bWFzb24tYXQtcGllY2VzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTWFzb24tTGl0dGxlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNTAwODQ0MT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1hc29uLUxpdHRsZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TWFzb24tTGl0dGxlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ3NtY2RvbmFsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNjAwMzM3OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImdzbWNkb25hbGQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdzbWNkb25hbGQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mZWRlcmljb2JvbmQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM4NDI2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZmVkZXJpY29ib25kIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5mZWRlcmljb2JvbmQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kb3Rmb3J0dW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE4MjI5NTc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkb3Rmb3J0dW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRvdGZvcnR1bjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NlYmFzdGlhbkJpZW5lcnQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTc0NTg3ODU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTZWJhc3RpYW5CaWVuZXJ0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5TZWJhc3RpYW5CaWVuZXJ0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmVhbHNhbWEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDY0MDMyODQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJyZWFsc2FtYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cmVhbHNhbWE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jYXB0YWluc2FmaWEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg1Nzk5Mz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImNhcHRhaW5zYWZpYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2FwdGFpbnNhZmlhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU1RQNTk0MCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTE0NDMwMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlNUUDU5NDAiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNUUDU5NDA8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ocnluZXZ5Y2hyb21hbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84MjIwOTE5OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImhyeW5ldnljaHJvbWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5ocnluZXZ5Y2hyb21hbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JiYW5nZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzI1MjU3ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJiYW5nZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cmJhbmdlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmlja2loYXN0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NTY2MD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJpY2tpaGFzdGluZ3MiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnJpY2tpaGFzdGluZ3M8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXhCcmVpZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg2ODU1Nzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNYXhCcmVpZGEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1heEJyZWlkYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01hcmlvR0siPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODM3OTA3OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1hcmlvR0siLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1hcmlvR0s8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TaGFkaWVzdEdvYXQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg1OTA0OTI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTaGFkaWVzdEdvYXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNoYWRpZXN0R29hdDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FsZXdpbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85ODA4NDQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhbGV3aW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFsZXdpbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvR2l0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNjgyNzk4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic29HaXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNvR2l0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2luaDExNzgwMSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MzY5NjcxNT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNpbmgxMTc4MDEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNpbmgxMTc4MDE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aGliYXVsdGxlb3VheSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzg5NDA1ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InRoaWJhdWx0bGVvdWF5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50aGliYXVsdGxlb3VheTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3lzaHJzbXoiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjU0ODg5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ieXNocnNteiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eXNocnNtejwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JpdGxhYi1ydWl6aGkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTEwMzgwNjEzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYml0bGFiLXJ1aXpoaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Yml0bGFiLXJ1aXpoaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NoaW5saW5sZWUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDkxNTQ2MjI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJDaGlubGlubGVlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5DaGlubGlubGVlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV2lsbGlhbUJvbnZpbmkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzc4MzQxNTA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJXaWxsaWFtQm9udmluaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+V2lsbGlhbUJvbnZpbmk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYW53aXRoYWJveCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDQ3OTI3NDE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkYW53aXRoYWJveCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZGFud2l0aGFib3g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94LWRlbGZpbm8iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjcxOTI1Nzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ4LWRlbGZpbm8iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPngtZGVsZmlubzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ZvdGllTUNvbnN0YW50Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyMzcyNjU2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iRm90aWVNQ29uc3RhbnQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkZvdGllTUNvbnN0YW50PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZHVua2xlc1RvYXN0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3Mjc5NDg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZHVua2xlc1RvYXN0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5kdW5rbGVzVG9hc3Q8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90c2l3ZWstcGl3aWsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE3MzczMzMyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idHNpd2VrLXBpd2lrIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50c2l3ZWstcGl3aWs8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaWdwd25lZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjM2MzAyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic2lncHduZWQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNpZ3B3bmVkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJhc2hzaGV5ZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzg5MjIyMDM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhcmFzaHNoZXlkYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YXJhc2hzaGV5ZGE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcnRodXJmaW9yZXR0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NzUzNzcwND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFydGh1cmZpb3JldHRlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5hcnRodXJmaW9yZXR0ZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3pzaWxiaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODg2NjU4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ienNpbGJpIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj56c2lsYmk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZHBpcHJhdmEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzg3MTIwOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImJkcGlwcmF2YSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YmRwaXByYXZhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYnJ1bm9ncmNzYWRhIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NjczMjA1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYnJ1bm9ncmNzYWRhIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5icnVub2dyY3NhZGE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGFkd2hpdGFjcmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM0NDU1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2hhZHdoaXRhY3JlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5jaGFkd2hpdGFjcmU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2xlYXJuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU4NzQ4NjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJjaHJpc2xlYXJuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5jaHJpc2xlYXJuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFucCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTgyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZGFucCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZGFucDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhcmVrYXplIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMyNzQ3NTQ5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZGFyZWthemUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRhcmVrYXplPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHVuZGlidW5kaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTA5NjEyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibHVuZGlidW5kaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bHVuZGlidW5kaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VtbWFudWVsLWZlcmRtYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzU0NzA5MjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJlbW1hbnVlbC1mZXJkbWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5lbW1hbnVlbC1mZXJkbWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFjdXMyNiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODA3OTA1OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImZhY3VzMjYiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmZhY3VzMjY8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GZGF3Z3MiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM4MTQxNDA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJGZGF3Z3MiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkZkYXdnczwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0dyZXlYb3IiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzk2MDIyNzM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJHcmV5WG9yIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5HcmV5WG9yPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSGVsZ2VTdmVycmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA4OTY1Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkhlbGdlU3ZlcnJlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5IZWxnZVN2ZXJyZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NKSHdvbmciPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTA2MDU3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQ0pId29uZyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Q0pId29uZzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ljZXlXdSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjA5NjI1ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkljZXlXdSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+SWNleVd1PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZWx0b2NpZWFyIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIyNjMzMzg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZWx0b2NpZWFyIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5lbHRvY2llYXI8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rZXZpbmFuZDExIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4MTYwNDE0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ia2V2aW5hbmQxMSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+a2V2aW5hbmQxMTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0phY29iQ29mZmVlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ1ODg0MjY0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iSmFjb2JDb2ZmZWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkphY29iQ29mZmVlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGhlVmFhbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTA4NDg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iVGhlVmFhbiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+VGhlVmFhbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pvbmF0YXciPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjk3NzI3NjM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJqb25hdGF3Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5qb25hdGF3PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSUhJdXRjaCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMDgyNTA0Nz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IklISXV0Y2giLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPklISXV0Y2g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LaUFSQyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83Mzg0NzQ4ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IktpQVJDIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5LaUFSQzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t5bGxpYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTgzMTIzMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Imt5bGxpYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmt5bGxpYW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCTx0Ym9keT4KPC90YWJsZT4KPCEtLSByZWFkbWU6IGNvbGxhYm9yYXRvcnMsY29udHJpYnV0b3JzIC1lbmQgLS0+Cg==
- readmeEtag: '"edb1f2a1e29c2dafd72a85ccc5e6362b3f92cf69"'
- readmeLastModified: Wed, 25 Sep 2024 22:23:16 GMT
+ WyFbQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2FjdGlvbnMvd29ya2Zsb3dzL2NpLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9hY3Rpb25zL3dvcmtmbG93cy9jaS55bWwpClshW0NvbnRyaWJ1dG9yc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvY29udHJpYnV0b3JzL3NjYWxhci9zY2FsYXIpXShodHRwczovL2dpdGh1Yi5jb20vc2NhbGFyL3NjYWxhci9ncmFwaHMvY29udHJpYnV0b3JzKQpbIVtHaXRIdWIgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvbGljZW5zZS9zY2FsYXIvc2NhbGFyKV0oaHR0cHM6Ly9naXRodWIuY29tL3NjYWxhci9zY2FsYXIvYmxvYi9tYWluL0xJQ0VOU0UpClshW0Rpc2NvcmRdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZGlzY29yZC8xMTM1MzMwMjA3OTYwNjc4NDEwP3N0eWxlPWZsYXQmY29sb3I9NTg2NUYyKV0oaHR0cHM6Ly9kaXNjb3JkLmdnL3NjYWxhcikKCjxoMT4KCTxwPlNjYWxhcjwvcD4KCTxwPgoJCTxhIGhyZWY9Imh0dHBzOi8vc2NhbGFyLmNvbS9kb3dubG9hZCIgdGFyZ2V0PSJfYmxhbmsiPgoJCQk8cGljdHVyZT4KCQkJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8xNzkyMjNhYi01MjA2LTQ4OGUtODlmMi1iYTI4Njk0MjM4MWYiPgoJCQkJPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvYTgxODFlYjMtM2MzYy00YmYxLTk0OGUtYzk1ZmMwOWQyZGNhIj4KCQkJCTxpbWcgd2lkdGg9IjQ4LjQ5NCUiIGhlaWdodD0iMjAwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8xNzkyMjNhYi01MjA2LTQ4OGUtODlmMi1iYTI4Njk0MjM4MWYjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlNjYWxhciBBUEkgY2xpZW50Ij4KCQkJPC9waWN0dXJlPgoJCTwvYT4KCQk8YSBocmVmPSJodHRwczovL2RvY3Muc2NhbGFyLmNvbS9zd2FnZ2VyLWVkaXRvciIgdGFyZ2V0PSJfYmxhbmsiPgoJCQk8cGljdHVyZT4KCQkJCTxzb3VyY2UgbWVkaWE9IihwcmVmZXJzLWNvbG9yLXNjaGVtZTogbGlnaHQpIiBzcmNzZXQ9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83Njg2OGU2ZC00NjZjLTQwOTctOGQ0Mi1mNDI2NTU3NzUyYmEiPgoJCQkJPHNvdXJjZSBtZWRpYT0iKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSIgc3Jjc2V0PSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvMjAyOWJlYzAtNThlOS00ZmExLWFkODAtMDA0NWU4Mjg5NzhlIj4KCQkJCTxpbWcgd2lkdGg9IjQ4LjQ5NCUiIGhlaWdodD0iMjAwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy83Njg2OGU2ZC00NjZjLTQwOTctOGQ0Mi1mNDI2NTU3NzUyYmEjZ2gtbGlnaHQtbW9kZS1vbmx5IiBhbHQ9IlNjYWxhciBBUEkgUmVmZXJlbmNlIj4KCQkJPC9waWN0dXJlPgoJIAk8L2E+Cgk8L3A+CjwvaDE+Cgo8cD4KCTxpbWcgd2lkdGg9IjgzMCIgaGVpZ2h0PSI1MDAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2Q0YmExNzE3LTE1ODMtNDRiNy05YjAwLWY3YWNkNDU1MGVlYSNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iODMwIiBoZWlnaHQ9IjUwMCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvOGM2NzAxNjQtNjIxOC00N2IwLTg1OTUtZjYyNDRkMWExY2QyI2doLWRhcmstbW9kZS1vbmx5Ij4KPC9wPgoKIyMjIEFuIG9mZmxpbmUgZmlyc3QgQVBJIENsaWVudCBidWlsdCBmb3IgT3BlbkFQSQoKPHA+Cgk8YSBocmVmPSJodHRwczovL3NjYWxhci5jb20vZG93bmxvYWQiPkRvd25sb2FkPC9hPiAmbmJzcDsmbmJzcDsKCTxhIGhyZWY9Imh0dHBzOi8vY2xpZW50LnNjYWxhci5jb20vIj5UcnkgRGVtbzwvYT4KPC9wPgoKPCEtLSBtaW5pbWFsIGxpbmUgYnJlYWstLT4KPHA+Cgk8aW1nIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzdkN2U3YmE3LTJiMDItNDlmMy1hYmNkLWIyNGM1NjZhM2MxNiNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iMTIwMCIgaGVpZ2h0PSIxIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8zNDFiZmIxZC01Y2IwLTRlYzYtODllYi00YjFkY2MwN2VlYjcjZ2gtZGFyay1tb2RlLW9ubHkiPgo8L3A+CjwhLS0gZW5kIG1pbmltYWwgbGluZSBicmVhay0tPgoKPHA+Cgk8aW1nIHdpZHRoPSI4MzAiIGhlaWdodD0iNTAwIiBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy9jNDlkYTk3OS0zYjZkLTQ1OTQtYmViNC0wODY3NzdkOGZkMTcjZ2gtbGlnaHQtbW9kZS1vbmx5Ij4KCTxpbWcgd2lkdGg9IjgzMCIgaGVpZ2h0PSI1MDAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzgwZGEyNmFmLTBjN2QtNGMxMy1iMzdkLWU0ZDJiZWVjNThkYiNnaC1kYXJrLW1vZGUtb25seSI+CjwvcD4KCjxoMz5JbnRlcmFjdGl2ZSBBUEkgUmVmZXJlbmNlIGZyb20gT3BlbkFQSS9Td2FnZ2VyPC9oMz4KPHA+Cgk8YSBocmVmPSJodHRwczovL2RvY3Muc2NhbGFyLmNvbS9zd2FnZ2VyLWVkaXRvciI+VHJ5IERlbW88L2E+ICZuYnNwOyZuYnNwOwo8L3A+Cgo8IS0tIG1pbmltYWwgbGluZSBicmVhay0tPgo8cD4KCTxpbWcgd2lkdGg9IjEyMDAiIGhlaWdodD0iMSIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvN2Q3ZTdiYTctMmIwMi00OWYzLWFiY2QtYjI0YzU2NmEzYzE2I2doLWxpZ2h0LW1vZGUtb25seSI+Cgk8aW1nIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjEiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzM0MWJmYjFkLTVjYjAtNGVjNi04OWViLTRiMWRjYzA3ZWViNyNnaC1kYXJrLW1vZGUtb25seSI+CjwvcD4KPCEtLSBlbmQgbWluaW1hbCBsaW5lIGJyZWFrLS0+CgojIyMgVHJ1c3RlZCBieToKCjxicj4KCjxwPgoJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzczZGNlZjk1LWZjNGYtNDExMS1iYjA5LWYzY2UzNzQ1M2E4MSNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzLzFkYTZiOTA0LTM0YmUtNDc2MC1iNTM1LTBkZDIxNjBlNmQxMiNnaC1saWdodC1tb2RlLW9ubHkiPgoJPGltZyB3aWR0aD0iNDguNDk0JSIgaGVpZ2h0PSIzMzAiIHNyYz0iaHR0cHM6Ly9naXRodWIuY29tL3VzZXItYXR0YWNobWVudHMvYXNzZXRzL2M3OTJjOTc3LTg1NTEtNDMyYy05NDE3LTNlYTA1ZTQwODE1MSNnaC1kYXJrLW1vZGUtb25seSI+Cgk8aW1nIHdpZHRoPSI0OC40OTQlIiBoZWlnaHQ9IjMzMCIgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vdXNlci1hdHRhY2htZW50cy9hc3NldHMvNTRhOWVhNjktYzUwYS00ZjQ5LThjM2UtZGRkNmY4ZmJlMWYzI2doLWRhcmstbW9kZS1vbmx5Ij4KPC9wPgoKPGJyPgoKIyMjIEZlYXR1cmVzCgotIFVzZXMgT3BlbkFQSS9Td2FnZ2VyIGRvY3VtZW50cwotIFJlcXVlc3QgZXhhbXBsZXMgZm9yIG1hbnkgZmF2b3JpdGUgbGFuZ3VhZ2VzIGFuZCBmcmFtZXdvcmtzCi0gQ29tZXMgd2l0aCBhbiBpbnRlZ3JhdGVkIEFQSSBjbGllbnQKLSBJbnRlZ3JhdGVzIHdpdGggeW91ciBmYXZvcml0ZSBmcmFtZXdvcmsKLSBEb2VzbuKAmXQgbG9vayBsaWtlIGl04oCZcyAyMDExCgo8YnI+CgojIyMgUXVpY2tzdGFydAoKWW914oCZcmUganVzdCBvbmUgSFRNTCBmaWxlIGF3YXkgZnJvbSBoYXZpbmcgYW4gYXdlc29tZSBBUEkgcmVmZXJlbmNlOgoKYGBgaHRtbAo8IWRvY3R5cGUgaHRtbD4KPGh0bWw+CiAgPGhlYWQ+CiAgICA8dGl0bGU+U2NhbGFyIEFQSSBSZWZlcmVuY2U8L3RpdGxlPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8bWV0YQogICAgICBuYW1lPSJ2aWV3cG9ydCIKICAgICAgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIC8+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPCEtLSBOZWVkIGEgQ3VzdG9tIEhlYWRlcj8gQ2hlY2sgb3V0IHRoaXMgZXhhbXBsZSBodHRwczovL2NvZGVwZW4uaW8vc2NhbGFyb3JnL3Blbi9Wd09YcWFtIC0tPgogICAgPHNjcmlwdAogICAgICBpZD0iYXBpLXJlZmVyZW5jZSIKICAgICAgZGF0YS11cmw9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vQHNjYWxhci9nYWxheHkvZGlzdC9sYXRlc3QueWFtbCI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9Ac2NhbGFyL2FwaS1yZWZlcmVuY2UiPjwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPgpgYGAKCkFuZCB0aGVyZeKAmXMgYW4gZXZlci1ncm93aW5nIGxpc3Qgb2YgcGx1Z2lucyBhbmQgaW50ZWdyYXRpb25zOgoKIyMjIEludGVncmF0aW9ucwoKLSBbSFRNTF0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvaHRtbC5tZCkKLSBbLk5FVF0ocGFja2FnZXMvc2NhbGFyLmFzcG5ldGNvcmUvUkVBRE1FLm1kKQotIFtBZG9uaXNKU10oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvYWRvbmlzanMubWQpCi0gW0RvY3VzYXVydXNdKHBhY2thZ2VzL2RvY3VzYXVydXMvUkVBRE1FLm1kKQotIFtFbHlzaWFKU10oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvZWx5c2lhanMubWQpCi0gW0V4cHJlc3NdKHBhY2thZ2VzL2V4cHJlc3MtYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW0Zhc3RBUEldKHBhY2thZ2VzL3NjYWxhcl9mYXN0YXBpL1JFQURNRS5tZCkKLSBbRmFzdGlmeV0ocGFja2FnZXMvZmFzdGlmeS1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbR29dKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL2dvLm1kKQotIFtIb25vXShwYWNrYWdlcy9ob25vLWFwaS1yZWZlcmVuY2UvUkVBRE1FLm1kKQotIFtMYXJhdmVsIFNjcmliZV0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvbGFyYXZlbC1zY3JpYmUubWQpCi0gW0xpdGVzdGFyXShodHRwczovL2RvY3MubGl0ZXN0YXIuZGV2L2xhdGVzdC91c2FnZS9vcGVuYXBpL3VpX3BsdWdpbnMuaHRtbCkKLSBbTmVzdEpTXShwYWNrYWdlcy9uZXN0anMtYXBpLXJlZmVyZW5jZS9SRUFETUUubWQpCi0gW05leHQuanNdKHBhY2thZ2VzL25leHRqcy1hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKLSBbTml0cm9dKGRvY3VtZW50YXRpb24vaW50ZWdyYXRpb25zL25pdHJvLm1kKQotIFtOdXh0XShwYWNrYWdlcy9udXh0L1JFQURNRS5tZCkKLSBbUGxhdGZvcm1hdGljXShkb2N1bWVudGF0aW9uL2ludGVncmF0aW9ucy9wbGF0Zm9ybWF0aWMubWQpCi0gW1JlYWN0XShwYWNrYWdlcy9hcGktcmVmZXJlbmNlLXJlYWN0L1JFQURNRS5tZCkKLSBbUnVzdF0oZG9jdW1lbnRhdGlvbi9pbnRlZ3JhdGlvbnMvcnVzdC5tZCkKLSBbVnVlLmpzXShwYWNrYWdlcy9hcGktcmVmZXJlbmNlL1JFQURNRS5tZCkKCjxicj4KCiMjIyBNYW5hZ2VkIEhvc3RpbmcKCldl4oCZcmUgb2ZmZXJpbmcgYSBmcmVlIGFuZCBwYWlkIG1hbmFnZWQgaG9zdGluZyBvbiB0aGUgZWRnZSwgdG9vOgoKLSBXcml0ZSB5b3VyIEFQSSBkb2N1bWVudGF0aW9uIGFuZCBwdWJsaXNoIHlvdXIgQVBJIHJlZmVyZW5jZXMgKGZyZWUpCi0gR2V0IFNTTCBhbmQgYSBzdXBlciBjb29sIGAqLmFwaWRvY3VtZW50YXRpb24uY29tYCBzdWJkb21haW4gKGZyZWUpCi0gV3JpdGUgZnJlZSB0ZXh0IGRvY3VtZW50YXRpb24gKHBhaWQpCi0gQ29sbGFib3JhdGUgd2l0aCB5b3VyIHdob2xlIHRlYW0gKHBhaWQpCi0gVXNlIGFueSBkb21haW4gKHBhaWQpCgpSZWFkeT8gW0NyZWF0ZSB5b3VyIGFjY291bnQgb24gc2NhbGFyLmNvbV0oaHR0cHM6Ly9zY2FsYXIuY29tKS4KCjxicj4KCiMjIyBQcm9qZWN0cwoKfCBQcm9qZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgfAp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgW1NjYWxhciBBUEkgQ2xpZW50XShwYWNrYWdlcy9hcGktY2xpZW50L1JFQURNRS5tZCkgICAgICAgICAgfCBBUEkgY2xpZW50ICAgICAgICAgICAgIHwKfCBbU2NhbGFyIENMSV0ocGFja2FnZXMvY2xpL1JFQURNRS5tZCkgICAgICAgICAgICAgICAgICAgICAgICB8IENvbW1hbmQtbGluZSBpbnRlcmZhY2UgfAp8IFtTY2FsYXIgR2FsYXh5XShwYWNrYWdlcy9nYWxheHkvUkVBRE1FLm1kKSAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSBFeGFtcGxlICAgICAgICB8CnwgW1NjYWxhciBQbGF5IEJ1dHRvbl0ocGFja2FnZXMvcGxheS1idXR0b24vUkVBRE1FLm1kKSAgICAgICAgfCBRdWljayBBUEkgQ2xpZW50IEVtYmVkIHwKfCBbU2NhbGFyIE1vY2sgU2VydmVyXShwYWNrYWdlcy9tb2NrLXNlcnZlci9SRUFETUUubWQpICAgICAgICB8IE9wZW5BUEkgTW9jayBTZXJ2ZXIgICAgfAp8IFtTY2FsYXIgVm9pZCBTZXJ2ZXJdKHBhY2thZ2VzL3ZvaWQtc2VydmVyL1JFQURNRS5tZCkgICAgICAgIHwgSFRUUCBSZXF1ZXN0IE1pcnJvciAgICB8CnwgW1NjYWxhciBPcGVuIEFQSSBQYXJzZXJdKHBhY2thZ2VzL29wZW5hcGktcGFyc2VyL1JFQURNRS5tZCkgfCBPcGVuQVBJIFNESyAgICAgICAgICAgIHwKfCBbU2NhbGFyIFNhbmRib3hdKGh0dHBzOi8vc2FuZGJveC5zY2FsYXIuY29tLykgICAgICAgICAgICAgICB8IE9ubGluZSBPcGVuQVBJIEVkaXRvciAgfAoKPGJyPgoKIyMjIERvY3VtZW50YXRpb24KCnwgVG9waWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfAp8IFtUaGVtZXNdKGRvY3VtZW50YXRpb24vdGhlbWVzLm1kKSAgICAgICAgICAgICAgIHwgVGhlbWVzLCBsYXlvdXRzICYgc3R5bGluZyAgICAgICAgICB8CnwgW0NvbmZpZ3VyYXRpb25dKGRvY3VtZW50YXRpb24vY29uZmlndXJhdGlvbi5tZCkgfCBUaGUgdW5pdmVyc2FsIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHwKfCBbT3BlbkFQSV0oZG9jdW1lbnRhdGlvbi9vcGVuYXBpLm1kKSAgICAgICAgICAgICB8IE9wZW5BUEkgYW5kIG91ciBleHRlbnNpb25zIHRvIGl0ICAgfAp8IFtNYXJrZG93bl0oZG9jdW1lbnRhdGlvbi9tYXJrZG93bi5tZCkgICAgICAgICAgIHwgTWFya2Rvd24gc3ludGF4ICAgICAgICAgICAgICAgICAgICB8Cgo8YnI+CgojIyMgQ29tbXVuaXR5CgpXZSBhcmUgQVBJIG5lcmRzLiBZb3UgdG9vPyBMZXTigJlzIGNoYXQgb24gRGlzY29yZDogPGh0dHBzOi8vZGlzY29yZC5nZy9zY2FsYXI+Cgo8YnI+CgojIyMgQ29udHJpYnV0b3JzCgpDb250cmlidXRpb25zIGFyZSB3ZWxjb21lISBSZWFkIHRoZSBbYENPTlRSSUJVVElOR2BdKGh0dHBzOi8vZ2l0aHViLmNvbS9zY2FsYXIvc2NhbGFyL2Jsb2IvbWFpbi9DT05UUklCVVRJTkcpIGd1aWRlLgoKPGJyPgoKPCEtLSByZWFkbWU6IGNvbGxhYm9yYXRvcnMsY29udHJpYnV0b3JzIC1zdGFydCAtLT4KPHRhYmxlPgoJPHRib2R5PgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hhbnNwYWdlbCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTc3OTkyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaGFuc3BhZ2VsIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5oYW5zcGFnZWw8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hbXJpdGsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjAzOTUzOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFtcml0ayIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW1yaXRrPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdG1hc3Ryb20iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzY1MjUzMjk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ0bWFzdHJvbSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+dG1hc3Ryb208L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjbGF2ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MTc2MzE0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibWFyY2xhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1hcmNsYXZlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaHdrciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82Mzc0MDkwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaHdrciIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+aHdrcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FudGxpbyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDk2NjE1NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFudGxpbyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YW50bGlvPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY2FtZXJvbnJvaGFuaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82MjAxNDA3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2FtZXJvbnJvaGFuaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2FtZXJvbnJvaGFuaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2dlb2ZmZ3Njb3R0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU5MjA2MTAwP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZ2VvZmZnc2NvdHQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdlb2ZmZ3Njb3R0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vaW55b3VydGltZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjExMTAzMD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImlueW91cnRpbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmlueW91cnRpbWU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94QzBkZXgiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjI5MTgzNjY/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ4QzBkZXgiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnhDMGRleDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0Ftb3JpbTMzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyNjI0ODY5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQW1vcmltMzMiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkFtb3JpbTMzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWRqc2t5Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ5MzA1MjE5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYWRqc2t5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5hZGpza3k8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9BVFJFQVkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjY1ODUyOTU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJBVFJFQVkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkFUUkVBWTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0VkZ2FyYXN6cyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81NTY5NjI2OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkVkZ2FyYXN6cyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+RWRnYXJhc3pzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTW9oaWI4MzQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDczMTY0NjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNb2hpYjgzNCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TW9oaWI4MzQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9tY29sbGluYSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81MjE5NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1jb2xsaW5hIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5tY29sbGluYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvdWxjaGlsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81OTY0Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNvdWxjaGlsZCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+c291bGNoaWxkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbXBtaW5hcmRpIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzg1ODc1Njc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJtcG1pbmFyZGkiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPm1wbWluYXJkaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2hleDBpZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS81Mjc2MjYxP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iaGV4MGlkIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5oZXgwaWQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS95a2Rvam8iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTgxMTY1MT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InlrZG9qbyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eWtkb2pvPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGltaGV1ZXIiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDgyMT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InRpbWhldWVyIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50aW1oZXVlcjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL21vdWhhbm5hZC1zaCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODQ5NTc0MD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1vdWhhbm5hZC1zaCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bW91aGFubmFkLXNoPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbWFzb24tYXQtcGllY2VzIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEyMzQyMTA4NT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Im1hc29uLWF0LXBpZWNlcyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bWFzb24tYXQtcGllY2VzPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vTWFzb24tTGl0dGxlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNTAwODQ0MT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1hc29uLUxpdHRsZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+TWFzb24tTGl0dGxlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZ3NtY2RvbmFsZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zNjAwMzM3OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImdzbWNkb25hbGQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmdzbWNkb25hbGQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mZWRlcmljb2JvbmQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM4NDI2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZmVkZXJpY29ib25kIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5mZWRlcmljb2JvbmQ8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kb3Rmb3J0dW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE4MjI5NTc/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkb3Rmb3J0dW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRvdGZvcnR1bjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL1NlYmFzdGlhbkJpZW5lcnQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTc0NTg3ODU/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTZWJhc3RpYW5CaWVuZXJ0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5TZWJhc3RpYW5CaWVuZXJ0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmVhbHNhbWEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDY0MDMyODQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJyZWFsc2FtYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cmVhbHNhbWE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jYXB0YWluc2FmaWEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg1Nzk5Mz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImNhcHRhaW5zYWZpYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Y2FwdGFpbnNhZmlhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vU1RQNTk0MCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTE0NDMwMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IlNUUDU5NDAiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNUUDU5NDA8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ocnluZXZ5Y2hyb21hbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS84MjIwOTE5OD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImhyeW5ldnljaHJvbWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5ocnluZXZ5Y2hyb21hbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JiYW5nZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzI1MjU3ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJiYW5nZSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+cmJhbmdlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcmlja2loYXN0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NTY2MD92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InJpY2tpaGFzdGluZ3MiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnJpY2tpaGFzdGluZ3M8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9NYXhCcmVpZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTg2ODU1Nzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJNYXhCcmVpZGEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1heEJyZWlkYTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL01hcmlvR0siPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvODM3OTA3OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Ik1hcmlvR0siLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPk1hcmlvR0s8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9TaGFkaWVzdEdvYXQiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg1OTA0OTI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJTaGFkaWVzdEdvYXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPlNoYWRpZXN0R29hdDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FsZXdpbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85ODA4NDQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhbGV3aW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmFsZXdpbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NvR2l0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNjgyNzk4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic29HaXQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNvR2l0PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2luaDExNzgwMSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80MzY5NjcxNT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InNpbmgxMTc4MDEiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNpbmgxMTc4MDE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aGliYXVsdGxlb3VheSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMzg5NDA1ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9InRoaWJhdWx0bGVvdWF5Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50aGliYXVsdGxlb3VheTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3lzaHJzbXoiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjU0ODg5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ieXNocnNteiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+eXNocnNtejwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2JpdGxhYi1ydWl6aGkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTEwMzgwNjEzP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYml0bGFiLXJ1aXpoaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Yml0bGFiLXJ1aXpoaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NoaW5saW5sZWUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDkxNTQ2MjI/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJDaGlubGlubGVlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5DaGlubGlubGVlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vV2lsbGlhbUJvbnZpbmkiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzc4MzQxNTA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJXaWxsaWFtQm9udmluaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+V2lsbGlhbUJvbnZpbmk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9kYW53aXRoYWJveCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDQ3OTI3NDE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJkYW53aXRoYWJveCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZGFud2l0aGFib3g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS94LWRlbGZpbm8iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNjcxOTI1Nzk/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJ4LWRlbGZpbm8iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPngtZGVsZmlubzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ZvdGllTUNvbnN0YW50Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQyMzcyNjU2P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iRm90aWVNQ29uc3RhbnQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkZvdGllTUNvbnN0YW50PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZHVua2xlc1RvYXN0Ij4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE3Mjc5NDg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZHVua2xlc1RvYXN0Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5kdW5rbGVzVG9hc3Q8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90c2l3ZWstcGl3aWsiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTE3MzczMzMyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0idHNpd2VrLXBpd2lrIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj50c2l3ZWstcGl3aWs8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaWdwd25lZCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMjM2MzAyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ic2lncHduZWQiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPnNpZ3B3bmVkPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXJhc2hzaGV5ZGEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzg5MjIyMDM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJhcmFzaHNoZXlkYSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YXJhc2hzaGV5ZGE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcnRodXJmaW9yZXR0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS80NzUzNzcwND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImFydGh1cmZpb3JldHRlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5hcnRodXJmaW9yZXR0ZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3pzaWxiaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8zODg2NjU4P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ienNpbGJpIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj56c2lsYmk8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCQk8dHI+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZHBpcHJhdmEiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzg3MTIwOT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImJkcGlwcmF2YSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+YmRwaXByYXZhPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYnJ1bm9ncmNzYWRhIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU0NjczMjA1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iYnJ1bm9ncmNzYWRhIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5icnVub2dyY3NhZGE8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGFkd2hpdGFjcmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTM0NDU1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iY2hhZHdoaXRhY3JlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5jaGFkd2hpdGFjcmU8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc2xlYXJuIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzU4NzQ4NjQ/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJjaHJpc2xlYXJuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5jaHJpc2xlYXJuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZGFucCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMTgyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZGFucCIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+ZGFucDwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2RhcmVrYXplIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMyNzQ3NTQ5P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZGFyZWthemUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmRhcmVrYXplPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgoJCTwvdHI+CgkJPHRyPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vbHVuZGlidW5kaSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS85MTA5NjEyP3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ibHVuZGlidW5kaSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+bHVuZGlidW5kaTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VtbWFudWVsLWZlcmRtYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzU0NzA5MjE/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJlbW1hbnVlbC1mZXJkbWFuIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5lbW1hbnVlbC1mZXJkbWFuPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmFjdXMyNiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xODA3OTA1OT92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9ImZhY3VzMjYiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmZhY3VzMjY8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9GZGF3Z3MiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDM4MTQxNDA/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJGZGF3Z3MiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkZkYXdnczwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0dyZXlYb3IiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNzk2MDIyNzM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJHcmV5WG9yIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5HcmV5WG9yPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSGVsZ2VTdmVycmUiPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA4OTY1Mj92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkhlbGdlU3ZlcnJlIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5IZWxnZVN2ZXJyZTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0NKSHdvbmciPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvOTA2MDU3P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iQ0pId29uZyIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+Q0pId29uZzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0ljZXlXdSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS82NjA5NjI1ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IkljZXlXdSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+SWNleVd1PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZWx0b2NpZWFyIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzIyNjMzMzg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iZWx0b2NpZWFyIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5lbHRvY2llYXI8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9rZXZpbmFuZDExIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4MTYwNDE0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0ia2V2aW5hbmQxMSIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+a2V2aW5hbmQxMTwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0phY29iQ29mZmVlIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ1ODg0MjY0P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iSmFjb2JDb2ZmZWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPkphY29iQ29mZmVlPC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vVGhlVmFhbiI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMTA4NDg1P3Y9NCIgd2lkdGg9IjEwMDsiIGFsdD0iVGhlVmFhbiIvPgogICAgICAgICAgICAgICAgICAgIDxiciAvPgogICAgICAgICAgICAgICAgICAgIDxzdWI+PGI+VGhlVmFhbjwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KCQk8L3RyPgoJCTx0cj4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2pvbmF0YXciPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMjk3NzI3NjM/dj00IiB3aWR0aD0iMTAwOyIgYWx0PSJqb25hdGF3Ii8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5qb25hdGF3PC9iPjwvc3ViPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vSUhJdXRjaCI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8yMDgyNTA0Nz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IklISXV0Y2giLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPklISXV0Y2g8L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LaUFSQyI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS83Mzg0NzQ4ND92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9IktpQVJDIi8+CiAgICAgICAgICAgICAgICAgICAgPGJyIC8+CiAgICAgICAgICAgICAgICAgICAgPHN1Yj48Yj5LaUFSQzwvYj48L3N1Yj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2t5bGxpYW4iPgogICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNTgzMTIzMz92PTQiIHdpZHRoPSIxMDA7IiBhbHQ9Imt5bGxpYW4iLz4KICAgICAgICAgICAgICAgICAgICA8YnIgLz4KICAgICAgICAgICAgICAgICAgICA8c3ViPjxiPmt5bGxpYW48L2I+PC9zdWI+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGQ+CgkJPC90cj4KCTx0Ym9keT4KPC90YWJsZT4KPCEtLSByZWFkbWU6IGNvbGxhYm9yYXRvcnMsY29udHJpYnV0b3JzIC1lbmQgLS0+Cg==
+ readmeEtag: '"43f1ee59b341b78e6a13127c6559dd7d5f17e4e8"'
+ readmeLastModified: Sat, 28 Sep 2024 01:04:17 GMT
repositoryId: 679280065
description: >-
Scalar is an open-source platform
@@ -279,17 +279,17 @@
References ✨ 1st-Class
OpenAPI/Swagger Support
created: '2023-08-16T13:42:32Z'
- updated: '2024-09-27T00:40:20Z'
+ updated: '2024-09-28T03:20:44Z'
language: TypeScript
archived: false
- stars: 6193
+ stars: 6213
watchers: 21
- forks: 197
+ forks: 198
owner: scalar
logo: https://avatars.githubusercontent.com/u/301879?v=4
license: MIT
- repoEtag: '"877a429b408941086bf0894e83a752a36d49960273d7923c68dd0f2920d21d80"'
- repoLastModified: Fri, 27 Sep 2024 00:40:20 GMT
+ repoEtag: '"25591cd40a487cf4341d48b8d2323a4fc3f840703542c4ca3a166f0da74aaaa5"'
+ repoLastModified: Sat, 28 Sep 2024 03:20:44 GMT
foundInMaster: true
- source: https://openapi.tools/
name: Scramble
@@ -317,17 +317,17 @@
Modern Laravel OpenAPI (Swagger) documentation generator. No PHPDoc
annotations required.
created: '2022-08-05T17:16:20Z'
- updated: '2024-09-26T19:04:08Z'
+ updated: '2024-09-27T20:20:27Z'
language: PHP
archived: false
- stars: 1170
+ stars: 1171
watchers: 14
forks: 113
owner: dedoc
logo: https://avatars.githubusercontent.com/u/93313138?v=4
license: MIT
- repoEtag: '"a1e8178721755b7560cdc2db1715432138ea8f65e2eb56888be377ed077dcc49"'
- repoLastModified: Thu, 26 Sep 2024 19:04:08 GMT
+ repoEtag: '"72c3c7a2dc8dba198df4062e85faa8d5d9c0eca26bf1373ab4b30cc5821bde97"'
+ repoLastModified: Fri, 27 Sep 2024 20:20:27 GMT
foundInMaster: true
- source: https://openapi.tools/
name: Scribe
@@ -348,17 +348,17 @@
repositoryId: 260729799
description: Generate API documentation for humans from your Laravel codebase.✍
created: '2020-05-02T16:36:45Z'
- updated: '2024-09-26T16:44:40Z'
+ updated: '2024-09-27T13:55:45Z'
language: PHP
archived: false
- stars: 1698
+ stars: 1699
watchers: 18
forks: 303
owner: knuckleswtf
logo: https://avatars.githubusercontent.com/u/63367037?v=4
license: MIT
- repoEtag: '"42b1e1e28beab892f8920879ca77c83994283e66f41f83a855d0956eaaec6704"'
- repoLastModified: Thu, 26 Sep 2024 16:44:40 GMT
+ repoEtag: '"6fcfb6aa35051933809ace6b2477b0ad52624fa264cd4f44ff712b9f4bbd95c9"'
+ repoLastModified: Fri, 27 Sep 2024 13:55:45 GMT
foundInMaster: true
- source: https://openapi.tools/
name: Supermodel
@@ -405,17 +405,17 @@
repositoryId: 45250726
description: 📘 OpenAPI/Swagger-generated API Reference Documentation
created: '2015-10-30T12:53:02Z'
- updated: '2024-09-27T03:22:28Z'
+ updated: '2024-09-27T17:55:38Z'
language: TypeScript
archived: false
- stars: 23340
+ stars: 23345
watchers: 296
- forks: 2289
+ forks: 2290
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"8b32056d88f6199df1454281f9c7a4f1547c68a99c45b7225cfa5aed43aafbfb"'
- repoLastModified: Fri, 27 Sep 2024 03:22:28 GMT
+ repoEtag: '"44ce511ecf8a69cd72507fc7d5b7458158881f7dfc308c87c9960c152d6a2a23"'
+ repoLastModified: Fri, 27 Sep 2024 17:55:38 GMT
foundInMaster: true
- source: https://openapi.tools/
name: RestCase Docs
@@ -477,17 +477,17 @@
also simplified postman tool. 基于 OpenAPI/Swagger
规范的接口文档,快速模拟请求参数并调用接口,也是简化版 postman 工具
created: '2023-12-20T14:51:12Z'
- updated: '2024-09-27T02:31:30Z'
+ updated: '2024-09-27T07:29:06Z'
language: TypeScript
archived: false
- stars: 617
+ stars: 619
watchers: 2
forks: 57
owner: rookie-luochao
logo: https://avatars.githubusercontent.com/u/22948077?v=4
license: MIT
- repoEtag: '"bb4cd3aaecc87c4be8f0e0d75751ad6368cd0499a68cc285d894833c7948f9d7"'
- repoLastModified: Fri, 27 Sep 2024 02:31:30 GMT
+ repoEtag: '"f8e676325a46786014590109c791c99065966602f63373480dd3d10bf09047ab"'
+ repoLastModified: Fri, 27 Sep 2024 07:29:06 GMT
category: Documentation
foundInMaster: true
v3_1: true
@@ -512,17 +512,17 @@
repositoryId: 337689065
description: OpenAPI Diff and Breaking Changes
created: '2021-02-10T10:28:36Z'
- updated: '2024-09-26T15:04:12Z'
+ updated: '2024-09-27T08:54:18Z'
language: Go
archived: false
- stars: 695
+ stars: 697
watchers: 10
forks: 61
owner: Tufin
logo: https://avatars.githubusercontent.com/u/5352131?v=4
license: Apache-2.0
- repoEtag: '"cf5f5cb969ccca31b19c2b7272d6afdf36118786aa75f6cd9ae90f6886bb2b98"'
- repoLastModified: Thu, 26 Sep 2024 15:04:12 GMT
+ repoEtag: '"c50746d1957caa131424c913af6cf2406ca19d18f382d7687355e7b06ecbd6a9"'
+ repoLastModified: Fri, 27 Sep 2024 08:54:18 GMT
foundInMaster: true
name: oasdiff
language: Go
@@ -1026,26 +1026,26 @@
v3: true
repositoryMetadata:
base64Readme: >-
- PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5BUEkgR2VuZXJhdG9yPC9oMT4KCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKWyFbU3RhYmxlIHJlbGVhc2VzIGluIE1hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tbWV0YWRhdGEvdi9odHRwcy9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWF2ZW4tbWV0YWRhdGEueG1sLnN2ZyldKGh0dHA6Ly9zZWFyY2gubWF2ZW4ub3JnLyNzZWFyY2glN0NnYXYlN0MxJTdDZyUzQSUyMm9yZy5vcGVuYXBpdG9vbHMlMjIlMjBBTkQlMjBhJTNBJTIyb3BlbmFwaS1nZW5lcmF0b3IlMjIpClshW0FwYWNoZSAyLjAgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1vcmFuZ2UpXSguL0xJQ0VOU0UpClshW09wZW4gQ29sbGVjdGl2ZSBiYWNrZXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL29wZW5jb2xsZWN0aXZlL2JhY2tlcnMvb3BlbmFwaV9nZW5lcmF0b3I/Y29sb3I9b3JhbmdlJmxhYmVsPU9wZW5Db2xsZWN0aXZlJTIwQmFja2VycyldKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yKQpbIVtKb2luIHRoZSBTbGFjayBjaGF0IHJvb21dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2xhY2stSm9pbiUyMHRoZSUyMGNoYXQlMjByb29tLW9yYW5nZSldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9vcGVuYXBpLWdlbmVyYXRvci9zaGFyZWRfaW52aXRlL3p0LTEyanh4ZDdwMi1YVWVRTX40cHpzVTl4fmVHTFFxWDJnKQpbIVtGb2xsb3cgT3BlbkFQSSBHZW5lcmF0b3IgVHdpdHRlciBhY2NvdW50IHRvIGdldCB0aGUgbGF0ZXN0IHVwZGF0ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9vYXNfZ2VuZXJhdG9yLnN2Zz9zdHlsZT1zb2NpYWwmbGFiZWw9Rm9sbG93KV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vYXNfZ2VuZXJhdG9yKQpbIVtDb250cmlidXRlIHdpdGggR2l0cG9kXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnRyaWJ1dGUlMjB3aXRoLUdpdHBvZC05MDhhODU/bG9nbz1naXRwb2QpXShodHRwczovL2dpdHBvZC5pby8jaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKWyFbQ29uYW4gQ2VudGVyXShodHRwczovL3NoaWVsZHMuaW8vY29uYW4vdi9vcGVuYXBpLWdlbmVyYXRvcildKGh0dHBzOi8vY29uYW4uaW8vY2VudGVyL3JlY2lwZXMvb3BlbmFwaS1nZW5lcmF0b3IpClshW1JldnZlZCB1cCBieSBEZXZlbG9jaXR5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JldnZlZCUyMHVwJTIwYnktRGV2ZWxvY2l0eS0wNkEwQ0U/bG9nbz1HcmFkbGUmbGFiZWxDb2xvcj0wMjMwM0EpXShodHRwczovL2dlLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2gvc2NhbnMpCjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KCltNYXN0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIpIChgNy45LjBgKToKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2FwaS50cmF2aXMtY2kuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci5zdmc/YnJhbmNoPW1hc3RlciZzdGF0dXM9cGFzc2VkKV0oaHR0cHM6Ly9hcHAudHJhdmlzLWNpLmNvbS9naXRodWIvT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2J1aWxkcykKWyFbSW50ZWdyYXRpb24gVGVzdDJdKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQpbIVtXaW5kb3dzIFRlc3RdKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL2FwaS9wcm9qZWN0cy9zdGF0dXMvZ2l0aHViL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcj9icmFuY2g9bWFzdGVyJnN2Zz10cnVlJnBhc3NpbmdUZXh0PVdpbmRvd3MlMjBUZXN0JTIwLSUyME9LJmZhaWxpbmdUZXh0PVdpbmRvd3MlMjBUZXN0JTIwLSUyMEZhaWxzKV0oaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9XaWxsaWFtQ2hlbmcvb3BlbmFwaS1nZW5lcmF0b3IpClshW0JpdHJpc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYml0cmlzZS80YTJiMTBhODE5ZDEyYjY3L21hc3Rlcj9sYWJlbD1iaXRyaXNlJTNBJTIwU3dpZnQrNCw1JnRva2VuPTg1OUZNRFI4UUh3YWJDend2Wks2dlEpXShodHRwczovL2FwcC5iaXRyaXNlLmlvL2FwcC80YTJiMTBhODE5ZDEyYjY3KQoKPC9kaXY+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKOnN0YXI6OnN0YXI6OnN0YXI6IElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUsIHBsZWFzZSByZWZlciB0byBbZ3VpZGVsaW5lc10oQ09OVFJJQlVUSU5HLm1kKSBhbmQgYSBsaXN0IG9mIFtvcGVuIHRhc2tzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2lzc3Vlcz9xPWlzJTNBb3BlbitpcyUzQWlzc3VlK2xhYmVsJTNBJTIyaGVscCt3YW50ZWQlMjIpLiA6c3Rhcjo6c3Rhcjo6c3RhcjoKCjpiYW5nYmFuZzogVG8gbWlncmF0ZSBmcm9tIFN3YWdnZXIgQ29kZWdlbiB0byBPcGVuQVBJIEdlbmVyYXRvciwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbbWlncmF0aW9uIGd1aWRlXShkb2NzL21pZ3JhdGlvbi1mcm9tLXN3YWdnZXItY29kZWdlbi5tZCkgOmJhbmdiYW5nOgoKOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgW1dpa2kgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci93aWtpKSBhbmQgW0ZBUV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci93aWtpL0ZBUSkgOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjoKCjpub3RlYm9va193aXRoX2RlY29yYXRpdmVfY292ZXI6IFRoZSBlQm9vayBbQSBCZWdpbm5lcidzIEd1aWRlIHRvIENvZGUgR2VuZXJhdGlvbiBmb3IgUkVTVCBBUElzXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9vaykgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBiZWdpbm5lcnMgOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjoKCjp3YXJuaW5nOiBJZiB0aGUgT3BlbkFQSSBzcGVjLCB0ZW1wbGF0ZXMgb3IgYW55IGlucHV0IChlLmcuIG9wdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcykgaXMgb2J0YWluZWQgZnJvbSBhbiB1bnRydXN0ZWQgc291cmNlIG9yIGVudmlyb25tZW50LCBwbGVhc2UgbWFrZSBzdXJlIHlvdSd2ZSByZXZpZXdlZCB0aGVzZSBpbnB1dHMgYmVmb3JlIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBBUEkgY2xpZW50LCBzZXJ2ZXIgc3R1YiBvciBkb2N1bWVudGF0aW9uIHRvIGF2b2lkIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXMgKGUuZy4gW2NvZGUgaW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db2RlX2luamVjdGlvbikpLiBGb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBwbGVhc2UgY29udGFjdCBbdGVhbUBvcGVuYXBpdG9vbHMub3JnXShtYWlsdG86dGVhbUBvcGVuYXBpdG9vbHMub3JnKS4gOndhcm5pbmc6Cgo6YmFuZ2Jhbmc6IEJvdGggIk9wZW5BUEkgVG9vbHMiIChodHRwczovL09wZW5BUElUb29scy5vcmcgLSB0aGUgcGFyZW50IG9yZ2FuaXphdGlvbiBvZiBPcGVuQVBJIEdlbmVyYXRvcikgYW5kICJPcGVuQVBJIEdlbmVyYXRvciIgYXJlIG5vdCBhZmZpbGlhdGVkIHdpdGggT3BlbkFQSSBJbml0aWF0aXZlIChPQUkpIDpiYW5nYmFuZzoKCjwvZGl2PgoKIyMgU3BvbnNvcnMKCklmIHlvdSBmaW5kIE9wZW5BUEkgR2VuZXJhdG9yIHVzZWZ1bCBmb3Igd29yaywgcGxlYXNlIGNvbnNpZGVyIGFza2luZyB5b3VyIGNvbXBhbnkgdG8gc3VwcG9ydCB0aGlzIE9wZW4gU291cmNlIHByb2plY3QgYnkgW2JlY29taW5nIGEgc3BvbnNvcl0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaV9nZW5lcmF0b3IpLiBZb3UgY2FuIGFsc28gaW5kaXZpZHVhbGx5IHNwb25zb3IgdGhlIHByb2plY3QgYnkgW2JlY29taW5nIGEgYmFja2VyXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpX2dlbmVyYXRvcikuCgojIyMjIFRoYW5rIHlvdSB0byBvdXIgYnJvbnplIHNwb25zb3JzIQoKWyFbTmFtU29yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9uYW1zb3IucG5nKV0oaHR0cHM6Ly93d3cubmFtc29yLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbIVtMaWdodEJvd10oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvbGlnaHRib3cucG5nKV0oaHR0cHM6Ly93d3cubGlnaHRib3cubmV0Lz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZG9jc3ByaW5nLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9kb2NzcHJpbmcuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZGF0YWRvZy5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vZGF0YWRvZ2hxLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3RoYWxlcy5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vY3BsLnRoYWxlc2dyb3VwLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2FwaWRlY2suanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5hcGlkZWNrLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3BleGEucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5wZXhhLmNvbS5hdS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL251bWFyeS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3Lm51bWFyeS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9vbmVzaWduYWwucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5vbmVzaWduYWwuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvdmlydHVhbGFuc29mdHdhcmUucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy52aXJ0dWFsYW5zb2Z0d2FyZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9tZXJnZWRldi5qcGVnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5tZXJnZS5kZXYvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9idXJrZXJ0LmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYnVya2VydC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9maW5ib3VybmUucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5maW5ib3VybmUuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYnVtcHNoLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9idW1wLnNoLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYmlsZXRvLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYmlsZXRvLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2JhaXJlc2Rldi5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmJhaXJlc2Rldi5jb20vc3BvbnNvcmluZy1vcGVuLXNvdXJjZS1wcm9qZWN0cy8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2RtdGVjaC5qcGVnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5kbXRlY2guZGUvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9hZHllbi5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vYWR5ZW4uY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZm9ybmV4LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9mb3JuZXguY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYWxsb3lhdXRvbWF0aW9uLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9ydW5hbGxveS5jb20vc2lnbnVwP3V0bV9zb3VyY2U9Z2l0aHViJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPTE1MjRfb3BlbmFwaWdlbmVyYXRvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9zc3N0d2l0dGVyLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9zc3N0d2l0dGVyLmNvbS8/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9zdml4LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuc3ZpeC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2xpdHNsaW5rLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9saXRzbGluay5jb20vc2VydmljZXMvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2U/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZGVzaWdubGkuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2Rlc2lnbmxpLmNvP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2l0bS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vb3BlbnNvdXJjZS5tdWVuY2hlbi5kZT91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9rb25nLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9rb25naHEuY29tL3Byb2R1Y3RzL2tvbmcta29ubmVjdD91dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9zb3VyY2U9Z2l0aHViJnV0bV9jYW1wYWlnbj1wbGF0Zm9ybSZ1dG1fY29udGVudD1vcGVuYXBpLWdlbmVyYXRvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9yb3V0ZTRtZS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vcm91dGU0bWUuY29tLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9kbS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmRvdGNvbS1tb25pdG9yLmNvbS9zcG9uc29yaW5nLW9wZW4tc291cmNlLXByb2plY3RzLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKCiMjIyMgVGhhbmsgeW91IEdvRGFkZHkgZm9yIHNwb25zb3JpbmcgdGhlIGRvbWFpbiBuYW1lcywgTGlub2RlIGZvciBzcG9uc29yaW5nIHRoZSBWUFMsIENoZWNrbHkgZm9yIHNwb25zb3JpbmcgdGhlIEFQSSBtb25pdG9yaW5nIGFuZCBHcmFkbGUgZm9yIHNwb25zb3JpbmcgRGV2ZWxvY2l0eQoKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9nb2RhZGR5LnBuZyIgd2lkdGg9IjE1MCI+XShodHRwczovL3d3dy5nb2RhZGR5LmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbIVtMaW5vZGVdKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vbWVkaWEvaW1hZ2VzL2xvZ29zL3N0YW5kYXJkL2xpZ2h0L2xpbm9kZS1sb2dvX3N0YW5kYXJkX2xpZ2h0X3NtYWxsLnBuZyldKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL2VuY3J5cHRlZC10Ym4wLmdzdGF0aWMuY29tL2ltYWdlcz9xPXRibiUzQUFOZDlHY1JBaEVZYWRVeVpZekdVb3RaaVNkWGtWTXFxTEd1b2h5aXhMbDRlVXBVVjZwQWJVVUxMIiB3aWR0aD0iMTUwIj5dKGh0dHBzOi8vY2hlY2tseWhxLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYy9jYi9HcmFkbGVfbG9nby5wbmcvMzIwcHgtR3JhZGxlX2xvZ28ucG5nIiB3aWR0aD0iMTUwIj5dKGh0dHBzOi8vZ3JhZGxlLm9yZz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCgojIyBPdmVydmlldwoKT3BlbkFQSSBHZW5lcmF0b3IgYWxsb3dzIGdlbmVyYXRpb24gb2YgQVBJIGNsaWVudCBsaWJyYXJpZXMgKFNESyBnZW5lcmF0aW9uKSwgc2VydmVyIHN0dWJzLCAgZG9jdW1lbnRhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBhdXRvbWF0aWNhbGx5IGdpdmVuIGFuIFtPcGVuQVBJIFNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSAoYm90aCAyLjAgYW5kIDMuMCBhcmUgc3VwcG9ydGVkKS4gQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGxhbmd1YWdlcy9mcmFtZXdvcmtzIGFyZSBzdXBwb3J0ZWQ6Cgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFuZ3VhZ2VzL0ZyYW1ld29ya3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgKipBUEkgY2xpZW50cyoqICAgICAgICAgICAgICAgICAgfCAqKkFjdGlvblNjcmlwdCoqLCAqKkFkYSoqLCAqKkFwZXgqKiwgKipCYXNoKiosICoqQyoqLCAqKkMjKiogKC5uZXQgMi4wLCAzLjUgb3IgbGF0ZXIsIC5ORVQgU3RhbmRhcmQgMS4zIC0gMi4xLCAuTkVUIENvcmUgMy4xLCAuTkVUIDUuMC4gTGlicmFyaWVzOiBSZXN0U2hhcnAsIEdlbmVyaWNIb3N0LCBIdHRwQ2xpZW50KSwgKipDKysqKiAoQXJkdWlubywgY3BwLXJlc3RzZGssIFF0NSwgVGl6ZW4sIFVucmVhbCBFbmdpbmUgNCksICoqQ2xvanVyZSoqLCAqKkNyeXN0YWwqKiwgKipEYXJ0KiosICoqRWxpeGlyKiosICoqRWxtKiosICoqRWlmZmVsKiosICoqRXJsYW5nKiosICoqR28qKiwgKipHcm9vdnkqKiwgKipIYXNrZWxsKiogKGh0dHAtY2xpZW50LCBTZXJ2YW50KSwgKipKYXZhKiogKEFwYWNoZSBIdHRwQ2xpZW50IDQueCwgQXBhY2hlIEh0dHBDbGllbnQgNS54LCBKZXJzZXkyLngsIE9rSHR0cCwgUmV0cm9maXQxLngsIFJldHJvZml0Mi54LCBGZWlnbiwgUmVzdFRlbXBsYXRlLCBSRVNURWFzeSwgVmVydHgsIEdvb2dsZSBBUEkgQ2xpZW50IExpYnJhcnkgZm9yIEphdmEsIFJlc3QtYXNzdXJlZCwgU3ByaW5nIDUgV2ViIENsaWVudCwgU3ByaW5nIDYgUmVzdENsaWVudCwgTWljcm9Qcm9maWxlIFJlc3QgQ2xpZW50LCBIZWxpZG9uKSwgKipKZXRicmFpbnMgSFRUUCBDbGllbnQqKiwgKipKdWxpYSoqLCAqKms2KiosICoqS290bGluKiosICoqTHVhKiosICoqTjRKUyoqLCAqKk5pbSoqLCAqKk5vZGUuanMvSmF2YVNjcmlwdCoqIChFUzUsIEVTNiwgQW5ndWxhckpTIHdpdGggR29vZ2xlIENsb3N1cmUgQ29tcGlsZXIgYW5ub3RhdGlvbnMsIEZsb3cgdHlwZXMsIEFwb2xsbyBHcmFwaFFMIERhdGFTdG9yZSksICoqT2JqZWN0aXZlLUMqKiwgKipPQ2FtbCoqLCAqKlBlcmwqKiwgKipQSFAqKiwgKipQb3dlclNoZWxsKiosICoqUHl0aG9uKiosICoqUioqLCAqKlJ1YnkqKiwgKipSdXN0KiogKGh5cGVyLCByZXF3ZXN0LCBydXN0LXNlcnZlciksICoqU2NhbGEqKiAoYWtrYSwgaHR0cDRzLCBzY2FsYXosIHN0dHAsIHN3YWdnZXItYXN5bmMtaHR0cGNsaWVudCwgcGVra28pLCAqKlN3aWZ0KiogKDIueCwgMy54LCA0LngsIDUueCksICoqVHlwZXNjcmlwdCoqIChBbmd1bGFySlMsIEFuZ3VsYXIgKDkueCAtIDE4LngpLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgalF1ZXJ5LCBOZXN0anMsIE5vZGUsIHJlZHV4LXF1ZXJ5LCBSeGpzKSwgKipYb0pvKiosICoqWmFwaWVyKiogfAp8ICoqU2VydmVyIHN0dWJzKiogICAgICAgICAgICAgICAgIHwgKipBZGEqKiwgKipDIyoqIChBU1AuTkVUIENvcmUsIEF6dXJlIEZ1bmN0aW9ucyksICoqQysrKiogKFBpc3RhY2hlLCBSZXN0YmVkLCBRdDUgUUhUVFBFbmdpbmUpLCAqKkVybGFuZyoqLCAqKkYjKiogKEdpcmFmZmUpLCAqKkdvKiogKG5ldC9odHRwLCBHaW4sIEVjaG8pLCAqKkhhc2tlbGwqKiAoU2VydmFudCwgWWVzb2QpLCAqKkphdmEqKiAoTVNGNEosIFNwcmluZywgVW5kZXJ0b3csIEpBWC1SUzogQ0RJLCBDWEYsIEluZmxlY3RvciwgSmVyc2V5LCBSZXN0RWFzeSwgUGxheSBGcmFtZXdvcmssIFtQS01TVF0oaHR0cHM6Ly9naXRodWIuY29tL1Byb0thcm1hLUluYy9wa21zdC1nZXR0aW5nLXN0YXJ0ZWQtZXhhbXBsZXMpLCBbVmVydC54XShodHRwczovL3ZlcnR4LmlvLyksIFtBcGFjaGUgQ2FtZWxdKGh0dHBzOi8vY2FtZWwuYXBhY2hlLm9yZy8pLCBbSGVsaWRvbl0oaHR0cHM6Ly9oZWxpZG9uLmlvLykpLCAqKkp1bGlhKiosICoqS290bGluKiogKFNwcmluZyBCb290LCBbS3Rvcl0oaHR0cHM6Ly9naXRodWIuY29tL2t0b3Jpby9rdG9yKSwgW1ZlcnQueF0oaHR0cHM6Ly92ZXJ0eC5pby8pKSwgKipQSFAqKiAoW0ZsaWdodF0oaHR0cHM6Ly9kb2NzLmZsaWdodHBocC5jb20vKSwgTGFyYXZlbCwgTHVtZW4sIFtNZXp6aW8gKGZrYSBaZW5kIEV4cHJlc3NpdmUpXShodHRwczovL2dpdGh1Yi5jb20vbWV6emlvL21lenppbyksIFNsaW0sIFNpbGV4LCBbU3ltZm9ueV0oaHR0cHM6Ly9zeW1mb255LmNvbS8pKSwgKipQeXRob24qKiAoRmFzdEFQSSwgRmxhc2spLCAqKk5vZGVKUyoqLCAqKlJ1YnkqKiAoU2luYXRyYSwgUmFpbHM1KSwgKipSdXN0KiogKFtydXN0LXNlcnZlcl0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2RvY3MvZ2VuZXJhdG9ycy9ydXN0LXNlcnZlci8pKSwgKipTY2FsYSoqIChBa2thLCBbRmluY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9maW5hZ2xlL2ZpbmNoKSwgW0xhZ29tXShodHRwczovL2dpdGh1Yi5jb20vbGFnb20vbGFnb20pLCBbUGxheV0oaHR0cHM6Ly93d3cucGxheWZyYW1ld29yay5jb20vKSwgW0Nhc2tdKGh0dHBzOi8vZ2l0aHViLmNvbS9jb20tbGloYW95aS9jYXNrKSwgU2NhbGF0cmEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAqKkFQSSBkb2N1bWVudGF0aW9uIGdlbmVyYXRvcnMqKiB8ICoqSFRNTCoqLCAqKkNvbmZsdWVuY2UgV2lraSoqLCAqKkFzY2lpZG9jKiosICoqTWFya2Rvd24qKiwgKipQbGFudFVNTCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKipDb25maWd1cmF0aW9uIGZpbGVzKiogICAgICAgICAgfCBbKipBcGFjaGUyKipdKGh0dHBzOi8vaHR0cGQuYXBhY2hlLm9yZy8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICoqT3RoZXJzKiogICAgICAgICAgICAgICAgICAgICAgIHwgKipHcmFwaFFMKiosICoqSk1ldGVyKiosICoqS3Rvcm0qKiwgKipNeVNRTCBTY2hlbWEqKiwgKipQb3N0bWFuIENvbGxlY3Rpb24qKiwgKipQcm90b2NvbCBCdWZmZXIqKiwgKipXU0RMKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCiMjIFRhYmxlIG9mIGNvbnRlbnRzCgogIC0gW09wZW5BUEkgR2VuZXJhdG9yXSgjb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbT3ZlcnZpZXddKCNvdmVydmlldykKICAtIFtUYWJsZSBvZiBDb250ZW50c10oI3RhYmxlLW9mLWNvbnRlbnRzKQogIC0gWzEgLSBJbnN0YWxsYXRpb25dKCMxLS0taW5zdGFsbGF0aW9uKQogICAgLSBbMS4xIC0gQ29tcGF0aWJpbGl0eV0oIzExLS0tY29tcGF0aWJpbGl0eSkKICAgIC0gWzEuMiAtIEFydGlmYWN0cyBvbiBNYXZlbiBDZW50cmFsXSgjMTItLS1hcnRpZmFjdHMtb24tbWF2ZW4tY2VudHJhbCkKICAgIC0gWzEuMyAtIERvd25sb2FkIEpBUl0oIzEzLS0tZG93bmxvYWQtamFyKQogICAgLSBbMS40IC0gQnVpbGQgUHJvamVjdHNdKCMxNC0tLWJ1aWxkLXByb2plY3RzKQogICAgLSBbMS41IC0gSG9tZWJyZXddKCMxNS0tLWhvbWVicmV3KQogICAgLSBbMS42IC0gRG9ja2VyXSgjMTYtLS1kb2NrZXIpCiAgICAtIFsxLjcgLSBOUE1dKCMxNy0tLW5wbSkKICAtIFsyIC0gR2V0dGluZyBTdGFydGVkXSgjMi0tLWdldHRpbmctc3RhcnRlZCkKICAtIFszIC0gVXNhZ2VdKCMzLS0tdXNhZ2UpCiAgICAtIFszLjEgLSBDdXN0b21pemF0aW9uXSgjMzEtLS1jdXN0b21pemF0aW9uKQogICAgLSBbMy4yIC0gV29ya2Zsb3cgSW50ZWdyYXRpb25dKCMzMi0tLXdvcmtmbG93LWludGVncmF0aW9uLW1hdmVuLWdyYWRsZS1naXRodWItY2ljZCkKICAgIC0gWzMuMyAtIE9ubGluZSBHZW5lcmF0b3JzXSgjMzMtLS1vbmxpbmUtb3BlbmFwaS1nZW5lcmF0b3IpCiAgICAtIFszLjQgLSBMaWNlbnNlIEluZm9ybWF0aW9uIG9uIEdlbmVyYXRlZCBDb2RlXSgjMzQtLS1saWNlbnNlLWluZm9ybWF0aW9uLW9uLWdlbmVyYXRlZC1jb2RlKQogICAgLSBbMy41IC0gSURFIEludGVncmF0aW9uXSgjMzUtLS1pZGUtaW50ZWdyYXRpb24pCiAgLSBbNCAtIENvbXBhbmllcy9Qcm9qZWN0cyB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oIzQtLS1jb21wYW5pZXNwcm9qZWN0cy11c2luZy1vcGVuYXBpLWdlbmVyYXRvcikKICAtIFs1IC0gUHJlc2VudGF0aW9ucy9WaWRlb3MvVHV0b3JpYWxzL0Jvb2tzXSgjNS0tLXByZXNlbnRhdGlvbnN2aWRlb3N0dXRvcmlhbHNib29rcykKICAtIFs2IC0gQWJvdXQgVXNdKCM2LS0tYWJvdXQtdXMpCiAgICAtIFs2LjEgLSBPcGVuQVBJIEdlbmVyYXRvciBDb3JlIFRlYW1dKCM2MS0tLW9wZW5hcGktZ2VuZXJhdG9yLWNvcmUtdGVhbSkKICAgIC0gWzYuMiAtIE9wZW5BUEkgR2VuZXJhdG9yIFRlY2huaWNhbCBDb21taXR0ZWVdKCM2Mi0tLW9wZW5hcGktZ2VuZXJhdG9yLXRlY2huaWNhbC1jb21taXR0ZWUpCiAgICAtIFs2LjMgLSBIaXN0b3J5IG9mIE9wZW5BUEkgR2VuZXJhdG9yXSgjNjMtLS1oaXN0b3J5LW9mLW9wZW5hcGktZ2VuZXJhdG9yKQogIC0gWzcgLSBMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpCgojIyBbMSAtIEluc3RhbGxhdGlvbl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKIyMjIFsxLjEgLSBDb21wYXRpYmlsaXR5XSgjdGFibGUtb2YtY29udGVudHMpCgpUaGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIGhhcyB1bmRlcmdvbmUgMyByZXZpc2lvbnMgc2luY2UgaW5pdGlhbCBjcmVhdGlvbiBpbiAyMDEwLiAgVGhlIG9wZW5hcGktZ2VuZXJhdG9yIHByb2plY3QgaGFzIHRoZSBmb2xsb3dpbmcgY29tcGF0aWJpbGl0aWVzIHdpdGggdGhlIE9wZW5BUEkgU3BlY2lmaWNhdGlvbjoKCnwgT3BlbkFQSSBHZW5lcmF0b3IgVmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVsZWFzZSBEYXRlIHwgTm90ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgNy45LjAgKHVwY29taW5nIG1pbm9yIHJlbGVhc2UpIFtTTkFQU0hPVF0oaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnL2NvbnRlbnQvcmVwb3NpdG9yaWVzL3NuYXBzaG90cy9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjkuMC1TTkFQU0hPVC8pIHwgMjMuMDkuMjAyNCAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNy44LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y3LjguMCkgKGxhdGVzdCBzdGFibGUgcmVsZWFzZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOS4wOC4yMDI0ICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs2LjYuMF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjYuNi4wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExLjA1LjIwMjMgICB8IE1pbm9yIHJlbGVhc2Ugd2l0aCBicmVha2luZyBjaGFuZ2VzICh3aXRoIGZhbGxiYWNrKSB8CnwgWzUuNC4wXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92NS40LjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzEuMDEuMjAyMiAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNC4zLjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y0LjMuMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAwNi4wNS4yMDIwICAgfCBQYXRjaCByZWxlYXNlIChlbmhhbmNlbWVudHMsIGJ1ZyBmaXhlcywgZXRjKSAgICAgICAgICAgICAgICAgICAgICAgfAoKT3BlbkFQSSBTcGVjIGNvbXBhdGliaWxpdHk6IDEuMCwgMS4xLCAxLjIsIDIuMCwgMy4wLCAzLjEgKGJldGEgc3VwcG9ydCkKCihXZSBkbyBub3QgcHVibGlzaCBkYWlseS9uaWdodGx5IGJ1aWxkLiBQbGVhc2UgdXNlIFNOQVBTSE9UIGluc3RlYWQpCgpGb3Igb2xkIHJlbGVhc2VzLCBwbGVhc2UgcmVmZXIgdG8gdGhlIFsqKlJlbGVhc2UqKl0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcykgcGFnZS4KCkZvciBkZWNvbWlzc2lvbmVkIGdlbmVyYXRvcnMvbGlicmFyaWVzL2ZyYW1ld29ya3MsIHBsZWFzZSByZWZlciB0byBbdGhlICJEZWNvbW1pc3Npb24iIGxhYmVsXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2lzc3Vlcz9xPWxhYmVsJTNBRGVjb21taXNzaW9uK2lzJTNBbWVyZ2VkKykgaW4gdGhlIHB1bGwgcmVxdWVzdCBwYWdlLgoKIyMgWzEuMiAtIEFydGlmYWN0cyBvbiBNYXZlbiBDZW50cmFsXSgjdGFibGUtb2YtY29udGVudHMpCgpZb3UgY2FuIGZpbmQgb3VyIHJlbGVhc2VkIGFydGlmYWN0cyBvbiBtYXZlbiBjZW50cmFsOgoKKipDb3JlOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvcjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgClNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKSBhcnRpZmFjdCBhdmFpbGFibGUgb24gbWF2ZW4gY2VudHJhbC4KCioqQ2xpOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1jbGk8L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYApTZWUgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgW29wZW5hcGktZ2VuZXJhdG9yLWNsaV0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKSBhcnRpZmFjdCBhdmFpbGFibGUgb24gbWF2ZW4gY2VudHJhbC4KCioqTWF2ZW4gcGx1Z2luOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoqIFNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItbWF2ZW4tcGx1Z2luXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4pIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoqIFtSZWFkbWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4vUkVBRE1FLm1kKQoKKipHcmFkbGUgcGx1Z2luOioqCmBgYHhtbAo8ZGVwZW5kZW5jeT4KICAgIDxncm91cElkPm9yZy5vcGVuYXBpdG9vbHM8L2dyb3VwSWQ+CiAgICA8YXJ0aWZhY3RJZD5vcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtvcGVuYXBpLWdlbmVyYXRvci12ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKKiBTZWUgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgW29wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW5dKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW4pIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoqIFtSZWFkbWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvYmxvYi9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luL1JFQURNRS5hZG9jKQoKIyMjIFsxLjMgLSBEb3dubG9hZCBKQVJdKCN0YWJsZS1vZi1jb250ZW50cykKPCEtLSBSRUxFQVNFX1ZFUlNJT04gLS0+CklmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uLCB5b3UgY2FuIGdyYWIgaXQgZGlyZWN0bHkgZnJvbSBNYXZlbi5vcmcgKEphdmEgMTEgcnVudGltZSBhdCBhIG1pbmltdW0pOgoKSkFSIGxvY2F0aW9uOiBgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOC4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjguMC5qYXJgCgpGb3IgKipNYWMvTGludXgqKiB1c2VyczoKYGBgc2gKd2dldCBodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy44LjAvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuOC4wLmphciAtTyBvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyCmBgYAoKRm9yICoqV2luZG93cyoqIHVzZXJzLCB5b3Ugd2lsbCBuZWVkIHRvIGluc3RhbGwgW3dnZXRdKGh0dHA6Ly9nbnV3aW4zMi5zb3VyY2Vmb3JnZS5uZXQvcGFja2FnZXMvd2dldC5odG0pIG9yIHlvdSBjYW4gdXNlIEludm9rZS1XZWJSZXF1ZXN0IGluIFBvd2VyU2hlbGwgKDMuMCspLCBlLmcuCmBgYApJbnZva2UtV2ViUmVxdWVzdCAtT3V0RmlsZSBvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjguMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy44LjAuamFyCmBgYAoKQWZ0ZXIgZG93bmxvYWRpbmcgdGhlIEpBUiwgcnVuIGBqYXZhIC1qYXIgb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBoZWxwYCB0byBzaG93IHRoZSB1c2FnZS4KCkZvciBNYWMgdXNlcnMsIHBsZWFzZSBtYWtlIHN1cmUgSmF2YSAxMSBpcyBpbnN0YWxsZWQgKFRpcHM6IHJ1biBgamF2YSAtdmVyc2lvbmAgdG8gY2hlY2sgdGhlIHZlcnNpb24pLCBhbmQgZXhwb3J0IGBKQVZBX0hPTUVgIGluIG9yZGVyIHRvIHVzZSB0aGUgc3VwcG9ydGVkIEphdmEgdmVyc2lvbjoKYGBgc2gKZXhwb3J0IEpBVkFfSE9NRT1gL3Vzci9saWJleGVjL2phdmFfaG9tZSAtdiAxLjExYApleHBvcnQgUEFUSD0ke0pBVkFfSE9NRX0vYmluOiRQQVRICmBgYAoKPCEtLSAvUkVMRUFTRV9WRVJTSU9OIC0tPgojIyMgTGF1bmNoZXIgU2NyaXB0CgpPbmUgZG93bnNpZGUgdG8gbWFudWFsIGphciBkb3dubG9hZHMgaXMgdGhhdCB5b3UgZG9uJ3Qga2VlcCB1cC10by1kYXRlIHdpdGggdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uLiBXZSBoYXZlIGEgQmFzaCBsYXVuY2hlciBzY3JpcHQgYXQgW2Jpbi91dGlscy9vcGVuYXBpLWdlbmVyYXRvci5jbGkuc2hdKC4vYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS5zaCkgd2hpY2ggcmVzb2x2ZXMgdGhpcyBpc3N1ZS4KClRvIGluc3RhbGwgdGhlIGxhdW5jaGVyIHNjcmlwdCwgY29weSB0aGUgY29udGVudHMgb2YgdGhlIHNjcmlwdCB0byBhIGxvY2F0aW9uIG9uIHlvdXIgcGF0aCBhbmQgbWFrZSB0aGUgc2NyaXB0IGV4ZWN1dGFibGUuCgpBbiBleGFtcGxlIG9mIHNldHRpbmcgdGhpcyB1cCAoTk9URTogQWx3YXlzIGV2YWx1YXRlIHNjcmlwdHMgY3VybGVkIGZyb20gZXh0ZXJuYWwgc3lzdGVtcyBiZWZvcmUgZXhlY3V0aW5nIHRoZW0pLgoKYGBgCm1rZGlyIC1wIH4vYmluL29wZW5hcGl0b29scwpjdXJsIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL2Jpbi91dGlscy9vcGVuYXBpLWdlbmVyYXRvci1jbGkuc2ggPiB+L2Jpbi9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpCmNobW9kIHUreCB+L2Jpbi9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpCmV4cG9ydCBQQVRIPSRQQVRIOn4vYmluL29wZW5hcGl0b29scy8KYGBgCgpOb3csIGBvcGVuYXBpLWdlbmVyYXRvci1jbGlgIGlzICJpbnN0YWxsZWQiLiBPbiBpbnZvY2F0aW9uLCBpdCB3aWxsIHF1ZXJ5IHRoZSBHaXRIdWIgcmVwb3NpdG9yeSBmb3IgdGhlIG1vc3QgcmVjZW50bHkgcmVsZWFzZWQgdmVyc2lvbi4gSWYgdGhpcyBtYXRjaGVzIHRoZSBsYXN0IGRvd25sb2FkZWQgamFyLAppdCB3aWxsIGV4ZWN1dGUgYXMgbm9ybWFsLiBJZiBhIG5ld2VyIHZlcnNpb24gaXMgZm91bmQsIHRoZSBzY3JpcHQgd2lsbCBkb3dubG9hZCB0aGUgbGF0ZXN0IHJlbGVhc2UgYW5kIGV4ZWN1dGUgaXQuCgpJZiB5b3UgbmVlZCB0byBpbnZva2UgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgZ2VuZXJhdG9yLCB5b3UgY2FuIGRlZmluZSB0aGUgdmFyaWFibGUgYE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT05gIGVpdGhlciBhZCBob2Mgb3IgZ2xvYmFsbHkuIFlvdSBjYW4gZXhwb3J0IHRoaXMgdmFyaWFibGUgaWYgeW91J2QgbGlrZSB0byBwZXJzaXN0IGEgc3BlY2lmaWMgcmVsZWFzZSB2ZXJzaW9uLgoKRXhhbXBsZXM6CgpgYGAKIyBFeGVjdXRlIGxhdGVzdCByZWxlYXNlZCBvcGVuYXBpLWdlbmVyYXRvci1jbGkKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMS4wIGZvciB0aGUgY3VycmVudCBpbnZvY2F0aW9uLCByZWdhcmRsZXNzIG9mIHRoZSBsYXRlc3QgcmVsZWFzZWQgdmVyc2lvbgpPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMS4wIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uCgojIEV4ZWN1dGUgdmVyc2lvbiA0LjEuMC1TTkFQU0hPVCBmb3IgdGhlIGN1cnJlbnQgaW52b2NhdGlvbgpPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMS4wLVNOQVBTSE9UIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uCgojIEV4ZWN1dGUgdmVyc2lvbiA0LjAuMiBmb3IgZXZlcnkgaW52b2NhdGlvbiBpbiB0aGUgY3VycmVudCBzaGVsbCBzZXNzaW9uCmV4cG9ydCBPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMC4yCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uICMgaXMgNC4wLjIKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24gIyBpcyBhbHNvIDQuMC4yCgojIFRvICJpbnN0YWxsIiBhIHNwZWNpZmljIHZlcnNpb24sIHNldCB0aGUgdmFyaWFibGUgaW4gLmJhc2hyYy8uYmFzaF9wcm9maWxlCmVjaG8gImV4cG9ydCBPUEVOQVBJX0dFTkVSQVRPUl9WRVJTSU9OPTQuMC4yIiA+PiB+Ly5iYXNocmMKc291cmNlIH4vLmJhc2hyYwpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbiAjIGlzIGFsd2F5cyA0LjAuMiwgdW5sZXNzIGFueSBvZiB0aGUgYWJvdmUgb3ZlcnJpZGVzIGFyZSBkb25lIGFkIGhvYwpgYGAKCiMjIyBbMS40IC0gQnVpbGQgUHJvamVjdHNdKCN0YWJsZS1vZi1jb250ZW50cykKClRvIGJ1aWxkIGZyb20gc291cmNlLCB5b3UgbmVlZCB0aGUgZm9sbG93aW5nIGluc3RhbGxlZCBhbmQgYXZhaWxhYmxlIGluIHlvdXIgYCRQQVRIOmAKCiogW0phdmEgMTFdKGh0dHBzOi8vYWRvcHRpdW0ubmV0LykKCiogW0FwYWNoZSBNYXZlbiAzLjguOCBvciBncmVhdGVyXShodHRwczovL21hdmVuLmFwYWNoZS5vcmcvKSAob3B0aW9uYWwpCgpBZnRlciBjbG9uaW5nIHRoZSBwcm9qZWN0LCB5b3UgY2FuIGJ1aWxkIGl0IGZyb20gc291cmNlIHVzaW5nIFttYXZlbiB3cmFwcGVyXShodHRwczovL21hdmVuLmFwYWNoZS5vcmcvd3JhcHBlci8pOgoKLSBMaW51eDogYC4vbXZudyBjbGVhbiBpbnN0YWxsYAotIFdpbmRvd3M6IGBtdm53LmNtZCBjbGVhbiBpbnN0YWxsYAoKIyMjIyBOaXggdXNlcnMKCklmIHlvdSdyZSBhIG5peCB1c2VyLCB5b3UgY2FuIGVudGVyIE9wZW5BUEkgR2VuZXJhdG9yIHNoZWxsLCBieSB0eXBpbmc6CmBgYHNoCm5peCBkZXZlbG9wCmBgYApJdCB3aWxsIGVudGVyIGEgc2hlbGwgd2l0aCBKYXZhIDExIGluc3RhbGxlZC4KCkRpcmVudiBzdXBwb3J0cyBhdXRvbWF0aWNhbGx5IGxvYWRpbmcgb2YgdGhlIG5peCBkZXZlbG9wZXIgc2hlbGwsIHNvIGlmIHlvdSdyZSB1c2luZyBkaXJlbnYgdG9vLCB0eXBlOgpgYGBzaApkaXJlbnYgYWxsb3cKYGBgCmFuZCBoYXZlIGBqYXZhYCBhbmQgYG12bmAgc2V0IHVwIHdpdGggY29ycmVjdCB2ZXJzaW9ucyBlYWNoIHRpbWUgeW91IGVudGVyIHByb2plY3QgZGlyZWN0b3J5LgoKVGhlIGRlZmF1bHQgYnVpbGQgY29udGFpbnMgbWluaW1hbCBzdGF0aWMgYW5hbHlzaXMgKHZpYSBDaGVja1N0eWxlKS4gVG8gcnVuIHlvdXIgYnVpbGQgd2l0aCBQTUQgYW5kIFNwb3RidWdzLCB1c2UgdGhlIGBzdGF0aWMtYW5hbHlzaXNgIHByb2ZpbGU6CgotIExpbnV4OiBgLi9tdm53IC1Qc3RhdGljLWFuYWx5c2lzIGNsZWFuIGluc3RhbGxgCi0gV2luZG93czogYG12bncuY21kIC1Qc3RhdGljLWFuYWx5c2lzIGNsZWFuIGluc3RhbGxgCgojIyMgWzEuNSAtIEhvbWVicmV3XSgjdGFibGUtb2YtY29udGVudHMpCgpUbyBpbnN0YWxsLCBydW4gYGJyZXcgaW5zdGFsbCBvcGVuYXBpLWdlbmVyYXRvcmAKCkhlcmUgaXMgYW4gZXhhbXBsZSB1c2FnZSB0byBnZW5lcmF0ZSBhIFJ1YnkgY2xpZW50OgpgYGBzaApvcGVuYXBpLWdlbmVyYXRvciBnZW5lcmF0ZSAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCAtZyBydWJ5IC1vIC90bXAvdGVzdC8KYGBgCgpUbyByZWluc3RhbGwgd2l0aCB0aGUgbGF0ZXN0IG1hc3RlciwgcnVuIGBicmV3IHVuaW5zdGFsbCBvcGVuYXBpLWdlbmVyYXRvciAmJiBicmV3IGluc3RhbGwgLS1IRUFEIG9wZW5hcGktZ2VuZXJhdG9yYAoKVG8gaW5zdGFsbCBPcGVuSkRLIChwcmUtcmVxdWlzaXRlcyksIHBsZWFzZSBydW4KYGBgc2gKYnJldyB0YXAgQWRvcHRPcGVuSkRLL29wZW5qZGsKYnJldyBpbnN0YWxsIC0tY2FzayBhZG9wdG9wZW5qZGsxMQpleHBvcnQgSkFWQV9IT01FPWAvdXNyL2xpYmV4ZWMvamF2YV9ob21lIC12IDEuMTFgCmBgYAoKb3IgZG93bmxvYWQgaW5zdGFsbGVyIHZpYSBodHRwczovL2Fkb3B0aXVtLm5ldC8KClRvIGluc3RhbGwgTWF2ZW4gKG9wdGlvbmFsKSwgcGxlYXNlIHJ1bgpgYGBzaApicmV3IGluc3RhbGwgbWF2ZW4KYGBgCgojIyMgWzEuNiAtIERvY2tlcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKIyMjIyBQdWJsaWMgUHJlLWJ1aWx0IERvY2tlciBpbWFnZXMKCiAtIFtodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS9dKGh0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLykgKG9mZmljaWFsIENMSSkKIC0gW2h0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lL10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUvKSAob2ZmaWNpYWwgd2ViIHNlcnZpY2UpCgoKIyMjIyBPcGVuQVBJIEdlbmVyYXRvciBDTEkgRG9ja2VyIEltYWdlCgpUaGUgT3BlbkFQSSBHZW5lcmF0b3IgaW1hZ2UgYWN0cyBhcyBhIHN0YW5kYWxvbmUgZXhlY3V0YWJsZS4gSXQgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gaW5zdGFsbGluZyB2aWEgaG9tZWJyZXcsIG9yIGZvciBkZXZlbG9wZXJzIHdobyBhcmUgdW5hYmxlIHRvIGluc3RhbGwgSmF2YSBvciB1cGdyYWRlIHRoZSBpbnN0YWxsZWQgdmVyc2lvbi4KClRvIGdlbmVyYXRlIGNvZGUgd2l0aCB0aGlzIGltYWdlLCB5b3UnbGwgbmVlZCB0byBtb3VudCBhIGxvY2FsIGxvY2F0aW9uIGFzIGEgdm9sdW1lLgoKRXhhbXBsZToKCmBgYHNoCmRvY2tlciBydW4gLS1ybSAtdiAiJHtQV0R9Oi9sb2NhbCIgb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSBcCiAgICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgICAtZyBnbyBcCiAgICAtbyAvbG9jYWwvb3V0L2dvCmBgYAoKVGhlIGdlbmVyYXRlZCBjb2RlIHdpbGwgYmUgbG9jYXRlZCB1bmRlciBgLi9vdXQvZ29gIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KCiMjIyMgT3BlbkFQSSBHZW5lcmF0b3IgT25saW5lIERvY2tlciBJbWFnZQoKVGhlIG9wZW5hcGktZ2VuZXJhdG9yLW9ubGluZSBpbWFnZSBjYW4gYWN0IGFzIGEgc2VsZi1ob3N0ZWQgd2ViIGFwcGxpY2F0aW9uIGFuZCBBUEkgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyBjb250YWluZXIgY2FuIGJlIGluY29ycG9yYXRlZCBpbnRvIGEgQ0kgcGlwZWxpbmUsIGFuZCByZXF1aXJlcyBhdCBsZWFzdCB0d28gSFRUUCByZXF1ZXN0cyBhbmQgc29tZSBkb2NrZXIgb3JjaGVzdHJhdGlvbiB0byBhY2Nlc3MgZ2VuZXJhdGVkIGNvZGUuCgpFeGFtcGxlIHVzYWdlOgoKYGBgc2gKIyBTdGFydCBjb250YWluZXIgYXQgcG9ydCA4ODg4IGFuZCBzYXZlIHRoZSBjb250YWluZXIgaWQKPiBDSUQ9JChkb2NrZXIgcnVuIC1kIC1wIDg4ODg6ODA4MCBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lKQoKIyBhbGxvdyBmb3Igc3RhcnR1cAo+IHNsZWVwIDEwCgojIEdldCB0aGUgSVAgb2YgdGhlIHJ1bm5pbmcgY29udGFpbmVyIChvcHRpb25hbCkKR0VOX0lQPSQoZG9ja2VyIGluc3BlY3QgLS1mb3JtYXQgJ3t7Lk5ldHdvcmtTZXR0aW5ncy5JUEFkZHJlc3N9fScgICRDSUQpCgojIEV4ZWN1dGUgYW4gSFRUUCByZXF1ZXN0IHRvIGdlbmVyYXRlIGEgUnVieSBjbGllbnQKPiBjdXJsIC1YIFBPU1QgLS1oZWFkZXIgJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicgLS1oZWFkZXIgJ0FjY2VwdDogYXBwbGljYXRpb24vanNvbicgXAotZCAneyJvcGVuQVBJVXJsIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIn0nIFwKJ2h0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2NsaWVudHMvcnVieScKCnsiY29kZSI6ImMyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOCIsImxpbmsiOiJodHRwOi8vbG9jYWxob3N0Ojg4ODgvYXBpL2dlbi9kb3dubG9hZC9jMmQ0ODMuMy40NjcyLTQwZTktOTFkZi1iOWZmZDE4ZDIyYjgifQoKIyBEb3dubG9hZCB0aGUgZ2VuZXJhdGVkIHppcCBmaWxlCj4gd2dldCBodHRwOi8vbG9jYWxob3N0Ojg4ODgvYXBpL2dlbi9kb3dubG9hZC9jMmQ0ODMuMy40NjcyLTQwZTktOTFkZi1iOWZmZDE4ZDIyYjgKCiMgVW56aXAgdGhlIGZpbGUKPiB1bnppcCBjMmQ0ODMuMy40NjcyLTQwZTktOTFkZi1iOWZmZDE4ZDIyYjgKCiMgU2h1dGRvd24gdGhlIG9wZW5hcGkgZ2VuZXJhdG9yIGltYWdlCj4gZG9ja2VyIHN0b3AgJENJRCAmJiBkb2NrZXIgcm0gJENJRApgYGAKCiMjIyMgRGV2ZWxvcG1lbnQgaW4gZG9ja2VyCgpZb3UgY2FuIHVzZSBgcnVuLWluLWRvY2tlci5zaGAgdG8gZG8gYWxsIGRldmVsb3BtZW50LiBUaGlzIHNjcmlwdCBtYXBzIHlvdXIgbG9jYWwgcmVwb3NpdG9yeSB0byBgL2dlbmAKaW4gdGhlIGRvY2tlciBjb250YWluZXIuIEl0IGFsc28gbWFwcyBgfi8ubTIvcmVwb3NpdG9yeWAgdG8gdGhlIGFwcHJvcHJpYXRlIGNvbnRhaW5lciBsb2NhdGlvbi4KClRvIGV4ZWN1dGUgYG12biBwYWNrYWdlYDoKCmBgYHNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yCmNkIG9wZW5hcGktZ2VuZXJhdG9yCi4vcnVuLWluLWRvY2tlci5zaCBtdm4gcGFja2FnZQpgYGAKCkJ1aWxkIGFydGlmYWN0cyBhcmUgbm93IGFjY2Vzc2libGUgaW4geW91ciB3b3JraW5nIGRpcmVjdG9yeS4KCk9uY2UgYnVpbHQsIGBydW4taW4tZG9ja2VyLnNoYCB3aWxsIGFjdCBhcyBhbiBleGVjdXRhYmxlIGZvciBvcGVuYXBpLWdlbmVyYXRvci1jbGkuIFRvIGdlbmVyYXRlIGNvZGUsIHlvdSdsbCBuZWVkIHRvIG91dHB1dCB0byBhIGRpcmVjdG9yeSB1bmRlciBgL2dlbmAgKGUuZy4gYC9nZW4vb3V0YCkuIEZvciBleGFtcGxlOgoKYGBgc2gKLi9ydW4taW4tZG9ja2VyLnNoIGhlbHAgIyBFeGVjdXRlcyAnaGVscCcgY29tbWFuZCBmb3Igb3BlbmFwaS1nZW5lcmF0b3ItY2xpCi4vcnVuLWluLWRvY2tlci5zaCBsaXN0ICMgRXhlY3V0ZXMgJ2xpc3QnIGNvbW1hbmQgZm9yIG9wZW5hcGktZ2VuZXJhdG9yLWNsaQouL3J1bi1pbi1kb2NrZXIuc2ggZ2VuZXJhdGUgLWkgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogICAgLWcgZ28gLW8gL2dlbi9vdXQvZ28tcGV0c3RvcmUgLXAgcGFja2FnZU5hbWU9cGV0c3RvcmUgIyBnZW5lcmF0ZXMgZ28gY2xpZW50LCBvdXRwdXRzIGxvY2FsbHkgdG8gLi9vdXQvZ28tcGV0c3RvcmUKYGBgCgojIyMjIyBUcm91Ymxlc2hvb3RpbmcKCklmIGFuIGVycm9yIGxpa2UgdGhpcyBvY2N1cnMsIGp1c3QgZXhlY3V0ZSB0aGUgKiouL212bncgY2xlYW4gaW5zdGFsbCAtVSoqIGNvbW1hbmQ6Cgo+IG9yZy5hcGFjaGUubWF2ZW4ubGlmZWN5Y2xlLkxpZmVjeWNsZUV4ZWN1dGlvbkV4Y2VwdGlvbjogRmFpbGVkIHRvIGV4ZWN1dGUgZ29hbCBvcmcuYXBhY2hlLm1hdmVuLnBsdWdpbnM6bWF2ZW4tc3VyZWZpcmUtcGx1Z2luOjIuMTkuMTp0ZXN0IChkZWZhdWx0LXRlc3QpIG9uIHByb2plY3Qgb3BlbmFwaS1nZW5lcmF0b3I6IEEgdHlwZSBpbmNvbXBhdGliaWxpdHkgb2NjdXJyZWQgd2hpbGUgZXhlY3V0aW5nIG9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczptYXZlbi1zdXJlZmlyZS1wbHVnaW46Mi4xOS4xOnRlc3Q6IGphdmEubGFuZy5FeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IgY2Fubm90IGJlIGNhc3QgdG8gamF2YS5pby5JT0V4Y2VwdGlvbgoKYGBgc2gKLi9ydW4taW4tZG9ja2VyLnNoIC4vbXZudyBjbGVhbiBpbnN0YWxsIC1VCmBgYAoKPiBGYWlsZWQgdG8gZXhlY3V0ZSBnb2FsIG9yZy5mb3J0YXNvZnQ6Z3JhZGxlLW1hdmVuLXBsdWdpbjoxLjAuODppbnZva2UgKGRlZmF1bHQpIG9uIHByb2plY3Qgb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbi1tdm4td3JhcHBlcjogb3JnLmdyYWRsZS50b29saW5nLkJ1aWxkRXhjZXB0aW9uOiBDb3VsZCBub3QgZXhlY3V0ZSBidWlsZCB1c2luZyBHcmFkbGUgZGlzdHJpYnV0aW9uICdodHRwczovL3NlcnZpY2VzLmdyYWRsZS5vcmcvZGlzdHJpYnV0aW9ucy9ncmFkbGUtNC43LWJpbi56aXAnCgpSaWdodCBub3c6IG5vIHNvbHV0aW9uIGZvciB0aGlzIG9uZSA6fAoKIyMjIyBSdW4gRG9ja2VyIGluIFZhZ3JhbnQKUHJlcmVxdWlzaXRlOiBpbnN0YWxsIFtWYWdyYW50XShodHRwczovL3d3dy52YWdyYW50dXAuY29tL2Rvd25sb2Fkcy5odG1sKSBhbmQgW1ZpcnR1YWxCb3hdKGh0dHBzOi8vd3d3LnZpcnR1YWxib3gub3JnL3dpa2kvRG93bmxvYWRzKS4KIGBgYHNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLmdpdApjZCBvcGVuYXBpLWdlbmVyYXRvcgp2YWdyYW50IHVwCnZhZ3JhbnQgc3NoCmNkIC92YWdyYW50Ci4vcnVuLWluLWRvY2tlci5zaCAuL212bncgcGFja2FnZQpgYGAKCiMjIyBbMS43IC0gTlBNXSgjdGFibGUtb2YtY29udGVudHMpCgpUaGVyZSBpcyBhbHNvIGFuIFtOUE0gcGFja2FnZSB3cmFwcGVyXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9Ab3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkgYXZhaWxhYmxlIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zIChlLmcuIExpbnV4LCBNYWMsIFdpbmRvd3MpLiAoSlZNIGlzIHN0aWxsIHJlcXVpcmVkKQpQbGVhc2Ugc2VlIHRoZSBbcHJvamVjdCdzIFJFQURNRV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkpIHRoZXJlIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKSW5zdGFsbCBpdCBnbG9iYWxseSB0byBnZXQgdGhlIENMSSBhdmFpbGFibGUgb24gdGhlIGNvbW1hbmQgbGluZToKCmBgYHNoCm5wbSBpbnN0YWxsIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIC1nCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uCmBgYAoKPCEtLSBSRUxFQVNFX1ZFUlNJT04gLS0+ClRvIHVzZSBhIHNwZWNpZmljIHZlcnNpb24gb2YgIm9wZW5hcGktZ2VuZXJhdG9yLWNsaSIKCmBgYHNoCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uLW1hbmFnZXIgc2V0IDcuOC4wCmBgYAoKT3IgaW5zdGFsbCBpdCBhcyBkZXYtZGVwZW5kZW5jeToKCmBgYHNoCm5wbSBpbnN0YWxsIEBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIC1ECmBgYAo8IS0tIC9SRUxFQVNFX1ZFUlNJT04gLS0+CgpZb3UgY2FuIHVzZSBbbG9jYWxseSBidWlsdCBKQVJzXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaT90YWI9cmVhZG1lLW92LWZpbGUjdXNlLWxvY2FsbHktYnVpbHQtamFyKSBvciBbYFNOQVBTSE9UYCB2ZXJzaW9uc10oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGk/dGFiPXJlYWRtZS1vdi1maWxlI3VzZS1uaWdodGx5LXNuYXBzaG90LWJ1aWxkKSBhcyB3ZWxsLgoKIyMgWzIgLSBHZXR0aW5nIFN0YXJ0ZWRdKCN0YWJsZS1vZi1jb250ZW50cykKClRvIGdlbmVyYXRlIGEgUEhQIGNsaWVudCBmb3IgW3BldHN0b3JlLnlhbWxdKGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sKSwgcGxlYXNlIHJ1biB0aGUgZm9sbG93aW5nCmBgYHNoCmdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yCmNkIG9wZW5hcGktZ2VuZXJhdG9yCi4vbXZudyBjbGVhbiBwYWNrYWdlCmphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBnZW5lcmF0ZSBcCiAgIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAgLWcgcGhwIFwKICAgLW8gL3Zhci90bXAvcGhwX2FwaV9jbGllbnQKYGBgCihpZiB5b3UncmUgb24gV2luZG93cywgcmVwbGFjZSB0aGUgbGFzdCBjb21tYW5kIHdpdGggYGphdmEgLWphciBtb2R1bGVzXG9wZW5hcGktZ2VuZXJhdG9yLWNsaVx0YXJnZXRcb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBnZW5lcmF0ZSAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCAtZyBwaHAgLW8gYzpcdGVtcFxwaHBfYXBpX2NsaWVudGApCgo8IS0tIFJFTEVBU0VfVkVSU0lPTiAtLT4KWW91IGNhbiBhbHNvIGRvd25sb2FkIHRoZSBKQVIgKGxhdGVzdCByZWxlYXNlKSBkaXJlY3RseSBmcm9tIFttYXZlbi5vcmddKGh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjguMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy44LjAuamFyKQo8IS0tIC9SRUxFQVNFX1ZFUlNJT04gLS0+CgpUbyBnZXQgYSBsaXN0IG9mICoqZ2VuZXJhbCoqIG9wdGlvbnMgYXZhaWxhYmxlLCBwbGVhc2UgcnVuIGBqYXZhIC1qYXIgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvdGFyZ2V0L29wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgaGVscCBnZW5lcmF0ZWAKClRvIGdldCBhIGxpc3Qgb2YgUEhQIHNwZWNpZmllZCBvcHRpb25zICh3aGljaCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBnZW5lcmF0b3Igd2l0aCBhIGNvbmZpZyBmaWxlIHZpYSB0aGUgYC1jYCBvcHRpb24pLCBwbGVhc2UgcnVuIGBqYXZhIC1qYXIgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvdGFyZ2V0L29wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgY29uZmlnLWhlbHAgLWcgcGhwYAoKIyMgWzMgLSBVc2FnZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKIyMjIFRvIGdlbmVyYXRlIGEgc2FtcGxlIGNsaWVudCBsaWJyYXJ5CllvdSBjYW4gYnVpbGQgYSBjbGllbnQgYWdhaW5zdCB0aGUgW1BldHN0b3JlIEFQSV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwpIGFzIGZvbGxvd3M6CgpgYGBzaAouL2Jpbi9nZW5lcmF0ZS1zYW1wbGVzLnNoIC4vYmluL2NvbmZpZ3MvamF2YS1va2h0dHAtZ3Nvbi55YW1sCmBgYAoKKE9uIFdpbmRvd3MsIHBsZWFzZSBpbnN0YWxsIFtHSVQgQmFzaCBmb3IgV2luZG93c10oaHR0cHM6Ly9naXRmb3J3aW5kb3dzLm9yZy8pIHRvIHJ1biB0aGUgY29tbWFuZCBhYm92ZSkKClRoaXMgc2NyaXB0IHVzZXMgdGhlIGRlZmF1bHQgbGlicmFyeSwgd2hpY2ggaXMgYG9raHR0cC1nc29uYC4gSXQgd2lsbCBydW4gdGhlIGdlbmVyYXRvciB3aXRoIHRoaXMgY29tbWFuZDoKCmBgYHNoCmphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBnZW5lcmF0ZSBcCiAgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogIC1nIGphdmEgXAogIC10IG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL21haW4vcmVzb3VyY2VzL0phdmEgXAogIC0tYWRkaXRpb25hbC1wcm9wZXJ0aWVzIGFydGlmYWN0SWQ9cGV0c3RvcmUtb2todHRwLWdzb24saGlkZUdlbmVyYXRpb25UaW1lc3RhbXA9dHJ1ZSBcCiAgLW8gc2FtcGxlcy9jbGllbnQvcGV0c3RvcmUvamF2YS9va2h0dHAtZ3NvbgpgYGAKCndpdGggYSBudW1iZXIgb2Ygb3B0aW9ucy4gW1RoZSBqYXZhIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgaGVyZS5dKGRvY3MvZ2VuZXJhdG9ycy9qYXZhLm1kKQoKWW91IGNhbiBhbHNvIGdldCB0aGUgb3B0aW9ucyB3aXRoIHRoZSBgaGVscCBnZW5lcmF0ZWAgY29tbWFuZCAoYmVsb3cgb25seSBzaG93cyBwYXJ0aWFsIHJlc3VsdHMpOgoKYGBgCk5BTUUKICAgICAgICBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUgLSBHZW5lcmF0ZSBjb2RlIHdpdGggdGhlIHNwZWNpZmllZAogICAgICAgIGdlbmVyYXRvci4KClNZTk9QU0lTCiAgICAgICAgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlCiAgICAgICAgICAgICAgICBbKC1hIDxhdXRob3JpemF0aW9uPiB8IC0tYXV0aCA8YXV0aG9yaXphdGlvbj4pXQogICAgICAgICAgICAgICAgWy0tYXBpLW5hbWUtc3VmZml4IDxhcGkgbmFtZSBzdWZmaXg+XSBbLS1hcGktcGFja2FnZSA8YXBpIHBhY2thZ2U+XQogICAgICAgICAgICAgICAgWy0tYXJ0aWZhY3QtaWQgPGFydGlmYWN0IGlkPl0gWy0tYXJ0aWZhY3QtdmVyc2lvbiA8YXJ0aWZhY3QgdmVyc2lvbj5dCiAgICAgICAgICAgICAgICBbKC1jIDxjb25maWd1cmF0aW9uIGZpbGU+IHwgLS1jb25maWcgPGNvbmZpZ3VyYXRpb24gZmlsZT4pXSBbLS1kcnktcnVuXQogICAgICAgICAgICAgICAgWygtZSA8dGVtcGxhdGluZyBlbmdpbmU+IHwgLS1lbmdpbmUgPHRlbXBsYXRpbmcgZW5naW5lPildCiAgICAgICAgICAgICAgICBbLS1lbmFibGUtcG9zdC1wcm9jZXNzLWZpbGVdCiAgICAgICAgICAgICAgICBbKC1nIDxnZW5lcmF0b3IgbmFtZT4gfCAtLWdlbmVyYXRvci1uYW1lIDxnZW5lcmF0b3IgbmFtZT4pXQogICAgICAgICAgICAgICAgWy0tZ2VuZXJhdGUtYWxpYXMtYXMtbW9kZWxdIFstLWdpdC1ob3N0IDxnaXQgaG9zdD5dCiAgICAgICAgICAgICAgICBbLS1naXQtcmVwby1pZCA8Z2l0IHJlcG8gaWQ+XSBbLS1naXQtdXNlci1pZCA8Z2l0IHVzZXIgaWQ+XQogICAgICAgICAgICAgICAgWy0tZ2xvYmFsLXByb3BlcnR5IDxnbG9iYWwgcHJvcGVydGllcz4uLi5dIFstLWdyb3VwLWlkIDxncm91cCBpZD5dCiAgICAgICAgICAgICAgICBbLS1odHRwLXVzZXItYWdlbnQgPGh0dHAgdXNlciBhZ2VudD5dCiAgICAgICAgICAgICAgICBbKC1pIDxzcGVjIGZpbGU+IHwgLS1pbnB1dC1zcGVjIDxzcGVjIGZpbGU+KV0KICAgICAgICAgICAgICAgIFstLWlnbm9yZS1maWxlLW92ZXJyaWRlIDxpZ25vcmUgZmlsZSBvdmVycmlkZSBsb2NhdGlvbj5dCiAgICAgICAgICAgICAgICBbLS1pbXBvcnQtbWFwcGluZ3MgPGltcG9ydCBtYXBwaW5ncz4uLi5dCiAgICAgICAgICAgICAgICBbLS1pbnN0YW50aWF0aW9uLXR5cGVzIDxpbnN0YW50aWF0aW9uIHR5cGVzPi4uLl0KICAgICAgICAgICAgICAgIFstLWludm9rZXItcGFja2FnZSA8aW52b2tlciBwYWNrYWdlPl0KICAgICAgICAgICAgICAgIFstLWxhbmd1YWdlLXNwZWNpZmljLXByaW1pdGl2ZXMgPGxhbmd1YWdlIHNwZWNpZmljIHByaW1pdGl2ZXM+Li4uXQogICAgICAgICAgICAgICAgWy0tbGVnYWN5LWRpc2NyaW1pbmF0b3ItYmVoYXZpb3JdIFstLWxpYnJhcnkgPGxpYnJhcnk+XQogICAgICAgICAgICAgICAgWy0tbG9nLXRvLXN0ZGVycl0gWy0tbWluaW1hbC11cGRhdGVdCiAgICAgICAgICAgICAgICBbLS1tb2RlbC1uYW1lLXByZWZpeCA8bW9kZWwgbmFtZSBwcmVmaXg+XQogICAgICAgICAgICAgICAgWy0tbW9kZWwtbmFtZS1zdWZmaXggPG1vZGVsIG5hbWUgc3VmZml4Pl0KICAgICAgICAgICAgICAgIFstLW1vZGVsLXBhY2thZ2UgPG1vZGVsIHBhY2thZ2U+XQogICAgICAgICAgICAgICAgWygtbyA8b3V0cHV0IGRpcmVjdG9yeT4gfCAtLW91dHB1dCA8b3V0cHV0IGRpcmVjdG9yeT4pXSBbKC1wIDxhZGRpdGlvbmFsIHByb3BlcnRpZXM+IHwgLS1hZGRpdGlvbmFsLXByb3BlcnRpZXMgPGFkZGl0aW9uYWwgcHJvcGVydGllcz4pLi4uXQogICAgICAgICAgICAgICAgWy0tcGFja2FnZS1uYW1lIDxwYWNrYWdlIG5hbWU+XSBbLS1yZWxlYXNlLW5vdGUgPHJlbGVhc2Ugbm90ZT5dCiAgICAgICAgICAgICAgICBbLS1yZW1vdmUtb3BlcmF0aW9uLWlkLXByZWZpeF0KICAgICAgICAgICAgICAgIFstLXJlc2VydmVkLXdvcmRzLW1hcHBpbmdzIDxyZXNlcnZlZCB3b3JkIG1hcHBpbmdzPi4uLl0KICAgICAgICAgICAgICAgIFsoLXMgfCAtLXNraXAtb3ZlcndyaXRlKV0gWy0tc2VydmVyLXZhcmlhYmxlcyA8c2VydmVyIHZhcmlhYmxlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1za2lwLXZhbGlkYXRlLXNwZWNdIFstLXN0cmljdC1zcGVjIDx0cnVlL2ZhbHNlIHN0cmljdCBiZWhhdmlvcj5dCiAgICAgICAgICAgICAgICBbKC10IDx0ZW1wbGF0ZSBkaXJlY3Rvcnk+IHwgLS10ZW1wbGF0ZS1kaXIgPHRlbXBsYXRlIGRpcmVjdG9yeT4pXQogICAgICAgICAgICAgICAgWy0tdHlwZS1tYXBwaW5ncyA8dHlwZSBtYXBwaW5ncz4uLi5dIFsoLXYgfCAtLXZlcmJvc2UpXQoKT1BUSU9OUwogICAgICAgIC1hIDxhdXRob3JpemF0aW9uPiwgLS1hdXRoIDxhdXRob3JpemF0aW9uPgogICAgICAgICAgICBhZGRzIGF1dGhvcml6YXRpb24gaGVhZGVycyB3aGVuIGZldGNoaW5nIHRoZSBPcGVuQVBJIGRlZmluaXRpb25zCiAgICAgICAgICAgIHJlbW90ZWx5LiBQYXNzIGluIGEgVVJMLWVuY29kZWQgc3RyaW5nIG9mIG5hbWU6aGVhZGVyIHdpdGggYSBjb21tYQogICAgICAgICAgICBzZXBhcmF0aW5nIG11bHRpcGxlIHZhbHVlcwoKLi4uLi4uIChyZXN1bHRzIG9taXR0ZWQpCgogICAgICAgIC12LCAtLXZlcmJvc2UKICAgICAgICAgICAgdmVyYm9zZSBtb2RlCgpgYGAKCllvdSBjYW4gdGhlbiBjb21waWxlIGFuZCBydW4gdGhlIGNsaWVudCwgYXMgd2VsbCBhcyB1bml0IHRlc3RzIGFnYWluc3QgaXQ6CgpgYGBzaApjZCBzYW1wbGVzL2NsaWVudC9wZXRzdG9yZS9qYXZhL29raHR0cC1nc29uCm12biBwYWNrYWdlCmBgYAoKT3RoZXIgZ2VuZXJhdG9ycyBoYXZlIFtzYW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3RyZWUvbWFzdGVyL3NhbXBsZXMpIHRvby4KCiMjIyBbMy4xIC0gQ3VzdG9taXphdGlvbl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKUGxlYXNlIHJlZmVyIHRvIFtjdXN0b21pemF0aW9uLm1kXShkb2NzL2N1c3RvbWl6YXRpb24ubWQpIG9uIGhvdyB0byBjdXN0b21pemUgdGhlIG91dHB1dCAoZS5nLiBwYWNrYWdlIG5hbWUsIHZlcnNpb24pCgojIyMgWzMuMiAtIFdvcmtmbG93IEludGVncmF0aW9uIChNYXZlbiwgR3JhZGxlLCBHaXRodWIsIENJL0NEKV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKUGxlYXNlIHJlZmVyIHRvIFtpbnRlZ3JhdGlvbi5tZF0oZG9jcy9pbnRlZ3JhdGlvbi5tZCkgb24gaG93IHRvIGludGVncmF0ZSBPcGVuQVBJIGdlbmVyYXRvciB3aXRoIE1hdmVuLCBHcmFkbGUsIHNidCwgQmF6ZWwsIEdpdGh1YiBhbmQgQ0kvQ0QuCgojIyMgWzMuMyAtIE9ubGluZSBPcGVuQVBJIGdlbmVyYXRvcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKSGVyZSBhcmUgdGhlIHB1YmxpYyBvbmxpbmUgc2VydmljZXM6CgotIGxhdGVzdCBzdGFibGUgdmVyc2lvbjogaHR0cHM6Ly9hcGkub3BlbmFwaS1nZW5lcmF0b3IudGVjaAotIGxhdGVzdCBtYXN0ZXI6IGh0dHBzOi8vYXBpLWxhdGVzdC1tYXN0ZXIub3BlbmFwaS1nZW5lcmF0b3IudGVjaCAodXBkYXRlZCB3aXRoIGxhdGVzdCBtYXN0ZXIgZXZlcnkgaG91cikKClRoZSBzZXJ2ZXIgaXMgc3BvbnNvcmVkIGJ5IFtMaW5vZGVdKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vKSBbIVtMaW5vZGUgTG9nb10oaHR0cHM6Ly93d3cubGlub2RlLmNvbS9tZWRpYS9pbWFnZXMvbG9nb3Mvc3RhbmRhcmQvbGlnaHQvbGlub2RlLWxvZ29fc3RhbmRhcmRfbGlnaHRfc21hbGwucG5nKV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pCgooVGhlc2Ugc2VydmljZXMgYXJlIGJldGEgYW5kIGRvIG5vdCBoYXZlIGFueSBndWFyYW50ZWUgb24gc2VydmljZSBsZXZlbCkKClBsZWFzZSByZWZlciB0byBbb25saW5lLm1kXShkb2NzL29ubGluZS5tZCkgb24gaG93IHRvIHJ1biBhbmQgdXNlIHRoZSBgb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lYCAtIGEgd2ViIHNlcnZpY2UgZm9yIGBvcGVuYXBpLWdlbmVyYXRvcmAuCgojIyMgWzMuNCAtIExpY2Vuc2UgaW5mb3JtYXRpb24gb24gR2VuZXJhdGVkIENvZGVdKCN0YWJsZS1vZi1jb250ZW50cykKClRoZSBPcGVuQVBJIEdlbmVyYXRvciBwcm9qZWN0IGlzIGludGVuZGVkIGFzIGEgYmVuZWZpdCBmb3IgdXNlcnMgb2YgdGhlIE9wZW4gQVBJIFNwZWNpZmljYXRpb24uICBUaGUgcHJvamVjdCBpdHNlbGYgaGFzIHRoZSBbTGljZW5zZV0oIzctLS1saWNlbnNlKSBhcyBzcGVjaWZpZWQuIEluIGFkZGl0aW9uLCBwbGVhc2UgdW5kZXJzdGFuZCB0aGUgZm9sbG93aW5nIHBvaW50czoKCiogVGhlIHRlbXBsYXRlcyBpbmNsdWRlZCB3aXRoIHRoaXMgcHJvamVjdCBhcmUgc3ViamVjdCB0byB0aGUgW0xpY2Vuc2VdKCM3LS0tbGljZW5zZSkuCiogR2VuZXJhdGVkIGNvZGUgaXMgaW50ZW50aW9uYWxseSBfbm90XyBzdWJqZWN0IHRvIHRoZSBwYXJlbnQgcHJvamVjdCBsaWNlbnNlCgpXaGVuIGNvZGUgaXMgZ2VuZXJhdGVkIGZyb20gdGhpcyBwcm9qZWN0LCBpdCBzaGFsbCBiZSBjb25zaWRlcmVkICoqQVMgSVMqKiBhbmQgb3duZWQgYnkgdGhlIHVzZXIgb2YgdGhlIHNvZnR3YXJlLiAgVGhlcmUgYXJlIG5vIHdhcnJhbnRpZXMtLWV4cHJlc3NlZCBvciBpbXBsaWVkLS1mb3IgZ2VuZXJhdGVkIGNvZGUuICBZb3UgY2FuIGRvIHdoYXQgeW91IHdpc2ggd2l0aCBpdCwgYW5kIG9uY2UgZ2VuZXJhdGVkLCB0aGUgY29kZSBpcyB5b3VyIHJlc3BvbnNpYmlsaXR5IGFuZCBzdWJqZWN0IHRvIHRoZSBsaWNlbnNpbmcgdGVybXMgdGhhdCB5b3UgZGVlbSBhcHByb3ByaWF0ZS4KCiMjIyBbMy41IC0gSURFIEludGVncmF0aW9uXSgjdGFibGUtb2YtY29udGVudHMpCgpIZXJlIGlzIGEgbGlzdCBvZiBjb21tdW5pdHktY29udHJpYnV0ZWQgSURFIHBsdWctaW5zIHRoYXQgaW50ZWdyYXRlIHdpdGggT3BlbkFQSSBHZW5lcmF0b3I6CgotIEVjbGlwc2U6IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzIGZvciBFY2xpcHNlXShodHRwczovL3d3dy5lY2xpcHNlLm9yZy9jb2Rld2luZC9vcGVuLWFwaS10b29scy1mb3ItZWNsaXBzZS5odG1sKSBieSBbSUJNXShodHRwczovL3d3dy5pYm0uY29tKQotIEludGVsbGlKIElERUE6IFtPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzg0MzMtb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtKaW0gU2NodWJlcnRdKGh0dHBzOi8vamltc2NodWJlcnQudXMvIy8pCi0gSW50ZWxsaUogSURFQTogW1NlbnlhIEVkaXRvcl0oaHR0cHM6Ly9wbHVnaW5zLmpldGJyYWlucy5jb20vcGx1Z2luLzEwNjkwLXNlbnlhLWVkaXRvcikgYnkgW3NlbnlhLmlvXShodHRwczovL3NlbnlhLmlvKQotIFtSZXByZVplbiBBUEkgU3R1ZGlvXShodHRwczovL3d3dy5yZXByZXplbi5jb20vKQotIFZpc3VhbCBTdHVkaW86IFtSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3JdKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IpIGJ5IFtDaHJpc3RpYW4gUmVzbWEgSGVsbGVdKGh0dHBzOi8vY2hyaXN0aWFuLWhlbGxlLmJsb2dzcG90LmNvbS8pCi0gVmlzdWFsIFN0dWRpbyBDb2RlOiBbQ29kZXdpbmQgT3BlbkFQSSBUb29sc10oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUlCTS5jb2Rld2luZC1vcGVuYXBpLXRvb2xzKSBieSBbSUJNXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vcHVibGlzaGVycy9JQk0pCgoKIyMgWzQgLSBDb21wYW5pZXMvUHJvamVjdHMgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3JdKCN0YWJsZS1vZi1jb250ZW50cykKSGVyZSBhcmUgc29tZSBjb21wYW5pZXMvcHJvamVjdHMgKGFscGhhYmV0aWNhbCBvcmRlcikgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgaW4gcHJvZHVjdGlvbi4gVG8gYWRkIHlvdXIgY29tcGFueS9wcm9qZWN0IHRvIHRoZSBsaXN0LCBwbGVhc2UgdmlzaXQgW1JFQURNRS5tZF0oUkVBRE1FLm1kKSBhbmQgY2xpY2sgb24gdGhlIGljb24gdG8gZWRpdCB0aGUgcGFnZS4KCi0gW0FhbGJvcmcgVW5pdmVyc2l0eV0oaHR0cHM6Ly93d3cuYWF1LmRrKQotIFthY3QgY29kaW5nXShodHRwczovL2dpdGh1Yi5jb20vYWN0Y29kaW5nKQotIFtBZGFwdGFudCBTb2x1dGlvbnMgQUddKGh0dHBzOi8vd3d3LmFkYXB0YW50LmlvLykKLSBbYWRlc3NvIFNFXShodHRwczovL3d3dy5hZGVzc28uZGUvKQotIFtBZHllbl0oaHR0cHM6Ly93d3cuYWR5ZW4uY29tLykKLSBbQWdvZGFdKGh0dHBzOi8vd3d3LmFnb2RhLmNvbS8pCi0gW0FpcnRoaW5nc10oaHR0cHM6Ly93d3cuYWlydGhpbmdzLmNvbS8pCi0gW0FsZXJpIFNvbHV0aW9ucyBHbWJoXShodHRwczovL3d3dy5hbGVyaS5kZS8pCi0gW0FsbGlhbnpdKGh0dHBzOi8vd3d3LmFsbGlhbnouY29tKQotIFtBbmd1bGFyLlNjaHVsZV0oaHR0cHM6Ly9hbmd1bGFyLnNjaHVsZS8pCi0gW0Fxb3ZpYV0oaHR0cHM6Ly9hcW92aWEuY29tLykKLSBbQXVzdHJhbGlhIGFuZCBOZXcgWmVhbGFuZCBCYW5raW5nIEdyb3VwIChBTlopXShodHRwOi8vd3d3LmFuei5jb20vKQotIFtBcmR1aW5vXShodHRwczovL3d3dy5hcmR1aW5vLmNjLykKLSBbQVNLVUxdKGh0dHBzOi8vd3d3LmFza3VsLmNvLmpwKQotIFtBbWF6b24gV2ViIFNlcnZpY2VzIChBV1MpXShodHRwczovL2F3cy5hbWF6b24uY29tLykKLSBbYjw+Y29tXShodHRwczovL2ItY29tLmNvbS9lbikKLSBb55m+5bqm6JCl6ZSAXShodHRwczovL2UuYmFpZHUuY29tKQotIFtCYW5kd2lkdGhdKGh0dHBzOi8vZGV2LmJhbmR3aWR0aC5jb20pCi0gW0JhbnphaSBDbG91ZF0oaHR0cHM6Ly9iYW56YWljbG91ZC5jb20pCi0gW0JJTURhdGEuaW9dKGh0dHBzOi8vYmltZGF0YS5pbykKLSBbQml0aG9zdCBHbWJIXShodHRwczovL3d3dy5iaXRob3N0LmNoKQotIFtCb3NjaCBDb25uZWN0ZWQgSW5kdXN0cnldKGh0dHBzOi8vd3d3LmJvc2NoLWNvbm5lY3RlZC1pbmR1c3RyeS5jb20pCi0gW0JveGV2ZXJdKGh0dHBzOi8vd3d3LmJveGV2ZXIuY29tLykKLSBbQnJldnldKGh0dHBzOi8vd3d3LmJyZXZ5LmNvbSkKLSBbQnVua2VyIEhvbGRpbmcgR3JvdXBdKGh0dHBzOi8vd3d3LmJ1bmtlci1ob2xkaW5nLmNvbS8pCi0gW0NhbGlmb3JuaWEgU3RhdGUgVW5pdmVyc2l0eSwgTm9ydGhyaWRnZV0oaHR0cHM6Ly93d3cuY3N1bi5lZHUpCi0gW0NBTV0oaHR0cHM6Ly93d3cuY2FtLWluYy5jby5qcC8pCi0gW0NhbXB0b2NhbXBdKGh0dHBzOi8vd3d3LmNhbXB0b2NhbXAuY29tL2VuKQotIFtDYXJsc2JlcmcgR3JvdXBdKGh0dHBzOi8vd3d3LmNhcmxzYmVyZ2dyb3VwLmNvbS8pCi0gW0NocmlzdG9waGVyIFF1ZWVuIENvbnN1bHRpbmddKGh0dHBzOi8vd3d3LmNocmlzdG9waGVycXVlZW5jb25zdWx0aW5nLmNvbS8pCi0gW0Npc2NvXShodHRwczovL3d3dy5jaXNjby5jb20vKQotIFtjb2RlY2VudHJpYyBBR10oaHR0cHM6Ly93d3cuY29kZWNlbnRyaWMuZGUvKQotIFtDb2luQVBJXShodHRwczovL3d3dy5jb2luYXBpLmlvLykKLSBbQ29tbWVuY2lzXShodHRwczovL3d3dy5jb21tZW5jaXMuY29tLykKLSBbQ29uZmlnQ2F0XShodHRwczovL2NvbmZpZ2NhdC5jb20vKQotIFtjcm9ubiBHbWJIXShodHRwczovL3d3dy5jcm9ubi5kZS8pCi0gW0Nyb3Nzb3ZlciBIZWFsdGhdKGh0dHBzOi8vY3Jvc3NvdmVyaGVhbHRoLmNvbS8pCi0gW0N1cGl4XShodHRwczovL3d3dy5jdXBpeC5jb20vKQotIFtEYXRhZG9nXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tKQotIFtEQiBTeXN0ZWxdKGh0dHBzOi8vd3d3LmRic3lzdGVsLmRlKQotIFtEZWVwb3J1dGUuYWldKGh0dHBzOi8vd3d3LmRlZXByb3V0ZS5haS8pCi0gW0RldnN1cHBseV0oaHR0cHM6Ly93d3cuZGV2c3VwcGx5LmNvbS8pCi0gW2RtVEVDSCBHbWJIXShodHRwczovL3d3dy5kbVRFQ0guZGUpCi0gW0RvY1NwcmluZ10oaHR0cHM6Ly9kb2NzcHJpbmcuY29tLykKLSBbZHdhbmdvXShodHRwczovL2R3YW5nby5jby5qcC8pCi0gW0VkZ2UgSW1wdWxzZV0oaHR0cHM6Ly93d3cuZWRnZWltcHVsc2UuY29tLykKLSBbRWxlbWVudCBBSV0oaHR0cHM6Ly93d3cuZWxlbWVudGFpLmNvbS8pCi0gW0VtYm90aWNzXShodHRwczovL3d3dy5lbWJvdGljcy5jb20vKQotIFtlbWluZW9dKGh0dHBzOi8vd3d3LmVtaW5lby5jaCkKLSBbZmFzdGx5XShodHRwczovL3d3dy5mYXN0bHkuY29tLykKLSBbRmVuZXJnb10oaHR0cHM6Ly93d3cuZmVuZXJnby5jb20vKQotIFtmcmVlZV0oaHR0cHM6Ly9jb3JwLmZyZWVlLmNvLmpwL2VuLykKLSBbRnJlc2hDZWxsc10oaHR0cHM6Ly93d3cuZnJlc2hjZWxscy5kZS8pCi0gW0Z1c2VdKGh0dHBzOi8vd3d3LmZ1c2Uubm8vKQotIFtHYW50bmVyXShodHRwczovL3d3dy5nYW50bmVyLmNvbSkKLSBbR2VuRmxvd10oaHR0cHM6Ly9naXRodWIuY29tL1JlcHJlWmVuL0dlbkZsb3cpCi0gW0dldFlvdXJHdWlkZV0oaHR0cHM6Ly93d3cuZ2V0eW91cmd1aWRlLmNvbS8pCi0gW0dsb3ZvXShodHRwczovL2dsb3ZvYXBwLmNvbS8pCi0gW0dNTyBQZXBhYm9dKGh0dHBzOi8vcGVwYWJvLmNvbS9lbi8pCi0gW0dvRGFkZHldKGh0dHBzOi8vZ29kYWRkeS5jb20pCi0gW0d1bXRyZWVdKGh0dHBzOi8vZ3VtdHJlZS5jb20pCi0gW0hlcmVdKGh0dHBzOi8vZGV2ZWxvcGVyLmhlcmUuY29tLykKLSBbSUJNXShodHRwczovL3d3dy5pYm0uY29tLykKLSBbSW5zdGFuYV0oaHR0cHM6Ly93d3cuaW5zdGFuYS5jb20pCi0gW0ludGVyeGlvbl0oaHR0cHM6Ly93d3cuaW50ZXJ4aW9uLmNvbSkKLSBbSW5xdWlzaWNvXShodHRwczovL2lucXVpc2ljby5jb20pCi0gW0p1c3RTdGFyXShodHRwczovL3d3dy5qdXN0c3RhcmluZm8uY29tKQotIFtrNi5pb10oaHR0cHM6Ly9rNi5pby8pCi0gW0tsYXJuYV0oaHR0cHM6Ly93d3cua2xhcm5hLmNvbS8pCi0gW0tyb25zb2Z0IERldmVsb3BtZW50XShodHRwczovL3d3dy5rcm9uc29mdC5yby9ob21lLykKLSBbS3ViZXJuZXRlc10oaHR0cHM6Ly9rdWJlcm5ldGVzLmlvKQotIFtMYW5kZXNoYXVwdHN0YWR0IE3DvG5jaGVuIC0gaXRATV0oaHR0cHM6Ly9tdWVuY2hlbi5kaWdpdGFsL2l0LWF0LW0vKQotIFtMaW5vZGVdKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vKQotIFtMb2dpY2Ryb3BdKGh0dHBzOi8vd3d3LmxvZ2ljZHJvcC5jb20pCi0gW0x1bWVyaXNdKGh0dHBzOi8vd3d3Lmx1bWVyaXMuY29tKQotIFtMVk0gVmVyc2ljaGVydW5nZW5dKGh0dHBzOi8vd3d3Lmx2bS5kZSkKLSBbTWFpbFNsdXJwXShodHRwczovL3d3dy5tYWlsc2x1cnAuY29tKQotIFtNYW50aWNvcmUgU2VhcmNoXShodHRwczovL21hbnRpY29yZXNlYXJjaC5jb20pCi0gW01hc3RlcmNhcmRdKGh0dHBzOi8vZGV2ZWxvcGVycy5tYXN0ZXJjYXJkLmNvbSkKLSBbTcOpZGlhdmlzaW9uXShodHRwczovL3d3dy5tZWRpYXZpc2lvbi5mci8pCi0gW01ldGFzd2l0Y2hdKGh0dHBzOi8vd3d3Lm1ldGFzd2l0Y2guY29tLykKLSBbTW9vblZpc2lvbl0oaHR0cHM6Ly93d3cubW9vbnZpc2lvbi5pby8pCi0gW015d29ya291dF0oaHR0cHM6Ly9teXdvcmtvdXQuY29tKQotIFtOYW1Tb3JdKGh0dHBzOi8vd3d3Lm5hbXNvci5jb20vKQotIFtOZXZlcmZhaWxdKGh0dHBzOi8vd3d3Lm5ldmVyZmFpbC5jb20vKQotIFtOZXVlckVuZXJneV0oaHR0cHM6Ly9uZXVlcmVuZXJneS5jb20pCi0gW05va2lhXShodHRwczovL3d3dy5ub2tpYS5jb20vKQotIFtPbmVTaWduYWxdKGh0dHBzOi8vd3d3Lm9uZXNpZ25hbC5jb20vKQotIFtPcHRpb25zIENsZWFyaW5nIENvcnBvcmF0aW9uIChPQ0MpXShodHRwczovL3d3dy50aGVvY2MuY29tLykKLSBbT3BlbmV0XShodHRwczovL3d3dy5vcGVuZXQuY29tLykKLSBbb3BlblZBTElEQVRJT05dKGh0dHBzOi8vb3BlbnZhbGlkYXRpb24uaW8vKQotIFtPcmFjbGVdKGh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vKQotIFtQYXhvc10oaHR0cHM6Ly93d3cucGF4b3MuY29tKQotIFtQbGFpZF0oaHR0cHM6Ly9wbGFpZC5jb20pCi0gW1BMQUlELCBJbmMuXShodHRwczovL3BsYWlkLmNvLmpwLykKLSBbUGludGVyZXN0XShodHRwczovL3d3dy5waW50ZXJlc3QuY29tKQotIFtQb25pY29kZV0oaHR0cHM6Ly9wb25pY29kZS5kZXYvKQotIFtQcmljZWZ4XShodHRwczovL3d3dy5wcmljZWZ4LmNvbS8pCi0gW1ByaW50TmFubnldKGh0dHBzOi8vd3d3LnByaW50LW5hbm55LmNvbS8pCi0gW1Byb21ldGhldXMvQWxlcnRtYW5hZ2VyXShodHRwczovL2dpdGh1Yi5jb20vcHJvbWV0aGV1cy9hbGVydG1hbmFnZXIpCi0gW1FhdmFyXShodHRwczovL3d3dy5xYXZhci5jb20pCi0gW1FFRElUXShodHRwczovL3FlZC1pdC5jb20pCi0gW1FvdmVyeV0oaHR0cHM6Ly9xb3ZlcnkuY29tKQotIFtRdWxpeCBTeXN0ZW1zXShodHRwczovL3d3dy5xdWxpeC5jb20pCi0gW1Jha3N1bF0oaHR0cHM6Ly9jb3JwLnJha3N1bC5jb20pCi0gW1JhaWZmZWlzZW4gU2Nod2VpeiBHZW5vc3NlbnNjaGFmdF0oaHR0cHM6Ly93d3cucmFpZmZlaXNlbi5jaCkKLSBbUmVkSGF0XShodHRwczovL3d3dy5yZWRoYXQuY29tKQotIFtSZXByZVplbiBBUEkgU3R1ZGlvXShodHRwczovL3d3dy5yZXByZXplbi5jb20vc3dhZ2dlci1vcGVuYXBpLWNvZGUtZ2VuZXJhdGlvbi1hcGktZmlyc3QtbWljcm9zZXJ2aWNlcy1lbnRlcnByaXNlLWRldmVsb3BtZW50KQotIFtSRVNUIFVuaXRlZF0oaHR0cHM6Ly9yZXN0dW5pdGVkLmNvbSkKLSBbUm9ib2NvcnBdKGh0dHBzOi8vd3d3LnJvYm9jb3JwLmNvbSkKLSBbUm9ib3RpbmZyYV0oaHR0cHM6Ly93d3cucm9ib3RpbmZyYS5jb20pCi0gW1NlYXJjaEFwaV0oaHR0cHM6Ly93d3cuc2VhcmNoYXBpLmlvLykKLSBbU21hcnRIUl0oaHR0cHM6Ly9zbWFydGhyLmNvLmpwLykKLSBbU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50XShodHRwczovL3d3dy5zaWUuY29tL2VuL2luZGV4Lmh0bWwpCi0gW1NwbGl0aXRdKGh0dHBzOi8vd3d3LnNwbGl0aXQuY29tLykKLSBbU3RpbmdyYXldKGh0dHA6Ly93d3cuc3RpbmdyYXkuY29tKQotIFtTdXZhXShodHRwczovL3d3dy5zdXZhLmNoLykKLSBbU3ZpeF0oaHR0cHM6Ly93d3cuc3ZpeC5jb20vKQotIFtUZWxzdHJhXShodHRwczovL2Rldi50ZWxzdHJhLmNvbSkKLSBbVGVuY2VudF0oaHR0cHM6Ly93d3cudGVuY2VudC5jb20pCi0gW1RoZSBVbml2ZXJzaXR5IG9mIEFpenVdKGh0dHBzOi8vd3d3LnUtYWl6dS5hYy5qcC9lbi8pCi0gW1RyYW5zbHVjZW50IEFwU10oaHR0cHM6Ly93d3cudHJhbnNsdWNlbnQuZGspCi0gW1RyYXZlbFRpbWUgcGxhdGZvcm1dKGh0dHBzOi8vd3d3LnRyYXZlbHRpbWVwbGF0Zm9ybS5jb20vKQotIFtUcmliYWxTY2FsZV0oaHR0cHM6Ly93d3cudHJpYmFsc2NhbGUuY29tKQotIFtUcmlmb3JrXShodHRwczovL3RyaWZvcmsuY29tKQotIFtUVUkgSW5mb1RlYyBHbWJIXShodHRwOi8vd3d3LnR1aS1pbmZvdGVjLmNvbS8pCi0gW1R3aWxpb10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS8pCi0gW1R3aXR0ZXJdKGh0dHBzOi8vdHdpdHRlci5jb20pCi0gW3VuYmx1IGluYy5dKGh0dHBzOi8vd3d3LnVuYmx1LmNvbS8pCi0gW1ZlYW1seV0oaHR0cHM6Ly93d3cudmVhbWx5LmNvbS8pCi0gW1ZNV2FyZV0oaHR0cHM6Ly93d3cudm13YXJlLmNvbS8pCi0gW3didC1zb2x1dGlvbnNdKGh0dHBzOi8vd3d3LndidC1zb2x1dGlvbnMuZGUvKQotIFtXb2xlZXRdKGh0dHBzOi8vd3d3LndvbGVldC5pby8pCi0gW1dTTzJdKGh0dHBzOi8vd3NvMi5jb20vKQotIFtWb3VjaGVyeS5pb10oaHR0cHM6Ly92b3VjaGVyeS5pbykKLSBbWGVyb10oaHR0cHM6Ly93d3cueGVyby5jb20vKQotIFtZYWhvbyBKYXBhbl0oaHR0cHM6Ly93d3cueWFob28uY28uanAvKQotIFt2aWFkZWVdKGh0dHBzOi8vd3d3LnZpYWRlZS5kZS8pCi0gW1ZvbmFnZV0oaHR0cHM6Ly92b25hZ2UuY29tKQotIFtZSVRVIFRlY2hub2xvZ3ldKGh0dHBzOi8vd3d3LnlpdHV0ZWNoLmNvbS8pCi0gW1llbHBdKGh0dHBzOi8vd3d3LnllbHAuY29tLykKLSBbWmFsYW5kb10oaHR0cHM6Ly93d3cuemFsYW5kby5jb20pCi0gWzNEUyBPdXRzY2FsZV0oaHR0cHM6Ly93d3cub3V0c2NhbGUuY29tLykKCiMjIFs1IC0gUHJlc2VudGF0aW9ucy9WaWRlb3MvVHV0b3JpYWxzL0Jvb2tzXSgjdGFibGUtb2YtY29udGVudHMpCgotIDIwMTgvMDUvMTIgLSBbT3BlbkFQSSBHZW5lcmF0b3IgLSBjb21tdW5pdHkgZHJpdmVu44Gn5oiQ6ZW344GZ44KL44Kz44O844OJ44K444Kn44ON44Os44O844K/XShodHRwczovL2Fja2ludG9zaC5naXRodWIuaW8vYmxvZy8yMDE4LzA1LzEyL29wZW5hcGktZ2VuZXJhdG9yLykgYnkgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkKLSAyMDE4LzA1LzE1IC0gW1N0YXJ0aW5nIGEgbmV3IG9wZW4tc291cmNlIHByb2plY3RdKGh0dHA6Ly9qbWluaS5naXRodWIuaW8vYmxvZy8yMDE4LzIwMTgtMDUtMTVfbmV3LW9wZW4tc291cmNlLXByb2plY3QuaHRtbCkgYnkgW0plcmVtaWUgQnJlc3Nvbl0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKQotIDIwMTgvMDUvMTUgLSBbUkVTVCBBUEnku5Xmp5jjgYvjgolBUEnjgq/jg6njgqTjgqLjg7Pjg4jjgoTjgrnjgr/jg5bjgrXjg7zjg5DjgpLoh6rli5XnlJ/miJDjgZnjgovjgIxPcGVuQVBJIEdlbmVyYXRvcuOAjeOCquODvOODl+ODs+OCveODvOOCueOBp+WFrOmWi+OAglN3YWdnZXIgQ29kZWdlbuOBi+OCieOBruODleOCqeODvOOCr10oaHR0cHM6Ly93d3cucHVibGlja2V5MS5qcC9ibG9nLzE4L3Jlc3RfYXBpYXBpb3BlbmFwaV9nZW5lcmF0b3Jzd2FnZ2VyX2dlbmVyYXRvci5odG1sKSBieSBbUHVibGlja2V5XShodHRwczovL3d3dy5wdWJsaWNrZXkxLmpwKQotIDIwMTgvMDYvMDggLSBbU3dhZ2dlciBDb2RlZ2VuIGlzIG5vdyBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9hbmd1bGFyLnNjaHVsZS9ibG9nLzIwMTgtMDYtc3dhZ2dlci1jb2RlZ2VuLWlzLW5vdy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW0pvaGFubmVzSG9wcGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9Kb2hhbm5lc0hvcHBlKQotIDIwMTgvMDYvMjEgLSBbQ29ubmVjdCB5b3VyIEpIaXBzdGVyIGFwcHMgdG8gdGhlIHdvcmxkIG9mIEFQSXMgd2l0aCBPcGVuQVBJIGFuZCBnUlBDXShodHRwczovL2ZyLnNsaWRlc2hhcmUubmV0L2NoYm9ybmV0L2poaXBzdGVyLWNvbmYtMjAxOC1jb25uZWN0LXlvdXItamhpcHN0ZXItYXBwcy10by10aGUtd29ybGQtb2YtYXBpcy13aXRoLW9wZW5hcGktYW5kLWdycGMpIGJ5IFtDaHJpc3RvcGhlIEJvcm5ldF0oaHR0cHM6Ly9naXRodWIuY29tL2Nib3JuZXQpIGF0IFtKSGlwc3RlciBDb25mIDIwMThdKGh0dHBzOi8vamhpcHN0ZXItY29uZi5naXRodWIuaW8vKQotIDIwMTgvMDYvMjIgLSBbT3BlbkFQSSBHZW5lcmF0b3Ig44GnIEdhdGxpbmcgQ2xpZW50IOOCkueUn+aIkOOBl+OBpuOBv+OBn10oaHR0cHM6Ly9yb2hraS5oYXRlbmFibG9nLmNvbS9lbnRyeS8yMDE4LzA2LzIyLzA3MzAwMCkgYXQgW+OCveODouOCteODs10oaHR0cHM6Ly9yb2hraS5oYXRlbmFibG9nLmNvbS8pCi0gMjAxOC8wNi8yNyAtIFtMZXNzb25zIExlYXJuZWQgZnJvbSBMZWFkaW5nIGFuIE9wZW4tU291cmNlIFByb2plY3QgU3VwcG9ydGluZyAzMCsgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2xlc3NvbnMtbGVhcm5lZC1mcm9tLWxlYWRpbmctYW4tb3Blbi1zb3VyY2UtcHJvamVjdC1zdXBwb3J0aW5nLTMwLXBsdXMtcHJvZ3JhbW1pbmctbGFuZ3VhZ2VzKSAtIFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW0xpbnV4Q29uICsgQ29udGFpbmVyQ29uICsgQ2xvdWRPcGVuIENoaW5hIDIwMThdKGh0dHA6Ly9iaXQubHkvMndhREtLWCkKLSAyMDE4LzA3LzE5IC0gW09wZW5BUEkgR2VuZXJhdG9yIENvbnRyaWJ1dGlvbiBRdWlja3N0YXJ0IC0gUmluZ0NlbnRyYWwgR28gU0RLXShodHRwczovL21lZGl1bS5jb20vcmluZ2NlbnRyYWwtZGV2ZWxvcGVycy9vcGVuYXBpLWdlbmVyYXRvci1mb3ItZ28tY29udHJpYnV0aW9uLXF1aWNrc3RhcnQtOGNjNzJiZjM3YjUzKSBieSBbSm9obiBXYW5nXShodHRwczovL2dpdGh1Yi5jb20vZ3Jva2lmeSkKLSAyMDE4LzA4LzIyIC0gW09wZW5BUEkgR2VuZXJhdG9y44Gu44OX44Ot44K444Kn44Kv44OI5qeL5oiQ44Gq44Gp44Gu44Oh44OiXShodHRwczovL3lpbm0uaW5mby8yMDE4MDgyMi8pIGJ5IFtZdXN1a2UgSWludW1hXShodHRwczovL2dpdGh1Yi5jb20veWlubSkKLSAyMDE4LzA5LzEyIC0gW1JlcHJlWmVuIGFuZCBPcGVuQVBJIDMuMDogTm93IGlzIHRoZSBUaW1lXShodHRwczovL3d3dy5yZXByZXplbi5jb20vYmxvZy9yZXByZXplbi1vcGVuYXBpLTMuMC11cGdyYWRlLW5vdy1pcy10aGUtdGltZSkgYnkgW01pbGVzIERhZmZpbl0oaHR0cHM6Ly93d3cucmVwcmV6ZW4uY29tL2Jsb2cvYXV0aG9yL21pbGVzLWRhZmZpbikKLSAyMDE4LzEwLzMxIC0gW0Egbm9kZSBwYWNrYWdlIHdyYXBwZXIgZm9yIG9wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2dpdGh1Yi5jb20vSGFybW9XYXRjaC9vcGVuYXBpLWdlbmVyYXRvci1jbGkpCi0gMjAxOC8xMS8wMyAtIFtPcGVuQVBJIEdlbmVyYXRvciArIGdvbGFuZyArIEZsdXR0ZXIg44Gn44Ki44OX44Oq6ZaL55m6XShodHRwOi8vcnl1aWNoaTExMXN0ZC5oYXRlbmFibG9nLmNvbS9lbnRyeS8yMDE4LzExLzAzLzIxNDAwNSkgYnkgW1J5dWljaGkgRGFpZ29dKGh0dHBzOi8vZ2l0aHViLmNvbS9yeXVpY2hpMTExKQotIDIwMTgvMTEvMTUgLSBb5Z+65LqOb3BlbmFwaTMuMOeahHlhbWzmlofku7bnlJ/miJBqYXZh5Luj56CB55qE5LiA5qyh5a6e6Le1XShodHRwczovL2Jsb2cuY3Nkbi5uZXQveXp5MTk5MzkxL2FydGljbGUvZGV0YWlscy84NDAyMzk4MikgYnkgW+eEsemtlOeOi10oaHR0cHM6Ly9tZS5jc2RuLm5ldC95enkxOTkzOTEpCi0gMjAxOC8xMS8xOCAtIFtHZW5lcmF0aW5nIFBIUCBsaWJyYXJ5IGNvZGUgZnJvbSBPcGVuQVBJXShodHRwczovL2xvcm5hamFuZS5uZXQvcG9zdHMvMjAxOC9nZW5lcmF0aW5nLXBocC1saWJyYXJ5LWNvZGUtZnJvbS1vcGVuYXBpKSBieSBbTG9ybmEgSmFuZV0oaHR0cHM6Ly9sb3JuYWphbmUubmV0LykgYXQgW0xPUk5BSkFORSBCbG9nXShodHRwczovL2xvcm5hamFuZS5uZXQvYmxvZykKLSAyMDE4LzExLzE5IC0gW09wZW5BUElzIGFyZSBldmVyeXdoZXJlXShodHRwczovL3lvdXR1LmJlLy1sRG90NFluN0RnKSBieSBbSmVyZW1pZSBCcmVzc29uIChVbmJsdSldKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgYXQgW0VjbGlwc2VDb24gRXVyb3BlIDIwMThdKGh0dHBzOi8vd3d3LmVjbGlwc2Vjb24ub3JnL2V1cm9wZTIwMTgpCi0gMjAxOC8xMi8wOSAtIFtvcGVuYXBpLWdlbmVyYXRvciDjgpLjgqvjgrnjgr/jg57jgqTjgrrjgZnjgovmlrnms5VdKGh0dHBzOi8vcWlpdGEuY29tL3dhdGlrby9pdGVtcy8wOTYxMjg3YzAyZWFjOTIxMTU3MikgYnkgW0B3YXRpa29dKGh0dHBzOi8vcWlpdGEuY29tL3dhdGlrbykKLSAyMDE5LzAxLzAzIC0gW0NhbGxpbmcgYSBTd2FnZ2VyIHNlcnZpY2UgZnJvbSBBcGV4IHVzaW5nIG9wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL2xla2tpbXdvcmxkLmNvbS8yMDE5LzAxLzAzL2NhbGxpbmctYS1zd2FnZ2VyLXNlcnZpY2UtZnJvbS1hcGV4LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLykgYnkgW01pa2tlbCBGbGluZHQgSGVpc3RlcmJlcmddKGh0dHBzOi8vbGVra2ltd29ybGQuY29tKQotIDIwMTkvMDEvMTMgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgadSRVNUZnVsIEFQSeOBruWumue+qeabuOOBi+OCieiJsuOAheiHquWLleeUn+aIkOOBmeOCi10oaHR0cHM6Ly9reS15ay1kLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTkvMDEvMTMvMjM0MTA4KSBieSBbQGt5X3lrX2RdKGh0dHBzOi8vdHdpdHRlci5jb20va3lfeWtfZCkKLSAyMDE5LzAxLzIwIC0gW0NvbnRyYWN0LUZpcnN0IEFQSSBEZXZlbG9wbWVudCB3aXRoIE9wZW5BUEkgR2VuZXJhdG9yIGFuZCBDb25uZXhpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9jb21tZW5jaXMvY29udHJhY3QtZmlyc3QtYXBpLWRldmVsb3BtZW50LXdpdGgtb3BlbmFwaS1nZW5lcmF0b3ItYW5kLWNvbm5leGlvbi1iMjFiYmYyZjkyNDQpIGJ5IFtBbmlsIENhbiBBeWRpbl0oaHR0cHM6Ly9naXRodWIuY29tL2FubGNueWRuKQotIDIwMTkvMDEvMzAgLSBbUmFwaWQgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgV2l0aCBBUEkgRmlyc3QgQXBwcm9hY2ggVXNpbmcgT3Blbi1BUEkgR2VuZXJhdG9yXShodHRwczovL2R6b25lLmNvbS9hcnRpY2xlcy9yYXBpZC1hcGktZGV2ZWxvcG1lbnQtdXNpbmctb3Blbi1hcGktZ2VuZXJhdG9yKSBieSBbTWlsYW4gU29ua2FyXShodHRwczovL2R6b25lLmNvbS91c2Vycy84MjgzMjkvbWlsYW5fc29ua2FyLmh0bWwpCi0gMjAxOS8wMi8wMiAtIFvlubPpnZnjgpLkv53jgaHjgIHjgrPjg7zjg4njgpLnlJ/miJDjgZvjgogg44CcIE9wZW5BUEkgR2VuZXJhdG9y6KqV55Sf44Gu6IOM5pmv44Go6LuM6LehIOOAnF0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vYWtpaGl0b19uYWthbm8vZ3VubWF3ZWIzNCkgYnkgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkgYXQgW0d1bm1hLndlYiAjMzQg44K544Kt44O844Oe6aeG5YuV6ZaL55m6XShodHRwczovL2d1bm1hd2ViLmNvbm5wYXNzLmNvbS9ldmVudC8xMTM5NzQvKQotIDIwMTkvMDIvMjAgLSBbQW4gYWR2ZW50dXJlIGluIE9wZW5BUEkgVjMgY29kZSBnZW5lcmF0aW9uXShodHRwczovL211eC5jb20vYmxvZy9hbi1hZHZlbnR1cmUtaW4tb3BlbmFwaS12My1hcGktY29kZS1nZW5lcmF0aW9uLykgYnkgW1BoaWwgQ2x1ZmZdKGh0dHBzOi8vbXV4LmNvbS9ibG9nL2F1dGhvci9waGlsYy8pCi0gMjAxOS8wMi8yNiAtIFtCdWlsZGluZyBBUEkgU2VydmljZXM6IEEgQmVnaW5uZXLigJlzIEd1aWRlXShodHRwczovL21lZGl1bS5jb20vZ29vZ2xlLWNsb3VkL2J1aWxkaW5nLWFwaS1zZXJ2aWNlcy1hLWJlZ2lubmVycy1ndWlkZS03Mjc0YWU0YzU0N2YpIGJ5IFtSYXRyb3MgWS5dKGh0dHBzOi8vbWVkaXVtLmNvbS9AcmF0cm9zeSkgaW4gW0dvb2dsZSBDbG91ZCBQbGF0Zm9ybSBCbG9nXShodHRwczovL21lZGl1bS5jb20vZ29vZ2xlLWNsb3VkKQotIDIwMTkvMDIvMjYgLSBbQnVpbGRpbmcgQVBJcyB3aXRoIE9wZW5BUEk6IENvbnRpbnVlZF0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5L2J1aWxkaW5nLWFwaXMtd2l0aC1vcGVuYXBpLWNvbnRpbnVlZC01ZDBmYWFlZDMyZWIpIGJ5IFtSYXRyb3MgWS5dKGh0dHBzOi8vbWVkaXVtLmNvbS9AcmF0cm9zeSkgaW4gW0dvb2dsZSBDbG91ZCBQbGF0Zm9ybSBCbG9nXShodHRwczovL21lZGl1bS5jb20vZ29vZ2xlLWNsb3VkKQotIDIwMTktMDMtMDcgLSBbT3BlbkFQSSBHZW5lcmF0b3Ig44GnIFNwcmluZyBCb290IOOBqCBBbmd1bGFyIOOCkuOCv+OCpOODl+OCu+ODvOODleOBq+e5i+OBkF0oaHR0cHM6Ly9xaWl0YS5jb20vY2hpYmF0by9pdGVtcy9lNGE3NDhkYjEyNDA5YjQwYzAyZikgYnkgW1RvbW9mdW1pIENoaWJhXShodHRwczovL2dpdGh1Yi5jb20vY2hpYmF0KQotIDIwMTktMDMtMTYgLSBbQSBRdWljayBpbnRyb2R1Y3Rpb24gdG8gbWFudWFsIE9wZW5BUEkgVjNdKGh0dHBzOi8vdmFkb3N3YXJlLmlvL3Bvc3QvcXVpY2staW50cm8tdG8tbWFudWFsLW9wZW5hcGktdjMvKSBieSBbdmFkb3NdKGh0dHBzOi8vZ2l0aHViLmNvbS90M2htcm1hbikgYXQgW1ZBRE9TV0FSRV0oaHR0cHM6Ly92YWRvc3dhcmUuaW8pCi0gMjAxOS0wMy0yNSAtIFtBY2Nlc3MgYW55IFJFU1Qgc2VydmljZSB3aXRoIHRoZSBTQVAgUy80SEFOQSBDbG91ZCBTREtdKGh0dHBzOi8vYmxvZ3Muc2FwLmNvbS8yMDE5LzAzLzI1L2ludGVncmF0ZS1zYXAtczRoYW5hLWNsb3VkLXNkay13aXRoLW9wZW4tYXBpLykgYnkgW0FsZXhhbmRlciBEdWVtb250XShodHRwczovL3Blb3BsZS5zYXAuY29tL2FsZXhhbmRlci5kdWVtb250KQotIDIwMTktMDMtMjUgLSBbT3BlbkFQSSBnZW5lcmF0b3LjgpLoqabjgZfjgabjgb/jgotdKGh0dHBzOi8vcWlpdGEuY29tL2FtdXlpa2FtL2l0ZW1zL2U4YTQ1ZGFhZTU5YzY4YmUwZmM4KSBieSBbQGFtdXlpa2FtXShodHRwczovL3R3aXR0ZXIuY29tL2FtdXlpa2FtKQotIDIwMTktMDMtMjcgLSBbT3BlbkFQSTPjgpLkvb/jgaPjgabjgb/jgojjgYbvvIFHb+iogOiqnuOBp+OCr+ODqeOCpOOCouODs+ODiOOBqOOCueOCv+ODluOBruiHquWLleeUn+aIkOOBvuOBp++8gV0oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS9lbnRyeS9vcGVuYXBpMy9nbykgYnkgW0Bnb2xkX2tvdV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9nb2xkX2tvdSkKLSAyMDE5LTA0LTE3IC0gW09wZW5BUEnjgavjgojjgovjgrnjgq3jg7zjg57jg5XjgqHjg7zjgrnjg4jplovnmbrjga7lrp/mlr3jgrXjg7Pjg5fjg6vjgahDbG91ZCBSdW7jgavjgaTjgYTjgaZdKGh0dHBzOi8vdGVjaC1ibG9nLm9wdGltLmNvLmpwL2VudHJ5LzIwMTkvMDQvMTcvMTc0MDAwKSBieSBbQHl1a2V5MTAzMV0oaHR0cHM6Ly90d2l0dGVyLmNvbS95dWtleTEwMzEpCi0gMjAxOS0wNC0xOCAtIFtIb3cgdG8gdXNlIE9wZW5BUEkzIGZvciBBUEkgZGV2ZWxvcGVyIChSdWJ5S2FpZ2kgMjAxOSldKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL290YTQyeS9ob3ctdG8tdXNlLW9wZW5hcGkzLWZvci1hcGktZGV2ZWxvcGVyKSBieSBbQG90YTQyeV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vdGE0MnkpIGF0IFtSdWJ5S2FpZ2kgMjAxOV0oaHR0cHM6Ly9ydWJ5a2FpZ2kub3JnLzIwMTkpCi0gMjAxOS0wNC0yOSAtIFtBIEJlZ2lubmVyJ3MgR3VpZGUgdG8gQ29kZSBHZW5lcmF0aW9uIGZvciBSRVNUIEFQSXMgKE9wZW5BUEkgR2VuZXJhdG9yKV0oaHR0cHM6Ly9ndW0uY28vb3BlbmFwaV9nZW5lcmF0b3JfZWJvb2spIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpCi0gMjAxOS0wNS0wMSAtIFtEZXNpZ24gYW5kIGdlbmVyYXRlIGEgUkVTVCBBUEkgZnJvbSBTd2FnZ2VyIC8gT3BlbkFQSSBpbiBKYXZhLCBQeXRob24sIEMjIGFuZCBtb3JlXShodHRwczovL3NpbXBseS1ob3cuY29tL2Rlc2lnbi1hbmQtZ2VuZXJhdGUtYXBpLWNvZGUtZnJvbS1vcGVuYXBpKSBieSBbU2ltcGx5IEhvd10oaHR0cHM6Ly9zaW1wbHktaG93LmNvbS8pCi0gMjAxOS0wNS0xNyAtIFtHZW5lcmF0ZSBTcHJpbmcgQm9vdCBSRVNUIEFQSSB1c2luZyBTd2FnZ2VyL09wZW5BUEldKGh0dHBzOi8vd3d3LjQ3bm9ydGhsYWJzLmNvbS9rbm93bGVkZ2UtYmFzZS9nZW5lcmF0ZS1zcHJpbmctYm9vdC1yZXN0LWFwaS11c2luZy1zd2FnZ2VyLW9wZW5hcGkvKSBieSBbQW50b25pZSBaYWZpcm92XShodHRwczovL3d3dy40N25vcnRobGFicy5jb20vYXV0aG9yL2FudG9uaWUtemFmaXJvdi8pCi0gMjAxOS0wNS0yMiAtIFtSRVNUIEFQSXPku6PnoIHnlJ/miJDmjIfljZcoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9va19nYikgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCksIFtYaW4gTWVuZ10oaHR0cHM6Ly9naXRodWIuY29tL3htZW5nMSkKLSAyMDE5LTA1LTI0IC0gW1JFU1QgQVBJIOS7o+eivOeUn+aIkOaMh+WNlyAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9va19iaWc1KSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KQotIDIwMTktMDYtMjQgLSBbS3ViZXJuZXRlcyBDbGllbnRzIGFuZCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vd2luZzMyOC9rdWJlcm5ldGVzLWNsaWVudHMtYW5kLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSBhdCBbS3ViZXJuZXRlcyBDb250cmlidXRvciBTdW1taXRzIFNoYW5naGFpIDIwMTldKGh0dHBzOi8vd3d3LmxmYXNpYWxsYy5jb20vZXZlbnRzL2NvbnRyaWJ1dG9ycy1zdW1taXQtY2hpbmEtMjAxOS8pCi0gMjAxOS0wNi0yOCBbQ29kZXdpbmQgT3BlbkFQSSBUb29sc10oaHR0cHM6Ly9tYXJrZXRwbGFjZS5lY2xpcHNlLm9yZy9jb250ZW50L2NvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGluIFtFY2xpcHNlIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnLykgYnkgSUJNCi0gMjAxOS0wNi0yOSBbQ29kZXdpbmQgT3BlbkFQSSBUb29sc10oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUlCTS5jb2Rld2luZC1vcGVuYXBpLXRvb2xzKSBpbiBbVmlzdWFsIFN0dWRpbyBNYXJrZXRwbGFjZV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tLykgYnkgSUJNCi0gMjAxOS0wNy0wNCAtIFtSRVNUIEFQSSDjga7jgZ/jgoHjga7jgrPjg7zjg4jjgpnnlJ/miJDlhaXploAgKE9wZW5BUEkgR2VuZXJhdG9yKV0oaHR0cHM6Ly9ndW0uY28vb3BlbmFwaV9nZW5lcmF0b3JfZWJvb2tfYmlnNSkgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCksIFvkuK3ph47mmoHkurpdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpLCBb5ZKM55Sw5ouT5pyXXShodHRwczovL2dpdGh1Yi5jb20vdGF4cG9uKQotIDIwMTktMDctMDggLSBbT3BlbkFQSSBHZW5lcmF0b3Ig44Gr44Kz44Oz44OI44Oq44OT44Ol44O844OI44GX44Gf44KJ56S+5ZCN44GM6LyJ44Gj44Gf6Kmx44CCKENBTSkgLSBDQU0gVEVDSCBCTE9HXShodHRwczovL3RlY2guY2FtLWluYy5jby5qcC9lbnRyeS8yMDE5LzA3LzA4LzE0MDAwMCkgYnkgW0NBTSwgSW5jLl0oaHR0cHM6Ly93d3cuY2FtLWluYy5jby5qcC8pCi0gMjAxOS0wNy0xNCAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBp1B5dGhvbuOBruOCr+ODqeOCpOOCouODs+ODiOODqeOCpOODluODqeODquOCkuS9nOaIkOOBl+OBn10oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdC9pdGVtcy9kZmI5MjkzMTZhMTMzNWExNjFjMCkgYnkgW3l1amkzOGt3bXRdKGh0dHBzOi8vcWlpdGEuY29tL3l1amkzOGt3bXQpCi0gMjAxOS0wNy0xOSAtIFtEZXZlbG9wZXIgRXhwZXJpZW5jZSAoRFgpIGZvciBPcGVuLVNvdXJjZSBQcm9qZWN0czogSG93IHRvIEVuZ2FnZSBEZXZlbG9wZXJzIGFuZCBCdWlsZCBhIEdyb3dpbmcgRGV2ZWxvcGVyIENvbW11bml0eV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vd2luZzMyOC9kZXZlbG9wZXItZXhwZXJpZW5jZS1keC1mb3Itb3Blbi1zb3VyY2UtcHJvamVjdHMtZW5nbGlzaC1qYXBhbmVzZSkgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCksIFvkuK3ph47mmoHkurpdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpIGF0IFtPcGVuIFNvdXJjZSBTdW1taXQgSmFwYW4gMjAxOV0oaHR0cHM6Ly9ldmVudHMubGludXhmb3VuZGF0aW9uLm9yZy9ldmVudHMvb3Blbi1zb3VyY2Utc3VtbWl0LWphcGFuLTIwMTkvKQotIDIwMTktMDgtMTQgLSBbT3VyIE9wZW5BUEkgam91cm5leSB3aXRoIFN0YW5kYXJkaXppbmcgU0RLc10oaHR0cHM6Ly9iaXRtb3Zpbi5jb20vb3VyLW9wZW5hcGktam91cm5leS13aXRoLXN0YW5kYXJkaXppbmctc2Rrcy8pIGJ5IFtTZWJhc3RpYW4gQnVyZ3N0YWxsZXJdKGh0dHBzOi8vYml0bW92aW4uY29tL2F1dGhvci9zYnVyZ3N0YWxsZXIvKSBhdCBbQml0bW92aW5dKGh0dHBzOi8vd3d3LmJpdG1vdmluLmNvbSkKLSAyMDE5LTA4LTE1IC0gW0FQSeOBruOCs+ODvOODieOCkuiHquWLleeUn+aIkOOBleOBm+OBn+OBhOOBoOOBkeOBquOCiWdSUEPjgafjgarjgY/jgabjgoLjgojjgY/jgarjgYQ/XShodHRwczovL3d3dy5tM3RlY2guYmxvZy9lbnRyeS8yMDE5LzA4LzE1LzExMDAwMCkgYnkgW00zLCBJbmMuXShodHRwczovL2NvcnBvcmF0ZS5tMy5jb20vKQotIDIwMTktMDgtMjIgLSBb44Oe44Kk44Kv44Ot44K144O844OT44K544Gr44GK44GR44KLV2ViIEFQSeOCueOCreODvOODnuOBrueuoeeQhuKUgCBHcmFwaFFM44CBZ1JQQ+OAgU9wZW5BUEnjga7nibnlvrTjgajkvb/jgYTjganjgZPjgo1dKGh0dHBzOi8vZW1wbG95bWVudC5lbi1qYXBhbi5jb20vZW5naW5lZXJodWIvZW50cnkvMjAxOS8wOC8yMi8xMDMwMDApIGJ5IFtAb3RhNDJ5XShodHRwczovL3R3aXR0ZXIuY29tL290YTQyeSkKLSAyMDE5LTA4LTI0IC0gW1N3YWdnZXLjg4njgq3jg6Xjg6Hjg7Pjg4jjgYvjgolPcGVuQVBJIEdlbmVyYXRvcuOCkuS9v+OBo+OBpuODouODg+OCr+OCteODvOODkOODvOS9nOaIkF0oaHR0cHM6Ly9xaWl0YS5jb20vbWFzYXlvc2hpMDIyMi9pdGVtcy80ODQ1ZTRjNzE1ZDA0NTg3YzEwNCkgYnkgW+WdguacrOato+e+qV0oaHR0cHM6Ly9xaWl0YS5jb20vbWFzYXlvc2hpMDIyMikKLSAyMDE5LTA4LTI5IC0gW09wZW5BUEnliJ3mjqJdKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL2FydGljbGUvMTQ5NTk4NikgYnkgW3BlYWt4aWVdKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL3VzZXIvMTExMzE1MikgYXQgW+iFvuiur+S6keekvuWMul0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIpCi0gMjAxOS0wOC0yOSAtIFvlhajpnaLov5vljJbvvJpLdWJlcm5ldGVzIENSRCAxLjE2IEdB5YmN5567XShodHRwczovL3d3dy5zZXJ2aWNlbWVzaGVyLmNvbS9ibG9nL2t1YmVybmV0ZXMtMS4xNi1jcmQtZ2EtcHJldmlldy8pIGJ5IFtNaW4gS2ltXShodHRwczovL2dpdGh1Yi5jb20veXVlOTk0NDg4MikgYXQgW1NlcnZpY2VNZXNoZXIgQmxvZ10oaHR0cHM6Ly93d3cuc2VydmljZW1lc2hlci5jb20vYmxvZy8pCi0gMjAxOS0wOS0wMSAtIFtDcmVhdGluZyBhIFBIUC1TbGltIHNlcnZlciB1c2luZyBPcGVuQVBJIChZb3V0dWJlIHZpZGVvKV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj01Y0p0Yklyc1lrZykgYnkgW0RhbmllbCBQZXJzc29uXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDbkctVE4yM2xzd082UWJ2V2hNdHhwQSkKLSAyMDE5LTA5LTA2IC0gW1ZlcnQueCBhbmQgT3BlbkFQSV0oaHR0cHM6Ly93aXNzZWwubmV0L2Jsb2cvMjAxOS8wOS92ZXJ0eC1hbmQtb3BlbmFwaS5odG1sKSBieSBbU3RlcGhhbiBIIFdpc3NlbF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9ub3Rlc3NlbnNlaSkgYXQgW3dpc3NlbC5uZXQgYmxvZ10oaHR0cHM6Ly93aXNzZWwubmV0KQotIDIwMTktMDktMDkgLSBbQ2xvdWQtbmF0aXZlIGRldmVsb3BtZW50IC0gQ3JlYXRpbmcgUkVTVGZ1bCBtaWNyb3NlcnZpY2VzXShodHRwczovL2Nsb3VkLmlibS5jb20vZG9jcy9jbG91ZC1uYXRpdmU/dG9waWM9Y2xvdWQtbmF0aXZlLXJlc3QtYXBpKSBpbiBbSUJNIENsb3VkIERvY3NdKGh0dHBzOi8vY2xvdWQuaWJtLmNvbS9kb2NzKQotIDIwMTktMDktMTQgLSBbR2VuZXJhdGluZyBhbmQgQ29uZmlndXJpbmcgYSBNYXN0ZXJjYXJkIEFQSSBDbGllbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1hc3RlcmNhcmQuY29tL3BsYXRmb3JtL2RvY3VtZW50YXRpb24vZ2VuZXJhdGluZy1hbmQtY29uZmlndXJpbmctYS1tYXN0ZXJjYXJkLWFwaS1jbGllbnQvKSBhdCBbTWFzdGVyY2FyZCBEZXZlbG9wZXJzIFBsYXRmb3JtXShodHRwczovL2RldmVsb3Blci5tYXN0ZXJjYXJkLmNvbS9wbGF0Zm9ybS9kb2N1bWVudGF0aW9uLykKLSAyMDE5LTA5LTE1IC0gW09wZW5BUEkoU3dhZ2dlcinlsI7lhaXkuIvoqr/jgbldKGh0dHBzOi8vcWlpdGEuY29tL1Nob2ljaGlLdXJhb2thL2l0ZW1zL2YxZjdhM2MyMzc2ZjdjZDljNTZhKSBieSBbU2hvaWNoaSBLdXJhb2thXShodHRwczovL3FpaXRhLmNvbS9TaG9pY2hpS3VyYW9rYSkKLSAyMDE5LTA5LTE3IC0gW1R1dG9yaWFsOiBEb2N1bWVudGluZyBodHRwNGsgQVBJcyB3aXRoIE9wZW5BcGkzXShodHRwczovL3d3dy5odHRwNGsub3JnL3R1dG9yaWFscy9kb2N1bWVudGluZ19hcGlzX3dpdGhfb3BlbmFwaS8pIGJ5IFtodHRwNGtdKGh0dHBzOi8vd3d3Lmh0dHA0ay5vcmcvKQotIDIwMTktMDktMjIgLSBbT3BlbkFQSSAz44KS5a6M5YWo44Gr55CG6Kej44Gn44GN44KL5pysXShodHRwczovL2Jvb3RoLnBtL2phL2l0ZW1zLzE1NzE5MDIpIGJ5IFtAb3RhNDJ5XShodHRwczovL3R3aXR0ZXIuY29tL290YTQyeSkKLSAyMDE5LTA5LTIyIC0gW1JFU1RmdWwgQVBJczogVHV0b3JpYWwgb2YgT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL21lZGl1bS5jb20vQGFtaXJtLmxhdmFzYW5pL3Jlc3RmdWwtYXBpcy10dXRvcmlhbC1vZi1vcGVuYXBpLXNwZWNpZmljYXRpb24tZWVhZGEwZTM5MDFkKSBieSBbQW1pciBMYXZhc2FuaV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BhbWlybS5sYXZhc2FuaSkKLSAyMDE5LTA5LTIyIC0gW1JlZGVmaW5pbmcgU0RLcyBhcyBzb2Z0d2FyZSBkaXZlcnNpdHkga2l0c10oaHR0cHM6Ly9kZXZyZWwubmV0L2Rldi1yZWwvcmVkZWZpbmluZy1zZGtzLWFzLXNvZnR3YXJlLWRpdmVyc2l0eS1raXRzKSBieSBbU2lkIE1hZXN0cmUgKFhlcm8pXShodHRwczovL3R3aXR0ZXIuY29tL3NpZG5leWFsbGVuKSBhdCBbRGV2UmVsQ29uIFNhbiBGcmFuY2lzY28gMjAxOV0oaHR0cHM6Ly9zZjIwMTkuZGV2cmVsLm5ldC8pCi0gMjAxOS0wOS0yMyAtIFtzd2FnZ2Vy44GL44KJT3BlbkFwaSBHZW5lcmF0b3LjgadTcHJpbmfjga7jgrPjg7zjg4njgpLoh6rli5XnlJ/miJBdKGh0dHBzOi8vcWlpdGEuY29tL2xpdHRsZUZlZXQvaXRlbXMvNDkyZGYyYWQ2OGEwNzk5YTVlNWUpIGJ5IFtAbGl0dGxlRmVldF0oaHR0cHM6Ly9xaWl0YS5jb20vbGl0dGxlRmVldCkgYXQgW1FpaXRhXShodHRwczovL3FpaXRhLmNvbS8pCi0gMjAxOS0wOS0yNCAtIFtFaW5lIFN0dW5kZSB3YXMgbWl0IEFwaSBGaXJzdCFdKGh0dHBzOi8vd3d3LnNsaWRlc2hhcmUubmV0L0phbldlaW5zY2hlbmtlci9laW5lLXN0dW5kZS13YXMtbWl0LWFwaS1maXJzdCkgYnkgW0BqYW53ZWluc2NoZW5rZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vamFud2VpbnNjaGVua2VyKSBhdCBbSmF2YSBGb3J1bSBOb3JkXShodHRwczovL2phdmFmb3J1bW5vcmQuZGUvKQotIDIwMTktMTAtMDkgLSBbb3BlbmFwaS1nZW5lcmF0b3Ig44Gn55Sf5oiQ44GX44GfIEdvIOOCr+ODqeOCpOOCouODs+ODiOOBpyBCZWFyZXIg6KqN6Ki844KS44GZ44KLXShodHRwczovL2F1dG9wcC10ZWNoLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTkvMTAvMDkvMjIyMDM5KSBieSBbQWtpcmEgVGFuaW11cmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hdXRvcHApCi0gMjAxOS0xMC0xMCAtIFtBdXRvbWF0aWMgR2VuZXJhdGlvbiBvZiBSRVNUIENsaWVudHNdKGh0dHBzOi8vd3d3Lm1lZXR1cC5jb20vZnItRlIvQ3JpdGVvLUxhYnMtVGVjaC1UYWxrcy9ldmVudHMvMjY0Nzc1NzY4LykgYnkgVGhvbWFzIFBleXJhcmQsIFNlbmlvciBTb2Z0d2FyZSBFbmdpbmVlciBhdCBDcml0ZW8gaW4gW0Z1bGwtU3RhY2sgVGVjaCBUYWxrcyAoTWVldHVwKV0oaHR0cHM6Ly93d3cubWVldHVwLmNvbS9mci1GUi9Dcml0ZW8tTGFicy1UZWNoLVRhbGtzL2V2ZW50cy8yNjQ3NzU3NjgvKQotIDIwMTktMTAtMTIgLSBbT3BlbkFwaeiHquWKqOeUn+aIkGNsaWVudF0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d4aWQyNzk4MjI2L2FydGljbGUvZGV0YWlscy8xMDI1Mjc0NjcpIGJ5IFvpg5Hms73mtLJdKGh0dHBzOi8vbWUuY3Nkbi5uZXQvd3hpZDI3OTgyMjYpCi0gMjAxOS0xMC0xNiAtIFtIb3cgdG8gc2hpcCBBUElzIGZhc3Rlcj9dKGh0dHBzOi8vbWVkaXVtLmNvbS9AYWNjb3VudHNfNzYyMjQvaG93LXRvLXNoaXAtYXBpcy1mYXN0ZXItY2FiZWYyZjgxOWU0KSBieSBbU2ltb24gR3VpbGxpYW1zIEAgUG9uaUNvZGVdKGh0dHBzOi8vcG9uaWNvZGUuZGV2KQotIDIwMTktMTAtMjIgLSBbT3BlbkFQSSArIFNwcmluZyBCb290KEtvdGxpbinjgafjg5XjgqHjgqTjg6vjg4Djgqbjg7Pjg63jg7zjg4lBUEnjgpLkvZzmiJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL2Jvcm9ubmdvL2l0ZW1zLzRiNzhiOTI1MjYyMDlkYWVhZWU5KSBieSBbWXVraSBGdXJ1a2F3YV0oaHR0cHM6Ly90d2l0dGVyLmNvbS95dWtpX2Z1cnVrYXdhNSkKLSAyMDE5LTEwLTI0IC0gW01pY3JvcHJvZmlsZSBPcGVuQVBJIC0gQ29kZSBGaXJzdCBvciBEZXNpZ24gRmlyc3Q/XShodHRwczovL2dpdGh1Yi5jb20vcGUtc3QvYXBpZG9jcy9ibG9iL21hc3Rlci9NaWNyb1Byb2ZpbGUtT3BlbkFQSS1hbGwtc2xpZGVzLnBkZikgYnkgW1BldGVyIFtwyZvKg8mZXSBTdGVpbmVyXShodHRwczovL3R3aXR0ZXIuY29tL3Blc2NoZSkgYXQgW2VjbGlwc2Vjb24gRXVyb3BlIDIwMTldKGh0dHBzOi8vd3d3LmVjbGlwc2Vjb24ub3JnL2V1cm9wZTIwMTkvc2Vzc2lvbnMvbWljcm9wcm9maWxlLW9wZW5hcGktY29kZS1maXJzdC1vci1kZXNpZ24tZmlyc3QpCi0gMjAxOS0xMS0wNiAtIFtHZW5lcmF0aW5nIEFQSSBjbGllbnRzIGJhc2VkIG9uIE9wZW5BUEkgdjMgc3BlY2lmaWNhdGlvbnNdKGh0dHBzOi8vOThlbGVtZW50cy5jb20vYmxvZy9nZW5lcmF0aW5nLWFwaS1jbGllbnRzLWJhc2VkLW9uLW9wZW5hcGktdjMtc3BlY2lmaWNhdGlvbnMpIGJ5IFtEb21pbmlrIEphc3RyesSZYnNraSBAIDk4ZWxlbWVudHNdKGh0dHBzOi8vOThlbGVtZW50cy5jb20pCi0gMjAxOS0xMS0wNiAtIFtPcGVuQVBJ44KS5Yip55So44GX44Gm6Ieq5YmN44GuQVBJ44K144O844OQ44O8KFNpbmF0cmEp44KS56e75qSN44GX44Gf5pmC44Gu44Oh44OiXShodHRwczovL3FpaXRhLmNvbS9ZYXN1aGlyb0FCRS9pdGVtcy9jNzM5MjBlYWIyZDlkNmU5N2ZkOSkgYnkgW1lhc3VoaXJvIEFCRV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9ZYXN1aGlyb0FCRSkKLSAyMDE5LTExLTA3IC0gW0FQSSBGaXJzdCBkZXZlbG9wbWVudCB3aXRoIE9wZW5BUEkgLSBZb3Ugc2hvdWxkIHlvdSBwcmFjdGlzZSBpdCAhP10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1GOWlGM2ExWjhZOCkgYnkgW05pY2sgVmFuIEhvb2ZdKGh0dHBzOi8vd3d3Lm5pY2t2YW5ob29mLmNvbS8pIGF0IFtEZXZveHggQmVsZ2l1bSAyMDE5XShodHRwczovL2Rldm94eC5iZS8pCi0gMjAxOS0xMS0wOCAtIFtKSGlwc3RlciBiZXlvbmQgQ1JVRCAtIEFQSS1GaXJzdCBmb3IgRW50ZXJwcmlzZXMgYnkgRW5yaWNvIENvc3RhbnppXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW0yOEpGb3ZLUTIwKSBieSBbRW5yaWNvIENvc3RhbnppXShodHRwczovL3R3aXR0ZXIuY29tL2Vucmljb2Nvc3RhbnppKSBhdCBbSkhpcHN0ZXIgQ29uZiAyMDE5IGluIFBhcmlzXShodHRwczovL2poaXBzdGVyLWNvbmYuZ2l0aHViLmlvLykKLSAyMDE5LTExLTExIC0gW1R5cGVTY3JpcHQgUkVTVCBBUEnjgq/jg6njgqTjgqLjg7Pjg4hdKGh0dHBzOi8vcWlpdGEuY29tL3VuaHVycmllZC9pdGVtcy83Yjc0ZjdkM2M0MzU0NWRhZGQyYikgYnkgW0B1bmh1cnJpZWRdKGh0dHBzOi8vcWlpdGEuY29tL3VuaHVycmllZCkKLSAyMDE5LTExLTExIC0gW09uZSBTcGVjIHRvIFJ1bGUgdGhlbSBhbGwgLSBPcGVuQVBJIGluIEFjdGlvbl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1NTWF5X25odDhlYykgYnkgW0FuZHJlYXMgTGl0dF0oaHR0cHM6Ly9naXRodWIuY29tL2xpdHRsZHIpIGF0IFtjb2RlLnRhbGtzIDIwMTldKGh0dHBzOi8vd3d3LmNvZGV0YWxrcy5jb20vKQotIDIwMTktMTEtMTMgLSBbT3BlbkFQSSAzLjAgRWRpdG9yIEFuZCBHZW5lcmF0b3IgV2l0aCBBIFNwcmluZyBCb290IEV4YW1wbGVdKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vZGVzaWduLWFuZC1nZW5lcmF0ZS1hcGktY29kZS1mcm9tLW9wZW5hcGkpIGF0IFtTaW1wbHkgSG93XShodHRwczovL3NpbXBseS1ob3cuY29tLykKLSAyMDE5LTExLTE3IC0gW09wZW5BUEkgR2VuZXJhdG9yIFlvdVR1YmUgcGxheWxpc3RdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3BsYXlsaXN0P2xpc3Q9UEx0SnlIVk1kemZGNmZCa09VVjVWRFZFclAyM0NHZ0hJeSkgYXQgW1lvdVR1YmVdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tKQotIDIwMTktMTEtMjAgLSBbSW50cm9kdWN0aW9uIHRvIE9wZW5BUEldKGh0dHBzOi8vbm90aS5zdC9sb3JuYWphbmUvSHZESDdVL2ludHJvZHVjdGlvbi10by1vcGVuYXBpKSBieSBbTG9ybmEgTWl0Y2hlbGxdKGh0dHBzOi8vdHdpdHRlci5jb20vbG9ybmFqYW5lKSBhdCBbR09UTyBDb3BlbmhhZ2VuIDIwMTldKGh0dHBzOi8vZ290b2NwaC5jb20vMjAxOS8pCi0gMjAxOS0xMS0yMCAtIFtIb3cgdG8gR2VuZXJhdGUgQW5ndWxhciBjb2RlIGZyb20gT3BlbkFQSSBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly9kb3RuZXR0aG91Z2h0cy5uZXQvaG93LXRvLWdlbmVyYXRlLWFuZ3VsYXItY29kZS1mcm9tLW9wZW5hcGktc3BlY2lmaWNhdGlvbnMvKSBieSBBbnVyYWoKLSAyMDE5LTExLTIzIC0gW1N3YWdnZXIg44Gn44Gv44Gq44GEIE9wZW5BUEkgU3BlY2lmaWNhdGlvbiAzLjAg44Gr44KI44KLIEFQSSDjgrXjg7zjg5Djg7zplovnmbpdKGh0dHBzOi8vd3d3LnNsaWRlc2hhcmUubmV0L3RlY2hibG9neWFob28vc3dhZ2dlci1vcGVuYXBpLXNwZWNpZmljYXRpb24tMzAtYXBpKSBieSBbVGV0c3V5YSBNb3JpbW90b10oaHR0cHM6Ly9naXRodWIuY29tL3QyeSkgYXQgW0pKVUcgQ0NDIDIwMTkgRmFsbF0oaHR0cHM6Ly9jY2MyMDE5ZmFsbC5qYXZhLXVzZXJzLmpwLykKLSAyMDE5LTExLTI0IC0gW0FjY2VsZXJhdGUgRmx1dHRlciBkZXZlbG9wbWVudCB3aXRoIE9wZW5BUEkgYW5kIERhcnQgY29kZSBnZW5lcmF0aW9uXShodHRwczovL21lZGl1bS5jb20vQGlyaW5hc291dGh3ZWxsXzIyMC9hY2NlbGVyYXRlLWZsdXR0ZXItZGV2ZWxvcG1lbnQtd2l0aC1vcGVuYXBpLWFuZC1kYXJ0LWNvZGUtZ2VuZXJhdGlvbi0xZjE2ZjgzMjlhNmEpIGJ5IFtJcmluYSBTb3V0aHdlbGxdKGh0dHBzOi8vbWVkaXVtLmNvbS9AaXJpbmFzb3V0aHdlbGxfMjIwKQotIDIwMTktMTEtMjUgLSBbb3BlbmFwaS1nZW5lcmF0b3LjgafmiYvou73jgavjgrnjgr/jg5bjgrXjg7zjg5Djgajjgq/jg6njgqTjgqLjg7Pjg4jjga7nlJ/miJBdKGh0dHBzOi8vcWlpdGEuY29tL3BvY2hvcG9jaG8xMy9pdGVtcy84ZGI2NjJlMTkzNGZiMmI0MDhiOCkgYnkgW0Bwb2Nob3BvY2hvMTNdKGh0dHBzOi8vdHdpdHRlci5jb20vcG9jaG9wb2NobzEzKQotIDIwMTktMTEtMjYgLSBbQ29yZGFDb24gMjAxOSBIaWdobGlnaHRzOiBCcmFpZCBTZXJ2ZXIgYW5kIE9wZW5BUEkgR2VuZXJhdG9yIGZvciBDb3JkYSBDbGllbnQgQVBJ4oCZc10oaHR0cHM6Ly9ibG9nLmI5bGFiLmNvbS9jb3JkYWNvbi0yMDE5LWhpZ2hsaWdodHMtYnJhaWQtc2VydmVyLWFuZC1vcGVuYXBpLWdlbmVyYXRvci1mb3ItY29yZGEtZmxvd3MtYXBpLXMtZDI0MTc5Y2NiMjdjKSBieSBbQWRlbCBSdXN0dW1dKGh0dHBzOi8vYmxvZy5iOWxhYi5jb20vQGFkZWxyZXN0b20pIGF0IFtCOWxhYl0oaHR0cHM6Ly9ibG9nLmI5bGFiLmNvbS8pCi0gMjAxOS0xMi0wMyAtIFtBIFJvYWQgdG8gTGVzcyBDb2Rpbmc6IEF1dG8tR2VuZXJhdGUgQVBJTGlicmFyeV0oaHR0cHM6Ly93d3cuY29yZGEubmV0L2Jsb2cvYS1yb2FkLXRvLWxlc3MtY29kaW5nLWF1dG8tZ2VuZXJhdGUtYXBpbGlicmFyeS8pIGF0IFtDb3JkYSBCbG9nXShodHRwczovL3d3dy5jb3JkYS5uZXQvYmxvZy8pCi0gMjAxOS0xMi0wNCAtIFtBbmd1bGFy77yLTmVzdEpT77yLT3BlbkFQSe+8iFN3YWdnZXLvvInjgafjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgpLoppbph47jgavlhaXjgozjgZ/nkrDlooPjgpLogIPjgYjjgotdKGh0dHBzOi8vcWlpdGEuY29tL3RlcmFjeTU1L2l0ZW1zLzAzMjdjN2ExNzBlYzc3Mjk3MGM2KSBieSBb44Gm44KJ44GX44O8XShodHRwczovL3R3aXR0ZXIuY29tL3RlcmFjeTU1KQotIDIwMTktMTItMDUgLSBbQ29kZSBnZW5lcmF0aW9uIG9uIHRoZSBKYXZhIFZNXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9zdWxsaXMvY29kZS1nZW5lcmF0aW9uLW9uLXRoZS1qYXZhLXZtLTIwMTktMTItMDUpIGJ5IFtTZWFuIFN1bGxpdmFuXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9zdWxsaXMpCi0gMjAxOS0xMi0xNyAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgT0F1dGgyIOOCouOCr+OCu+OCueODiOODvOOCr+ODs+eZuuihjOOBruOCs+ODvOODieOBvuOBp+eUn+aIkOOBl+OBpuOBv+OCi10oaHR0cHM6Ly93d3cudGVjaHNjb3JlLmNvbS9ibG9nLzIwMTkvMTIvMTcvb3BlbmFwaS1nZW5lcmF0b3Itb2F1dGgyLWFjY2Vzc3Rva2VuLykgYnkgW1RFQ0hTQ09SRV0oaHR0cHM6Ly93d3cudGVjaHNjb3JlLmNvbS9ibG9nLykKLSAyMDE5LTEyLTIzIC0gW1VzZSBBZGEgZm9yIFlvdXIgV2ViIERldmVsb3BtZW50XShodHRwczovL3d3dy5lbGVjdHJvbmljZGVzaWduLmNvbS90ZWNobm9sb2dpZXMvZW1iZWRkZWQtcmV2b2x1dGlvbi9hcnRpY2xlLzIxMTE5MTc3L3VzZS1hZGEtZm9yLXlvdXItd2ViLWRldmVsb3BtZW50KSBieSBbU3RlcGhhbmUgQ2FycmV6XShodHRwczovL2dpdGh1Yi5jb20vc3RjYXJyZXopCi0gMjAxOS0xMi0yMyAtIFtPcGVuQVBJ44Gu44K544Kt44O844Oe44KS5YiG5Ymy44O75qeL6YCg5YyW44GX44Gm44GE44GP5pa55rOVXShodHRwczovL2dpZnQtdGVjaC5jby5qcC9hcnRpY2xlcy9zdHJ1Y3R1cmVkLW9wZW5hcGktc2NoZW1hKSBieSBb5bCP6aOv5aGa6YGU5LmfXShodHRwczovL2dpdGh1Yi5jb20vdDJoNSkgYXQgW0dpRlQsIEluY10oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvKQotIDIwMjAtMDEtMTcgLSBbT3BlbkFQSSBkZW1vIGZvciBQdWxwIDMuMCBHQV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1tRkJQLU0wWlBmdyZ0PTE3OHMpIGJ5IFtQdWxwXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDSTQzRmZzNFZQRHY3YXdYdnZCSmZSUSkgYXQgW1lvdXR1YmVdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tLykKLSAyMDIwLTAxLTE5IC0gW1doeSBkb2N1bWVudCBhIFJFU1QgQVBJIGFzIGNvZGU/XShodHRwczovL2Rldi50by9yb2xmc3RyZWVma2Vyay93aHktZG9jdW1lbnQtYS1yZXN0LWFwaS1hcy1jb2RlLTVlN3ApIGJ5IFtSb2xmIFN0cmVlZmtlcmtdKGh0dHBzOi8vZ2l0aHViLmNvbS9ycHN0cmVlZikgYXQgW0RFViBDb21tdW5pdHldKGh0dHBzOi8vZGV2LnRvKQotIDIwMjAtMDEtMjggLSBbR2V0IFlvdXIgU2VydmVybGVzcyBTd2FnZ2VyIEJhY2sgd2l0aCBPcGVuQVBJXShodHRwczovL2Rldi50by9tYXR0dHlsZXIvZ2V0LXlvdXItc2VydmVybGVzcy1zd2FnZ2VyLWJhY2std2l0aC1vcGVuYXBpLTQ4Z2MpIGJ5IFtNYXR0IFR5bGVyXShodHRwczovL2Rldi50by9tYXR0dHlsZXIpCi0gMjAyMC0wMS0zMCAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBuOOBruOCs+ODs+ODiOODquODk+ODpeODvOODiF0oaHR0cHM6Ly93d3cueXV0YWthMG0ud29yay9lbnRyeS8yMDIwLzAxLzMwLzE2MzkwNSkgYnkgW3l1dGFrYTBtXShodHRwczovL2dpdGh1Yi5jb20veXV0YWthMG0pCi0gMjAyMC0wMi0wMSAtIFtVc2luZyBPcGVuQVBJIHRvIE1heGltaXNlIFlvdXIgUHVscCAzIEV4cGVyaWVuY2VdKGh0dHBzOi8vZm9zZGVtLm9yZy8yMDIwL3NjaGVkdWxlL2V2ZW50L29wZW5hcGkvKSBieSBbRGVubmlzIEtsaWJhbl0oaHR0cHM6Ly9naXRodWIuY29tL2RrbGliYW4vKSBhdCBbRk9TREVNXShodHRwczovL2Zvc2RlbS5vcmcvKQotIDIwMjAtMDItMDcgLSBbV2h5IHlvdSBzaG91bGQgdXNlIE9wZW5BUEkgZm9yIHlvdXIgQVBJIGRlc2lnbl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj16aGI3dlVBcExXOCZ0PTkyN3MpIGJ5IFtOaWNrIFZhbiBIb29mXShodHRwczovL2FwaWNvbmZlcmVuY2UubmV0L3NwZWFrZXIvbmljay12YW4taG9vZi8pIGF0IFtBUEkgQ29uZmVyZW5jZV0oaHR0cHM6Ly9hcGljb25mZXJlbmNlLm5ldC8pCi0gMjAyMC0wMi0xNyAtIFtSdWJ5bmV0ZXM6IHVzaW5nIE9wZW5BUEkgdG8gdmFsaWRhdGUgS3ViZXJuZXRlcyBjb25maWdzXShodHRwczovL3d3dy5icmlnaHRib3guY29tL2Jsb2cvMjAyMC8wMi8xNy91c2luZy1vcGVuYXBpLXRvLXZhbGlkYXRlLWt1YmVybmV0ZXMtY29uZmlncy8pIGJ5IE5laWwgV2lsc29uIGF0IFtCcmlnaHRib3hdKGh0dHBzOi8vd3d3LmJyaWdodGJveC5jb20vKQotIDIwMjAtMDItMjAgLSBbQnVpbGRpbmcgU0RLcyBmb3IgdGhlIGZ1dHVyZV0oaHR0cHM6Ly9kZXZibG9nLnhlcm8uY29tL2J1aWxkaW5nLXNka3MtZm9yLXRoZS1mdXR1cmUtYjc5ZmY3MjZkZmQ2KSBieSBbU2lkIE1hZXN0cmUgKFhlcm8pXShodHRwczovL3R3aXR0ZXIuY29tL3NpZG5leWFsbGVuKQotIDIwMjAtMDItMjcgLSBbTnV4dOWIqeeUqOODl+ODreODgOOCr+ODiOOBp0lFMTHjgajku7Loia/jgY/jgZnjgovjgZ/jgoHjga5FMkVdKGh0dHBzOi8vdGVjaC5tZWRwZWVyLmNvLmpwL2VudHJ5L2UyZS1pZTExKSBhdCBbTWVkcGVlci5jby5qcCBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaC5tZWRwZWVyLmNvLmpwLykKLSAyMDIwLTAyLTI5IC0gW1Byb3ZpZGluZyBTdXBwb3J0IHRvIElvVCBEZXZpY2VzIERlcGxveWVkIGluIERpc2Nvbm5lY3RlZCBSdXJhbCBFbnZpcm9ubWVudCAoQ29uZmVyZW5jZSBwYXBlcildKGh0dHBzOi8vbGluay5zcHJpbmdlci5jb20vY2hhcHRlci8xMC4xMDA3Lzk3OC0zLTAzMC00MTQ5NC04XzE0KSBieSBTZXJnaW8gTGFzbywgRGFuaWVsIEZsb3Jlcy1NYXJ0w61uLCBKdWFuIEx1aXMgSGVycmVyYUNhcmxvcywgQ2FuYWxKdWFuIE1hbnVlbCwgTXVyaWxsb0phdmllciBCZXJyb2NhbAotIDIwMjAtMDMtMDIgLSBbSG93IFRvIEdlbmVyYXRlIEFuZ3VsYXIgJiBTcHJpbmcgQ29kZSBGcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly93d3cubW9ra2FwcHMuZGUvYmxvZy9ob3ctdG8tZ2VuZXJhdGUtYW5ndWxhci1hbmQtc3ByaW5nLWNvZGUtZnJvbS1vcGVuLWFwaS1zcGVjaWZpY2F0aW9uLykgYnkgW01pY2hhZWwgSG9mZm1hbm5dKGh0dHBzOi8vd3d3Lm1va2thcHBzLmRlLykKLSAyMDIwLTAzLTAyIC0gW09wZW5BUEkgR2VuZXJhdG9yICsgVHlwZVNjcmlwdCDjgaflp4vjgoHjgovoh6rli5XnlJ/miJDjga7lnovjgavlrojjgonjgozjgZ/osYrjgYvjgarjgq/jg6njgqTjgqLjg7Pjg4jnlJ/mtLtdKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL2FydGljbGVzL29wZW5hcGktZ2VuZXJhdG9yLXR5cGVzY3JpcHQpIGJ5IFvkupTnmb7olLUg55u05qi5XShodHRwczovL2dpZnQtdGVjaC5jby5qcC9tZW1iZXJzL25hb2tpaW9yb2kpIGF0IFtHaUZU5qCq5byP5Lya56S+XShodHRwczovL2dpZnQtdGVjaC5jby5qcC8pCi0gMjAyMC0wMy0xMCAtIFtPcGVuQVBJIEdlbmVyYXRvciBNZWV0dXAgIzFdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL2FraWhpdG9fbmFrYW5vL29wZW5hcGktZ2VuZXJhdG9yLW1lZXR1cC1udW1iZXItMSkgYnkgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkgYXQgW09wZW5BUEkgR2VuZXJhdG9yIE1lZXR1cCAjMV0oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci1tZWV0dXAuY29ubnBhc3MuY29tL2V2ZW50LzE2ODE4Ny8pCi0gMjAyMC0wMy0xNSAtIFtMb2FkIFRlc3RpbmcgWW91ciBBUEkgd2l0aCBTd2FnZ2VyL09wZW5BUEkgYW5kIGs2XShodHRwczovL2s2LmlvL2Jsb2cvbG9hZC10ZXN0aW5nLXlvdXItYXBpLXdpdGgtc3dhZ2dlci1vcGVuYXBpLWFuZC1rNikKLSAyMDIwLTA0LTEzIC0gW+S/uueahOOAkE9BU+OAkeOBqOOBruWQkeOBjeWQiOOBhOaWuSAo54iG6YCf44GnT3BlbkFQSeOBqOWPi+mBlOOBq+OBquOCjeOBhildKGh0dHBzOi8vdGVjaC1ibG9nLm9wdGltLmNvLmpwL2VudHJ5LzIwMjAvMDQvMTMvMTAwMDAwKSBpbiBbT1BUaW0gQmxvZ10oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvKQotIDIwMjAtMDQtMjIgLSBbSW50cm9kdWN0aW9uIHRvIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL25vcmRpY2FwaXMuY29tL2ludHJvZHVjdGlvbi10by1vcGVuYXBpLWdlbmVyYXRvci8pIGJ5IFtLcmlzdG9waGVyIFNhbmRvdmFsXShodHRwczovL25vcmRpY2FwaXMuY29tL2F1dGhvci9zYW5kb3ZhbGVmZmVjdC8pIGluIFtOb3JkaWMgQVBJc10oaHR0cHM6Ly9ub3JkaWNhcGlzLmNvbS8pCi0gMjAyMC0wNC0yNyAtIFtIb3cgd2UgdXNlIE9wZW4gQVBJIHYzIHNwZWNpZmljYXRpb24gdG8gYXV0by1nZW5lcmF0ZSBBUEkgZG9jdW1lbnRhdGlvbiwgY29kZS1zbmlwcGV0cyBhbmQgY2xpZW50c10oaHR0cHM6Ly9tZWRpdW0uY29tL3BkZi1nZW5lcmF0b3ItYXBpL2hvdy13ZS11c2Utb3Blbi1hcGktdjMtc3BlY2lmaWNhdGlvbi10by1hdXRvLWdlbmVyYXRlLWFwaS1kb2N1bWVudGF0aW9uLWNvZGUtc25pcHBldHMtYW5kLWNsaWVudHMtZDEyN2EzY2VhNzg0KSBieSBbVGFuZWwgVMOkaGVww7VsZF0oaHR0cHM6Ly9tZWRpdW0uY29tL0B0YW5lbC50YWhlcG9sZCkKLSAyMDIwLTA1LTA5IC0gW09wZW5BUEnjgafjgYrmiYvou73jgavjg6Ljg4Pjgq9BUEnjgrXjg7zjg5Djg7zjgpLli5XjgYvjgZldKGh0dHBzOi8vcWlpdGEuY29tL2thc2FfbGUvaXRlbXMvOTdjYTZhOGRkNDYwNTY5NWMyNWMpIGJ5IFtTYWNoaWUgS2FtYmFdKGh0dHBzOi8vcWlpdGEuY29tL2thc2FfbGUpCi0gMjAyMC0wNS0xOCAtIFtTcHJpbmcgQm9vdCBSRVNUIHdpdGggT3BlbkFQSSAzXShodHRwczovL2Rldi50by9hbGZvbnpqYW5mcml0aHovc3ByaW5nLWJvb3QtcmVzdC13aXRoLW9wZW5hcGktMy01OWptKSBieSBbQWxmb256IEphbiBGcml0aHpdKGh0dHBzOi8vZGV2LnRvL2FsZm9uemphbmZyaXRoeikKLSAyMDIwLTA1LTE5IC0gW0RlYWQgU2ltcGxlIEFQSXMgd2l0aCBPcGVuIEFQSV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1zSWFYbVI2eFJBdykgYnkgW0NocmlzIFRhbmtlcnNsZXldKGh0dHBzOi8vZ2l0aHViLmNvbS9kcmFnb25tYW50YW5rKSBhdCBbTmV4bW9dKGh0dHBzOi8vZGV2ZWxvcGVyLm5leG1vLmNvbS8pCi0gMjAyMC0wNS0yMiAtIFtUeXBlU2NyaXB0IFJFU1QgQVBJIENsaWVudF0oaHR0cHM6Ly9kZXYudG8vdW5odXJyaWVkL3R5cGVzY3JpcHQtcmVzdC1hcGktY2xpZW50LTRpbjMpIGJ5IFsidW5odXJyaWVkIl0oaHR0cHM6Ly9kZXYudG8vdW5odXJyaWVkKQotIDIwMjAtMDUtMjggLSBb44CQ5L2/55SoIGxvdGlmeSArIFN3YWdnZXIg5bu6572u5Y+v5YWx55So55qEIExJTkUgTm90aWZ5IGJvdOOAkSAtICNOaUppYSBAIENoYXRib3QgRGV2ZWxvcGVyIFRhaXdhbiDnrKwgIzE5IOWwj+iBml0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1hZ1lWejZkemgxSSkgYnkgW0NoYXRib3QgRGV2ZWxvcGVyIFRhaXdhbl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vY2hhbm5lbC9VQ3hlWVV5Wk5uSG1wWDIzWU5GLWV3dncpCi0gMjAyMC0wNS0yOCAtIFtCdWlsZGluZyBBUElzIHdpdGggTGFyYXZlbCB1c2luZyBPcGVuQVBJXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXhleEx2UXFBaGlBKSBieSBbQ2hyaXMgVGFua2Vyc2xleV0oaHR0cHM6Ly9naXRodWIuY29tL2RyYWdvbm1hbnRhbmspIGF0IFtMYXJhY29uIEVVXShodHRwczovL2xhcmFjb24uZXUvKQotIDIwMjAtMDYtMTIgLSBbSW50ZXJvcGVyYWJpbGl0eSBieSBjb25zdHJ1Y3Rpb246IGNvZGUgZ2VuZXJhdGlvbiBmb3IgQXJyb3doZWFkIENsaWVudHNdKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC85Mjc0NzQ2KSBieSBNaWNoZWxlIEFsYmFubywgQnJpYW4gTmllbHNlbiBhdCBbMjAyMCBJRUVFIENvbmZlcmVuY2Ugb24gSW5kdXN0cmlhbCBDeWJlcnBoeXNpY2FsIFN5c3RlbXMgKElDUFMpXShodHRwczovL2llZWV4cGxvcmUuaWVlZS5vcmcveHBsL2NvbmhvbWUvOTI3NDU0NC9wcm9jZWVkaW5nKQotIDIwMjAtMDYtMjMgLSBb5paw6KaP44K144O844OQ44O844Ki44OX44Oq44Kx44O844K344On44Oz44GrVHlwZVNjcmlwdOOCkuaOoeeUqOOBl+OBpuOBv+OBn10oaHR0cHM6Ly93d3cuY2FtLWluYy5jby5qcC9uZXdzLzIwMjAwNjIzKSBhdCBbQ0FNIFRlY2ggQmxvZ10oaHR0cHM6Ly93d3cuY2FtLWluYy5jby5qcC9uZXdzL3RlY2gtYmxvZy8pCi0gMjAyMC0wNi0yOSAtIFtBcnRpZmFjdCBBYnN0cmFjdDogRGVwbG95bWVudCBvZiBBUElzIG9uIEFuZHJvaWQgTW9iaWxlIERldmljZXMgYW5kIE1pY3JvY29udHJvbGxlcnNdKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC85MTI3MzUzKSBieSBbU2VyZ2lvIExhc28gOyBNYXJpbm8gTGluYWplIDsgSm9zZSBHYXJjaWEtQWxvbnNvIDsgSnVhbiBNLiBNdXJpbGxvIDsgSmF2aWVyIEJlcnJvY2FsXShodHRwczovL2llZWV4cGxvcmUuaWVlZS5vcmcvZG9jdW1lbnQvOTEyNzM1My9hdXRob3JzI2F1dGhvcnMpIGF0IFsyMDIwIElFRUUgSW50ZXJuYXRpb25hbCBDb25mZXJlbmNlIG9uIFBlcnZhc2l2ZSBDb21wdXRpbmcgYW5kIENvbW11bmljYXRpb25zIChQZXJDb20pXShodHRwczovL2llZWV4cGxvcmUuaWVlZS5vcmcveHBsL2NvbmhvbWUvOTEyNTQ0OS9wcm9jZWVkaW5nKQotIDIwMjAtMDctMDcgLSBbNSBCZXN0IEFQSSBEb2N1bWVudGF0aW9uIFRvb2xzXShodHRwczovL2Jsb2cuZHJlYW1mYWN0b3J5LmNvbS81LWJlc3QtYXBpLWRvY3VtZW50YXRpb24tdG9vbHMvKSBieSBTdXNhbm5hIEJvdXNlIGF0IFtEcmVhbUZhY3RvcnkgQmxvZ10oaHR0cHM6Ly9ibG9nLmRyZWFtZmFjdG9yeS5jb20vKQotIDIwMjAtMDctMTIgLSBbT3BlbiBBUEkgMy4w44Gu5a6a576p44GL44KJZ29sYW5n44Gu44K144O844OQ44Kz44O844OJ44Gu44K544Kx44Or44OI44Oz44KS5L2c5oiQ44GZ44KLXShodHRwczovL3FpaXRhLmNvbS9wcm9mZXNzb3IvaXRlbXMvNGNiZDA0ZWMwODRkMTMwNTdiYzIpIGJ5IFtAcHJvZmVzc29yIChRaWl0YSBCbG9nKV0oaHR0cHM6Ly9xaWl0YS5jb20vcHJvZmVzc29yKQotIDIwMjAtMDctMjAgLSBbRGF0YWRvZyBBUEkgY2xpZW50IGxpYnJhcmllcyBub3cgYXZhaWxhYmxlIGZvciBKYXZhIGFuZCBHb10oaHR0cHM6Ly93d3cuZGF0YWRvZ2hxLmNvbS9ibG9nL2phdmEtZ28tbGlicmFyaWVzLykgYnkgSm9yZGFuIE9iZXkgYXQgW0RhdGFkb2cgQmxvZ10oaHR0cHM6Ly93d3cuZGF0YWRvZ2hxLmNvbS9ibG9nKQotIDIwMjAtMDctMjMgLSBbR2VuZXJhdGUgQ2xpZW50IFNESyBmb3IgLk5FVCBDb3JlIHVzaW5nIE9wZW4gQXBpXShodHRwczovL2Rldi50by9ubzBsYXcxL2dlbmVyYXRlLWNsaWVudC1zZGstZm9yLW5ldC1jb3JlLXVzaW5nLW9wZW4tYXBpLTJkZ2gpIGJ5IFtOdW5vIFJlaXNdKGh0dHBzOi8vZGV2LnRvL25vMGxhdzEpCi0gMjAyMC0wNy0yNiAtIFtEYXJ044GuaHR0cF9pbnRlcmNlcHRvcuODqeOCpOODluODqeODquOCkuS9v+OBhuOBqOmFjeWIl+OBruOCr+OCqOODquODkeODqeODoeODvOOCv+OBjOa2iOOBiOOBpuOBl+OBvuOBhuS7tuOBruW/nOaApeWHpue9rl0oaHR0cHM6Ly9xaWl0YS5jb20vZ3lhbW90by9pdGVtcy9lZWVmZjgxYjY3NzA0ODczMTllZCkgYnkgW0BneWFtb3RvXShodHRwczovL3FpaXRhLmNvbS9neWFtb3RvKQotIDIwMjAtMDgtMDEgLSBbR2VuZXJhdGUgQW5ndWxhciBSZWFjdGl2ZUZvcm1zIGZyb20gU3dhZ2dlci9PcGVuQVBJXShodHRwczovL2Rldi50by9tYXJ0aW5tY3dob3J0ZXIvZ2VuZXJhdGUtYW5ndWxhci1yZWFjdGl2ZWZvcm1zLWZyb20tc3dhZ2dlci1vcGVuYXBpLTM1aDkpIGJ5IFtNYXJ0aW4gTWNXaG9ydGVyXShodHRwczovL2Rldi50by9tYXJ0aW5tY3dob3J0ZXIpCi0gMjAyMC0wOC0wMyAtIFtDcmlhbmRvIEJpYmxpb3RlY2FzIHBhcmEgQVBJcyBSRVNUZnVsIGNvbSBPcGVuQVBJLCBTd2FnZ2VyIEVkaXRvciBlIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL21lZGl1bS5jb20vQGV2ZXJpc0JyYXNpbC9jcmlhbmRvLWJpYmxpb3RlY2FzLXBhcmEtYXBpcy1yZXN0ZnVsLWNvbS1vcGVuYXBpLXN3YWdnZXItZWRpdG9yLWUtb3BlbmFwaS1nZW5lcmF0b3ItNzUzNDlhNjQyMGZkKSBieSBbZXZlcmlzIEJyYXNpbCAoYW4gTlRUIERBVEEgQ29tcGFueSldKGh0dHBzOi8vbWVkaXVtLmNvbS9AZXZlcmlzQnJhc2lsKQotIDIwMjAtMDgtMTkgLSBb44Oe44Kk44Kv44Ot44K144O844OT44K544KS6YCj5pC644GX44Gm44G/44KI44GGXShodHRwczovL3RoaW5raXQuY28uanAvYXJ0aWNsZS8xNzcwNCkgYnkgW+WyoeS6lSDoo5Xnn6Io44GK44GL44GEIOOChuOBhuOChCldKGh0dHBzOi8vdGhpbmtpdC5jby5qcC9hdXRob3IvMTc1ODgpLCBb5rOJIOWLnSjjgYTjgZrjgb8g44G+44GV44KLKV0oaHR0cHM6Ly90aGlua2l0LmNvLmpwL2F1dGhvci8xNzcwNSkgYXQgW1RoaW5rIElU77yI44K344Oz44Kv44Kk44OD44OI77yJXShodHRwczovL3RoaW5raXQuY28uanAvKQotIDIwMjAtMDgtMjUgLSBbT3BlbkFQSSBHZW5lcmF0b3Ig44GoIFR5cGVTY3JpcHQg44Gn5Z6L5a6J5YWo44Gr44OV44Ot44Oz44OI44Ko44Oz44OJ6ZaL55m644KS44GX44Gm44GE44KL6KmxXShodHRwczovL3RlY2guc21hcnRoci5qcC9lbnRyeS8yMDIwLzA4LzI1LzEzNTYzMSkgYXQgW1NtYXJ0SFIgVGVjaCBCbG9nXShodHRwczovL3RlY2guc21hcnRoci5qcC8pCi0gMjAyMC0wOS0xMCAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSSB3aXRoIEluc3RhbmFdKGh0dHBzOi8vd3d3Lmluc3RhbmEuY29tL2Jsb2cvaW50cm9kdWN0aW9uLXRvLW9wZW5hcGktd2l0aC1pbnN0YW5hLykgYnkgW0NlZHJpYyBaaWVsXShodHRwczovL3d3dy5pbnN0YW5hLmNvbS9ibG9nL2F1dGhvci9jZWRyaWN6aWVsLykgYXQgW0luc3RhbmEgQmxvZ10oaHR0cHM6Ly93d3cuaW5zdGFuYS5jb20vYmxvZy8pCi0gMjAyMC0wOS0xNyAtIFtHZW5lcmF0ZSBQb3dlclNoZWxsU0RLIHVzaW5nIG9wZW5hcGktZ2VuZXJhdG9yXShodHRwczovL21lZGl1bS5jb20vQGdodWZ6LmxlYXJuL2dlbmVyYXRlLXBvd2Vyc2hlbGxzZGstdXNpbmctb3BlbmFwaS1nZW5lcmF0b3ItMzNiNzAwODkxZTMzKSBieSBbR2h1ZnJhbiBaYWhpZGldKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2h1ZnoubGVhcm4pCi0gMjAyMC0wOS0yNCAtIFtIb3cgdG8gYXV0b21hdGUgQVBJIGNvZGUgZ2VuZXJhdGlvbiAoT3BlbkFQSS9Td2FnZ2VyKSBhbmQgYm9vc3QgcHJvZHVjdGl2aXR5IC0gVHV0b3JpYWwgd2l0aCBSZWFjdCBOYXRpdmUgZmVhdHVyaW5nIFR5cGVTY3JpcHRdKGh0dHBzOi8vbWVkaXVtLmNvbS9Ac2NlbGVza2kvaG93LXRvLWF1dG9tYXRlLWFwaS1jb2RlLWdlbmVyYXRpb24tb3BlbmFwaS1zd2FnZ2VyLWFuZC1ib29zdC1wcm9kdWN0aXZpdHktMTE3NmEwMDU2ZDhhKSBieSBbU2FuamluIENlbGVza2ldKGh0dHBzOi8vbWVkaXVtLmNvbS9Ac2NlbGVza2kpCi0gMjAyMC0wOS0yNSAtIFtHZW5lcmF0ZSBPcGVuQVBJIEFuZ3VsYXIgQ2xpZW50XShodHRwczovL21lZGl1bS5jb20vQHBndXNvL2dlbmVyYXRlLW9wZW5hcGktYW5ndWxhci1jbGllbnQtOGM5Mjg4ZThiYmQ0KSBieSBbUGF0cmljXShodHRwczovL21lZGl1bS5jb20vQHBndXNvKQotIDIwMjAtMTAtMjQgLSBbV29ya2luZyB3aXRoIE1pY3Jvc29mdCBJZGVudGl0eSAtIFJlYWN0IE5hdGl2ZSBDbGllbnRdKGh0dHBzOi8vd3d3Lmpvc2VwaGd1YWRhZ25vLm5ldC8yMDIwLzEwLzI0L3dvcmtpbmctd2l0aC1taWNyb3NvZnQtaWRlbnRpdHktcmVhY3QtbmF0aXZlLWNsaWVudCkgYnkgW0pvc2VwaCBHdWFkYWdub10oaHR0cHM6Ly93d3cuam9zZXBoZ3VhZGFnbm8ubmV0LykKLSAyMDIwLTEwLTMxIC0gW1tCMl0gT3BlbkFQSSBTcGVjaWZpY2F0aW9u7Jy866GcIO2DgOyehS3shLjsnbTtlITtlZjqsowgQVBJIOqwnOuwnO2VmOq4sDog7Z2s66ed7Y64IFZTIOygiOunne2OuF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1KNEpITEVTQWlGaykgYnkg7LWc7YOc6rG0IGF0IFtGRUNvbmYgMjAyMF0oaHR0cHM6Ly8yMDIwLmZlY29uZi5rci8pCi0gMjAyMC0xMS0wNSAtIFtBdXRvbWF0ZWQgUkVTVC1BcGkgQ29kZSBHZW5lcmF0aW9uOiBXaWUgSVQtU3lzdGVtZSBtaXRlaW5hbmRlciBzcHJlY2hlbl0oaHR0cHM6Ly93d3cubWFzc2l2ZWFydC5jb20vYmxvZy9hdXRvbWF0ZWQtcmVzdC1hcGktY29kZS1nZW5lcmF0aW9uLXdpZS1pdC1zeXN0ZW1lLW1pdGVpbmFuZGVyLXNwcmVjaGVuKSBieSBTdGVmYW4gUm90dGVuc3RlaW5lciBhdCBbTUFTU0lWRSBBUlQgQmxvZ10oaHR0cHM6Ly93d3cubWFzc2l2ZWFydC5jb20vYmxvZykKLSAyMDIwLTEyLTAxIC0gW09wZW5BUEkgR2VuZXJhdG9y44GnR2/jga5BUEnjgrXjg7zjg5Djg7wv44Kv44Op44Kk44Ki44Oz44OI44Kz44O844OJ44KS6Ieq5YuV55Sf5oiQ44GZ44KLXShodHRwczovL3FpaXRhLmNvbS9zYWtpLWVuZ2luZWVyaW5nL2l0ZW1zL2IyMGQ4YjYwNzRjNGRhOTY2NGE1KSBieSBbQHNha2ktZW5naW5lZXJpbmddKGh0dHBzOi8vcWlpdGEuY29tL3Nha2ktZW5naW5lZXJpbmcpCi0gMjAyMC0xMi0wNCAtIFtTY2FsaW5nIHRoZSBUZXN0IENvdmVyYWdlIG9mIE9wZW5BUEkgR2VuZXJhdG9yIGZvciAzMCsgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTdMa2U5ZEhScVQwKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly9naXRodWIuY29tL3dpbmczMjgpIGF0IFtPcGVuIFNvdXJjZSBTdW1taXQgSmFwYW4gKyBBdXRvbW90aXZlIExpbnV4IFN1bW1pdCAyMDIwXShodHRwczovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2FyY2hpdmUvMjAyMC9vcGVuLXNvdXJjZS1zdW1taXQtamFwYW4vKSAoW1NsaWRlc10oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vd2luZzMyOC9zY2FsaW5nLXRoZS10ZXN0LWNvdmVyYWdlLW9mLW9wZW5hcGktZ2VuZXJhdG9yLWZvci0zMC1wbHVzLXByb2dyYW1taW5nLWxhbmd1YWdlcykpCi0gMjAyMC0xMi0wOSAtIFvjg5fjg63jgrjjgqfjgq/jg4jjgatPcGVuQVBJIEdlbmVyYXRvcuOBp+iHquWLleeUn+aIkOOBleOCjOOBn+Wei+S7mOOBjUFQSSBDbGllbnTjgpLlsI7lhaXjgZfjgZ/oqbFdKGh0dHBzOi8vcWlpdGEuY29tL3lvc2hpZnVqaVQvaXRlbXMvOTA1YzE4NzAwZWRlMjNmNDA4NDApIGJ5IFtAeW9zaGlmdWppVF0oaHR0cHM6Ly9naXRodWIuY29tL3lvc2hpZnVqaVQpCi0gMjAyMC0xMi0xNSAtIFtOZXh0LmpzICsgTmVzdEpTICsgR3JhcGhRTOOBp+WkieWMluOBq+i/veW+k+OBmeOCi+ODleODreODs+ODiOOCqOODs+ODieOBuCDjgJwg44K344On44OD44OU44Oz44Kw44Kv44O844Od44Oz44Gu5LqL5L6L57S55LuLXShodHRwczovL3RlY2hibG9nLnlhaG9vLmNvLmpwL2VudHJ5LzIwMjAxMjE1MzAwNTI5NTIvKSBieSBb5bCP5YCJIOmZuF0oaHR0cHM6Ly9naXRodWIuY29tL29ndWd1OSkgYXQgW1lhaG9vISBKQVBBTiBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaGJsb2cueWFob28uY28uanAvKQotIDIwMjEtMDEtMDggLSBbSGVsbG8sIE5ldyBBUEkg4oCTIFBhcnQgMV0oaHR0cHM6Ly93d3cubmdpbnguY29tL2Jsb2cvaGVsbG8tbmV3LWFwaS1wYXJ0LTEvKSBieSBbSmVyZW15IFNjaHVsbWFuXShodHRwczovL3d3dy5uZ2lueC5jb20vcGVvcGxlL2plcmVteS1zY2h1bG1hbi8pIGF0IFtNYWpvciBMZWFndWUgQmFzZWJhbGxdKGh0dHBzOi8vd3d3Lm1sYi5jb20pCi0gMjAyMS0wMS0xOCAtIFvjgIzjgqLjg5fjg6rplovnmbrjgYLjgovjgYLjgovjgI3jgpLnlpHjgYbjgZPjgajjgYvjgonlp4vjgb7jgaPjgZ/jgIFBUEkgQ2xpZW5044Kz44O844OJ44Gu6Ieq5YuV55Sf5oiQ44CQ44OH44OW44K544OIMjAyMOOAkV0oaHR0cHM6Ly9jb2RlemluZS5qcC9hcnRpY2xlL2RldGFpbC8xMzQwNj9wPTIpIGJ5IFtDb2RlWmluZee3qOmbhumDqF0oaHR0cHM6Ly9jb2RlemluZS5qcC9hdXRob3IvMSkKLSAyMDIxLTAyLTA1IC0gW1JFU1QtQVBJLVJvdW5kdHJpcCB3aXRoIFNwcmluZ0RvYyBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYmxvZy52aWFkZWUuZGUvZW4vcmVzdC1hcGktcm91bmR0cmlwKSBieSBbQmVuamFtaW4gS2xhdHRdKGh0dHBzOi8vdHdpdHRlci5jb20vYmVua2xhdHQpIGF0IFt2aWFkZWVdKGh0dHBzOi8vd3d3LnZpYWRlZS5kZS9lbi8pCi0gMjAyMS0wMi0xNyAtIFtSRVNULUFQSS1Sb3VuZHRyaXAgd2l0aCBTcHJpbmdEb2MgYW5kIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL21lZGl1bS5jb20vbmVyZC1mb3ItdGVjaC9yZXN0LWFwaS1yb3VuZHRyaXAtd2l0aC1zcHJpbmdkb2MtYW5kLW9wZW5hcGktZ2VuZXJhdG9yLTMwYmQyN2NjZjY5OCkgYnkgW2Nsb3VkIEB2aWFkZWVdKGh0dHBzOi8vY2xvdWQtdmlhZGVlLm1lZGl1bS5jb20vKQotIDIwMjEtMDMtMDggLSBbT3BlbkFQSSBHZW5lcmF0b3Ig5bel5YW355qE6Lq65Z2R5bCd6K+VXShodHRwczovL2Jsb2cuY3Nkbi5uZXQvdTAxMzAxOTcwMS9hcnRpY2xlL2RldGFpbHMvMTE0NTMxOTc1KSBieSBb54us5a626Zuo5aSpXShodHRwczovL2Jsb2cuY3Nkbi5uZXQvdTAxMzAxOTcwMSkgYXQgW0NTRE7lrpjmlrnljZrlrqJdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC8pCi0gMjAyMS0wMy0xNiAtIFvlpoLkvZXln7rkuo4gU3dhZ2dlciDkvb/nlKggT3BlbkFQSSBHZW5lcmF0b3Ig55Sf5oiQIEpNZXRlciDohJrmnKzvvJ9dKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL2FydGljbGUvMTgwMjcwNCkgYnkgW+mrmOalvFplZV0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvdXNlci81ODM2MjU1KSBhdCBb6IW+6K6v5LqR5LiT5qCPXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci9jb2x1bW4pCi0gMjAyMS0wMy0yNCAtIFtvcGVuYXBpLWdlbmVyYXRvci1jbGkg44Gr44KI44KLIFR5cGVTY3JpcHQg5Z6L5a6a576pXShodHRwczovL3plbm4uZGV2L3Rha2VwZXBlL2FydGljbGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS10cykgYnkgW1Rha2VmdW1pIFlvc2hpaV0oaHR0cHM6Ly96ZW5uLmRldi90YWtlcGVwZSkKLSAyMDIxLTAzLTI4IC0gW1RyeWluZyBvdXQgTmVzdEpTIHBhcnQgNDogR2VuZXJhdGUgVHlwZXNjcmlwdCBjbGllbnRzIGZyb20gT3BlbkFQSSBkb2N1bWVudHNdKGh0dHBzOi8vZGV2LnRvL2FybmF1ZGNvcnRpc3NlL3RyeWluZy1vdXQtbmVzdGpzLXBhcnQtNC1nZW5lcmF0ZS10eXBlc2NyaXB0LWNsaWVudHMtZnJvbS1vcGVuYXBpLWRvY3VtZW50cy0yOG1rKSBieSBbQXJuYXVkIENvcnRpc3NlXShodHRwczovL2Rldi50by9hcm5hdWRjb3J0aXNzZSkKLSAyMDIxLTAzLTMxIC0gW09wZW4gQVBJIFNlcnZlciBJbXBsZW1lbnRhdGlvbiBVc2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tL2phdmEtb3BlbmFwaS1nZW5lcmF0b3Itc2VydmVyKSBhdCBbQmFlbGR1bmddKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS8pCi0gMjAyMS0wMy0zMSAtIFvkvb/nlKhPcGVuQVBJIEdlbmVyYXRvcuWvpuePvk9wZW4gQVBJIFNlcnZlcl0oaHR0cHM6Ly93d3cuMWp1Lm9yZy9hcnRpY2xlL2phdmEtb3BlbmFwaS1nZW5lcmF0b3Itc2VydmVyKSBhdCBb5YSE6IGa57ayXShodHRwczovL3d3dy4xanUub3JnLykKLSAyMDIxLTA0LTE5IC0gW0ludHJvZHVjaW5nIFR3aWxpb+KAmXMgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIEJldGFdKGh0dHBzOi8vd3d3LnR3aWxpby5jb20vYmxvZy9pbnRyb2R1Y2luZy10d2lsaW8tb3Blbi1hcGktc3BlY2lmaWNhdGlvbi1iZXRhKSBieSBbR0FSRVRIIFBBVUwgSk9ORVNdKGh0dHBzOi8vd3d3LnR3aWxpby5jb20vYmxvZy9hdXRob3IvZ3BqKSBhdCBbVHdpbGlvIEJsb2ddKGh0dHBzOi8vd3d3LnR3aWxpby5jb20vYmxvZykKLSAyMDIxLTA0LTIyIC0gW0xldmVyYWdpbmcgT3BlbkFwaSBzdHJlbmd0aHMgaW4gYSBNaWNyby1TZXJ2aWNlIGVudmlyb25tZW50XShodHRwczovL21lZGl1bS5jb20vdW5pYnVkZHktdGVjaG5vbG9neS1ibG9nL2xldmVyYWdpbmctb3BlbmFwaS1zdHJlbmd0aHMtaW4tYS1taWNyby1zZXJ2aWNlLWVudmlyb25tZW50LTNkN2Y5ZTdjMjZmZikgYnkgTmljb2xhcyBKZWxsYWIgYXQgW1VuaWJ1ZGR5IFRlY2hub2xvZ3kgQmxvZ10oaHR0cHM6Ly9tZWRpdW0uY29tL3VuaWJ1ZGR5LXRlY2hub2xvZ3ktYmxvZykKLSAyMDIxLTA0LTI3IC0gW0Zyb20gemVybyB0byBwdWJsaXNoaW5nIFBvd2VyU2hlbGwgQVBJIGNsaWVudHMgaW4gUG93ZXJTaGVsbCBHYWxsZXJ5IHdpdGhpbiBtaW51dGVzXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2Zyb20temVyby10by1wdWJsaXNoaW5nLXBvd2Vyc2hlbGwtYXBpLWNsaWVudHMtaW4tcG93ZXJzaGVsbC1nYWxsZXJ5LXdpdGhpbi1taW51dGVzKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly9naXRodWIuY29tL3dpbmczMjgpIGF0IFtQb3dlclNoZWxsICsgRGV2T3BzIEdsb2JhbCBTdW1taXQgMjAyMV0oaHR0cHM6Ly9ldmVudHMuZGV2b3BzY29sbGVjdGl2ZS5vcmcvZXZlbnQvcG93ZXJzaGVsbC1kZXZvcHMtZ2xvYmFsLXN1bW1pdC0yMDIxLykKLSAyMDIxLTA1LTMxIC0gW0ZsdXR0ZXLjgadPcGVuIEFwaSBHZW5lcmF0b3IoU3dhZ2dlcinjgpLkvb/jgYZdKGh0dHBzOi8vYWFraXJhLmFwcC9ibG9nLzIwMjEvMDUvZmx1dHRlci1vcGVuLWFwaS8pIGJ5IFtBQWtpcmFdKGh0dHBzOi8vdHdpdHRlci5jb20vX2FfYWtpcmEpCi0gMjAyMS0wNi0yMiAtIFtSZXN0IEFQSSBEb2N1bWVudGF0aW9uIGFuZCBDbGllbnQgR2VuZXJhdGlvbiBXaXRoIE9wZW5BUEldKGh0dHBzOi8vZHpvbmUuY29tL2FydGljbGVzL3Jlc3QtYXBpLWRvY3VtZW50YXRpb24tYW5kLWNsaWVudC1nZW5lcmF0aW9uLXdpdGgpIGJ5IFtQcmFzYW50aCBHdWxsYXBhbGxpXShodHRwczovL2R6b25lLmNvbS91c2Vycy8xMDExNzk3L3ByYXNhbnRobmF0aC5nQGdtYWlsLmNvbS5odG1sKQotIDIwMjEtMDctMTYgLSBb6YqA6KGM5LqL5qWt44Gu44K144O844OQ44O844K144Kk44OJ6ZaL55m644Gr44Gk44GE44GmIC8gTElORSDkuqzpg73plovnmbrlrqQg44Ko44Oz44K444OL44Ki5o6h55So6Kqs5piO5LyaXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVlycktRSHhMUHBRKSBieSDph47nlLDoqqDkurosIFJvYmVydCBNaXRjaGVsbAotIDIwMjEtMDctMTkgLSBbT3BlbkFQSSBjb2RlIGdlbmVyYXRpb24gd2l0aCBrb3RsaW5dKGh0dHBzOi8vc3lsaGFyZS5naXRodWIuaW8vMjAyMS8wNy8xOS9PcGVuYXBpLXN3YWdnZXItY29kZWdlbi13aXRoLWtvdGxpbi5odG1sKSBieSBbc3lsaGFyZV0oaHR0cHM6Ly9naXRodWIuY29tL3N5bGhhcmUpCi0gMjAyMS0wNy0yOSAtIFtIb3cgVG8gUmV3cml0ZSBhIEh1Z2UgQ29kZWJhc2VdKGh0dHBzOi8vZHpvbmUuY29tL2FydGljbGVzL2hvdy10by1yZXdyaXRlLWEtaHVnZS1jb2RlLWJhc2UpIGJ5IFtDdXJ0aXMgUG9lXShodHRwczovL2R6b25lLmNvbS91c2Vycy80NTY1NDQ2L3B1YmxpdXNvdmlkaXVzLmh0bWwpCi0gMjAyMS0wOC0yMSAtIFtHZW5lcmF0aW5nIENsaWVudCBBUElzIHVzaW5nIFN3YWdnZXIgUGFydCAxXShodHRwczovL21lZGl1bS5jb20vQGZsb3dzcXVhZC9nZW5lcmF0aW5nLWNsaWVudC1hcGlzLXVzaW5nLXN3YWdnZXItcGFydC0xLTJkNDZmMTNmNWU5MikgYnkgW0Zsb3dTcXVhZC5pb10oaHR0cHM6Ly9tZWRpdW0uY29tL0BmbG93c3F1YWQpCi0gMjAyMS0wOS0xMSAtIFtJbnZva2luZyBBV1MgUGFyYWxsZWxDbHVzdGVyIEFQSV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3BhcmFsbGVsY2x1c3Rlci9sYXRlc3QvdWcvYXBpLXJlZmVyZW5jZS12My5odG1sKSBhdCBbQVdTIFBhcmFsbGVsQ2x1c3RlciBBUEkgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3BhcmFsbGVsY2x1c3Rlci9sYXRlc3QvdWcvYXBpLXJlZmVyZW5jZS12My5odG1sKQotIDIwMjEtMDktMjAgLSBbT3BlbkFQSSBHZW5lcmF0b3IgLSBUaGUgQmFiZWwgRmlzaCBvZiB0aGUgQVBJIFdvcmxkXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXMyek10d2Q1a2xnKSBieSBbQ2xpZmZhbm8gU3ViYWdpbyAoUHJpbmNpcGFsIEVuZ2luZWVyIGF0IFNoaW5lIFNvbHV0aW9ucyldKGh0dHBzOi8vZ2l0aHViLmNvbS9jbGlmZmFubykgYXQgW0FwaWRheXMgTElWRSBBdXN0cmFsaWEgMjAyMV0oaHR0cHM6Ly93d3cuYXBpZGF5cy5nbG9iYWwvYXVzdHJhbGlhMjAyMS8pCi0gMjAyMS0xMC0wMiAtIFtIb3cgdG8gV3JpdGUgRmV3ZXIgTGluZXMgb2YgQ29kZSB3aXRoIHRoZSBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9oYWNrZXJub29uLmNvbS9ob3ctdG8td3JpdGUtZmV3ZXItbGluZXMtb2YtY29kZS13aXRoLXRoZS1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW01pa2hhaWwgQWxmYV0oaHR0cHM6Ly9oYWNrZXJub29uLmNvbS91L2FscGhhbWlrbGUpCi0gMjAyMS0xMC0xMiAtIFtPcGVuQVBJIEdlbmVyYXRvciA6IDQwMDAgw6l0b2lsZXMgc3VyIEdpdEh1YiBldCBkZXMgc3BhZ2hldHRpc10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj05aEVzTkJTcVRGaykgYnkgW0rDqXLDqW1pZSBCcmVzc29uXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpIGF0IFtEZXZveHggRlIgMjAyMV0oaHR0cHM6Ly9jZnAuZGV2b3h4LmZyLzIwMjEvc3BlYWtlci9qZXJlbWllX2JyZXNzb24pCi0gMjAyMS0xMC0xNyAtIFtHZW5lcmF0ZSBhIFR5cGVTY3JpcHQgSFRUUCBDbGllbnQgRnJvbSBBbiBPcGVuQVBJIFNwZWMgSW4gRG90TkVUIDVdKGh0dHBzOi8vcmljaGFyZHdpbGxpcy5pbmZvL2Jsb2cvZ2VuZXJhdGUtYS10eXBlLXNjcmlwdC1odHRwLWNsaWVudC1mcm9tLWFuLW9wZW4tYXBpLXNwZWMtaW4tZG90LW5ldC01KSBieSBbUmljaGFyZCBXaWxsaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9iYWRzeW50YXgpCi0gMjAyMS0xMS0wNiAtIFvjgrnjgr/jg7zjg4jjgqLjg4Pjg5fjga7plovnmbrjgafmhI/orZjjgZfjgZ/jgZPjgahdKGh0dHBzOi8vemVubi5kZXYvd29vX25vby9hcnRpY2xlcy81Y2IwOWY4ZTI4OTlhZTc4MmFkMSkgYnkgW3dvby1ub29dKGh0dHBzOi8vemVubi5kZXYvd29vX25vbykKLSAyMDIxLTExLTA5IC0gW0VmZmVjdGl2ZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9hcGV4bGFicy5haS9wb3N0L2VmZmVjdGl2ZS1zb2Z0d2FyZS1kZXZlbG9wbWVudC11c2luZy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgQWppbCBPb21tZQotIDIwMjEtMTItMDcgLSBbQW4gSW50cm9kdWN0aW9uIHRvIE9wZW5BUEldKGh0dHBzOi8vYmV0dGVycHJvZ3JhbW1pbmcucHViLzQtdXNlLWNhc2VzLW9mLW9wZW5hcGktd2hpY2gtYXJlLWdvb2QtdG8ta25vdy0xYTA0MWY0YWQ3MWUpIGJ5IFtOYSdhbWFuIEhpcnNjaGZlbGRdKGh0dHBzOi8vbmFhbWFuaGlyc2NoZmVsZC5tZWRpdW0uY29tLykKLSAyMDIyLTAxLTAyIC0gW1Rvd2FyZHMgYSBzZWN1cmUgQVBJIGNsaWVudCBnZW5lcmF0b3IgZm9yIElvVCBkZXZpY2VzXShodHRwczovL2FyeGl2Lm9yZy9hYnMvMjIwMS4wMDI3MCkgYnkgQW5kZXJzIEFhZW4gU3ByaW5nYm9yZywgTWFydGluIEthbGRhaGwgQW5kZXJzZW4sIEthYXJlIEhvbGxhbmQgSGF0dGVsLCBNaWNoZWxlIEFsYmFubwotIDIwMjItMDItMDIgLSBbVXNlIE9wZW5BcGkgZ2VuZXJhdG9yIHRvIHNoYXJlIHlvdXIgbW9kZWxzIGJldHdlZW4gRmx1dHRlciBhbmQgeW91ciBiYWNrZW5kXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWtQVzdjY3U5WXZrKSBieSBbR3VpbGxhdW1lIEJlcm5vc10oaHR0cHM6Ly9mZWIyMDIyLmZsdXR0ZXJ2aWtpbmdzLmNvbS9zcGVha2Vycy9ndWlsbGF1bWVfYmVybm9zKSBhdCBbRmx1dHRlciBWaWtpbmdzIENvbmZlcmVuY2UgMjAyMiAoSHlicmlkKV0oaHR0cHM6Ly9mZWIyMDIyLmZsdXR0ZXJ2aWtpbmdzLmNvbS8pCi0gMjAyMi0wMy0xNSAtIFtPcGVuQVBJIFNwZWPjgafjg4/jgqTjg5Xjg7PljLrliIfjgorjga5FbnVt5YCk44KST3BlbkFQSSBHZW5lcmF0b3Ljgaflh7rlipvjgZnjgovjgajjgIHjg4/jgqTjg5Xjg7PljLrliIfjgorjga7jgb7jgb7lh7rlipvjgZXjgozjgotdKGh0dHBzOi8vcWlpdGEuY29tL3l1amkzOGt3bXQvaXRlbXMvODI0ZDc0ZDQ4ODkwNTVhYjM3ZDgpIGJ5IFt5dWppMzhrd210XShodHRwczovL3FpaXRhLmNvbS95dWppMzhrd210KQotIDIwMjItMDQtMDEgLSBbT3BlbkFQSSBHZW5lcmF0b3Ljga7jgrPjg7zjg4nnlJ/miJDjgahTcHJpbmcgRnJhbWV3b3Jr44Gu44Kr44K544K/44Og44OH44O844K/44OQ44Kk44Oz44OH44Kj44Oz44Kw44KS5YWx5a2Y44GV44Gb44KLXShodHRwczovL3RlY2hibG9nLnpvem8uY29tL2VudHJ5L2NvZXhpc3RlbmNlLW9mLW9wZW5hcGktYW5kLXNwcmluZykgaW4gW1pPWk8gVGVjaCBCbG9nXShodHRwczovL3RlY2hibG9nLnpvem8uY29tLykKLSAyMDIyLTA0LTA2IC0gW0VmZmVjdGl2ZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9hcGV4bGFicy5haS9wb3N0L29wZW5hcGktZ2VuZXJhdG9yKSBieSBBamlsIE9vbW1lbiAoU2VuaW9yIEZsdXR0ZXIgRGV2ZWxvcGVyKQotIDIwMjItMDUtMTMgLSBbQSBQYXRoIEZyb20gYW4gQVBJIFRvIENsaWVudCBMaWJyYXJpZXNdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9WEM4b1ZuX2VmVHcpIGJ5IFtGaWxpcCBTcm5lY10oaHR0cHM6Ly93d3cuZGV2b3h4LmNvLnVrL3RhbGsvP2lkPTExMjExKSBhdCBJbmZvYmlwCi0gMjAyMi0wNi0wMSAtIFtBUEkgRmlyc3QsIHVzaW5nIE9wZW5BUEkgYW5kIFNwcmluZyBCb290XShodHRwczovL21lZGl1bS5jb20veGdlZWtzL2FwaS1maXJzdC11c2luZy1vcGVuYXBpLWFuZC1zcHJpbmctYm9vdC0yNjAyYzA0YmIwZDMpIGJ5IFtNaWNhZWwgRXN0csOhenVsYXMgVmlhbm5hXShodHRwczovL2VzdHJhenVsYXMubWVkaXVtLmNvbS8pCi0gMjAyMi0wNi0xMCAtIFtBdXRvZ2VuZXJhdGluZyBDbGllbnRzIHdpdGggRmFzdEFQSSBhbmQgR2l0aHViIEFjdGlvbnNdKGh0dHBzOi8vd3d3LnByb3BlbGF1dGguY29tL3Bvc3QvYXV0b2dlbmVyYXRpbmctY2xpZW50cy13aXRoLWZhc3RhcGktYW5kLWdpdGh1Yi1hY3Rpb25zKSBieSBbQW5kcmV3IElzcmFlbF0oaHR0cHM6Ly93d3cucHJvcGVsYXV0aC5jb20vYXV0aG9yL2FuZHJldykKLSAyMDIyLTA2LTEyIC0gW011c3RhY2hlIHRlbXBsYXRlcyB3aXRoIE9wZW5BUEkgc3BlY3NdKGh0dHBzOi8vbWVkaXVtLmNvbS9nZWVrY3VsdHVyZS9tdXN0YWNoZS10ZW1wbGF0ZXMtd2l0aC1vcGVuYXBpLXNwZWNzLWYyNDcxMWM2N2RlYykgYnkgW0JlcHBlIENhdGFuZXNlXShodHRwczovL2dpdGh1Yi5jb20vZ2NhdGFuZXNlKQotIDIwMjItMDctMDEgLSBbR2VuZXJhdGUgQVBJIGNvbnRyYWN0IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yIE1hdmVuIHBsdWdpbl0oaHR0cHM6Ly9odW9uZ2RhbmphdmEuY29tL2dlbmVyYXRlLWFwaS1jb250cmFjdC11c2luZy1vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4uaHRtbCkgYnkgW0toYW5oIE5ndXllbl0oaHR0cHM6Ly9odW9uZ2RhbmphdmEuY29tLykKLSAyMDIyLTA3LTIyIC0gW+S9v+eUqE9wZW5BUEkgR2VuZXJhdG9yIE1hdmVuIHBsdWdpbuW8gOWPkWFwaeS8mOWFiOeahGphdmHlrqLmiLfnq6/lkozmnI3liqHnq6/ku6PnoIFdKGh0dHBzOi8vYmxvZy5yb2Njb3NoaS50b3AvMjAyMi9qYXZhL29wZW5hcGktZ2VuZXJhdG9yJUU3JTlBJTg0JUU0JUJEJUJGJUU3JTk0JUE4LykgYnkgW0xpbmNlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9MaW5jZXN0KQotIDIwMjItMDgtMDEgLSBbVHV0b3JpYWw6IEV0c3kgT3BlbiBBUEkgdjMgKHJ1YnkpXShodHRwczovL2Jsb2cudGpveWFsLmRldi9ldHN5LW9wZW4tYXBpLXYzLykgYnkgW1RoaWVycnkgSm95YWxdKGh0dHBzOi8vZ2l0aHViLmNvbS90am95YWwpCi0gMjAyMi0wOS0wMyAtIFtPcGVuQVBJIEdlbmVyYXRvciBGb3IgR28gV2ViIERldmVsb3BtZW50XShodHRwczovL2Jsb2cua2V2aW5odS5tZS8yMDIyLzA5LzAzLzAzLW9wZW5hcGktZ2VuZXJhdG9yLykgYnkgW0tldmluIEh1XShodHRwczovL3R3aXR0ZXIuY29tL09sZGd1bml4KQotIDIwMjItMTAtMDEgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgpLjgqvjgrnjgr/jg57jgqTjgrrjgZfjgZ/jgrPjg7zjg4njgpLnlJ/miJDjgZnjgovvvIhTd2FnZ2VyIENvZGVnZW7jgajjgbvjgbzlkIzjgZjvvIldKGh0dHBzOi8vbmFpbmFpc3Rhci5oYXRlbmFibG9nLmNvbS9lbnRyeS8yMDIyLzEwLzAzLzEyMDAwMCkgYnkgW+OBjeOCiuS4uF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9uYWluYWlzdGFyKQotIDIwMjItMTAtMjEgLSBbS290bGlu77yIU3ByaW5nIEJvb3TvvInjga4gQVBJIOOCkiBPcGVuQVBJIEdlbmVyYXRvciDjgafoh6rli5XnlJ/miJBdKGh0dHBzOi8vemVubi5kZXYvbXNrc2dtL2FydGljbGVzLzIwMjIxMDIxLWtvdGxpbi1zcHJpbmctb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFttc2tzZ21dKGh0dHBzOi8vemVubi5kZXYvbXNrc2dtKQotIDIwMjItMTAtMjYgLSBbUXVhcmt1cyBJbnNpZ2h0cyAjMTA2OiBRdWFya2l2ZXJzZSBFeHRlbnNpb24gU3BvdGxpZ2h0OiBPcGVuQXBpIEdlbmVyYXRvcl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1fc19pZjY5dDJpUSkgYnkgW1F1YXJrdXNpb10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9RdWFya3VzaW8pCi0gMjAyMi0xMS0yOCAtIFtUaGUgUkVTVCBBUEkgaW1wbGVtZW50YXRpb24gZmxvd10oaHR0cHM6Ly90bXN2ci5jb20vb3BlbmFwaS1jb2RlLWdlbmVyYXRpb24tZm9yLXJlc3QtYXBpcy8pIGJ5IFtJbXJlIFTDtm3DtnN2w6FyaV0oaHR0cHM6Ly90bXN2ci5jb20vYXV0aG9yL2ltcmUvKQotIDIwMjItMTItMTMgLSBbQVBJLUZpcnN0IHdpdGggU3ByaW5nIFdlYkZsdXggYW5kIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2Jvb3R0ZWNobm9sb2dpZXMtY2kubWVkaXVtLmNvbS9hcGktZmlyc3Qtd2l0aC1zcHJpbmctd2ViZmx1eC1hbmQtb3BlbmFwaS1nZW5lcmF0b3ItMzhiNzgwNGM0ZWQ0KSBieSBbRXJpYyBBbmljZXRdKGh0dHBzOi8vYm9vdHRlY2hub2xvZ2llcy1jaS5tZWRpdW0uY29tLykKLSAyMDIzLTAxLTA2IC0gW01ham9yIEltcHJvdmVtZW50cyB3aXRoIEhlbGlkb24gYW5kIE9wZW5BUEldKGh0dHBzOi8vbWVkaXVtLmNvbS9oZWxpZG9uL21ham9yLWltcHJvdmVtZW50cy13aXRoLWhlbGlkb24tYW5kLW9wZW5hcGktZjc2YTA5NTE1MDhlKSBieSBbVGltIFF1aW5uXShodHRwczovL21lZGl1bS5jb20vQHRxdWlubm82MDApCi0gMjAyMy0wMi0wMiAtIFtSZXBsYWNpbmcgUG9zdG1hbiB3aXRoIHRoZSBKZXRicmFpbnMgSFRUUCBDbGllbnRdKGh0dHBzOi8vbGVuZ3JhbmQuZnIvcmVwbGFjaW5nLXBvc3RtYW4taW4tc2Vjb25kcy13aXRoLXRoZS1qZXRicmFpbnMtaHR0cC1jbGllbnQvKSBieSBbanVsaWVuIExlbmdyYW5kLUxhbWJlcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qbGVuZ3JhbmQpCi0gMjAyMy0wMy0xNSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBq+mBqeOBl+OBn09wZW5BUEnjga7mm7jjgY3mlrldKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vZW50cnkvaG93LXRvLXdyaXRlLW9wZW5hcGktZm9yLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbWk9aTyBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vKQotIDIwMjMtMDMtMTkgLSBbRVhPR0VNOiBFeHRlbmRpbmcgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIE1vbml0b3Jpbmcgb2YgUkVTVGZ1bCBBUElzXShodHRwczovL2xpbmsuc3ByaW5nZXIuY29tL2NoYXB0ZXIvMTAuMTAwNy85NzgtMy0wMzEtMjY1MDctNV8xMCkgYnkgRGFuaWVsIEZyaWlzIEhvbHRlYm8sIEphbm5payBMdWNhcyBTb21tZXIsIE1hZ251cyBNw7hsZ2FhcmQgTHVuZCwgQWxlc3NhbmRybyBUaWJvLCBKdW5pb3IgRG9uZ28gJiBNaWNoZWxlIEFsYmFubyBhdCAiSUNTT0MgMjAyMjogU2VydmljZS1PcmllbnRlZCBDb21wdXRpbmcg4oCTIElDU09DIDIwMjIgV29ya3Nob3BzIgotIDIwMjMtMDMtMjggLSBbQVBJLUZpcnN0IERlc2lnbiB3aXRoIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vcHVsc2UvYXBpLWZpcnN0LWRlc2lnbi1vcGVuYXBpLWdlbmVyYXRvci1qb25hdGhhbi1tYW5lcmEvKSBieSBbSm9uYXRoYW4gTWFuZXJhXShodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vbWFuZXJham9uYS8pCi0gMjAyMy0wMy0yOCAtIFvjg4/jg7Pjgrrjgqrjg7PjgaflrabjgbbjgrXjg7zjg5Djg7zjgrXjgqTjg4kgS290bGlu77yIU3ByaW5nIEJvb3QmQXJyb3cmT3BlbkFQSSBHZW5lcmF0b3LvvIl2MS4wLjFdKGh0dHBzOi8vemVubi5kZXYvbXNrc2dtL2Jvb2tzL2ltcGxlbWVudGluZy1zZXJ2ZXItc2lkZS1rb3RsaW4tZGV2ZWxvcG1lbnQpIGJ5IFttc2tdKGh0dHBzOi8vemVubi5kZXYvbXNrc2dtKQotIDIwMjMtMDQtMDEgLSBbT3BlbkFQSSBDbGllbnQgQ29kZSBHZW5lcmF0aW9uXShodHRwczovL3Rlc3Rpbmdib3NzLmNvbS9ibG9nL29wZW5hcGktY2xpZW50LWdlbmVyYXRpb24vKSBieSBLd28gRGluZwotIDIwMjMtMDQtMjcgLSBbQ3JlYXRlIGFuIEFuZ3VsYXIgQ2xpZW50IHVzaW5nIE9wZW5BUEkgU3BlY2lmaWNhdGlvbnNdKENyZWF0ZSBhbiBBbmd1bGFyIENsaWVudCB1c2luZyBPcGVuQVBJIFNwZWNpZmljYXRpb25zKSBieSBbUGF0cmljXShodHRwczovL3BndXNvLm1lZGl1bS5jb20vKQotIDIwMjMtMDUtMTYgLSBbQWR5ZW4gZm9yIEphdmEgZGV2ZWxvcGVyc10oaHR0cHM6Ly93d3cuYWR5ZW4uY29tL2Jsb2cvYWR5ZW4tamF2YS1saWJyYXJ5KSBieSBbQmVwcGUgQ2F0YW5lc2UsIERldmVsb3BlciBBZHZvY2F0ZSwgQWR5ZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9nY2F0YW5lc2UpCi0gMjAyMy0wNS0xOCAtIFvlpoLkvZXln7rkuo4gU3dhZ2dlciDkvb/nlKggT3BlbkFQSSBHZW5lcmF0b3Ig55Sf5oiQIEpNZXRlciDohJrmnKzvvJ9dKGh0dHBzOi8vYmxvZy41MWN0by5jb20vdV8xNTE4MTU3Mi82Mjk0OTc0KSBieSBb6auY5qW877yIWmVlKV0oaHR0cHM6Ly9ibG9nLjUxY3RvLmNvbS91XzE1MTgxNTcyKQotIDIwMjMtMDYtMjggLSBbR2VuZXJhdGUgQVBJIGNvbnRyYWN0IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yIE1hdmVuIHBsdWdpbl0oaHR0cHM6Ly9odW9uZ2RhbmphdmEuY29tL2dlbmVyYXRlLWFwaS1jb250cmFjdC11c2luZy1vcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW4uaHRtbCkgYnkgW0toYW5oIE5ndXllbl0oaHR0cHM6Ly9odW9uZ2RhbmphdmEuY29tLykKLSAyMDIzLTA2LTMwIC0gW0dlbmVyYXRlIENsaWVudCBTREtzIHdpdGggT3BlbkFwaSBHZW5lcmF0b3IgaW4gU3ByaW5nYm9vdF0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYW1hdmF0aHZpbmF5YWsvZ2VuZXJhdGUtY2xpZW50LXNka3Mtd2l0aC1vcGVuYXBpLWdlbmVyYXRvci1pbi1zcHJpbmdib290LWY5ZjAxMmU3M2MwYikgYnkgW1ZpbmF5YWsgUmFtYXZhdGhdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcmFtYXZhdGh2aW5heWFrKQotIDIwMjMtMTItMTAgLSBbVW5pdHnjgadPcGVuQVBJIEdlbmVyYXRvcuOCkuS9v+OBhl0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1DYk53S1ZWNUxSTSkgYnkgW1NvdXAgVG9yaV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vQHNvdXB0b3JpODQxNykKLSAyMDI0LTAxLTI0IC0gW0NvbW1lbnQgZ8OpbsOpcmVyIGRlcyBzdHVicyB3aXJlbW9jayBhdmVjIG9wZW5hcGkgZ2VuZXJhdG9yXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTBqaE9OZkJyY0t3KSBieSBbQWxleGlzIENvdXZyZXVyXShodHRwczovL2dpdGh1Yi5jb20vYWNvdXZyZXVyKQotIDIwMjQtMDMtMDQgLSBbR2VuZXJhdGluZyBUeXBlU2NyaXB0IFR5cGVzIHdpdGggT3BlbkFQSSBmb3IgUkVTVCBBUEkgQ29uc3VtcHRpb25dKGh0dHBzOi8vd3d3LnB1bGxyZXF1ZXN0LmNvbS9ibG9nL2dlbmVyYXRpbmctdHlwZXNjcmlwdC10eXBlcy13aXRoLW9wZW5hcGktZm9yLXJlc3QtYXBpLWNvbnN1bXB0aW9uLykgYnkgW1B1bGxSZXF1ZXN0XShodHRwczovL3d3dy5wdWxscmVxdWVzdC5jb20vKQotIDIwMjQtMDMtMDcgLSBbRnVsbHkgdHlwZWQgV2ViIEFwcHMgd2l0aCBPcGVuQVBJIChQYXJ0IDEpXShodHRwczovL21lZGl1bS5jb20vQGdmb3gxOTg0L2Z1bGx5LXR5cGVkLXdlYi1hcHBzLXdpdGgtb3BlbmFwaS1wYXJ0LTEtNTk1ZDU1NzY2NjcwKSBieSBbR3VpbGxhdW1lIFJlbmFyZF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BnZm94MTk4NCkKLSAyMDI0LTAzLTA4IC0gW0xhcmF2ZWwgT3BlbkFQSeOBq+OCiOOCiyAi6L6b44GP44Gq44GEIiDjgrnjgq3jg7zjg57pp4bli5XplovnmbpdKGh0dHBzOi8vZm9ydGVlLmpwL3BocGVya2FpZ2ktMjAyNC9wcm9wb3NhbC85ZTJlNmMzOC1kMDc4LTRlZmEtOTliNC04M2ViZjkwMzNiMzQpIGJ5IFtLZW50YXJvdVRha2VkYV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9LZW50YXJvdVRha2VkYSkKCiMjIFs2IC0gQWJvdXQgVXNdKCN0YWJsZS1vZi1jb250ZW50cykKCldoYXQncyB0aGUgZGVzaWduIHBoaWxvc29waHkgb3IgcHJpbmNpcGxlIGJlaGluZCBPcGVuQVBJIEdlbmVyYXRvcj8KCldlIGZvY3VzIG9uIGRldmVsb3BlciBleHBlcmllbmNlLiBUaGUgZ2VuZXJhdG9ycyBzaG91bGQgcHJvZHVjZSBjb2RlLCBjb25maWcsIGRvY3VtZW50YXRpb24sIGFuZCBtb3JlIHRoYXQgYXJlIGVhc2lseSB1bmRlcnN0YW5kYWJsZSBhbmQgY29uc3VtYWJsZSBieSB1c2Vycy4gV2UgZm9jdXNlZCBvbiBzaW1wbGUgdXNlIGNhc2VzIHRvIHN0YXJ0IHdpdGggKGJvdHRvbS11cCBhcHByb2FjaCkuIFNpbmNlIHRoZW4gdGhlIHByb2plY3QgYW5kIHRoZSBjb21tdW5pdHkgaGF2ZSBncm93biBhIGxvdDogNjAwayB3ZWVrbHkgZG93bmxvYWRzIHZpYSBOUE0gQ0xJIHdyYXBwZXIsIDMwTSBkb3dubG9hZHMgdmlhIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBkb2NrZXIgaW1hZ2UganVzdCB0byBoaWdobGlnaHQgYSBmZXcuIFdlJ3ZlIGdyYWR1YWxseSBzdXBwb3J0ZWQgbW9yZSBmZWF0dXJlcyAoZS5nLiBvbmVPZiwgYW55T2YgaW50cm9kdWNlZCBpbiBPcGVuQVBJIDMuMCkgaW4gdmFyaW91cyBnZW5lcmF0b3JzIGFuZCB3ZSB3aWxsIGNvbnRpbnVlIHRoaXMgYXBwcm9hY2ggdG8gZGVsaXZlciBzb21ldGhpbmcgYmFzZWQgb24gb3VyIHVuZGVyc3RhbmRpbmcgb2YgdXNlciBkZW1hbmQgYW5kIHdoYXQgdGhleSB3YW50LCBhbmQgY29udGludWUgdG8gYWRkIHN1cHBvcnQgb2YgbmV3IGZlYXR1cmVzIGludHJvZHVjZWQgaW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIChzdWNoIGFzIHYzLjEgYW5kIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uKS4KCiMjIyBbNi4xIC0gT3BlbkFQSSBHZW5lcmF0b3IgQ29yZSBUZWFtXSgjdGFibGUtb2YtY29udGVudHMpCgpPcGVuQVBJIEdlbmVyYXRvciBjb3JlIHRlYW0gbWVtYmVycyBhcmUgY29udHJpYnV0b3JzIHdobyBoYXZlIGJlZW4gbWFraW5nIHNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgKHJldmlldyBpc3N1ZXMsIGZpeCBidWdzLCBtYWtlIGVuaGFuY2VtZW50cywgZXRjKSB0byB0aGUgcHJvamVjdCBvbiBhIHJlZ3VsYXIgYmFzaXMuCgojIyMjIENvcmUgVGVhbSBNZW1iZXJzCiogW0B3aW5nMzI4XShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgKDIwMTUvMDcpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KQoqIFtAamltc2NodWJlcnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9qaW1zY2h1YmVydCkgKDIwMTYvMDUpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKKiBbQGNib3JuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jYm9ybmV0KSAoMjAxNi8wNSkKKiBbQGptaW5pXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpICgyMDE4LzA0KSAgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ptaW5pKQoqIFtAZXRoZXJlYWxqb3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmVhbGpveSkgKDIwMTkvMDYpCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIyBUZW1wbGF0ZSBDcmVhdG9yCgoqKk5PVEUqKjogRW1iZWRkZWQgdGVtcGxhdGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiBfTXVzdGFjaGVfIGZvcm1hdC4gU3VwcG9ydCBmb3IgYWxsIG90aGVyIGZvcm1hdHMgaXMgZXhwZXJpbWVudGFsIGFuZCBzdWJqZWN0IHRvIGNoYW5nZSBhdCBhbnkgdGltZS4KCkhlcmUgaXMgYSBsaXN0IG9mIHRlbXBsYXRlIGNyZWF0b3JzOgogKiBBUEkgQ2xpZW50czoKICAgKiBBZGE6IEBzdGNhcnJlegogICAqIEFwZXg6IEBhc25lbGxpbmcKICAgKiBCYXNoOiBAYmtyeXphCiAgICogQzogQFBvd2VyT2ZDcmVhdGlvbiBAemhlbWFudCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vemhlbWFudCkKICAgKiBDKysgUkVTVDogQERhbmllbGt1MTUKICAgKiBDKysgVGlueTogQEFuZGVyc1NwcmluZ2JvcmcgQGthYXJlSEggQG1pY2hlbGVhbGJhbm8gQG1rYWtiYXMKICAgKiBDKysgVUU0OiBAS2FobmNvZGUKICAgKiBDIyAoLk5FVCAyLjApOiBAd2hvCiAgICogQyMgKC5ORVQgU3RhbmRhcmQgMS4zICk6IEBHcm9uc2FrCiAgICogQyMgKC5ORVQgNC41IHJlZmFjdG9yZWQpOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEMjIChHZW5lcmljSG9zdCk6IEBkZXZobC1sYWJzCiAgICogQyMgKEh0dHBDbGllbnQpOiBAQmxhY2tjbGF3cwogICAqIENsb2p1cmU6IEB4aGgKICAgKiBDcnlzdGFsOiBAd2luZzMyOAogICAqIERhcnQ6IEB5aXNzYWNoYXIKICAgKiBEYXJ0IChyZWZhY3Rvcik6IEBqb2VybmFocmVucwogICAqIERhcnQgMjogQHN3aXBlc2lnaHQKICAgKiBEYXJ0IChKYWd1YXIpOiBAamF1bWFyZAogICAqIERhcnQgKERpbyk6IEBqb3NoLWJ1cnRvbgogICAqIEVsaXhpcjogQG5pa3UKICAgKiBFbG06IEBlcmlrdGltCiAgICogRWlmZmVsOiBAanZlbGlsbGEKICAgKiBFcmxhbmc6IEB0c2xvdWdodGVyCiAgICogRXJsYW5nIChQcm9wRXIpOiBAamZhY29ycm8gQHJvYmVydG9hbG9pCiAgICogR3Jvb3Z5OiBAdmljdG9yZ2l0CiAgICogR286IEB3aW5nMzI4IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS93aW5nMzI4KQogICAqIEdvIChyZXdyaXR0ZW4gaW4gMi4zLjApOiBAYW50aWhheAogICAqIEhhc2tlbGwgKGh0dHAtY2xpZW50KTogQGpvbnNjaG9uaW5nCiAgICogSmF2YSAoRmVpZ24pOiBAZGF2aWRraXNzCiAgICogSmF2YSAoUmV0cm9maXQpOiBAMGxlZ2cKICAgKiBKYXZhIChSZXRyb2ZpdDIpOiBAZW1pbGlhbm9ib25hc3NpCiAgICogSmF2YSAoSmVyc2V5Mik6IEB4aGgKICAgKiBKYXZhIChva2h0dHAtZ3Nvbik6IEB4aGgKICAgKiBKYXZhIChSZXN0VGVtcGxhdGUpOiBAbmJydW5vCiAgICogSmF2YSAoU3ByaW5nIDUgV2ViQ2xpZW50KTogQGRhb25vbWljCiAgICogSmF2YSAoU3ByaW5nIDYgUmVzdENsaWVudCk6IEBuaWNrbGFzMjc1MQogICAqIEphdmEgKFJFU1RFYXN5KTogQGdheWF0aHJpZ3MKICAgKiBKYXZhIChWZXJ0eCk6IEBsb3Blc21jYwogICAqIEphdmEgKEdvb2dsZSBBUElzIENsaWVudCBMaWJyYXJ5KTogQGNoYXJsZXNjYXBwcwogICAqIEphdmEgKFJlc3QtYXNzdXJlZCk6IEB2aWNsb3Zza3kKICAgKiBKYXZhIChKYXZhIDExIE5hdGl2ZSBIVFRQIGNsaWVudCk6IEBiYmRvdWdsYXMKICAgKiBKYXZhIChBcGFjaGUgSHR0cENsaWVudCA1LngpOiBAaGFycnl3aGl0ZTQgQGFuZHJldmVnYXMKICAgKiBKYXZhIChIZWxpZG9uKTogQHNwZXJpY2FzIEB0anF1aW5ubyBAdHZhbGxpbgogICAqIEphdmFzY3JpcHQvTm9kZUpTOiBAamZpYWxhCiAgICogSmF2YVNjcmlwdCAoQXBvbGxvIERhdGFTb3VyY2UpOiBAZXJpdGhtZXRpYwogICAqIEphdmFTY3JpcHQgKENsb3N1cmUtYW5ub3RhdGVkIEFuZ3VsYXIpIEBhY2hldzIyCiAgICogSmF2YVNjcmlwdCAoRmxvdyB0eXBlcykgQGpheXBlYQogICAqIEpldGJyYWlucyBIVFRQIENsaWVudCA6IEBqbGVuZ3JhbmQKICAgKiBKTWV0ZXI6IEBkYXZpZGtpc3MKICAgKiBKdWxpYTogQHRhbm1heWttCiAgICogS290bGluOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEtvdGxpbiAoTXVsdGlQbGF0Zm9ybSk6IEBhbmRyZXdlbWVyeQogICAqIEtvdGxpbiAoVm9sbGV5KTogQGFsaXN0ZXJzCiAgICogS290bGluIChqdm0tc3ByaW5nLXdlYmNsaWVudCk6IEBzdGVmYW5rb3BwaWVyCiAgICogS290bGluIChqdm0tc3ByaW5nLXJlc3RjbGllbnQpOiBAc3RlZmFua29wcGllcgogICAqIEx1YTogQGRhdXJuaW1hdG9yCiAgICogTjRKUzogQG1tZXdzLW40CiAgICogTmltOiBAaG9rYW1vdG8KICAgKiBPQ2FtbDogQGNnZW5zb3VsCiAgICogUGVybDogQHdpbmczMjggWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiAgICogUEhQIChHdXp6bGUpOiBAYmFhcnRvc3oKICAgKiBQSFAgKHdpdGggRGF0YSBUcmFuc2Zlcik6IEBBcnRpY3VzCiAgICogUG93ZXJTaGVsbDogQGJlYXRjcmFja2VyCiAgICogUG93ZXJTaGVsbCAocmVmYWN0b3JlZCBpbiA1LjAuMCk6IEB3aW5nMzI4CiAgICogUHl0aG9uOiBAc3BhY2V0aGVyIFs6aGVhcnQ6XVtzcGFjZXRoZXIgc3BvbnNvcnNoaXBdCiAgICogUHl0aG9uLUV4cGVyaW1lbnRhbDogQHNwYWNldGhlciBbOmhlYXJ0Ol1bc3BhY2V0aGVyIHNwb25zb3JzaGlwXQogICAqIFB5dGhvbiAocmVmYWN0b3JlZCBpbiA3LjAuMCk6IEB3aW5nMzI4CiAgICogUjogQHJhbW5vdgogICAqIFJ1YnkgKEZhcmFkYXkpOiBAbWVnYW5lbXVyYSBAZGtsaWJhbgogICAqIFJ1YnkgKEhUVFBYKTogQGhvbmV5cnlkZXJjaHVjawogICAqIFJ1c3Q6IEBmYXJjYWxsZXIKICAgKiBSdXN0IChydXN0LXNlcnZlcik6IEBtZXRhc3dpdGNoCiAgICogU2NhbGEgKHNjYWxheiAmIGh0dHA0cyk6IEB0YnJvd24xOTc5CiAgICogU2NhbGEgKEFra2EpOiBAY2NoYWZlcgogICAqIFNjYWxhIChzdHRwKTogQGNoYW1lbGVvbjgyCiAgICogU2NhbGEgKHN0dHA0KTogQGZsc2g4NgogICAqIFNjYWxhIChQZWtrbyk6IEBtaWNrYWVsbWFnbmllegogICAqIFN3aWZ0OiBAdGtxdWJvCiAgICogU3dpZnQgMzogQGhleGVsb24KICAgKiBTd2lmdCA0OiBAZWh5Y2hlCiAgICogU3dpZnQgNTogQDRicnVudQogICAqIFN3aWZ0IDY6IEA0YnJ1bnUKICAgKiBTd2lmdCBDb21iaW5lOiBAZHlkdXMweDE0CiAgICogVHlwZVNjcmlwdCAoQW5ndWxhcjEpOiBAbWhhcmRvcmYKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyMik6IEByb25pLWZyYW50Y2hpCiAgICogVHlwZVNjcmlwdCAoQW5ndWxhcjYpOiBAYWtlaGlyCiAgICogVHlwZVNjcmlwdCAoQW5ndWxhcjcpOiBAdG9wY2UKICAgKiBUeXBlU2NyaXB0IChBeGlvcyk6IEBuaWNva29lbmlnCiAgICogVHlwZVNjcmlwdCAoRmV0Y2gpOiBAbGVvbnl1CiAgICogVHlwZVNjcmlwdCAoSW52ZXJzaWZ5KTogQGd1YWx0aWVyaW0KICAgKiBUeXBlU2NyaXB0IChqUXVlcnkpOiBAYmhlcmlsYQogICAqIFR5cGVTY3JpcHQgKE5lc3Rqcyk6IEB2ZnJhbms2NgogICAqIFR5cGVTY3JpcHQgKE5vZGUpOiAgQG1oYXJkb3JmCiAgICogVHlwZVNjcmlwdCAoUnhqcyk6IEBkZW55bwogICAqIFR5cGVTY3JpcHQgKHJlZHV4LXF1ZXJ5KTogQHBldGVqb2hhbnNvbnhvCiAgICogWG9qbzogQFRvcGhlZWUKICAgKiBaYXBpZXI6IEB2YWxtb3osIEBlbWFqbwogKiBTZXJ2ZXIgU3R1YnMKICAgKiBBZGE6IEBzdGNhcnJlegogICAqIEMjIEFTUC5ORVQgNTogQGppbXNjaHViZXJ0IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKICAgKiBDIyBBU1AuTkVUIENvcmUgMy4wOiBAQS1Kb3NoaQogICAqIEMjIEFQUy5ORVQgQ29yZSAzLjE6IEBwaGF0Y2hlcgogICAqIEMjIEF6dXJlIGZ1bmN0aW9uczogQEFicmhtNzc4NgogICAqIEMjIE5hbmN5Rlg6IEBtc3RlZmFuaXVrCiAgICogQysrIChRdDUgUUh0dHBFbmdpbmUpOiBAZXRoZXJlYWxqb3kKICAgKiBDKysgUGlzdGFjaGU6IEBzZWJ5bWlhbm8KICAgKiBDKysgUmVzdGJlZDogQHN0a3J3b3JrCiAgICogRXJsYW5nIFNlcnZlcjogQGdhbGF4aWUgQG5lbHNvbnZpZGVzCiAgICogRiMgKEdpcmFmZmUpIFNlcnZlcjogQG5tZmlzaGVyCiAgICogR28gU2VydmVyOiBAZ3VvaHVhbmcKICAgKiBHbyBTZXJ2ZXIgKHJlZmFjdG9yZWQgaW4gNy4wLjApOiBAbHdqNQogICAqIEdvIChFY2hvKSBTZXJ2ZXI6IEBwaDRyNWg0ZAogICAqIEdvIChHaW4pIFNlcnZlcjogQGtlbW9rZW1vCiAgICogR3JhcGhRTCBFeHByZXNzIFNlcnZlcjogQHJlbmVwYXJkb24KICAgKiBIYXNrZWxsIFNlcnZhbnQ6IEBhbGdhcwogICAqIEhhc2tlbGwgWWVzb2Q6IEB5b3RzdXlhCiAgICogSmF2YSBDYW1lbDogQGNhcm5ldmFsZWdpYWNvbW8KICAgKiBKYXZhIE1TRjRKOiBAc2FuamVld2EtbWFsYWxnb2RhCiAgICogSmF2YSBTcHJpbmcgQm9vdDogQGRpeWZyCiAgICogSmF2YSBVbmRlcnRvdzogQHN0ZXZlaHUKICAgKiBKYXZhIFBsYXkgRnJhbWV3b3JrOiBASkZDb3RlCiAgICogSmF2YSBQS01TVDogQGFuc2h1MjE4NSBAc2Fuc2h1bWFuIEBya3VtYXItcGsgQG5pbm9kcGlsbGFpCiAgICogSmF2YSBWZXJ0Lng6IEBsd2xlZTI2MDgKICAgKiBKYXZhIE1pY3JvbmF1dDogQGFuZHJpeS1kbXl0cnVrCiAgICogSmF2YSBIZWxpZG9uOiBAc3BlcmljYXMgQHRqcXVpbm5vIEB0dmFsbGluCiAgICogSmF2YSBXaXJlTW9jazogW0BhY291dnJldXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY291dnJldXIpCiAgICogSkFYLVJTIFJlc3RFYXN5OiBAY2hhbWVsZW9uODIKICAgKiBKQVgtUlMgQ1hGOiBAaGl2ZXNoaXAKICAgKiBKQVgtUlMgQ1hGIChDREkpOiBAbmlja2NtYXluYXJkCiAgICogSkFYLVJTIFJlc3RFYXN5IChKQm9zcyBFQVApOiBAamZpYWxhCiAgICogSnVsaWE6IEB0YW5tYXlrbQogICAqIEtvdGxpbjogQGppbXNjaHViZXJ0IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKICAgKiBLb3RsaW4gKFNwcmluZyBCb290KTogQGRyNGtlNjE2CiAgICogS290bGluIChWZXJ0eCk6IEBXb295bWUKICAgKiBLb3RsaW4gKEpBWC1SUyk6IEBhbnR0aWxlcHBhCiAgICogS290bGluIFdpcmVNb2NrOiBAc3RlZmFua29wcGllcgogICAqIE5vZGVKUyBFeHByZXNzOiBAWWlzaFRpc2gKICAgKiBQSFAgRmxpZ2h0OiBAZGFuaWVsLXNjCiAgICogUEhQIExhcmF2ZWw6IEByZW5lcGFyZG9uCiAgICogUEhQIEx1bWVuOiBAYWJjc3VuCiAgICogUEhQIE1lenppbyAod2l0aCBQYXRoIEhhbmRsZXIpOiBAQXJ0aWN1cwogICAqIFBIUCBTbGltOiBAamZhc3RuYWNodAogICAqIFBIUCBTbGltNDogW0B5YmVsZW5rb10oaHR0cHM6Ly9naXRodWIuY29tL3liZWxlbmtvKQogICAqIFBIUCBTeW1mb255OiBAa3NtMgogICAqIFBIUCBTeW1mb255NjogQEJlbmphbWluSGFlCiAgICogUHl0aG9uIEZhc3RBUEk6IEBrcmpha2JyamFrCiAgICogUHl0aG9uIEFJT0hUVFA6CiAgICogUnVieSBvbiBSYWlscyA1OiBAemx4CiAgICogUnVzdCAocnVzdC1zZXJ2ZXIpOiBAbWV0YXN3aXRjaAogICAqIFNjYWxhIEFra2E6IEBCb3VpbGxpZQogICAqIFNjYWxhIENhc2s6IEBhYXJvbnAKICAgKiBTY2FsYSBGaW5jaDogQGppbXNjaHViZXJ0IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS9qaW1zY2h1YmVydCkKICAgKiBTY2FsYSBMYWdvbTogQGdta3VtYXIyMDA1CiAgICogU2NhbGEgUGxheTogQGFkaWdlcmJlcgogKiBEb2N1bWVudGF0aW9uCiAgICogQXNjaWlEb2M6IEBtYW4tYXQtaG9tZQogICAqIEhUTUwgRG9jIDI6IEBqaGl0Y2hjb2NrCiAgICogQ29uZmx1ZW5jZSBXaWtpOiBAamhpdGNoY29jawogICAqIFBsYW50VU1MOiBAcGJ1cmxzCiAqIENvbmZpZ3VyYXRpb24KICAgKiBBcGFjaGUyOiBAc3RrcndvcmsKICAgKiBrNjogQG1vc3RhZmEKICogU2NoZW1hCiAgICogQXZybzogQHNnYWRvdWFyCiAgICogR3JhcGhRTDogQHdpbmczMjggWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiAgICogS3Rvcm06IEBMdWl6LU1vbmFkCiAgICogTXlTUUw6IFtAeWJlbGVua29dKGh0dHBzOi8vZ2l0aHViLmNvbS95YmVsZW5rbykKICAgKiBQb3N0bWFuIENvbGxlY3Rpb246IEBnY2F0YW5lc2UKICAgKiBQcm90b2NvbCBCdWZmZXI6IEB3aW5nMzI4CiAgICogV1NETDogQGFkZXNzb0RwZAoKOmhlYXJ0OiA9IExpbmsgdG8gc3VwcG9ydCB0aGUgY29udHJpYnV0b3IgZGlyZWN0bHkKCiMjIyMgSG93IHRvIGpvaW4gdGhlIGNvcmUgdGVhbQoKSGVyZSBhcmUgdGhlIHJlcXVpcmVtZW50cyB0byBiZWNvbWUgYSBjb3JlIHRlYW0gbWVtYmVyOgotIHJhbmsgd2l0aGluIHRvcCA1MCBpbiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2dyYXBocy9jb250cmlidXRvcnMKICAtIHRvIGNvbnRyaWJ1dGUsIGhlcmUgYXJlIHNvbWUgZ29vZCBbc3RhcnRpbmcgcG9pbnRzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2lzc3Vlcz9xPWlzJTNBb3BlbitpcyUzQWlzc3VlK2xhYmVsJTNBJTIyaGVscCt3YW50ZWQlMjIpCi0gcmVndWxhciBjb250cmlidXRpb25zIHRvIHRoZSBwcm9qZWN0CiAgLSBhYm91dCAzIGhvdXJzIHBlciB3ZWVrCiAgLSBmb3IgY29udHJpYnV0aW9uLCBpdCBjYW4gYmUgYWRkcmVzc2luZyBpc3N1ZXMsIHJldmlld2luZyBQUnMgc3VibWl0dGVkIGJ5IG90aGVycywgc3VibWl0dGluZyBQUiB0byBmaXggYnVncyBvciBtYWtlIGVuaGFuY2VtZW50cywgZXRjCiAgLSBtdXN0IGJlIGFjdGl2ZSBpbiB0aGUgcGFzdCAzIG1vbnRocyBhdCB0aGUgdGltZSBvZiBhcHBsaWNhdGlvbgoKIFRvIGpvaW4gdGhlIGNvcmUgdGVhbSwgcGxlYXNlIHJlYWNoIG91dCB0byB0ZWFtQG9wZW5hcGl0b29scy5vcmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgogVG8gYmVjb21lIGEgVGVtcGxhdGUgQ3JlYXRvciwgc2ltcGx5IHN1Ym1pdCBhIFBSIGZvciBuZXcgQVBJIGNsaWVudCAoZS5nLiBSdXN0LCBFbGl4aXIpIG9yIHNlcnZlciBzdHViIChlLmcuIFJ1YnkgR3JhcGUpIGdlbmVyYXRvci4KCiMjIyBbNi4yIC0gT3BlbkFQSSBHZW5lcmF0b3IgVGVjaG5pY2FsIENvbW1pdHRlZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKTWVtYmVycyBvZiB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdGVjaG5pY2FsIGNvbW1pdHRlZSBzaG91bGRlciB0aGUgZm9sbG93aW5nIHJlc3BvbnNpYmlsaXRpZXM6CgotIFByb3ZpZGVzIGd1aWRhbmNlIGFuZCBkaXJlY3Rpb24gdG8gb3RoZXIgdXNlcnMKLSBSZXZpZXdzIHB1bGwgcmVxdWVzdHMgYW5kIGlzc3VlcwotIEltcHJvdmVzIHRoZSBnZW5lcmF0b3IgYnkgbWFraW5nIGVuaGFuY2VtZW50cywgZml4aW5nIGJ1Z3Mgb3IgdXBkYXRpbmcgZG9jdW1lbnRhdGlvbnMKLSBTZXRzIHRoZSB0ZWNobmljYWwgZGlyZWN0aW9uIG9mIHRoZSBnZW5lcmF0b3IKCldobyBpcyBlbGlnaWJsZT8gVGhvc2Ugd2hvIHdhbnQgdG8gam9pbiBtdXN0IGhhdmUgYXQgbGVhc3QgMyBQUnMgbWVyZ2VkIGludG8gYSBnZW5lcmF0b3IuIChFeGNlcHRpb25zIGNhbiBiZSBncmFudGVkIHRvIHRlbXBsYXRlIGNyZWF0b3JzIG9yIGNvbnRyaWJ1dG9ycyB3aG8gaGF2ZSBtYWRlIGEgbG90IG9mIGNvZGUgY2hhbmdlcyB3aXRoIGxlc3MgdGhhbiAzIG1lcmdlZCBQUnMpCgpJZiB5b3Ugd2FudCB0byBqb2luIHRoZSBjb21taXR0ZWUsIHBsZWFzZSBraW5kbHkgYXBwbHkgYnkgc2VuZGluZyBhbiBlbWFpbCB0byB0ZWFtQG9wZW5hcGl0b29scy5vcmcgd2l0aCB5b3VyIEdpdGh1YiBJRC4KCiMjIyMgTWVtYmVycyBvZiBUZWNobmljYWwgQ29tbWl0dGVlCgp8IExhbmd1YWdlcy9HZW5lcmF0b3JzICB8IE1lbWJlciAoam9pbiBkYXRlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgQWN0aW9uU2NyaXB0ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFkYSAgICAgICAgICAgICAgICAgICB8IEBzdGNhcnJleiAoMjAxOC8wMikgQG1pY2hlbGVhbGJhbm8gKDIwMTgvMDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBBbmRyb2lkICAgICAgICAgICAgICAgfCBAamF6LWFoICgyMDE3LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQXBleCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEJhc2ggICAgICAgICAgICAgICAgICB8IEBmcm9sICgyMDE3LzA3KSBAYmtyeXphICgyMDE3LzA4KSBAa2Vuam9uZXMtY2lzY28gKDIwMTcvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDICAgICAgICAgICAgICAgICAgICAgfCBAemhlbWFudCAoMjAxOC8xMSkgQGl0eXVodWkgKDIwMTkvMTIpIEBtaWNoZWxlYWxiYW5vICgyMDIwLzAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQysrICAgICAgICAgICAgICAgICAgIHwgQHJhdmluaWthbSAoMjAxNy8wNykgQHN0a3J3b3JrICgyMDE3LzA3KSBAZXRoZXJlYWxqb3kgKDIwMTgvMDIpIEBtYXJ0aW5kZWxpbGxlICgyMDE4LzAzKSBAbXV0dGxleXhkICgyMDE5LzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEMjICAgICAgICAgICAgICAgICAgICB8IEBtYW5kcmVhbiAoMjAxNy8wOCkgQHNoaWJheWFuICgyMDIwLzAyKSBAQmxhY2tjbGF3cyAoMjAyMS8wMykgQGx1Y2FtYXp6YW50aSAoMjAyMS8wNSkgQGlCaWNoYSAoMjAyMy8wNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQ2xvanVyZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IENyeXN0YWwgICAgICAgICAgICAgICB8IEBjeWFuZ2xlICgyMDIxLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBEYXJ0ICAgICAgICAgICAgICAgICAgfCBAamF1bWFyZCAoMjAxOC8wOSkgQGpvc2gtYnVydG9uICgyMDE5LzEyKSBAYW1vbmRuZXQgKDIwMTkvMTIpIEBzYnUtV0JUICgyMDIwLzEyKSBAa3VobnJveWFsICgyMDIwLzEyKSBAYWdpbG9iICgyMDIwLzEyKSBAYWhtZWRuZndlbGEgKDIwMjEvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRWlmZmVsICAgICAgICAgICAgICAgIHwgQGp2ZWxpbGxhICgyMDE3LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVsaXhpciAgICAgICAgICAgICAgICB8IEBtcm1zdG4gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFbG0gICAgICAgICAgICAgICAgICAgfCBAZXJpa3RpbSAoMjAxOC8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRXJsYW5nICAgICAgICAgICAgICAgIHwgQHRzbG91Z2h0ZXIgKDIwMTcvMTEpIEBqZmFjb3JybyAoMjAxOC8xMCkgQHJvYmVydG9hbG9pICgyMDE4LzEwKSBAbmVsc29udmlkZXMgKDIwMjQvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEYjICAgICAgICAgICAgICAgICAgICB8IEBubWZpc2hlciAoMjAxOS8wNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHbyAgICAgICAgICAgICAgICAgICAgfCBAYW50aWhheCAoMjAxNy8xMSkgQGdyb2tpZnkgKDIwMTgvMDcpIEBrZW1va2VtbyAoMjAxOC8wOSkgQGppcmlrdW5jYXIgKDIwMjEvMDEpIEBwaDRyNWg0ZCAoMjAyMS8wNCkgQGx3ajUgKDIwMjMvMDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdyYXBoUUwgICAgICAgICAgICAgICB8IEByZW5lcGFyZG9uICgyMDE4LzEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBHcm9vdnkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSGFza2VsbCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEphdmEgICAgICAgICAgICAgICAgICB8IEBiYmRvdWdsYXMgKDIwMTcvMDcpIEBzcmVlc2hhcyAoMjAxNy8wOCkgQGpmaWFsYSAoMjAxNy8wOCkgQGx1a295YW5vdiAoMjAxNy8wOSkgQGNib3JuZXQgKDIwMTcvMDkpIEBqZWZmOWZpbmdlciAoMjAxOC8wMSkgQGthcmlzbWFubiAoMjAxOS8wMykgQFpvbXpvZyAoMjAxOS8wNCkgQGx3bGVlMjYwOCAoMjAxOS8xMCkgQG1hcnRpbi1tZmcgKDIwMjMvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSmF2YSBTcHJpbmcgICAgICAgICAgIHwgQGNhY2hlc2NydWJiZXIgKDIwMjIvMDIpIEB3ZWxzaG0gKDIwMjIvMDIpIEBNZWxsZUQgKDIwMjIvMDIpIEBhdGV4dG9yICgyMDIyLzAyKSBAbWFuZWRldjc5ICgyMDIyLzAyKSBAamF2aXNzdCAoMjAyMi8wMikgQGJvcnNjaCAoMjAyMi8wMikgQGJhbmxldmVudGUgKDIwMjIvMDIpIEBab216b2cgKDIwMjIvMDkpIEBtYXJ0aW4tbWZnICgyMDIzLzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKTWV0ZXIgICAgICAgICAgICAgICAgfCBAa2Fubmt5byAoMjAyMS8wMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSmV0YnJhaW5zIEhUVFAgQ2xpZW50IHwgQGpsZW5ncmFuZCAoMjAyMy8wMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEp1bGlhICAgICAgICAgICAgICAgICB8IEB0YW5tYXlrbSAoMjAyMy8wMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBLb3RsaW4gICAgICAgICAgICAgICAgfCBAZHI0a2U2MTYgKDIwMTgvMDgpIEBrYXJpc21hbm4gKDIwMTkvMDMpIEBab216b2cgKDIwMTkvMDQpIEBhbmRyZXdlbWVyeSAoMjAxOS8xMCkgQDRicnVudSAoMjAxOS8xMSkgQHl1dGFrYTBtICgyMDIwLzAzKSBAc3RlZmFua29wcGllciAoMjAyMi8wNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBMdWEgICAgICAgICAgICAgICAgICAgfCBAZGF1cm5pbWF0b3IgKDIwMTcvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTjRKUyAgICAgICAgICAgICAgICAgIHwgQG1tZXdzLW40ICgyMDIzLzAzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE5pbSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBOb2RlSlMvSmF2YXNjcmlwdCAgICAgfCBAQ29kZU5pbmphaSAoMjAxNy8wNykgQGZyb2wgKDIwMTcvMDcpIEBjbGlmZmFubyAoMjAxNy8wNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgT2JqQyAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE9DYW1sICAgICAgICAgICAgICAgICB8IEBjZ2Vuc291bCAoMjAxOS8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQZXJsICAgICAgICAgICAgICAgICAgfCBAd2luZzMyOCAoMjAxNy8wNykgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpIEB5dWU5OTQ0ODgyICgyMDE5LzA2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUEhQICAgICAgICAgICAgICAgICAgIHwgQGplYmVudGllciAoMjAxNy8wNyksIEBka2FybG92aSAoMjAxNy8wNyksIEBtYW5kcmVhbiAoMjAxNy8wOCksIEBqZmFzdG5hY2h0ICgyMDE3LzA5KSwgW0B5YmVsZW5rb10oaHR0cHM6Ly9naXRodWIuY29tL3liZWxlbmtvKSAoMjAxOC8wNyksIEByZW5lcGFyZG9uICgyMDE4LzEyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBvd2VyU2hlbGwgICAgICAgICAgICB8IEB3aW5nMzI4ICgyMDIwLzA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQeXRob24gICAgICAgICAgICAgICAgfCBAY2Jvcm5ldCAoMjAxNy8wOSkgQHRvbXBsdXMgKDIwMTgvMTApIEBrcmpha2JyamFrICgyMDIzLzAyKSBAZmEwMzExICgyMDIzLzEwKSBAbXVsdGFuaSAoMjAyMy8xMCkgfAp8IFIgICAgICAgICAgICAgICAgICAgICB8IEBSYW1hbnRoICgyMDE5LzA3KSBAc2FpZ2lyaWRoYXIyMSAoMjAxOS8wNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBSdWJ5ICAgICAgICAgICAgICAgICAgfCBAY2xpZmZhbm8gKDIwMTcvMDcpIEB6bHggKDIwMTcvMDkpIEBhdXRvcHAgKDIwMTkvMDIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUnVzdCAgICAgICAgICAgICAgICAgIHwgQGZyb2wgKDIwMTcvMDcpIEBmYXJjYWxsZXIgKDIwMTcvMDgpIEByaWNoYXJkd2hpdWsgKDIwMTkvMDcpIEBwYWxhZGluemggKDIwMjAvMDUpIEBqYWNvYi1wcm8gKDIwMjIvMTApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFNjYWxhICAgICAgICAgICAgICAgICB8IEBjbGFzbmFrZSAoMjAxNy8wNyksIEBzaGlqaW5rdWkgICgyMDE4LzAxKSwgQHJhbXppbWFhbGVqICgyMDE4LzAzKSwgQGNoYW1lbGVvbjgyICgyMDIwLzAzKSwgQEJvdWlsbGllICgyMDIwLzA0KSBAZmlzaDg2ICgyMDIzLzA2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBTd2lmdCAgICAgICAgICAgICAgICAgfCBAamdhdnJpcyAoMjAxNy8wNykgQGVoeWNoZSAoMjAxNy8wOCkgQEVkdWJpdHMgKDIwMTcvMDkpIEBqYXotYWggKDIwMTcvMDkpIEA0YnJ1bnUgKDIwMTkvMTEpIEBkeWR1czB4MTQgKDIwMjMvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgVHlwZVNjcmlwdCAgICAgICAgICAgIHwgQFRpRnUgKDIwMTcvMDcpIEB0YXhwb24gKDIwMTcvMDcpIEBzZWJhc3RpYW5oYWFzICgyMDE3LzA3KSBAa2VuaXN0ZXdhcmQgKDIwMTcvMDcpIEBWcm9saWpreCAoMjAxNy8wOSkgQG1hY2pvaG5ueSAoMjAxOC8wMSkgQHRvcGNlICgyMDE4LzEwKSBAYWtlaGlyICgyMDE5LzA3KSBAcGV0ZWpvaGFuc29ueG8gKDIwMTkvMTEpIEBhbWFraHJvdiAoMjAyMC8wMikgQGRhdmlkZ2FtZXJvICgyMDIyLzAzKSBAbWt1c2FrYSAoMjAyMi8wNCkgfAp8IFhvam8gICAgICAgICAgICAgICAgICB8IEBUb3BoZWVlICgyMDIzLzA0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKCgpQYXN0IE1lbWJlcnMgb2YgVGVjaG5pY2FsIENvbW1pdHRlZToKfCBMYW5ndWFnZXMvR2VuZXJhdG9ycyAgICAgICAgIHwgTWVtYmVyIChqb2luIGRhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCA6LS0tLS0tLS0tLS0tLS0tLSB8IDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8CnwgUHl0aG9uICAgICAgICAgICAgfCBAdGF4cG9uICgyMDE3LzA3KSBAZnJvbCAoMjAxNy8wNykgQG1ib2hsb29sICgyMDE3LzA3KSBAY2Jvcm5ldCAoMjAxNy8wOSkgQGtlbmpvbmVzLWNpc2NvICgyMDE3LzExKSBAdG9tcGx1cyAoMjAxOC8xMCkgQGFydW4tbmFsbGEgKDIwMTkvMTEpICB8CgoKOmhlYXJ0OiA9IExpbmsgdG8gc3VwcG9ydCB0aGUgY29udHJpYnV0b3IgZGlyZWN0bHkKCiMjIyBbNi4zIC0gSGlzdG9yeSBvZiBPcGVuQVBJIEdlbmVyYXRvcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKT3BlbkFQSSBHZW5lcmF0b3IgaXMgYSBmb3JrIG9mIFtTd2FnZ2VyIENvZGVnZW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2FnZ2VyLWFwaS9zd2FnZ2VyLWNvZGVnZW4pLiBJbiB2aWV3IG9mIHRoZSBpc3N1ZXMgd2l0aCB0aGUgU3dhZ2dlciBDb2RlZ2VuIDMuMC4wIChiZXRhKSByZWxlYXNlIGFuZCB0aGUgZGlzYWdyZWVtZW50IG9uIHRoZSBwcm9qZWN0J3MgZGlyZWN0aW9uLCBtb3JlIHRoYW4gNDAgdG9wIGNvbnRyaWJ1dG9ycyBhbmQgdGVtcGxhdGUgY3JlYXRvcnMgb2YgU3dhZ2dlciBDb2RlZ2VuIGRlY2lkZWQgdG8gZm9yayBTd2FnZ2VyIENvZGVnZW4gYW5kIG1haW50YWluIGEgY29tbXVuaXR5LWRyaXZlbiB2ZXJzaW9uIGNhbGxlZCAiT3BlbkFQSSBHZW5lcmF0b3IiLiBQbGVhc2UgcmVmZXIgdG8gdGhlIFtRJkFdKGRvY3MvcW5hLm1kKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIyMgRm91bmRpbmcgTWVtYmVycyAoYWxwaGFiZXRpY2FsIG9yZGVyKToKCi0gW0FraWhpdG8gTmFrYW5vXShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKQotIFtBcnRlbSBPY2hlcmVka29dKGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheGllKQotIFtBcnRodXIgTW9nbGlldl0oaHR0cHM6Ly9naXRodWIuY29tL0FydGljdXMpCi0gW0JhcnRlayBLcnl6YV0oaHR0cHM6Ly9naXRodWIuY29tL2Jrcnl6YSkKLSBbQmVuIFdlbGxzXShodHRwczovL2dpdGh1Yi5jb20vYnZ3ZWxscykKLSBbQmVuamFtaW4gR2lsbF0oaHR0cHM6Ly9naXRodWIuY29tL2JqZ2lsbCkKLSBbQ2hyaXN0b3BoZSBCb3JuZXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9jYm9ybmV0KQotIFtDbGlmZmFubyBTdWJhZ2lvXShodHRwczovL2dpdGh1Yi5jb20vY2xpZmZhbm8pCi0gW0RhaWtpIE1hdHN1ZGF0ZV0oaHR0cHM6Ly9naXRodWIuY29tL2QtZGF0ZSkKLSBbRGFuaWVsXShodHRwczovL2dpdGh1Yi5jb20vRGFuaWVsa3UxNSkKLSBbRW1pbGlhbm8gQm9uYXNzaV0oaHR0cHM6Ly9naXRodWIuY29tL2VtaWxpYW5vYm9uYXNzaSkKLSBbRXJpayBUaW1tZXJzXShodHRwczovL2dpdGh1Yi5jb20vZXJpa3RpbSkKLSBbRXN0ZWJhbiBHZWhyaW5nXShodHRwczovL2dpdGh1Yi5jb20vbWFjam9obm55KQotIFtHdXN0YXZvIFBhel0oaHR0cHM6Ly9naXRodWIuY29tL2d1c3Rhdm9hcGF6KQotIFtKYXZpZXIgVmVsaWxsYV0oaHR0cHM6Ly9naXRodWIuY29tL2p2ZWxpbGxhKQotIFtKZWFuLUZyYW7Dp29pcyBDw7R0w6ldKGh0dHBzOi8vZ2l0aHViLmNvbS9KRkNvdGUpCi0gW0ppbSBTY2h1YmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2ppbXNjaHViZXJ0KQotIFtKb24gU2Nob25pbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hvbmluZykKLSBbSsOpcsOpbWllIEJyZXNzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ptaW5pKQotIFtKw7ZybiBBaHJlbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYXllYXJuKQotIFtLZW5pIFN0ZXdhcmRdKGh0dHBzOi8vZ2l0aHViLmNvbS9rZW5pc3Rld2FyZCkKLSBbTWFyY2luIFN0ZWZhbml1a10oaHR0cHM6Ly9naXRodWIuY29tL21zdGVmYW5pdWspCi0gW01hcnRpbiBEZWxpbGxlXShodHRwczovL2dpdGh1Yi5jb20vTWFydGluRGVsaWxsZSkKLSBbTWFzYWhpcm8gWWFtYXVjaGldKGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdhcykKLSBbTWljaGVsZSBBbGJhbm9dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNoZWxlYWxiYW5vKQotIFtSYW16aSBNYWFsZWpdKGh0dHBzOi8vZ2l0aHViLmNvbS9yYW16aW1hYWxlaikKLSBbUmF2aW5kcmEgTmlrYW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9yYXZpbmlrYW0pCi0gW1JpY2FyZG8gQ2FyZG9uYV0oaHR0cHM6Ly9naXRodWIuY29tL3JpY2FyZG9uYSkKLSBbU2ViYXN0aWFuIEhhYXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5oYWFzKQotIFtTZWJhc3RpYW4gTWFuZHJlYW5dKGh0dHBzOi8vZ2l0aHViLmNvbS9tYW5kcmVhbikKLSBbU3JlZW5pZGhpIFNyZWVzaGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9zcmVlc2hhcykKLSBbU3RlZmFuIEtyaXNtYW5uXShodHRwczovL2dpdGh1Yi5jb20vc3RrcndvcmspCi0gW1N0ZXBoYW5lIENhcnJlel0oaHR0cHM6Ly9naXRodWIuY29tL3N0Y2FycmV6KQotIFtUYWt1cm8gV2FkYV0oaHR0cHM6Ly9naXRodWIuY29tL3RheHBvbikKLSBbVG9tYXN6IFBydXNdKGh0dHBzOi8vZ2l0aHViLmNvbS90b21wbHVzKQotIFtUcmlzdGFuIFNsb3VnaHRlcl0oaHR0cHM6Ly9naXRodWIuY29tL3RzbG91Z2h0ZXIpCi0gW1ZpY3RvciBPcmxvdnNreV0oaHR0cHM6Ly9naXRodWIuY29tL3ZpY2xvdnNreSkKLSBbVmljdG9yIFRyYWtodGVuYmVyZ10oaHR0cHM6Ly9naXRodWIuY29tL3ZpY3RvcmdpdCkKLSBbVmxhZCBGcm9sb3ZdKGh0dHBzOi8vZ2l0aHViLmNvbS9mcm9sKQotIFtWbGFkaW1pciBQb3V6YW5vdl0oaHR0cHM6Ly9naXRodWIuY29tL2ZhcmNhbGxlcikKLSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly9naXRodWIuY29tL3dpbmczMjgpCi0gW1hpbiBNZW5nXShodHRwczovL2dpdGh1Yi5jb20veG1lbmcxKSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vdXNlci9vdmVydmlldz91PTE2NDM1Mzg1KQotIFtYdSBIdWkgSHVpXShodHRwczovL2dpdGh1Yi5jb20veGhoKQotIFthbnRpaGF4XShodHRwczovL2dpdGh1Yi5jb20vYW50aWhheCkKLSBbYmVhdGNyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9iZWF0Y3JhY2tlcikKLSBbZGF1cm5pbWF0b3JdKGh0dHBzOi9naXRodWIuY29tL2RhdXJuaW1hdG9yKQotIFtldGhlcmVhbGpveV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZWFsam95KQotIFtqZmlhbGFdKGh0dHBzOi8vZ2l0aHViLmNvbS9qZmlhbGEpCi0gW2x1a295YW5vdl0oaHR0cHM6Ly9naXRodWIuY29tL2x1a295YW5vdikKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyBbNyAtIExpY2Vuc2VdKCN0YWJsZS1vZi1jb250ZW50cykKLS0tLS0tLQoKQ29weXJpZ2h0IDIwMTggT3BlbkFQSS1HZW5lcmF0b3IgQ29udHJpYnV0b3JzIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpCkNvcHlyaWdodCAyMDE4IFNtYXJ0QmVhciBTb2Z0d2FyZQoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IFthcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXShodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKQoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi0tLQo=
- readmeEtag: '"0f3d6f4452f90ec86a12ab5ae7df977784039677"'
- readmeLastModified: Wed, 25 Sep 2024 18:21:11 GMT
+ PGgxIGFsaWduPSJjZW50ZXIiPk9wZW5BUEkgR2VuZXJhdG9yPC9oMT4KCgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKWyFbU3RhYmxlIHJlbGVhc2VzIGluIE1hdmVuIENlbnRyYWxdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbWF2ZW4tbWV0YWRhdGEvdi9odHRwcy9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWF2ZW4tbWV0YWRhdGEueG1sLnN2ZyldKGh0dHA6Ly9zZWFyY2gubWF2ZW4ub3JnLyNzZWFyY2glN0NnYXYlN0MxJTdDZyUzQSUyMm9yZy5vcGVuYXBpdG9vbHMlMjIlMjBBTkQlMjBhJTNBJTIyb3BlbmFwaS1nZW5lcmF0b3IlMjIpClshW0FwYWNoZSAyLjAgTGljZW5zZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUFwYWNoZSUyMDIuMC1vcmFuZ2UpXSguL0xJQ0VOU0UpClshW09wZW4gQ29sbGVjdGl2ZSBiYWNrZXJzXShodHRwczovL2ltZy5zaGllbGRzLmlvL29wZW5jb2xsZWN0aXZlL2JhY2tlcnMvb3BlbmFwaV9nZW5lcmF0b3I/Y29sb3I9b3JhbmdlJmxhYmVsPU9wZW5Db2xsZWN0aXZlJTIwQmFja2VycyldKGh0dHBzOi8vb3BlbmNvbGxlY3RpdmUuY29tL29wZW5hcGlfZ2VuZXJhdG9yKQpbIVtKb2luIHRoZSBTbGFjayBjaGF0IHJvb21dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFkZ2UvU2xhY2stSm9pbiUyMHRoZSUyMGNoYXQlMjByb29tLW9yYW5nZSldKGh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9vcGVuYXBpLWdlbmVyYXRvci9zaGFyZWRfaW52aXRlL3p0LTEyanh4ZDdwMi1YVWVRTX40cHpzVTl4fmVHTFFxWDJnKQpbIVtGb2xsb3cgT3BlbkFQSSBHZW5lcmF0b3IgVHdpdHRlciBhY2NvdW50IHRvIGdldCB0aGUgbGF0ZXN0IHVwZGF0ZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90d2l0dGVyL2ZvbGxvdy9vYXNfZ2VuZXJhdG9yLnN2Zz9zdHlsZT1zb2NpYWwmbGFiZWw9Rm9sbG93KV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9vYXNfZ2VuZXJhdG9yKQpbIVtDb250cmlidXRlIHdpdGggR2l0cG9kXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0NvbnRyaWJ1dGUlMjB3aXRoLUdpdHBvZC05MDhhODU/bG9nbz1naXRwb2QpXShodHRwczovL2dpdHBvZC5pby8jaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvcikKWyFbQ29uYW4gQ2VudGVyXShodHRwczovL3NoaWVsZHMuaW8vY29uYW4vdi9vcGVuYXBpLWdlbmVyYXRvcildKGh0dHBzOi8vY29uYW4uaW8vY2VudGVyL3JlY2lwZXMvb3BlbmFwaS1nZW5lcmF0b3IpClshW1JldnZlZCB1cCBieSBEZXZlbG9jaXR5XShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1JldnZlZCUyMHVwJTIwYnktRGV2ZWxvY2l0eS0wNkEwQ0U/bG9nbz1HcmFkbGUmbGFiZWxDb2xvcj0wMjMwM0EpXShodHRwczovL2dlLm9wZW5hcGktZ2VuZXJhdG9yLnRlY2gvc2NhbnMpCjwvZGl2PgoKPGRpdiBhbGlnbj0iY2VudGVyIj4KCltNYXN0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIpIChgNy45LjBgKToKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL2FwaS50cmF2aXMtY2kuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci5zdmc/YnJhbmNoPW1hc3RlciZzdGF0dXM9cGFzc2VkKV0oaHR0cHM6Ly9hcHAudHJhdmlzLWNpLmNvbS9naXRodWIvT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2J1aWxkcykKWyFbSW50ZWdyYXRpb24gVGVzdDJdKGh0dHBzOi8vY2lyY2xlY2kuY29tL2doL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci5zdmc/c3R5bGU9c2hpZWxkKV0oaHR0cHM6Ly9jaXJjbGVjaS5jb20vZ2gvT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yKQpbIVtXaW5kb3dzIFRlc3RdKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL2FwaS9wcm9qZWN0cy9zdGF0dXMvZ2l0aHViL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvcj9icmFuY2g9bWFzdGVyJnN2Zz10cnVlJnBhc3NpbmdUZXh0PVdpbmRvd3MlMjBUZXN0JTIwLSUyME9LJmZhaWxpbmdUZXh0PVdpbmRvd3MlMjBUZXN0JTIwLSUyMEZhaWxzKV0oaHR0cHM6Ly9jaS5hcHB2ZXlvci5jb20vcHJvamVjdC9XaWxsaWFtQ2hlbmcvb3BlbmFwaS1nZW5lcmF0b3IpClshW0JpdHJpc2VdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYml0cmlzZS80YTJiMTBhODE5ZDEyYjY3L21hc3Rlcj9sYWJlbD1iaXRyaXNlJTNBJTIwU3dpZnQrNCw1JnRva2VuPTg1OUZNRFI4UUh3YWJDend2Wks2dlEpXShodHRwczovL2FwcC5iaXRyaXNlLmlvL2FwcC80YTJiMTBhODE5ZDEyYjY3KQoKPC9kaXY+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKOnN0YXI6OnN0YXI6OnN0YXI6IElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUsIHBsZWFzZSByZWZlciB0byBbZ3VpZGVsaW5lc10oQ09OVFJJQlVUSU5HLm1kKSBhbmQgYSBsaXN0IG9mIFtvcGVuIHRhc2tzXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL2lzc3Vlcz9xPWlzJTNBb3BlbitpcyUzQWlzc3VlK2xhYmVsJTNBJTIyaGVscCt3YW50ZWQlMjIpLiA6c3Rhcjo6c3Rhcjo6c3RhcjoKCjpiYW5nYmFuZzogVG8gbWlncmF0ZSBmcm9tIFN3YWdnZXIgQ29kZWdlbiB0byBPcGVuQVBJIEdlbmVyYXRvciwgcGxlYXNlIHJlZmVyIHRvIHRoZSBbbWlncmF0aW9uIGd1aWRlXShkb2NzL21pZ3JhdGlvbi1mcm9tLXN3YWdnZXItY29kZWdlbi5tZCkgOmJhbmdiYW5nOgoKOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSByZWZlciB0byB0aGUgW1dpa2kgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci93aWtpKSBhbmQgW0ZBUV0oaHR0cHM6Ly9naXRodWIuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci93aWtpL0ZBUSkgOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjoKCjpub3RlYm9va193aXRoX2RlY29yYXRpdmVfY292ZXI6IFRoZSBlQm9vayBbQSBCZWdpbm5lcidzIEd1aWRlIHRvIENvZGUgR2VuZXJhdGlvbiBmb3IgUkVTVCBBUElzXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9vaykgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBiZWdpbm5lcnMgOm5vdGVib29rX3dpdGhfZGVjb3JhdGl2ZV9jb3ZlcjoKCjp3YXJuaW5nOiBJZiB0aGUgT3BlbkFQSSBzcGVjLCB0ZW1wbGF0ZXMgb3IgYW55IGlucHV0IChlLmcuIG9wdGlvbnMsIGVudmlyb25tZW50IHZhcmlhYmxlcykgaXMgb2J0YWluZWQgZnJvbSBhbiB1bnRydXN0ZWQgc291cmNlIG9yIGVudmlyb25tZW50LCBwbGVhc2UgbWFrZSBzdXJlIHlvdSd2ZSByZXZpZXdlZCB0aGVzZSBpbnB1dHMgYmVmb3JlIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBBUEkgY2xpZW50LCBzZXJ2ZXIgc3R1YiBvciBkb2N1bWVudGF0aW9uIHRvIGF2b2lkIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXMgKGUuZy4gW2NvZGUgaW5qZWN0aW9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db2RlX2luamVjdGlvbikpLiBGb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBwbGVhc2UgY29udGFjdCBbdGVhbUBvcGVuYXBpdG9vbHMub3JnXShtYWlsdG86dGVhbUBvcGVuYXBpdG9vbHMub3JnKS4gOndhcm5pbmc6Cgo6YmFuZ2Jhbmc6IEJvdGggIk9wZW5BUEkgVG9vbHMiIChodHRwczovL09wZW5BUElUb29scy5vcmcgLSB0aGUgcGFyZW50IG9yZ2FuaXphdGlvbiBvZiBPcGVuQVBJIEdlbmVyYXRvcikgYW5kICJPcGVuQVBJIEdlbmVyYXRvciIgYXJlIG5vdCBhZmZpbGlhdGVkIHdpdGggT3BlbkFQSSBJbml0aWF0aXZlIChPQUkpIDpiYW5nYmFuZzoKCjwvZGl2PgoKIyMgU3BvbnNvcnMKCklmIHlvdSBmaW5kIE9wZW5BUEkgR2VuZXJhdG9yIHVzZWZ1bCBmb3Igd29yaywgcGxlYXNlIGNvbnNpZGVyIGFza2luZyB5b3VyIGNvbXBhbnkgdG8gc3VwcG9ydCB0aGlzIE9wZW4gU291cmNlIHByb2plY3QgYnkgW2JlY29taW5nIGEgc3BvbnNvcl0oaHR0cHM6Ly9vcGVuY29sbGVjdGl2ZS5jb20vb3BlbmFwaV9nZW5lcmF0b3IpLiBZb3UgY2FuIGFsc28gaW5kaXZpZHVhbGx5IHNwb25zb3IgdGhlIHByb2plY3QgYnkgW2JlY29taW5nIGEgYmFja2VyXShodHRwczovL29wZW5jb2xsZWN0aXZlLmNvbS9vcGVuYXBpX2dlbmVyYXRvcikuCgojIyMjIFRoYW5rIHlvdSB0byBvdXIgYnJvbnplIHNwb25zb3JzIQoKWyFbTmFtU29yXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9uYW1zb3IucG5nKV0oaHR0cHM6Ly93d3cubmFtc29yLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbIVtMaWdodEJvd10oaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvbGlnaHRib3cucG5nKV0oaHR0cHM6Ly93d3cubGlnaHRib3cubmV0Lz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZG9jc3ByaW5nLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9kb2NzcHJpbmcuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZGF0YWRvZy5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vZGF0YWRvZ2hxLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3RoYWxlcy5qcGciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vY3BsLnRoYWxlc2dyb3VwLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2FwaWRlY2suanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5hcGlkZWNrLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL3BleGEucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5wZXhhLmNvbS5hdS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL251bWFyeS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3Lm51bWFyeS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9vbmVzaWduYWwucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5vbmVzaWduYWwuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvdmlydHVhbGFuc29mdHdhcmUucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy52aXJ0dWFsYW5zb2Z0d2FyZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9tZXJnZWRldi5qcGVnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5tZXJnZS5kZXYvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9idXJrZXJ0LmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYnVya2VydC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9maW5ib3VybmUucG5nIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5maW5ib3VybmUuY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYnVtcHNoLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9idW1wLnNoLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYmlsZXRvLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuYmlsZXRvLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2JhaXJlc2Rldi5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmJhaXJlc2Rldi5jb20vc3BvbnNvcmluZy1vcGVuLXNvdXJjZS1wcm9qZWN0cy8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2RtdGVjaC5qcGVnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL3d3dy5kbXRlY2guZGUvP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9hZHllbi5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vYWR5ZW4uY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZm9ybmV4LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9mb3JuZXguY29tLz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvYWxsb3lhdXRvbWF0aW9uLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9ydW5hbGxveS5jb20vc2lnbnVwP3V0bV9zb3VyY2U9Z2l0aHViJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPTE1MjRfb3BlbmFwaWdlbmVyYXRvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9zc3N0d2l0dGVyLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9zc3N0d2l0dGVyLmNvbS8/dXRtX3NvdXJjZT1naXRodWImdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9zdml4LnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly93d3cuc3ZpeC5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2xpdHNsaW5rLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9saXRzbGluay5jb20vc2VydmljZXMvYXJ0aWZpY2lhbC1pbnRlbGxpZ2VuY2U/dXRtX3NvdXJjZT1vcGVuYXBpLWdlbmVyYXRvciZ1dG1fbWVkaXVtPXNwb25zb3JzaGlwJnV0bV9jYW1wYWlnbj1vc3Mtc3BvbnNvcnNoaXApCls8aW1nIHNyYz0iaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoL2ltZy9jb21wYW5pZXMvZGVzaWdubGkuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+XShodHRwczovL2Rlc2lnbmxpLmNvP3V0bV9zb3VyY2U9b3BlbmFwaS1nZW5lcmF0b3ImdXRtX21lZGl1bT1zcG9uc29yc2hpcCZ1dG1fY2FtcGFpZ249b3NzLXNwb25zb3JzaGlwKQpbPGltZyBzcmM9Imh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaC9pbWcvY29tcGFuaWVzL2l0bS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vb3BlbnNvdXJjZS5tdWVuY2hlbi5kZT91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9rb25nLnBuZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiPl0oaHR0cHM6Ly9rb25naHEuY29tL3Byb2R1Y3RzL2tvbmcta29ubmVjdD91dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9zb3VyY2U9Z2l0aHViJnV0bV9jYW1wYWlnbj1wbGF0Zm9ybSZ1dG1fY29udGVudD1vcGVuYXBpLWdlbmVyYXRvcikKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9yb3V0ZTRtZS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vcm91dGU0bWUuY29tLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9kbS5wbmciIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij5dKGh0dHBzOi8vd3d3LmRvdGNvbS1tb25pdG9yLmNvbS9zcG9uc29yaW5nLW9wZW4tc291cmNlLXByb2plY3RzLz91dG1fc291cmNlPW9wZW5hcGktZ2VuZXJhdG9yJnV0bV9tZWRpdW09c3BvbnNvcnNoaXAmdXRtX2NhbXBhaWduPW9zcy1zcG9uc29yc2hpcCkKCiMjIyMgVGhhbmsgeW91IEdvRGFkZHkgZm9yIHNwb25zb3JpbmcgdGhlIGRvbWFpbiBuYW1lcywgTGlub2RlIGZvciBzcG9uc29yaW5nIHRoZSBWUFMsIENoZWNrbHkgZm9yIHNwb25zb3JpbmcgdGhlIEFQSSBtb25pdG9yaW5nIGFuZCBHcmFkbGUgZm9yIHNwb25zb3JpbmcgRGV2ZWxvY2l0eQoKWzxpbWcgc3JjPSJodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvaW1nL2NvbXBhbmllcy9nb2RhZGR5LnBuZyIgd2lkdGg9IjE1MCI+XShodHRwczovL3d3dy5nb2RhZGR5LmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbIVtMaW5vZGVdKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vbWVkaWEvaW1hZ2VzL2xvZ29zL3N0YW5kYXJkL2xpZ2h0L2xpbm9kZS1sb2dvX3N0YW5kYXJkX2xpZ2h0X3NtYWxsLnBuZyldKGh0dHBzOi8vd3d3Lmxpbm9kZS5jb20vP3V0bV9zb3VyY2U9b3BlbmFwaV9nZW5lcmF0b3ImdXRtX21lZGl1bT1naXRodWJfd2VicGFnZSZ1dG1fY2FtcGFpZ249c3BvbnNvcikKWzxpbWcgc3JjPSJodHRwczovL2VuY3J5cHRlZC10Ym4wLmdzdGF0aWMuY29tL2ltYWdlcz9xPXRibiUzQUFOZDlHY1JBaEVZYWRVeVpZekdVb3RaaVNkWGtWTXFxTEd1b2h5aXhMbDRlVXBVVjZwQWJVVUxMIiB3aWR0aD0iMTUwIj5dKGh0dHBzOi8vY2hlY2tseWhxLmNvbS8/dXRtX3NvdXJjZT1vcGVuYXBpX2dlbmVyYXRvciZ1dG1fbWVkaXVtPWdpdGh1Yl93ZWJwYWdlJnV0bV9jYW1wYWlnbj1zcG9uc29yKQpbPGltZyBzcmM9Imh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmcvd2lraXBlZGlhL2NvbW1vbnMvdGh1bWIvYy9jYi9HcmFkbGVfbG9nby5wbmcvMzIwcHgtR3JhZGxlX2xvZ28ucG5nIiB3aWR0aD0iMTUwIj5dKGh0dHBzOi8vZ3JhZGxlLm9yZz91dG1fc291cmNlPW9wZW5hcGlfZ2VuZXJhdG9yJnV0bV9tZWRpdW09Z2l0aHViX3dlYnBhZ2UmdXRtX2NhbXBhaWduPXNwb25zb3IpCgojIyBPdmVydmlldwoKT3BlbkFQSSBHZW5lcmF0b3IgYWxsb3dzIGdlbmVyYXRpb24gb2YgQVBJIGNsaWVudCBsaWJyYXJpZXMgKFNESyBnZW5lcmF0aW9uKSwgc2VydmVyIHN0dWJzLCAgZG9jdW1lbnRhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBhdXRvbWF0aWNhbGx5IGdpdmVuIGFuIFtPcGVuQVBJIFNwZWNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PQUkvT3BlbkFQSS1TcGVjaWZpY2F0aW9uKSAoYm90aCAyLjAgYW5kIDMuMCBhcmUgc3VwcG9ydGVkKS4gQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGxhbmd1YWdlcy9mcmFtZXdvcmtzIGFyZSBzdXBwb3J0ZWQ6Cgp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFuZ3VhZ2VzL0ZyYW1ld29ya3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgKipBUEkgY2xpZW50cyoqICAgICAgICAgICAgICAgICAgfCAqKkFjdGlvblNjcmlwdCoqLCAqKkFkYSoqLCAqKkFwZXgqKiwgKipCYXNoKiosICoqQyoqLCAqKkMjKiogKC5uZXQgMi4wLCAzLjUgb3IgbGF0ZXIsIC5ORVQgU3RhbmRhcmQgMS4zIC0gMi4xLCAuTkVUIENvcmUgMy4xLCAuTkVUIDUuMC4gTGlicmFyaWVzOiBSZXN0U2hhcnAsIEdlbmVyaWNIb3N0LCBIdHRwQ2xpZW50KSwgKipDKysqKiAoQXJkdWlubywgY3BwLXJlc3RzZGssIFF0NSwgVGl6ZW4sIFVucmVhbCBFbmdpbmUgNCksICoqQ2xvanVyZSoqLCAqKkNyeXN0YWwqKiwgKipEYXJ0KiosICoqRWxpeGlyKiosICoqRWxtKiosICoqRWlmZmVsKiosICoqRXJsYW5nKiosICoqR28qKiwgKipHcm9vdnkqKiwgKipIYXNrZWxsKiogKGh0dHAtY2xpZW50LCBTZXJ2YW50KSwgKipKYXZhKiogKEFwYWNoZSBIdHRwQ2xpZW50IDQueCwgQXBhY2hlIEh0dHBDbGllbnQgNS54LCBKZXJzZXkyLngsIE9rSHR0cCwgUmV0cm9maXQxLngsIFJldHJvZml0Mi54LCBGZWlnbiwgUmVzdFRlbXBsYXRlLCBSRVNURWFzeSwgVmVydHgsIEdvb2dsZSBBUEkgQ2xpZW50IExpYnJhcnkgZm9yIEphdmEsIFJlc3QtYXNzdXJlZCwgU3ByaW5nIDUgV2ViIENsaWVudCwgU3ByaW5nIDYgUmVzdENsaWVudCwgTWljcm9Qcm9maWxlIFJlc3QgQ2xpZW50LCBIZWxpZG9uKSwgKipKZXRicmFpbnMgSFRUUCBDbGllbnQqKiwgKipKdWxpYSoqLCAqKms2KiosICoqS290bGluKiosICoqTHVhKiosICoqTjRKUyoqLCAqKk5pbSoqLCAqKk5vZGUuanMvSmF2YVNjcmlwdCoqIChFUzUsIEVTNiwgQW5ndWxhckpTIHdpdGggR29vZ2xlIENsb3N1cmUgQ29tcGlsZXIgYW5ub3RhdGlvbnMsIEZsb3cgdHlwZXMsIEFwb2xsbyBHcmFwaFFMIERhdGFTdG9yZSksICoqT2JqZWN0aXZlLUMqKiwgKipPQ2FtbCoqLCAqKlBlcmwqKiwgKipQSFAqKiwgKipQb3dlclNoZWxsKiosICoqUHl0aG9uKiosICoqUioqLCAqKlJ1YnkqKiwgKipSdXN0KiogKGh5cGVyLCByZXF3ZXN0LCBydXN0LXNlcnZlciksICoqU2NhbGEqKiAoYWtrYSwgaHR0cDRzLCBzY2FsYXosIHN0dHAsIHN3YWdnZXItYXN5bmMtaHR0cGNsaWVudCwgcGVra28pLCAqKlN3aWZ0KiogKDIueCwgMy54LCA0LngsIDUueCwgNi54KSwgKipUeXBlc2NyaXB0KiogKEFuZ3VsYXJKUywgQW5ndWxhciAoOS54IC0gMTgueCksIEF1cmVsaWEsIEF4aW9zLCBGZXRjaCwgSW52ZXJzaWZ5LCBqUXVlcnksIE5lc3RqcywgTm9kZSwgcmVkdXgtcXVlcnksIFJ4anMpLCAqKlhvSm8qKiwgKipaYXBpZXIqKiB8CnwgKipTZXJ2ZXIgc3R1YnMqKiAgICAgICAgICAgICAgICAgfCAqKkFkYSoqLCAqKkMjKiogKEFTUC5ORVQgQ29yZSwgQXp1cmUgRnVuY3Rpb25zKSwgKipDKysqKiAoUGlzdGFjaGUsIFJlc3RiZWQsIFF0NSBRSFRUUEVuZ2luZSksICoqRXJsYW5nKiosICoqRiMqKiAoR2lyYWZmZSksICoqR28qKiAobmV0L2h0dHAsIEdpbiwgRWNobyksICoqSGFza2VsbCoqIChTZXJ2YW50LCBZZXNvZCksICoqSmF2YSoqIChNU0Y0SiwgU3ByaW5nLCBVbmRlcnRvdywgSkFYLVJTOiBDREksIENYRiwgSW5mbGVjdG9yLCBKZXJzZXksIFJlc3RFYXN5LCBQbGF5IEZyYW1ld29yaywgW1BLTVNUXShodHRwczovL2dpdGh1Yi5jb20vUHJvS2FybWEtSW5jL3BrbXN0LWdldHRpbmctc3RhcnRlZC1leGFtcGxlcyksIFtWZXJ0LnhdKGh0dHBzOi8vdmVydHguaW8vKSwgW0FwYWNoZSBDYW1lbF0oaHR0cHM6Ly9jYW1lbC5hcGFjaGUub3JnLyksIFtIZWxpZG9uXShodHRwczovL2hlbGlkb24uaW8vKSksICoqSnVsaWEqKiwgKipLb3RsaW4qKiAoU3ByaW5nIEJvb3QsIFtLdG9yXShodHRwczovL2dpdGh1Yi5jb20va3RvcmlvL2t0b3IpLCBbVmVydC54XShodHRwczovL3ZlcnR4LmlvLykpLCAqKlBIUCoqIChbRmxpZ2h0XShodHRwczovL2RvY3MuZmxpZ2h0cGhwLmNvbS8pLCBMYXJhdmVsLCBMdW1lbiwgW01lenppbyAoZmthIFplbmQgRXhwcmVzc2l2ZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXp6aW8vbWV6emlvKSwgU2xpbSwgU2lsZXgsIFtTeW1mb255XShodHRwczovL3N5bWZvbnkuY29tLykpLCAqKlB5dGhvbioqIChGYXN0QVBJLCBGbGFzayksICoqTm9kZUpTKiosICoqUnVieSoqIChTaW5hdHJhLCBSYWlsczUpLCAqKlJ1c3QqKiAoW3J1c3Qtc2VydmVyXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzL3J1c3Qtc2VydmVyLykpLCAqKlNjYWxhKiogKEFra2EsIFtGaW5jaF0oaHR0cHM6Ly9naXRodWIuY29tL2ZpbmFnbGUvZmluY2gpLCBbTGFnb21dKGh0dHBzOi8vZ2l0aHViLmNvbS9sYWdvbS9sYWdvbSksIFtQbGF5XShodHRwczovL3d3dy5wbGF5ZnJhbWV3b3JrLmNvbS8pLCBbQ2Fza10oaHR0cHM6Ly9naXRodWIuY29tL2NvbS1saWhhb3lpL2Nhc2spLCBTY2FsYXRyYSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICoqQVBJIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9ycyoqIHwgKipIVE1MKiosICoqQ29uZmx1ZW5jZSBXaWtpKiosICoqQXNjaWlkb2MqKiwgKipNYXJrZG93bioqLCAqKlBsYW50VU1MKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAqKkNvbmZpZ3VyYXRpb24gZmlsZXMqKiAgICAgICAgICB8IFsqKkFwYWNoZTIqKl0oaHR0cHM6Ly9odHRwZC5hcGFjaGUub3JnLykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgKipPdGhlcnMqKiAgICAgICAgICAgICAgICAgICAgICAgfCAqKkdyYXBoUUwqKiwgKipKTWV0ZXIqKiwgKipLdG9ybSoqLCAqKk15U1FMIFNjaGVtYSoqLCAqKlBvc3RtYW4gQ29sbGVjdGlvbioqLCAqKlByb3RvY29sIEJ1ZmZlcioqLCAqKldTREwqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKIyMgVGFibGUgb2YgY29udGVudHMKCiAgLSBbT3BlbkFQSSBHZW5lcmF0b3JdKCNvcGVuYXBpLWdlbmVyYXRvcikKICAtIFtPdmVydmlld10oI292ZXJ2aWV3KQogIC0gW1RhYmxlIG9mIENvbnRlbnRzXSgjdGFibGUtb2YtY29udGVudHMpCiAgLSBbMSAtIEluc3RhbGxhdGlvbl0oIzEtLS1pbnN0YWxsYXRpb24pCiAgICAtIFsxLjEgLSBDb21wYXRpYmlsaXR5XSgjMTEtLS1jb21wYXRpYmlsaXR5KQogICAgLSBbMS4yIC0gQXJ0aWZhY3RzIG9uIE1hdmVuIENlbnRyYWxdKCMxMi0tLWFydGlmYWN0cy1vbi1tYXZlbi1jZW50cmFsKQogICAgLSBbMS4zIC0gRG93bmxvYWQgSkFSXSgjMTMtLS1kb3dubG9hZC1qYXIpCiAgICAtIFsxLjQgLSBCdWlsZCBQcm9qZWN0c10oIzE0LS0tYnVpbGQtcHJvamVjdHMpCiAgICAtIFsxLjUgLSBIb21lYnJld10oIzE1LS0taG9tZWJyZXcpCiAgICAtIFsxLjYgLSBEb2NrZXJdKCMxNi0tLWRvY2tlcikKICAgIC0gWzEuNyAtIE5QTV0oIzE3LS0tbnBtKQogIC0gWzIgLSBHZXR0aW5nIFN0YXJ0ZWRdKCMyLS0tZ2V0dGluZy1zdGFydGVkKQogIC0gWzMgLSBVc2FnZV0oIzMtLS11c2FnZSkKICAgIC0gWzMuMSAtIEN1c3RvbWl6YXRpb25dKCMzMS0tLWN1c3RvbWl6YXRpb24pCiAgICAtIFszLjIgLSBXb3JrZmxvdyBJbnRlZ3JhdGlvbl0oIzMyLS0td29ya2Zsb3ctaW50ZWdyYXRpb24tbWF2ZW4tZ3JhZGxlLWdpdGh1Yi1jaWNkKQogICAgLSBbMy4zIC0gT25saW5lIEdlbmVyYXRvcnNdKCMzMy0tLW9ubGluZS1vcGVuYXBpLWdlbmVyYXRvcikKICAgIC0gWzMuNCAtIExpY2Vuc2UgSW5mb3JtYXRpb24gb24gR2VuZXJhdGVkIENvZGVdKCMzNC0tLWxpY2Vuc2UtaW5mb3JtYXRpb24tb24tZ2VuZXJhdGVkLWNvZGUpCiAgICAtIFszLjUgLSBJREUgSW50ZWdyYXRpb25dKCMzNS0tLWlkZS1pbnRlZ3JhdGlvbikKICAtIFs0IC0gQ29tcGFuaWVzL1Byb2plY3RzIHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXSgjNC0tLWNvbXBhbmllc3Byb2plY3RzLXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKQogIC0gWzUgLSBQcmVzZW50YXRpb25zL1ZpZGVvcy9UdXRvcmlhbHMvQm9va3NdKCM1LS0tcHJlc2VudGF0aW9uc3ZpZGVvc3R1dG9yaWFsc2Jvb2tzKQogIC0gWzYgLSBBYm91dCBVc10oIzYtLS1hYm91dC11cykKICAgIC0gWzYuMSAtIE9wZW5BUEkgR2VuZXJhdG9yIENvcmUgVGVhbV0oIzYxLS0tb3BlbmFwaS1nZW5lcmF0b3ItY29yZS10ZWFtKQogICAgLSBbNi4yIC0gT3BlbkFQSSBHZW5lcmF0b3IgVGVjaG5pY2FsIENvbW1pdHRlZV0oIzYyLS0tb3BlbmFwaS1nZW5lcmF0b3ItdGVjaG5pY2FsLWNvbW1pdHRlZSkKICAgIC0gWzYuMyAtIEhpc3Rvcnkgb2YgT3BlbkFQSSBHZW5lcmF0b3JdKCM2My0tLWhpc3Rvcnktb2Ytb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbNyAtIExpY2Vuc2VdKCM3LS0tbGljZW5zZSkKCiMjIFsxIC0gSW5zdGFsbGF0aW9uXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMgWzEuMSAtIENvbXBhdGliaWxpdHldKCN0YWJsZS1vZi1jb250ZW50cykKClRoZSBPcGVuQVBJIFNwZWNpZmljYXRpb24gaGFzIHVuZGVyZ29uZSAzIHJldmlzaW9ucyBzaW5jZSBpbml0aWFsIGNyZWF0aW9uIGluIDIwMTAuICBUaGUgb3BlbmFwaS1nZW5lcmF0b3IgcHJvamVjdCBoYXMgdGhlIGZvbGxvd2luZyBjb21wYXRpYmlsaXRpZXMgd2l0aCB0aGUgT3BlbkFQSSBTcGVjaWZpY2F0aW9uOgoKfCBPcGVuQVBJIEdlbmVyYXRvciBWZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZWxlYXNlIERhdGUgfCBOb3RlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCA3LjkuMCAodXBjb21pbmcgbWlub3IgcmVsZWFzZSkgW1NOQVBTSE9UXShodHRwczovL29zcy5zb25hdHlwZS5vcmcvY29udGVudC9yZXBvc2l0b3JpZXMvc25hcHNob3RzL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOS4wLVNOQVBTSE9ULykgfCAyMy4wOS4yMDI0ICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs3LjguMF0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjcuOC4wKSAobGF0ZXN0IHN0YWJsZSByZWxlYXNlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5LjA4LjIwMjQgICB8IE1pbm9yIHJlbGVhc2Ugd2l0aCBicmVha2luZyBjaGFuZ2VzICh3aXRoIGZhbGxiYWNrKSB8CnwgWzYuNi4wXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzL3RhZy92Ni42LjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEuMDUuMjAyMyAgIHwgTWlub3IgcmVsZWFzZSB3aXRoIGJyZWFraW5nIGNoYW5nZXMgKHdpdGggZmFsbGJhY2spIHwKfCBbNS40LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y1LjQuMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMS4wMS4yMDIyICAgfCBNaW5vciByZWxlYXNlIHdpdGggYnJlYWtpbmcgY2hhbmdlcyAod2l0aCBmYWxsYmFjaykgfAp8IFs0LjMuMV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9yZWxlYXNlcy90YWcvdjQuMy4xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDA2LjA1LjIwMjAgICB8IFBhdGNoIHJlbGVhc2UgKGVuaGFuY2VtZW50cywgYnVnIGZpeGVzLCBldGMpICAgICAgICAgICAgICAgICAgICAgICB8CgpPcGVuQVBJIFNwZWMgY29tcGF0aWJpbGl0eTogMS4wLCAxLjEsIDEuMiwgMi4wLCAzLjAsIDMuMSAoYmV0YSBzdXBwb3J0KQoKKFdlIGRvIG5vdCBwdWJsaXNoIGRhaWx5L25pZ2h0bHkgYnVpbGQuIFBsZWFzZSB1c2UgU05BUFNIT1QgaW5zdGVhZCkKCkZvciBvbGQgcmVsZWFzZXMsIHBsZWFzZSByZWZlciB0byB0aGUgWyoqUmVsZWFzZSoqXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL3JlbGVhc2VzKSBwYWdlLgoKRm9yIGRlY29taXNzaW9uZWQgZ2VuZXJhdG9ycy9saWJyYXJpZXMvZnJhbWV3b3JrcywgcGxlYXNlIHJlZmVyIHRvIFt0aGUgIkRlY29tbWlzc2lvbiIgbGFiZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvaXNzdWVzP3E9bGFiZWwlM0FEZWNvbW1pc3Npb24raXMlM0FtZXJnZWQrKSBpbiB0aGUgcHVsbCByZXF1ZXN0IHBhZ2UuCgojIyBbMS4yIC0gQXJ0aWZhY3RzIG9uIE1hdmVuIENlbnRyYWxdKCN0YWJsZS1vZi1jb250ZW50cykKCllvdSBjYW4gZmluZCBvdXIgcmVsZWFzZWQgYXJ0aWZhY3RzIG9uIG1hdmVuIGNlbnRyYWw6CgoqKkNvcmU6KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yPC9hcnRpZmFjdElkPgogICAgPHZlcnNpb24+JHtvcGVuYXBpLWdlbmVyYXRvci12ZXJzaW9ufTwvdmVyc2lvbj4KPC9kZXBlbmRlbmN5PgpgYGAKU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvcl0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoKKipDbGk6KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLWNsaTwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgClNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItY2xpXShodHRwczovL3NlYXJjaC5tYXZlbi5vcmcvYXJ0aWZhY3Qvb3JnLm9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkpIGFydGlmYWN0IGF2YWlsYWJsZSBvbiBtYXZlbiBjZW50cmFsLgoKKipNYXZlbiBwbHVnaW46KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4KICAgIDx2ZXJzaW9uPiR7b3BlbmFwaS1nZW5lcmF0b3ItdmVyc2lvbn08L3ZlcnNpb24+CjwvZGVwZW5kZW5jeT4KYGBgCiogU2VlIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIFtvcGVuYXBpLWdlbmVyYXRvci1tYXZlbi1wbHVnaW5dKGh0dHBzOi8vc2VhcmNoLm1hdmVuLm9yZy9hcnRpZmFjdC9vcmcub3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbikgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCiogW1JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi9SRUFETUUubWQpCgoqKkdyYWRsZSBwbHVnaW46KioKYGBgeG1sCjxkZXBlbmRlbmN5PgogICAgPGdyb3VwSWQ+b3JnLm9wZW5hcGl0b29sczwvZ3JvdXBJZD4KICAgIDxhcnRpZmFjdElkPm9wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW48L2FydGlmYWN0SWQ+CiAgICA8dmVyc2lvbj4ke29wZW5hcGktZ2VuZXJhdG9yLXZlcnNpb259PC92ZXJzaW9uPgo8L2RlcGVuZGVuY3k+CmBgYAoqIFNlZSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBbb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbl0oaHR0cHM6Ly9zZWFyY2gubWF2ZW4ub3JnL2FydGlmYWN0L29yZy5vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItZ3JhZGxlLXBsdWdpbikgYXJ0aWZhY3QgYXZhaWxhYmxlIG9uIG1hdmVuIGNlbnRyYWwuCiogW1JlYWRtZV0oaHR0cHM6Ly9naXRodWIuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9ibG9iL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWdyYWRsZS1wbHVnaW4vUkVBRE1FLmFkb2MpCgojIyMgWzEuMyAtIERvd25sb2FkIEpBUl0oI3RhYmxlLW9mLWNvbnRlbnRzKQo8IS0tIFJFTEVBU0VfVkVSU0lPTiAtLT4KSWYgeW91J3JlIGxvb2tpbmcgZm9yIHRoZSBsYXRlc3Qgc3RhYmxlIHZlcnNpb24sIHlvdSBjYW4gZ3JhYiBpdCBkaXJlY3RseSBmcm9tIE1hdmVuLm9yZyAoSmF2YSAxMSBydW50aW1lIGF0IGEgbWluaW11bSk6CgpKQVIgbG9jYXRpb246IGBodHRwczovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvNy44LjAvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLTcuOC4wLmphcmAKCkZvciAqKk1hYy9MaW51eCoqIHVzZXJzOgpgYGBzaAp3Z2V0IGh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9vcmcvb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS83LjguMC9vcGVuYXBpLWdlbmVyYXRvci1jbGktNy44LjAuamFyIC1PIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIKYGBgCgpGb3IgKipXaW5kb3dzKiogdXNlcnMsIHlvdSB3aWxsIG5lZWQgdG8gaW5zdGFsbCBbd2dldF0oaHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy93Z2V0Lmh0bSkgb3IgeW91IGNhbiB1c2UgSW52b2tlLVdlYlJlcXVlc3QgaW4gUG93ZXJTaGVsbCAoMy4wKyksIGUuZy4KYGBgCkludm9rZS1XZWJSZXF1ZXN0IC1PdXRGaWxlIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS5qYXIgaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOC4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjguMC5qYXIKYGBgCgpBZnRlciBkb3dubG9hZGluZyB0aGUgSkFSLCBydW4gYGphdmEgLWphciBvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGhlbHBgIHRvIHNob3cgdGhlIHVzYWdlLgoKRm9yIE1hYyB1c2VycywgcGxlYXNlIG1ha2Ugc3VyZSBKYXZhIDExIGlzIGluc3RhbGxlZCAoVGlwczogcnVuIGBqYXZhIC12ZXJzaW9uYCB0byBjaGVjayB0aGUgdmVyc2lvbiksIGFuZCBleHBvcnQgYEpBVkFfSE9NRWAgaW4gb3JkZXIgdG8gdXNlIHRoZSBzdXBwb3J0ZWQgSmF2YSB2ZXJzaW9uOgpgYGBzaApleHBvcnQgSkFWQV9IT01FPWAvdXNyL2xpYmV4ZWMvamF2YV9ob21lIC12IDEuMTFgCmV4cG9ydCBQQVRIPSR7SkFWQV9IT01FfS9iaW46JFBBVEgKYGBgCgo8IS0tIC9SRUxFQVNFX1ZFUlNJT04gLS0+CiMjIyBMYXVuY2hlciBTY3JpcHQKCk9uZSBkb3duc2lkZSB0byBtYW51YWwgamFyIGRvd25sb2FkcyBpcyB0aGF0IHlvdSBkb24ndCBrZWVwIHVwLXRvLWRhdGUgd2l0aCB0aGUgbGF0ZXN0IHJlbGVhc2VkIHZlcnNpb24uIFdlIGhhdmUgYSBCYXNoIGxhdW5jaGVyIHNjcmlwdCBhdCBbYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLmNsaS5zaF0oLi9iaW4vdXRpbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLnNoKSB3aGljaCByZXNvbHZlcyB0aGlzIGlzc3VlLgoKVG8gaW5zdGFsbCB0aGUgbGF1bmNoZXIgc2NyaXB0LCBjb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgc2NyaXB0IHRvIGEgbG9jYXRpb24gb24geW91ciBwYXRoIGFuZCBtYWtlIHRoZSBzY3JpcHQgZXhlY3V0YWJsZS4KCkFuIGV4YW1wbGUgb2Ygc2V0dGluZyB0aGlzIHVwIChOT1RFOiBBbHdheXMgZXZhbHVhdGUgc2NyaXB0cyBjdXJsZWQgZnJvbSBleHRlcm5hbCBzeXN0ZW1zIGJlZm9yZSBleGVjdXRpbmcgdGhlbSkuCgpgYGAKbWtkaXIgLXAgfi9iaW4vb3BlbmFwaXRvb2xzCmN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09wZW5BUElUb29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvYmluL3V0aWxzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS5zaCA+IH4vYmluL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKY2htb2QgdSt4IH4vYmluL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkKZXhwb3J0IFBBVEg9JFBBVEg6fi9iaW4vb3BlbmFwaXRvb2xzLwpgYGAKCk5vdywgYG9wZW5hcGktZ2VuZXJhdG9yLWNsaWAgaXMgImluc3RhbGxlZCIuIE9uIGludm9jYXRpb24sIGl0IHdpbGwgcXVlcnkgdGhlIEdpdEh1YiByZXBvc2l0b3J5IGZvciB0aGUgbW9zdCByZWNlbnRseSByZWxlYXNlZCB2ZXJzaW9uLiBJZiB0aGlzIG1hdGNoZXMgdGhlIGxhc3QgZG93bmxvYWRlZCBqYXIsCml0IHdpbGwgZXhlY3V0ZSBhcyBub3JtYWwuIElmIGEgbmV3ZXIgdmVyc2lvbiBpcyBmb3VuZCwgdGhlIHNjcmlwdCB3aWxsIGRvd25sb2FkIHRoZSBsYXRlc3QgcmVsZWFzZSBhbmQgZXhlY3V0ZSBpdC4KCklmIHlvdSBuZWVkIHRvIGludm9rZSBhbiBvbGRlciB2ZXJzaW9uIG9mIHRoZSBnZW5lcmF0b3IsIHlvdSBjYW4gZGVmaW5lIHRoZSB2YXJpYWJsZSBgT1BFTkFQSV9HRU5FUkFUT1JfVkVSU0lPTmAgZWl0aGVyIGFkIGhvYyBvciBnbG9iYWxseS4gWW91IGNhbiBleHBvcnQgdGhpcyB2YXJpYWJsZSBpZiB5b3UnZCBsaWtlIHRvIHBlcnNpc3QgYSBzcGVjaWZpYyByZWxlYXNlIHZlcnNpb24uCgpFeGFtcGxlczoKCmBgYAojIEV4ZWN1dGUgbGF0ZXN0IHJlbGVhc2VkIG9wZW5hcGktZ2VuZXJhdG9yLWNsaQpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbgoKIyBFeGVjdXRlIHZlcnNpb24gNC4xLjAgZm9yIHRoZSBjdXJyZW50IGludm9jYXRpb24sIHJlZ2FyZGxlc3Mgb2YgdGhlIGxhdGVzdCByZWxlYXNlZCB2ZXJzaW9uCk9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4xLjAgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMS4wLVNOQVBTSE9UIGZvciB0aGUgY3VycmVudCBpbnZvY2F0aW9uCk9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4xLjAtU05BUFNIT1Qgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KCiMgRXhlY3V0ZSB2ZXJzaW9uIDQuMC4yIGZvciBldmVyeSBpbnZvY2F0aW9uIGluIHRoZSBjdXJyZW50IHNoZWxsIHNlc3Npb24KZXhwb3J0IE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4wLjIKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24gIyBpcyA0LjAuMgpvcGVuYXBpLWdlbmVyYXRvci1jbGkgdmVyc2lvbiAjIGlzIGFsc28gNC4wLjIKCiMgVG8gImluc3RhbGwiIGEgc3BlY2lmaWMgdmVyc2lvbiwgc2V0IHRoZSB2YXJpYWJsZSBpbiAuYmFzaHJjLy5iYXNoX3Byb2ZpbGUKZWNobyAiZXhwb3J0IE9QRU5BUElfR0VORVJBVE9SX1ZFUlNJT049NC4wLjIiID4+IH4vLmJhc2hyYwpzb3VyY2Ugfi8uYmFzaHJjCm9wZW5hcGktZ2VuZXJhdG9yLWNsaSB2ZXJzaW9uICMgaXMgYWx3YXlzIDQuMC4yLCB1bmxlc3MgYW55IG9mIHRoZSBhYm92ZSBvdmVycmlkZXMgYXJlIGRvbmUgYWQgaG9jCmBgYAoKIyMjIFsxLjQgLSBCdWlsZCBQcm9qZWN0c10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gYnVpbGQgZnJvbSBzb3VyY2UsIHlvdSBuZWVkIHRoZSBmb2xsb3dpbmcgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgaW4geW91ciBgJFBBVEg6YAoKKiBbSmF2YSAxMV0oaHR0cHM6Ly9hZG9wdGl1bS5uZXQvKQoKKiBbQXBhY2hlIE1hdmVuIDMuOC44IG9yIGdyZWF0ZXJdKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy8pIChvcHRpb25hbCkKCkFmdGVyIGNsb25pbmcgdGhlIHByb2plY3QsIHlvdSBjYW4gYnVpbGQgaXQgZnJvbSBzb3VyY2UgdXNpbmcgW21hdmVuIHdyYXBwZXJdKGh0dHBzOi8vbWF2ZW4uYXBhY2hlLm9yZy93cmFwcGVyLyk6CgotIExpbnV4OiBgLi9tdm53IGNsZWFuIGluc3RhbGxgCi0gV2luZG93czogYG12bncuY21kIGNsZWFuIGluc3RhbGxgCgojIyMjIE5peCB1c2VycwoKSWYgeW91J3JlIGEgbml4IHVzZXIsIHlvdSBjYW4gZW50ZXIgT3BlbkFQSSBHZW5lcmF0b3Igc2hlbGwsIGJ5IHR5cGluZzoKYGBgc2gKbml4IGRldmVsb3AKYGBgCkl0IHdpbGwgZW50ZXIgYSBzaGVsbCB3aXRoIEphdmEgMTEgaW5zdGFsbGVkLgoKRGlyZW52IHN1cHBvcnRzIGF1dG9tYXRpY2FsbHkgbG9hZGluZyBvZiB0aGUgbml4IGRldmVsb3BlciBzaGVsbCwgc28gaWYgeW91J3JlIHVzaW5nIGRpcmVudiB0b28sIHR5cGU6CmBgYHNoCmRpcmVudiBhbGxvdwpgYGAKYW5kIGhhdmUgYGphdmFgIGFuZCBgbXZuYCBzZXQgdXAgd2l0aCBjb3JyZWN0IHZlcnNpb25zIGVhY2ggdGltZSB5b3UgZW50ZXIgcHJvamVjdCBkaXJlY3RvcnkuCgpUaGUgZGVmYXVsdCBidWlsZCBjb250YWlucyBtaW5pbWFsIHN0YXRpYyBhbmFseXNpcyAodmlhIENoZWNrU3R5bGUpLiBUbyBydW4geW91ciBidWlsZCB3aXRoIFBNRCBhbmQgU3BvdGJ1Z3MsIHVzZSB0aGUgYHN0YXRpYy1hbmFseXNpc2AgcHJvZmlsZToKCi0gTGludXg6IGAuL212bncgLVBzdGF0aWMtYW5hbHlzaXMgY2xlYW4gaW5zdGFsbGAKLSBXaW5kb3dzOiBgbXZudy5jbWQgLVBzdGF0aWMtYW5hbHlzaXMgY2xlYW4gaW5zdGFsbGAKCiMjIyBbMS41IC0gSG9tZWJyZXddKCN0YWJsZS1vZi1jb250ZW50cykKClRvIGluc3RhbGwsIHJ1biBgYnJldyBpbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yYAoKSGVyZSBpcyBhbiBleGFtcGxlIHVzYWdlIHRvIGdlbmVyYXRlIGEgUnVieSBjbGllbnQ6CmBgYHNoCm9wZW5hcGktZ2VuZXJhdG9yIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1nIHJ1YnkgLW8gL3RtcC90ZXN0LwpgYGAKClRvIHJlaW5zdGFsbCB3aXRoIHRoZSBsYXRlc3QgbWFzdGVyLCBydW4gYGJyZXcgdW5pbnN0YWxsIG9wZW5hcGktZ2VuZXJhdG9yICYmIGJyZXcgaW5zdGFsbCAtLUhFQUQgb3BlbmFwaS1nZW5lcmF0b3JgCgpUbyBpbnN0YWxsIE9wZW5KREsgKHByZS1yZXF1aXNpdGVzKSwgcGxlYXNlIHJ1bgpgYGBzaApicmV3IHRhcCBBZG9wdE9wZW5KREsvb3BlbmpkawpicmV3IGluc3RhbGwgLS1jYXNrIGFkb3B0b3BlbmpkazExCmV4cG9ydCBKQVZBX0hPTUU9YC91c3IvbGliZXhlYy9qYXZhX2hvbWUgLXYgMS4xMWAKYGBgCgpvciBkb3dubG9hZCBpbnN0YWxsZXIgdmlhIGh0dHBzOi8vYWRvcHRpdW0ubmV0LwoKVG8gaW5zdGFsbCBNYXZlbiAob3B0aW9uYWwpLCBwbGVhc2UgcnVuCmBgYHNoCmJyZXcgaW5zdGFsbCBtYXZlbgpgYGAKCiMjIyBbMS42IC0gRG9ja2VyXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMjIFB1YmxpYyBQcmUtYnVpbHQgRG9ja2VyIGltYWdlcwoKIC0gW2h0dHBzOi8vaHViLmRvY2tlci5jb20vci9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL10oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkvKSAob2ZmaWNpYWwgQ0xJKQogLSBbaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUvXShodHRwczovL2h1Yi5kb2NrZXIuY29tL3Ivb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLW9ubGluZS8pIChvZmZpY2lhbCB3ZWIgc2VydmljZSkKCgojIyMjIE9wZW5BUEkgR2VuZXJhdG9yIENMSSBEb2NrZXIgSW1hZ2UKClRoZSBPcGVuQVBJIEdlbmVyYXRvciBpbWFnZSBhY3RzIGFzIGEgc3RhbmRhbG9uZSBleGVjdXRhYmxlLiBJdCBjYW4gYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBpbnN0YWxsaW5nIHZpYSBob21lYnJldywgb3IgZm9yIGRldmVsb3BlcnMgd2hvIGFyZSB1bmFibGUgdG8gaW5zdGFsbCBKYXZhIG9yIHVwZ3JhZGUgdGhlIGluc3RhbGxlZCB2ZXJzaW9uLgoKVG8gZ2VuZXJhdGUgY29kZSB3aXRoIHRoaXMgaW1hZ2UsIHlvdSdsbCBuZWVkIHRvIG1vdW50IGEgbG9jYWwgbG9jYXRpb24gYXMgYSB2b2x1bWUuCgpFeGFtcGxlOgoKYGBgc2gKZG9ja2VyIHJ1biAtLXJtIC12ICIke1BXRH06L2xvY2FsIiBvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGdlbmVyYXRlIFwKICAgIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIFwKICAgIC1nIGdvIFwKICAgIC1vIC9sb2NhbC9vdXQvZ28KYGBgCgpUaGUgZ2VuZXJhdGVkIGNvZGUgd2lsbCBiZSBsb2NhdGVkIHVuZGVyIGAuL291dC9nb2AgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKIyMjIyBPcGVuQVBJIEdlbmVyYXRvciBPbmxpbmUgRG9ja2VyIEltYWdlCgpUaGUgb3BlbmFwaS1nZW5lcmF0b3Itb25saW5lIGltYWdlIGNhbiBhY3QgYXMgYSBzZWxmLWhvc3RlZCB3ZWIgYXBwbGljYXRpb24gYW5kIEFQSSBmb3IgZ2VuZXJhdGluZyBjb2RlLiBUaGlzIGNvbnRhaW5lciBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gYSBDSSBwaXBlbGluZSwgYW5kIHJlcXVpcmVzIGF0IGxlYXN0IHR3byBIVFRQIHJlcXVlc3RzIGFuZCBzb21lIGRvY2tlciBvcmNoZXN0cmF0aW9uIHRvIGFjY2VzcyBnZW5lcmF0ZWQgY29kZS4KCkV4YW1wbGUgdXNhZ2U6CgpgYGBzaAojIFN0YXJ0IGNvbnRhaW5lciBhdCBwb3J0IDg4ODggYW5kIHNhdmUgdGhlIGNvbnRhaW5lciBpZAo+IENJRD0kKGRvY2tlciBydW4gLWQgLXAgODg4ODo4MDgwIG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1vbmxpbmUpCgojIGFsbG93IGZvciBzdGFydHVwCj4gc2xlZXAgMTAKCiMgR2V0IHRoZSBJUCBvZiB0aGUgcnVubmluZyBjb250YWluZXIgKG9wdGlvbmFsKQpHRU5fSVA9JChkb2NrZXIgaW5zcGVjdCAtLWZvcm1hdCAne3suTmV0d29ya1NldHRpbmdzLklQQWRkcmVzc319JyAgJENJRCkKCiMgRXhlY3V0ZSBhbiBIVFRQIHJlcXVlc3QgdG8gZ2VuZXJhdGUgYSBSdWJ5IGNsaWVudAo+IGN1cmwgLVggUE9TVCAtLWhlYWRlciAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJyAtLWhlYWRlciAnQWNjZXB0OiBhcHBsaWNhdGlvbi9qc29uJyBcCi1kICd7Im9wZW5BUElVcmwiOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwifScgXAonaHR0cDovL2xvY2FsaG9zdDo4ODg4L2FwaS9nZW4vY2xpZW50cy9ydWJ5JwoKeyJjb2RlIjoiYzJkNDgzLjMuNDY3Mi00MGU5LTkxZGYtYjlmZmQxOGQyMmI4IiwibGluayI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2Rvd25sb2FkL2MyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOCJ9CgojIERvd25sb2FkIHRoZSBnZW5lcmF0ZWQgemlwIGZpbGUKPiB3Z2V0IGh0dHA6Ly9sb2NhbGhvc3Q6ODg4OC9hcGkvZ2VuL2Rvd25sb2FkL2MyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOAoKIyBVbnppcCB0aGUgZmlsZQo+IHVuemlwIGMyZDQ4My4zLjQ2NzItNDBlOS05MWRmLWI5ZmZkMThkMjJiOAoKIyBTaHV0ZG93biB0aGUgb3BlbmFwaSBnZW5lcmF0b3IgaW1hZ2UKPiBkb2NrZXIgc3RvcCAkQ0lEICYmIGRvY2tlciBybSAkQ0lECmBgYAoKIyMjIyBEZXZlbG9wbWVudCBpbiBkb2NrZXIKCllvdSBjYW4gdXNlIGBydW4taW4tZG9ja2VyLnNoYCB0byBkbyBhbGwgZGV2ZWxvcG1lbnQuIFRoaXMgc2NyaXB0IG1hcHMgeW91ciBsb2NhbCByZXBvc2l0b3J5IHRvIGAvZ2VuYAppbiB0aGUgZG9ja2VyIGNvbnRhaW5lci4gSXQgYWxzbyBtYXBzIGB+Ly5tMi9yZXBvc2l0b3J5YCB0byB0aGUgYXBwcm9wcmlhdGUgY29udGFpbmVyIGxvY2F0aW9uLgoKVG8gZXhlY3V0ZSBgbXZuIHBhY2thZ2VgOgoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9ydW4taW4tZG9ja2VyLnNoIG12biBwYWNrYWdlCmBgYAoKQnVpbGQgYXJ0aWZhY3RzIGFyZSBub3cgYWNjZXNzaWJsZSBpbiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5LgoKT25jZSBidWlsdCwgYHJ1bi1pbi1kb2NrZXIuc2hgIHdpbGwgYWN0IGFzIGFuIGV4ZWN1dGFibGUgZm9yIG9wZW5hcGktZ2VuZXJhdG9yLWNsaS4gVG8gZ2VuZXJhdGUgY29kZSwgeW91J2xsIG5lZWQgdG8gb3V0cHV0IHRvIGEgZGlyZWN0b3J5IHVuZGVyIGAvZ2VuYCAoZS5nLiBgL2dlbi9vdXRgKS4gRm9yIGV4YW1wbGU6CgpgYGBzaAouL3J1bi1pbi1kb2NrZXIuc2ggaGVscCAjIEV4ZWN1dGVzICdoZWxwJyBjb21tYW5kIGZvciBvcGVuYXBpLWdlbmVyYXRvci1jbGkKLi9ydW4taW4tZG9ja2VyLnNoIGxpc3QgIyBFeGVjdXRlcyAnbGlzdCcgY29tbWFuZCBmb3Igb3BlbmFwaS1nZW5lcmF0b3ItY2xpCi4vcnVuLWluLWRvY2tlci5zaCBnZW5lcmF0ZSAtaSBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgICAtZyBnbyAtbyAvZ2VuL291dC9nby1wZXRzdG9yZSAtcCBwYWNrYWdlTmFtZT1wZXRzdG9yZSAjIGdlbmVyYXRlcyBnbyBjbGllbnQsIG91dHB1dHMgbG9jYWxseSB0byAuL291dC9nby1wZXRzdG9yZQpgYGAKCiMjIyMjIFRyb3VibGVzaG9vdGluZwoKSWYgYW4gZXJyb3IgbGlrZSB0aGlzIG9jY3VycywganVzdCBleGVjdXRlIHRoZSAqKi4vbXZudyBjbGVhbiBpbnN0YWxsIC1VKiogY29tbWFuZDoKCj4gb3JnLmFwYWNoZS5tYXZlbi5saWZlY3ljbGUuTGlmZWN5Y2xlRXhlY3V0aW9uRXhjZXB0aW9uOiBGYWlsZWQgdG8gZXhlY3V0ZSBnb2FsIG9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczptYXZlbi1zdXJlZmlyZS1wbHVnaW46Mi4xOS4xOnRlc3QgKGRlZmF1bHQtdGVzdCkgb24gcHJvamVjdCBvcGVuYXBpLWdlbmVyYXRvcjogQSB0eXBlIGluY29tcGF0aWJpbGl0eSBvY2N1cnJlZCB3aGlsZSBleGVjdXRpbmcgb3JnLmFwYWNoZS5tYXZlbi5wbHVnaW5zOm1hdmVuLXN1cmVmaXJlLXBsdWdpbjoyLjE5LjE6dGVzdDogamF2YS5sYW5nLkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciBjYW5ub3QgYmUgY2FzdCB0byBqYXZhLmlvLklPRXhjZXB0aW9uCgpgYGBzaAouL3J1bi1pbi1kb2NrZXIuc2ggLi9tdm53IGNsZWFuIGluc3RhbGwgLVUKYGBgCgo+IEZhaWxlZCB0byBleGVjdXRlIGdvYWwgb3JnLmZvcnRhc29mdDpncmFkbGUtbWF2ZW4tcGx1Z2luOjEuMC44Omludm9rZSAoZGVmYXVsdCkgb24gcHJvamVjdCBvcGVuYXBpLWdlbmVyYXRvci1ncmFkbGUtcGx1Z2luLW12bi13cmFwcGVyOiBvcmcuZ3JhZGxlLnRvb2xpbmcuQnVpbGRFeGNlcHRpb246IENvdWxkIG5vdCBleGVjdXRlIGJ1aWxkIHVzaW5nIEdyYWRsZSBkaXN0cmlidXRpb24gJ2h0dHBzOi8vc2VydmljZXMuZ3JhZGxlLm9yZy9kaXN0cmlidXRpb25zL2dyYWRsZS00LjctYmluLnppcCcKClJpZ2h0IG5vdzogbm8gc29sdXRpb24gZm9yIHRoaXMgb25lIDp8CgojIyMjIFJ1biBEb2NrZXIgaW4gVmFncmFudApQcmVyZXF1aXNpdGU6IGluc3RhbGwgW1ZhZ3JhbnRdKGh0dHBzOi8vd3d3LnZhZ3JhbnR1cC5jb20vZG93bmxvYWRzLmh0bWwpIGFuZCBbVmlydHVhbEJveF0oaHR0cHM6Ly93d3cudmlydHVhbGJveC5vcmcvd2lraS9Eb3dubG9hZHMpLgogYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IuZ2l0CmNkIG9wZW5hcGktZ2VuZXJhdG9yCnZhZ3JhbnQgdXAKdmFncmFudCBzc2gKY2QgL3ZhZ3JhbnQKLi9ydW4taW4tZG9ja2VyLnNoIC4vbXZudyBwYWNrYWdlCmBgYAoKIyMjIFsxLjcgLSBOUE1dKCN0YWJsZS1vZi1jb250ZW50cykKClRoZXJlIGlzIGFsc28gYW4gW05QTSBwYWNrYWdlIHdyYXBwZXJdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BvcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpKSBhdmFpbGFibGUgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXMgKGUuZy4gTGludXgsIE1hYywgV2luZG93cykuIChKVk0gaXMgc3RpbGwgcmVxdWlyZWQpClBsZWFzZSBzZWUgdGhlIFtwcm9qZWN0J3MgUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkgdGhlcmUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpJbnN0YWxsIGl0IGdsb2JhbGx5IHRvIGdldCB0aGUgQ0xJIGF2YWlsYWJsZSBvbiB0aGUgY29tbWFuZCBsaW5lOgoKYGBgc2gKbnBtIGluc3RhbGwgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgLWcKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24KYGBgCgo8IS0tIFJFTEVBU0VfVkVSU0lPTiAtLT4KVG8gdXNlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiAib3BlbmFwaS1nZW5lcmF0b3ItY2xpIgoKYGBgc2gKb3BlbmFwaS1nZW5lcmF0b3ItY2xpIHZlcnNpb24tbWFuYWdlciBzZXQgNy44LjAKYGBgCgpPciBpbnN0YWxsIGl0IGFzIGRldi1kZXBlbmRlbmN5OgoKYGBgc2gKbnBtIGluc3RhbGwgQG9wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci1jbGkgLUQKYGBgCjwhLS0gL1JFTEVBU0VfVkVSU0lPTiAtLT4KCllvdSBjYW4gdXNlIFtsb2NhbGx5IGJ1aWx0IEpBUnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpP3RhYj1yZWFkbWUtb3YtZmlsZSN1c2UtbG9jYWxseS1idWlsdC1qYXIpIG9yIFtgU05BUFNIT1RgIHZlcnNpb25zXShodHRwczovL2dpdGh1Yi5jb20vT3BlbkFQSVRvb2xzL29wZW5hcGktZ2VuZXJhdG9yLWNsaT90YWI9cmVhZG1lLW92LWZpbGUjdXNlLW5pZ2h0bHktc25hcHNob3QtYnVpbGQpIGFzIHdlbGwuCgojIyBbMiAtIEdldHRpbmcgU3RhcnRlZF0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVG8gZ2VuZXJhdGUgYSBQSFAgY2xpZW50IGZvciBbcGV0c3RvcmUueWFtbF0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwpLCBwbGVhc2UgcnVuIHRoZSBmb2xsb3dpbmcKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IKY2Qgb3BlbmFwaS1nZW5lcmF0b3IKLi9tdm53IGNsZWFuIHBhY2thZ2UKamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAgLWkgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29wZW5hcGl0b29scy9vcGVuYXBpLWdlbmVyYXRvci9tYXN0ZXIvbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvdGVzdC9yZXNvdXJjZXMvM18wL3BldHN0b3JlLnlhbWwgXAogICAtZyBwaHAgXAogICAtbyAvdmFyL3RtcC9waHBfYXBpX2NsaWVudApgYGAKKGlmIHlvdSdyZSBvbiBXaW5kb3dzLCByZXBsYWNlIHRoZSBsYXN0IGNvbW1hbmQgd2l0aCBgamF2YSAtamFyIG1vZHVsZXNcb3BlbmFwaS1nZW5lcmF0b3ItY2xpXHRhcmdldFxvcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIC1pIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvbWFzdGVyL21vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3Ivc3JjL3Rlc3QvcmVzb3VyY2VzLzNfMC9wZXRzdG9yZS55YW1sIC1nIHBocCAtbyBjOlx0ZW1wXHBocF9hcGlfY2xpZW50YCkKCjwhLS0gUkVMRUFTRV9WRVJTSU9OIC0tPgpZb3UgY2FuIGFsc28gZG93bmxvYWQgdGhlIEpBUiAobGF0ZXN0IHJlbGVhc2UpIGRpcmVjdGx5IGZyb20gW21hdmVuLm9yZ10oaHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL29yZy9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLzcuOC4wL29wZW5hcGktZ2VuZXJhdG9yLWNsaS03LjguMC5qYXIpCjwhLS0gL1JFTEVBU0VfVkVSU0lPTiAtLT4KClRvIGdldCBhIGxpc3Qgb2YgKipnZW5lcmFsKiogb3B0aW9ucyBhdmFpbGFibGUsIHBsZWFzZSBydW4gYGphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBoZWxwIGdlbmVyYXRlYAoKVG8gZ2V0IGEgbGlzdCBvZiBQSFAgc3BlY2lmaWVkIG9wdGlvbnMgKHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGdlbmVyYXRvciB3aXRoIGEgY29uZmlnIGZpbGUgdmlhIHRoZSBgLWNgIG9wdGlvbiksIHBsZWFzZSBydW4gYGphdmEgLWphciBtb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yLWNsaS90YXJnZXQvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLmphciBjb25maWctaGVscCAtZyBwaHBgCgojIyBbMyAtIFVzYWdlXSgjdGFibGUtb2YtY29udGVudHMpCgojIyMgVG8gZ2VuZXJhdGUgYSBzYW1wbGUgY2xpZW50IGxpYnJhcnkKWW91IGNhbiBidWlsZCBhIGNsaWVudCBhZ2FpbnN0IHRoZSBbUGV0c3RvcmUgQVBJXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCkgYXMgZm9sbG93czoKCmBgYHNoCi4vYmluL2dlbmVyYXRlLXNhbXBsZXMuc2ggLi9iaW4vY29uZmlncy9qYXZhLW9raHR0cC1nc29uLnlhbWwKYGBgCgooT24gV2luZG93cywgcGxlYXNlIGluc3RhbGwgW0dJVCBCYXNoIGZvciBXaW5kb3dzXShodHRwczovL2dpdGZvcndpbmRvd3Mub3JnLykgdG8gcnVuIHRoZSBjb21tYW5kIGFib3ZlKQoKVGhpcyBzY3JpcHQgdXNlcyB0aGUgZGVmYXVsdCBsaWJyYXJ5LCB3aGljaCBpcyBgb2todHRwLWdzb25gLiBJdCB3aWxsIHJ1biB0aGUgZ2VuZXJhdG9yIHdpdGggdGhpcyBjb21tYW5kOgoKYGBgc2gKamF2YSAtamFyIG1vZHVsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpL3RhcmdldC9vcGVuYXBpLWdlbmVyYXRvci1jbGkuamFyIGdlbmVyYXRlIFwKICAtaSBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vb3BlbmFwaXRvb2xzL29wZW5hcGktZ2VuZXJhdG9yL21hc3Rlci9tb2R1bGVzL29wZW5hcGktZ2VuZXJhdG9yL3NyYy90ZXN0L3Jlc291cmNlcy8zXzAvcGV0c3RvcmUueWFtbCBcCiAgLWcgamF2YSBcCiAgLXQgbW9kdWxlcy9vcGVuYXBpLWdlbmVyYXRvci9zcmMvbWFpbi9yZXNvdXJjZXMvSmF2YSBcCiAgLS1hZGRpdGlvbmFsLXByb3BlcnRpZXMgYXJ0aWZhY3RJZD1wZXRzdG9yZS1va2h0dHAtZ3NvbixoaWRlR2VuZXJhdGlvblRpbWVzdGFtcD10cnVlIFwKICAtbyBzYW1wbGVzL2NsaWVudC9wZXRzdG9yZS9qYXZhL29raHR0cC1nc29uCmBgYAoKd2l0aCBhIG51bWJlciBvZiBvcHRpb25zLiBbVGhlIGphdmEgb3B0aW9ucyBhcmUgZG9jdW1lbnRlZCBoZXJlLl0oZG9jcy9nZW5lcmF0b3JzL2phdmEubWQpCgpZb3UgY2FuIGFsc28gZ2V0IHRoZSBvcHRpb25zIHdpdGggdGhlIGBoZWxwIGdlbmVyYXRlYCBjb21tYW5kIChiZWxvdyBvbmx5IHNob3dzIHBhcnRpYWwgcmVzdWx0cyk6CgpgYGAKTkFNRQogICAgICAgIG9wZW5hcGktZ2VuZXJhdG9yLWNsaSBnZW5lcmF0ZSAtIEdlbmVyYXRlIGNvZGUgd2l0aCB0aGUgc3BlY2lmaWVkCiAgICAgICAgZ2VuZXJhdG9yLgoKU1lOT1BTSVMKICAgICAgICBvcGVuYXBpLWdlbmVyYXRvci1jbGkgZ2VuZXJhdGUKICAgICAgICAgICAgICAgIFsoLWEgPGF1dGhvcml6YXRpb24+IHwgLS1hdXRoIDxhdXRob3JpemF0aW9uPildCiAgICAgICAgICAgICAgICBbLS1hcGktbmFtZS1zdWZmaXggPGFwaSBuYW1lIHN1ZmZpeD5dIFstLWFwaS1wYWNrYWdlIDxhcGkgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbLS1hcnRpZmFjdC1pZCA8YXJ0aWZhY3QgaWQ+XSBbLS1hcnRpZmFjdC12ZXJzaW9uIDxhcnRpZmFjdCB2ZXJzaW9uPl0KICAgICAgICAgICAgICAgIFsoLWMgPGNvbmZpZ3VyYXRpb24gZmlsZT4gfCAtLWNvbmZpZyA8Y29uZmlndXJhdGlvbiBmaWxlPildIFstLWRyeS1ydW5dCiAgICAgICAgICAgICAgICBbKC1lIDx0ZW1wbGF0aW5nIGVuZ2luZT4gfCAtLWVuZ2luZSA8dGVtcGxhdGluZyBlbmdpbmU+KV0KICAgICAgICAgICAgICAgIFstLWVuYWJsZS1wb3N0LXByb2Nlc3MtZmlsZV0KICAgICAgICAgICAgICAgIFsoLWcgPGdlbmVyYXRvciBuYW1lPiB8IC0tZ2VuZXJhdG9yLW5hbWUgPGdlbmVyYXRvciBuYW1lPildCiAgICAgICAgICAgICAgICBbLS1nZW5lcmF0ZS1hbGlhcy1hcy1tb2RlbF0gWy0tZ2l0LWhvc3QgPGdpdCBob3N0Pl0KICAgICAgICAgICAgICAgIFstLWdpdC1yZXBvLWlkIDxnaXQgcmVwbyBpZD5dIFstLWdpdC11c2VyLWlkIDxnaXQgdXNlciBpZD5dCiAgICAgICAgICAgICAgICBbLS1nbG9iYWwtcHJvcGVydHkgPGdsb2JhbCBwcm9wZXJ0aWVzPi4uLl0gWy0tZ3JvdXAtaWQgPGdyb3VwIGlkPl0KICAgICAgICAgICAgICAgIFstLWh0dHAtdXNlci1hZ2VudCA8aHR0cCB1c2VyIGFnZW50Pl0KICAgICAgICAgICAgICAgIFsoLWkgPHNwZWMgZmlsZT4gfCAtLWlucHV0LXNwZWMgPHNwZWMgZmlsZT4pXQogICAgICAgICAgICAgICAgWy0taWdub3JlLWZpbGUtb3ZlcnJpZGUgPGlnbm9yZSBmaWxlIG92ZXJyaWRlIGxvY2F0aW9uPl0KICAgICAgICAgICAgICAgIFstLWltcG9ydC1tYXBwaW5ncyA8aW1wb3J0IG1hcHBpbmdzPi4uLl0KICAgICAgICAgICAgICAgIFstLWluc3RhbnRpYXRpb24tdHlwZXMgPGluc3RhbnRpYXRpb24gdHlwZXM+Li4uXQogICAgICAgICAgICAgICAgWy0taW52b2tlci1wYWNrYWdlIDxpbnZva2VyIHBhY2thZ2U+XQogICAgICAgICAgICAgICAgWy0tbGFuZ3VhZ2Utc3BlY2lmaWMtcHJpbWl0aXZlcyA8bGFuZ3VhZ2Ugc3BlY2lmaWMgcHJpbWl0aXZlcz4uLi5dCiAgICAgICAgICAgICAgICBbLS1sZWdhY3ktZGlzY3JpbWluYXRvci1iZWhhdmlvcl0gWy0tbGlicmFyeSA8bGlicmFyeT5dCiAgICAgICAgICAgICAgICBbLS1sb2ctdG8tc3RkZXJyXSBbLS1taW5pbWFsLXVwZGF0ZV0KICAgICAgICAgICAgICAgIFstLW1vZGVsLW5hbWUtcHJlZml4IDxtb2RlbCBuYW1lIHByZWZpeD5dCiAgICAgICAgICAgICAgICBbLS1tb2RlbC1uYW1lLXN1ZmZpeCA8bW9kZWwgbmFtZSBzdWZmaXg+XQogICAgICAgICAgICAgICAgWy0tbW9kZWwtcGFja2FnZSA8bW9kZWwgcGFja2FnZT5dCiAgICAgICAgICAgICAgICBbKC1vIDxvdXRwdXQgZGlyZWN0b3J5PiB8IC0tb3V0cHV0IDxvdXRwdXQgZGlyZWN0b3J5PildIFsoLXAgPGFkZGl0aW9uYWwgcHJvcGVydGllcz4gfCAtLWFkZGl0aW9uYWwtcHJvcGVydGllcyA8YWRkaXRpb25hbCBwcm9wZXJ0aWVzPikuLi5dCiAgICAgICAgICAgICAgICBbLS1wYWNrYWdlLW5hbWUgPHBhY2thZ2UgbmFtZT5dIFstLXJlbGVhc2Utbm90ZSA8cmVsZWFzZSBub3RlPl0KICAgICAgICAgICAgICAgIFstLXJlbW92ZS1vcGVyYXRpb24taWQtcHJlZml4XQogICAgICAgICAgICAgICAgWy0tcmVzZXJ2ZWQtd29yZHMtbWFwcGluZ3MgPHJlc2VydmVkIHdvcmQgbWFwcGluZ3M+Li4uXQogICAgICAgICAgICAgICAgWygtcyB8IC0tc2tpcC1vdmVyd3JpdGUpXSBbLS1zZXJ2ZXItdmFyaWFibGVzIDxzZXJ2ZXIgdmFyaWFibGVzPi4uLl0KICAgICAgICAgICAgICAgIFstLXNraXAtdmFsaWRhdGUtc3BlY10gWy0tc3RyaWN0LXNwZWMgPHRydWUvZmFsc2Ugc3RyaWN0IGJlaGF2aW9yPl0KICAgICAgICAgICAgICAgIFsoLXQgPHRlbXBsYXRlIGRpcmVjdG9yeT4gfCAtLXRlbXBsYXRlLWRpciA8dGVtcGxhdGUgZGlyZWN0b3J5PildCiAgICAgICAgICAgICAgICBbLS10eXBlLW1hcHBpbmdzIDx0eXBlIG1hcHBpbmdzPi4uLl0gWygtdiB8IC0tdmVyYm9zZSldCgpPUFRJT05TCiAgICAgICAgLWEgPGF1dGhvcml6YXRpb24+LCAtLWF1dGggPGF1dGhvcml6YXRpb24+CiAgICAgICAgICAgIGFkZHMgYXV0aG9yaXphdGlvbiBoZWFkZXJzIHdoZW4gZmV0Y2hpbmcgdGhlIE9wZW5BUEkgZGVmaW5pdGlvbnMKICAgICAgICAgICAgcmVtb3RlbHkuIFBhc3MgaW4gYSBVUkwtZW5jb2RlZCBzdHJpbmcgb2YgbmFtZTpoZWFkZXIgd2l0aCBhIGNvbW1hCiAgICAgICAgICAgIHNlcGFyYXRpbmcgbXVsdGlwbGUgdmFsdWVzCgouLi4uLi4gKHJlc3VsdHMgb21pdHRlZCkKCiAgICAgICAgLXYsIC0tdmVyYm9zZQogICAgICAgICAgICB2ZXJib3NlIG1vZGUKCmBgYAoKWW91IGNhbiB0aGVuIGNvbXBpbGUgYW5kIHJ1biB0aGUgY2xpZW50LCBhcyB3ZWxsIGFzIHVuaXQgdGVzdHMgYWdhaW5zdCBpdDoKCmBgYHNoCmNkIHNhbXBsZXMvY2xpZW50L3BldHN0b3JlL2phdmEvb2todHRwLWdzb24KbXZuIHBhY2thZ2UKYGBgCgpPdGhlciBnZW5lcmF0b3JzIGhhdmUgW3NhbXBsZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvdHJlZS9tYXN0ZXIvc2FtcGxlcykgdG9vLgoKIyMjIFszLjEgLSBDdXN0b21pemF0aW9uXSgjdGFibGUtb2YtY29udGVudHMpCgpQbGVhc2UgcmVmZXIgdG8gW2N1c3RvbWl6YXRpb24ubWRdKGRvY3MvY3VzdG9taXphdGlvbi5tZCkgb24gaG93IHRvIGN1c3RvbWl6ZSB0aGUgb3V0cHV0IChlLmcuIHBhY2thZ2UgbmFtZSwgdmVyc2lvbikKCiMjIyBbMy4yIC0gV29ya2Zsb3cgSW50ZWdyYXRpb24gKE1hdmVuLCBHcmFkbGUsIEdpdGh1YiwgQ0kvQ0QpXSgjdGFibGUtb2YtY29udGVudHMpCgpQbGVhc2UgcmVmZXIgdG8gW2ludGVncmF0aW9uLm1kXShkb2NzL2ludGVncmF0aW9uLm1kKSBvbiBob3cgdG8gaW50ZWdyYXRlIE9wZW5BUEkgZ2VuZXJhdG9yIHdpdGggTWF2ZW4sIEdyYWRsZSwgc2J0LCBCYXplbCwgR2l0aHViIGFuZCBDSS9DRC4KCiMjIyBbMy4zIC0gT25saW5lIE9wZW5BUEkgZ2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCgpIZXJlIGFyZSB0aGUgcHVibGljIG9ubGluZSBzZXJ2aWNlczoKCi0gbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uOiBodHRwczovL2FwaS5vcGVuYXBpLWdlbmVyYXRvci50ZWNoCi0gbGF0ZXN0IG1hc3RlcjogaHR0cHM6Ly9hcGktbGF0ZXN0LW1hc3Rlci5vcGVuYXBpLWdlbmVyYXRvci50ZWNoICh1cGRhdGVkIHdpdGggbGF0ZXN0IG1hc3RlciBldmVyeSBob3VyKQoKVGhlIHNlcnZlciBpcyBzcG9uc29yZWQgYnkgW0xpbm9kZV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pIFshW0xpbm9kZSBMb2dvXShodHRwczovL3d3dy5saW5vZGUuY29tL21lZGlhL2ltYWdlcy9sb2dvcy9zdGFuZGFyZC9saWdodC9saW5vZGUtbG9nb19zdGFuZGFyZF9saWdodF9zbWFsbC5wbmcpXShodHRwczovL3d3dy5saW5vZGUuY29tLykKCihUaGVzZSBzZXJ2aWNlcyBhcmUgYmV0YSBhbmQgZG8gbm90IGhhdmUgYW55IGd1YXJhbnRlZSBvbiBzZXJ2aWNlIGxldmVsKQoKUGxlYXNlIHJlZmVyIHRvIFtvbmxpbmUubWRdKGRvY3Mvb25saW5lLm1kKSBvbiBob3cgdG8gcnVuIGFuZCB1c2UgdGhlIGBvcGVuYXBpLWdlbmVyYXRvci1vbmxpbmVgIC0gYSB3ZWIgc2VydmljZSBmb3IgYG9wZW5hcGktZ2VuZXJhdG9yYC4KCiMjIyBbMy40IC0gTGljZW5zZSBpbmZvcm1hdGlvbiBvbiBHZW5lcmF0ZWQgQ29kZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQoKVGhlIE9wZW5BUEkgR2VuZXJhdG9yIHByb2plY3QgaXMgaW50ZW5kZWQgYXMgYSBiZW5lZml0IGZvciB1c2VycyBvZiB0aGUgT3BlbiBBUEkgU3BlY2lmaWNhdGlvbi4gIFRoZSBwcm9qZWN0IGl0c2VsZiBoYXMgdGhlIFtMaWNlbnNlXSgjNy0tLWxpY2Vuc2UpIGFzIHNwZWNpZmllZC4gSW4gYWRkaXRpb24sIHBsZWFzZSB1bmRlcnN0YW5kIHRoZSBmb2xsb3dpbmcgcG9pbnRzOgoKKiBUaGUgdGVtcGxhdGVzIGluY2x1ZGVkIHdpdGggdGhpcyBwcm9qZWN0IGFyZSBzdWJqZWN0IHRvIHRoZSBbTGljZW5zZV0oIzctLS1saWNlbnNlKS4KKiBHZW5lcmF0ZWQgY29kZSBpcyBpbnRlbnRpb25hbGx5IF9ub3RfIHN1YmplY3QgdG8gdGhlIHBhcmVudCBwcm9qZWN0IGxpY2Vuc2UKCldoZW4gY29kZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGlzIHByb2plY3QsIGl0IHNoYWxsIGJlIGNvbnNpZGVyZWQgKipBUyBJUyoqIGFuZCBvd25lZCBieSB0aGUgdXNlciBvZiB0aGUgc29mdHdhcmUuICBUaGVyZSBhcmUgbm8gd2FycmFudGllcy0tZXhwcmVzc2VkIG9yIGltcGxpZWQtLWZvciBnZW5lcmF0ZWQgY29kZS4gIFlvdSBjYW4gZG8gd2hhdCB5b3Ugd2lzaCB3aXRoIGl0LCBhbmQgb25jZSBnZW5lcmF0ZWQsIHRoZSBjb2RlIGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgYW5kIHN1YmplY3QgdG8gdGhlIGxpY2Vuc2luZyB0ZXJtcyB0aGF0IHlvdSBkZWVtIGFwcHJvcHJpYXRlLgoKIyMjIFszLjUgLSBJREUgSW50ZWdyYXRpb25dKCN0YWJsZS1vZi1jb250ZW50cykKCkhlcmUgaXMgYSBsaXN0IG9mIGNvbW11bml0eS1jb250cmlidXRlZCBJREUgcGx1Zy1pbnMgdGhhdCBpbnRlZ3JhdGUgd2l0aCBPcGVuQVBJIEdlbmVyYXRvcjoKCi0gRWNsaXBzZTogW0NvZGV3aW5kIE9wZW5BUEkgVG9vbHMgZm9yIEVjbGlwc2VdKGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2NvZGV3aW5kL29wZW4tYXBpLXRvb2xzLWZvci1lY2xpcHNlLmh0bWwpIGJ5IFtJQk1dKGh0dHBzOi8vd3d3LmlibS5jb20pCi0gSW50ZWxsaUogSURFQTogW09wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3BsdWdpbnMuamV0YnJhaW5zLmNvbS9wbHVnaW4vODQzMy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW0ppbSBTY2h1YmVydF0oaHR0cHM6Ly9qaW1zY2h1YmVydC51cy8jLykKLSBJbnRlbGxpSiBJREVBOiBbU2VueWEgRWRpdG9yXShodHRwczovL3BsdWdpbnMuamV0YnJhaW5zLmNvbS9wbHVnaW4vMTA2OTAtc2VueWEtZWRpdG9yKSBieSBbc2VueWEuaW9dKGh0dHBzOi8vc2VueWEuaW8pCi0gW1JlcHJlWmVuIEFQSSBTdHVkaW9dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS8pCi0gVmlzdWFsIFN0dWRpbzogW1JFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvcl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcikgYnkgW0NocmlzdGlhbiBSZXNtYSBIZWxsZV0oaHR0cHM6Ly9jaHJpc3RpYW4taGVsbGUuYmxvZ3Nwb3QuY29tLykKLSBWaXN1YWwgU3R1ZGlvIENvZGU6IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9SUJNLmNvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGJ5IFtJQk1dKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9wdWJsaXNoZXJzL0lCTSkKCgojIyBbNCAtIENvbXBhbmllcy9Qcm9qZWN0cyB1c2luZyBPcGVuQVBJIEdlbmVyYXRvcl0oI3RhYmxlLW9mLWNvbnRlbnRzKQpIZXJlIGFyZSBzb21lIGNvbXBhbmllcy9wcm9qZWN0cyAoYWxwaGFiZXRpY2FsIG9yZGVyKSB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciBpbiBwcm9kdWN0aW9uLiBUbyBhZGQgeW91ciBjb21wYW55L3Byb2plY3QgdG8gdGhlIGxpc3QsIHBsZWFzZSB2aXNpdCBbUkVBRE1FLm1kXShSRUFETUUubWQpIGFuZCBjbGljayBvbiB0aGUgaWNvbiB0byBlZGl0IHRoZSBwYWdlLgoKLSBbQWFsYm9yZyBVbml2ZXJzaXR5XShodHRwczovL3d3dy5hYXUuZGspCi0gW2FjdCBjb2RpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rjb2RpbmcpCi0gW0FkYXB0YW50IFNvbHV0aW9ucyBBR10oaHR0cHM6Ly93d3cuYWRhcHRhbnQuaW8vKQotIFthZGVzc28gU0VdKGh0dHBzOi8vd3d3LmFkZXNzby5kZS8pCi0gW0FkeWVuXShodHRwczovL3d3dy5hZHllbi5jb20vKQotIFtBZ29kYV0oaHR0cHM6Ly93d3cuYWdvZGEuY29tLykKLSBbQWlydGhpbmdzXShodHRwczovL3d3dy5haXJ0aGluZ3MuY29tLykKLSBbQWxlcmkgU29sdXRpb25zIEdtYmhdKGh0dHBzOi8vd3d3LmFsZXJpLmRlLykKLSBbQWxsaWFuel0oaHR0cHM6Ly93d3cuYWxsaWFuei5jb20pCi0gW0FuZ3VsYXIuU2NodWxlXShodHRwczovL2FuZ3VsYXIuc2NodWxlLykKLSBbQXFvdmlhXShodHRwczovL2Fxb3ZpYS5jb20vKQotIFtBdXN0cmFsaWEgYW5kIE5ldyBaZWFsYW5kIEJhbmtpbmcgR3JvdXAgKEFOWildKGh0dHA6Ly93d3cuYW56LmNvbS8pCi0gW0FyZHVpbm9dKGh0dHBzOi8vd3d3LmFyZHVpbm8uY2MvKQotIFtBU0tVTF0oaHR0cHM6Ly93d3cuYXNrdWwuY28uanApCi0gW0FtYXpvbiBXZWIgU2VydmljZXMgKEFXUyldKGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vKQotIFtiPD5jb21dKGh0dHBzOi8vYi1jb20uY29tL2VuKQotIFvnmb7luqbokKXplIBdKGh0dHBzOi8vZS5iYWlkdS5jb20pCi0gW0JhbmR3aWR0aF0oaHR0cHM6Ly9kZXYuYmFuZHdpZHRoLmNvbSkKLSBbQmFuemFpIENsb3VkXShodHRwczovL2JhbnphaWNsb3VkLmNvbSkKLSBbQklNRGF0YS5pb10oaHR0cHM6Ly9iaW1kYXRhLmlvKQotIFtCaXRob3N0IEdtYkhdKGh0dHBzOi8vd3d3LmJpdGhvc3QuY2gpCi0gW0Jvc2NoIENvbm5lY3RlZCBJbmR1c3RyeV0oaHR0cHM6Ly93d3cuYm9zY2gtY29ubmVjdGVkLWluZHVzdHJ5LmNvbSkKLSBbQm94ZXZlcl0oaHR0cHM6Ly93d3cuYm94ZXZlci5jb20vKQotIFtCcmV2eV0oaHR0cHM6Ly93d3cuYnJldnkuY29tKQotIFtCdW5rZXIgSG9sZGluZyBHcm91cF0oaHR0cHM6Ly93d3cuYnVua2VyLWhvbGRpbmcuY29tLykKLSBbQ2FsaWZvcm5pYSBTdGF0ZSBVbml2ZXJzaXR5LCBOb3J0aHJpZGdlXShodHRwczovL3d3dy5jc3VuLmVkdSkKLSBbQ0FNXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwLykKLSBbQ2FtcHRvY2FtcF0oaHR0cHM6Ly93d3cuY2FtcHRvY2FtcC5jb20vZW4pCi0gW0NhcmxzYmVyZyBHcm91cF0oaHR0cHM6Ly93d3cuY2FybHNiZXJnZ3JvdXAuY29tLykKLSBbQ2hyaXN0b3BoZXIgUXVlZW4gQ29uc3VsdGluZ10oaHR0cHM6Ly93d3cuY2hyaXN0b3BoZXJxdWVlbmNvbnN1bHRpbmcuY29tLykKLSBbQ2lzY29dKGh0dHBzOi8vd3d3LmNpc2NvLmNvbS8pCi0gW2NvZGVjZW50cmljIEFHXShodHRwczovL3d3dy5jb2RlY2VudHJpYy5kZS8pCi0gW0NvaW5BUEldKGh0dHBzOi8vd3d3LmNvaW5hcGkuaW8vKQotIFtDb21tZW5jaXNdKGh0dHBzOi8vd3d3LmNvbW1lbmNpcy5jb20vKQotIFtDb25maWdDYXRdKGh0dHBzOi8vY29uZmlnY2F0LmNvbS8pCi0gW2Nyb25uIEdtYkhdKGh0dHBzOi8vd3d3LmNyb25uLmRlLykKLSBbQ3Jvc3NvdmVyIEhlYWx0aF0oaHR0cHM6Ly9jcm9zc292ZXJoZWFsdGguY29tLykKLSBbQ3VwaXhdKGh0dHBzOi8vd3d3LmN1cGl4LmNvbS8pCi0gW0RhdGFkb2ddKGh0dHBzOi8vd3d3LmRhdGFkb2docS5jb20pCi0gW0RCIFN5c3RlbF0oaHR0cHM6Ly93d3cuZGJzeXN0ZWwuZGUpCi0gW0RlZXBvcnV0ZS5haV0oaHR0cHM6Ly93d3cuZGVlcHJvdXRlLmFpLykKLSBbRGV2c3VwcGx5XShodHRwczovL3d3dy5kZXZzdXBwbHkuY29tLykKLSBbZG1URUNIIEdtYkhdKGh0dHBzOi8vd3d3LmRtVEVDSC5kZSkKLSBbRG9jU3ByaW5nXShodHRwczovL2RvY3NwcmluZy5jb20vKQotIFtkd2FuZ29dKGh0dHBzOi8vZHdhbmdvLmNvLmpwLykKLSBbRWRnZSBJbXB1bHNlXShodHRwczovL3d3dy5lZGdlaW1wdWxzZS5jb20vKQotIFtFbGVtZW50IEFJXShodHRwczovL3d3dy5lbGVtZW50YWkuY29tLykKLSBbRW1ib3RpY3NdKGh0dHBzOi8vd3d3LmVtYm90aWNzLmNvbS8pCi0gW2VtaW5lb10oaHR0cHM6Ly93d3cuZW1pbmVvLmNoKQotIFtmYXN0bHldKGh0dHBzOi8vd3d3LmZhc3RseS5jb20vKQotIFtGZW5lcmdvXShodHRwczovL3d3dy5mZW5lcmdvLmNvbS8pCi0gW2ZyZWVlXShodHRwczovL2NvcnAuZnJlZWUuY28uanAvZW4vKQotIFtGcmVzaENlbGxzXShodHRwczovL3d3dy5mcmVzaGNlbGxzLmRlLykKLSBbRnVzZV0oaHR0cHM6Ly93d3cuZnVzZS5uby8pCi0gW0dhbnRuZXJdKGh0dHBzOi8vd3d3LmdhbnRuZXIuY29tKQotIFtHZW5GbG93XShodHRwczovL2dpdGh1Yi5jb20vUmVwcmVaZW4vR2VuRmxvdykKLSBbR2V0WW91ckd1aWRlXShodHRwczovL3d3dy5nZXR5b3VyZ3VpZGUuY29tLykKLSBbR2xvdm9dKGh0dHBzOi8vZ2xvdm9hcHAuY29tLykKLSBbR01PIFBlcGFib10oaHR0cHM6Ly9wZXBhYm8uY29tL2VuLykKLSBbR29EYWRkeV0oaHR0cHM6Ly9nb2RhZGR5LmNvbSkKLSBbR3VtdHJlZV0oaHR0cHM6Ly9ndW10cmVlLmNvbSkKLSBbSGVyZV0oaHR0cHM6Ly9kZXZlbG9wZXIuaGVyZS5jb20vKQotIFtJQk1dKGh0dHBzOi8vd3d3LmlibS5jb20vKQotIFtJbnN0YW5hXShodHRwczovL3d3dy5pbnN0YW5hLmNvbSkKLSBbSW50ZXJ4aW9uXShodHRwczovL3d3dy5pbnRlcnhpb24uY29tKQotIFtJbnF1aXNpY29dKGh0dHBzOi8vaW5xdWlzaWNvLmNvbSkKLSBbSnVzdFN0YXJdKGh0dHBzOi8vd3d3Lmp1c3RzdGFyaW5mby5jb20pCi0gW2s2LmlvXShodHRwczovL2s2LmlvLykKLSBbS2xhcm5hXShodHRwczovL3d3dy5rbGFybmEuY29tLykKLSBbS3JvbnNvZnQgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3Lmtyb25zb2Z0LnJvL2hvbWUvKQotIFtLdWJlcm5ldGVzXShodHRwczovL2t1YmVybmV0ZXMuaW8pCi0gW0xhbmRlc2hhdXB0c3RhZHQgTcO8bmNoZW4gLSBpdEBNXShodHRwczovL211ZW5jaGVuLmRpZ2l0YWwvaXQtYXQtbS8pCi0gW0xpbm9kZV0oaHR0cHM6Ly93d3cubGlub2RlLmNvbS8pCi0gW0xvZ2ljZHJvcF0oaHR0cHM6Ly93d3cubG9naWNkcm9wLmNvbSkKLSBbTHVtZXJpc10oaHR0cHM6Ly93d3cubHVtZXJpcy5jb20pCi0gW0xWTSBWZXJzaWNoZXJ1bmdlbl0oaHR0cHM6Ly93d3cubHZtLmRlKQotIFtNYWlsU2x1cnBdKGh0dHBzOi8vd3d3Lm1haWxzbHVycC5jb20pCi0gW01hbnRpY29yZSBTZWFyY2hdKGh0dHBzOi8vbWFudGljb3Jlc2VhcmNoLmNvbSkKLSBbTWFzdGVyY2FyZF0oaHR0cHM6Ly9kZXZlbG9wZXJzLm1hc3RlcmNhcmQuY29tKQotIFtNw6lkaWF2aXNpb25dKGh0dHBzOi8vd3d3Lm1lZGlhdmlzaW9uLmZyLykKLSBbTWV0YXN3aXRjaF0oaHR0cHM6Ly93d3cubWV0YXN3aXRjaC5jb20vKQotIFtNb29uVmlzaW9uXShodHRwczovL3d3dy5tb29udmlzaW9uLmlvLykKLSBbTXl3b3Jrb3V0XShodHRwczovL215d29ya291dC5jb20pCi0gW05hbVNvcl0oaHR0cHM6Ly93d3cubmFtc29yLmNvbS8pCi0gW05ldmVyZmFpbF0oaHR0cHM6Ly93d3cubmV2ZXJmYWlsLmNvbS8pCi0gW05ldWVyRW5lcmd5XShodHRwczovL25ldWVyZW5lcmd5LmNvbSkKLSBbTm9raWFdKGh0dHBzOi8vd3d3Lm5va2lhLmNvbS8pCi0gW09uZVNpZ25hbF0oaHR0cHM6Ly93d3cub25lc2lnbmFsLmNvbS8pCi0gW09wdGlvbnMgQ2xlYXJpbmcgQ29ycG9yYXRpb24gKE9DQyldKGh0dHBzOi8vd3d3LnRoZW9jYy5jb20vKQotIFtPcGVuZXRdKGh0dHBzOi8vd3d3Lm9wZW5ldC5jb20vKQotIFtvcGVuVkFMSURBVElPTl0oaHR0cHM6Ly9vcGVudmFsaWRhdGlvbi5pby8pCi0gW09yYWNsZV0oaHR0cHM6Ly93d3cub3JhY2xlLmNvbS8pCi0gW1BheG9zXShodHRwczovL3d3dy5wYXhvcy5jb20pCi0gW1BsYWlkXShodHRwczovL3BsYWlkLmNvbSkKLSBbUExBSUQsIEluYy5dKGh0dHBzOi8vcGxhaWQuY28uanAvKQotIFtQaW50ZXJlc3RdKGh0dHBzOi8vd3d3LnBpbnRlcmVzdC5jb20pCi0gW1Bvbmljb2RlXShodHRwczovL3Bvbmljb2RlLmRldi8pCi0gW1ByaWNlZnhdKGh0dHBzOi8vd3d3LnByaWNlZnguY29tLykKLSBbUHJpbnROYW5ueV0oaHR0cHM6Ly93d3cucHJpbnQtbmFubnkuY29tLykKLSBbUHJvbWV0aGV1cy9BbGVydG1hbmFnZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9tZXRoZXVzL2FsZXJ0bWFuYWdlcikKLSBbUWF2YXJdKGh0dHBzOi8vd3d3LnFhdmFyLmNvbSkKLSBbUUVESVRdKGh0dHBzOi8vcWVkLWl0LmNvbSkKLSBbUW92ZXJ5XShodHRwczovL3FvdmVyeS5jb20pCi0gW1F1bGl4IFN5c3RlbXNdKGh0dHBzOi8vd3d3LnF1bGl4LmNvbSkKLSBbUmFrc3VsXShodHRwczovL2NvcnAucmFrc3VsLmNvbSkKLSBbUmFpZmZlaXNlbiBTY2h3ZWl6IEdlbm9zc2Vuc2NoYWZ0XShodHRwczovL3d3dy5yYWlmZmVpc2VuLmNoKQotIFtSZWRIYXRdKGh0dHBzOi8vd3d3LnJlZGhhdC5jb20pCi0gW1JlcHJlWmVuIEFQSSBTdHVkaW9dKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9zd2FnZ2VyLW9wZW5hcGktY29kZS1nZW5lcmF0aW9uLWFwaS1maXJzdC1taWNyb3NlcnZpY2VzLWVudGVycHJpc2UtZGV2ZWxvcG1lbnQpCi0gW1JFU1QgVW5pdGVkXShodHRwczovL3Jlc3R1bml0ZWQuY29tKQotIFtSb2JvY29ycF0oaHR0cHM6Ly93d3cucm9ib2NvcnAuY29tKQotIFtSb2JvdGluZnJhXShodHRwczovL3d3dy5yb2JvdGluZnJhLmNvbSkKLSBbU2VhcmNoQXBpXShodHRwczovL3d3dy5zZWFyY2hhcGkuaW8vKQotIFtTbWFydEhSXShodHRwczovL3NtYXJ0aHIuY28uanAvKQotIFtTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnRdKGh0dHBzOi8vd3d3LnNpZS5jb20vZW4vaW5kZXguaHRtbCkKLSBbU3BsaXRpdF0oaHR0cHM6Ly93d3cuc3BsaXRpdC5jb20vKQotIFtTdGluZ3JheV0oaHR0cDovL3d3dy5zdGluZ3JheS5jb20pCi0gW1N1dmFdKGh0dHBzOi8vd3d3LnN1dmEuY2gvKQotIFtTdml4XShodHRwczovL3d3dy5zdml4LmNvbS8pCi0gW1RlbHN0cmFdKGh0dHBzOi8vZGV2LnRlbHN0cmEuY29tKQotIFtUZW5jZW50XShodHRwczovL3d3dy50ZW5jZW50LmNvbSkKLSBbVGhlIFVuaXZlcnNpdHkgb2YgQWl6dV0oaHR0cHM6Ly93d3cudS1haXp1LmFjLmpwL2VuLykKLSBbVHJhbnNsdWNlbnQgQXBTXShodHRwczovL3d3dy50cmFuc2x1Y2VudC5kaykKLSBbVHJhdmVsVGltZSBwbGF0Zm9ybV0oaHR0cHM6Ly93d3cudHJhdmVsdGltZXBsYXRmb3JtLmNvbS8pCi0gW1RyaWJhbFNjYWxlXShodHRwczovL3d3dy50cmliYWxzY2FsZS5jb20pCi0gW1RyaWZvcmtdKGh0dHBzOi8vdHJpZm9yay5jb20pCi0gW1RVSSBJbmZvVGVjIEdtYkhdKGh0dHA6Ly93d3cudHVpLWluZm90ZWMuY29tLykKLSBbVHdpbGlvXShodHRwczovL3d3dy50d2lsaW8uY29tLykKLSBbVHdpdHRlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbSkKLSBbdW5ibHUgaW5jLl0oaHR0cHM6Ly93d3cudW5ibHUuY29tLykKLSBbVmVhbWx5XShodHRwczovL3d3dy52ZWFtbHkuY29tLykKLSBbVk1XYXJlXShodHRwczovL3d3dy52bXdhcmUuY29tLykKLSBbd2J0LXNvbHV0aW9uc10oaHR0cHM6Ly93d3cud2J0LXNvbHV0aW9ucy5kZS8pCi0gW1dvbGVldF0oaHR0cHM6Ly93d3cud29sZWV0LmlvLykKLSBbV1NPMl0oaHR0cHM6Ly93c28yLmNvbS8pCi0gW1ZvdWNoZXJ5LmlvXShodHRwczovL3ZvdWNoZXJ5LmlvKQotIFtYZXJvXShodHRwczovL3d3dy54ZXJvLmNvbS8pCi0gW1lhaG9vIEphcGFuXShodHRwczovL3d3dy55YWhvby5jby5qcC8pCi0gW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlLykKLSBbVm9uYWdlXShodHRwczovL3ZvbmFnZS5jb20pCi0gW1lJVFUgVGVjaG5vbG9neV0oaHR0cHM6Ly93d3cueWl0dXRlY2guY29tLykKLSBbWWVscF0oaHR0cHM6Ly93d3cueWVscC5jb20vKQotIFtaYWxhbmRvXShodHRwczovL3d3dy56YWxhbmRvLmNvbSkKLSBbM0RTIE91dHNjYWxlXShodHRwczovL3d3dy5vdXRzY2FsZS5jb20vKQoKIyMgWzUgLSBQcmVzZW50YXRpb25zL1ZpZGVvcy9UdXRvcmlhbHMvQm9va3NdKCN0YWJsZS1vZi1jb250ZW50cykKCi0gMjAxOC8wNS8xMiAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIGNvbW11bml0eSBkcml2ZW7jgafmiJDplbfjgZnjgovjgrPjg7zjg4njgrjjgqfjg43jg6zjg7zjgr9dKGh0dHBzOi8vYWNraW50b3NoLmdpdGh1Yi5pby9ibG9nLzIwMTgvMDUvMTIvb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKQotIDIwMTgvMDUvMTUgLSBbU3RhcnRpbmcgYSBuZXcgb3Blbi1zb3VyY2UgcHJvamVjdF0oaHR0cDovL2ptaW5pLmdpdGh1Yi5pby9ibG9nLzIwMTgvMjAxOC0wNS0xNV9uZXctb3Blbi1zb3VyY2UtcHJvamVjdC5odG1sKSBieSBbSmVyZW1pZSBCcmVzc29uXShodHRwczovL2dpdGh1Yi5jb20vam1pbmkpCi0gMjAxOC8wNS8xNSAtIFtSRVNUIEFQSeS7leanmOOBi+OCiUFQSeOCr+ODqeOCpOOCouODs+ODiOOChOOCueOCv+ODluOCteODvOODkOOCkuiHquWLleeUn+aIkOOBmeOCi+OAjE9wZW5BUEkgR2VuZXJhdG9y44CN44Kq44O844OX44Oz44K944O844K544Gn5YWs6ZaL44CCU3dhZ2dlciBDb2RlZ2Vu44GL44KJ44Gu44OV44Kp44O844KvXShodHRwczovL3d3dy5wdWJsaWNrZXkxLmpwL2Jsb2cvMTgvcmVzdF9hcGlhcGlvcGVuYXBpX2dlbmVyYXRvcnN3YWdnZXJfZ2VuZXJhdG9yLmh0bWwpIGJ5IFtQdWJsaWNrZXldKGh0dHBzOi8vd3d3LnB1YmxpY2tleTEuanApCi0gMjAxOC8wNi8wOCAtIFtTd2FnZ2VyIENvZGVnZW4gaXMgbm93IE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FuZ3VsYXIuc2NodWxlL2Jsb2cvMjAxOC0wNi1zd2FnZ2VyLWNvZGVnZW4taXMtbm93LW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbSm9oYW5uZXNIb3BwZV0oaHR0cHM6Ly9naXRodWIuY29tL0pvaGFubmVzSG9wcGUpCi0gMjAxOC8wNi8yMSAtIFtDb25uZWN0IHlvdXIgSkhpcHN0ZXIgYXBwcyB0byB0aGUgd29ybGQgb2YgQVBJcyB3aXRoIE9wZW5BUEkgYW5kIGdSUENdKGh0dHBzOi8vZnIuc2xpZGVzaGFyZS5uZXQvY2hib3JuZXQvamhpcHN0ZXItY29uZi0yMDE4LWNvbm5lY3QteW91ci1qaGlwc3Rlci1hcHBzLXRvLXRoZS13b3JsZC1vZi1hcGlzLXdpdGgtb3BlbmFwaS1hbmQtZ3JwYykgYnkgW0NocmlzdG9waGUgQm9ybmV0XShodHRwczovL2dpdGh1Yi5jb20vY2Jvcm5ldCkgYXQgW0pIaXBzdGVyIENvbmYgMjAxOF0oaHR0cHM6Ly9qaGlwc3Rlci1jb25mLmdpdGh1Yi5pby8pCi0gMjAxOC8wNi8yMiAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgR2F0bGluZyBDbGllbnQg44KS55Sf5oiQ44GX44Gm44G/44GfXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMDYvMjIvMDczMDAwKSBhdCBb44K944Oi44K144OzXShodHRwczovL3JvaGtpLmhhdGVuYWJsb2cuY29tLykKLSAyMDE4LzA2LzI3IC0gW0xlc3NvbnMgTGVhcm5lZCBmcm9tIExlYWRpbmcgYW4gT3Blbi1Tb3VyY2UgUHJvamVjdCBTdXBwb3J0aW5nIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvbGVzc29ucy1sZWFybmVkLWZyb20tbGVhZGluZy1hbi1vcGVuLXNvdXJjZS1wcm9qZWN0LXN1cHBvcnRpbmctMzAtcGx1cy1wcm9ncmFtbWluZy1sYW5ndWFnZXMpIC0gW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSBhdCBbTGludXhDb24gKyBDb250YWluZXJDb24gKyBDbG91ZE9wZW4gQ2hpbmEgMjAxOF0oaHR0cDovL2JpdC5seS8yd2FES0tYKQotIDIwMTgvMDcvMTkgLSBbT3BlbkFQSSBHZW5lcmF0b3IgQ29udHJpYnV0aW9uIFF1aWNrc3RhcnQgLSBSaW5nQ2VudHJhbCBHbyBTREtdKGh0dHBzOi8vbWVkaXVtLmNvbS9yaW5nY2VudHJhbC1kZXZlbG9wZXJzL29wZW5hcGktZ2VuZXJhdG9yLWZvci1nby1jb250cmlidXRpb24tcXVpY2tzdGFydC04Y2M3MmJmMzdiNTMpIGJ5IFtKb2huIFdhbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9ncm9raWZ5KQotIDIwMTgvMDgvMjIgLSBbT3BlbkFQSSBHZW5lcmF0b3Ljga7jg5fjg63jgrjjgqfjgq/jg4jmp4vmiJDjgarjganjga7jg6Hjg6JdKGh0dHBzOi8veWlubS5pbmZvLzIwMTgwODIyLykgYnkgW1l1c3VrZSBJaW51bWFdKGh0dHBzOi8vZ2l0aHViLmNvbS95aW5tKQotIDIwMTgvMDkvMTIgLSBbUmVwcmVaZW4gYW5kIE9wZW5BUEkgMy4wOiBOb3cgaXMgdGhlIFRpbWVdKGh0dHBzOi8vd3d3LnJlcHJlemVuLmNvbS9ibG9nL3JlcHJlemVuLW9wZW5hcGktMy4wLXVwZ3JhZGUtbm93LWlzLXRoZS10aW1lKSBieSBbTWlsZXMgRGFmZmluXShodHRwczovL3d3dy5yZXByZXplbi5jb20vYmxvZy9hdXRob3IvbWlsZXMtZGFmZmluKQotIDIwMTgvMTAvMzEgLSBbQSBub2RlIHBhY2thZ2Ugd3JhcHBlciBmb3Igb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9IYXJtb1dhdGNoL29wZW5hcGktZ2VuZXJhdG9yLWNsaSkKLSAyMDE4LzExLzAzIC0gW09wZW5BUEkgR2VuZXJhdG9yICsgZ29sYW5nICsgRmx1dHRlciDjgafjgqLjg5fjg6rplovnmbpdKGh0dHA6Ly9yeXVpY2hpMTExc3RkLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMTgvMTEvMDMvMjE0MDA1KSBieSBbUnl1aWNoaSBEYWlnb10oaHR0cHM6Ly9naXRodWIuY29tL3J5dWljaGkxMTEpCi0gMjAxOC8xMS8xNSAtIFvln7rkuo5vcGVuYXBpMy4w55qEeWFtbOaWh+S7tueUn+aIkGphdmHku6PnoIHnmoTkuIDmrKHlrp7ot7VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC95enkxOTkzOTEvYXJ0aWNsZS9kZXRhaWxzLzg0MDIzOTgyKSBieSBb54Sx6a2U546LXShodHRwczovL21lLmNzZG4ubmV0L3l6eTE5OTM5MSkKLSAyMDE4LzExLzE4IC0gW0dlbmVyYXRpbmcgUEhQIGxpYnJhcnkgY29kZSBmcm9tIE9wZW5BUEldKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9wb3N0cy8yMDE4L2dlbmVyYXRpbmctcGhwLWxpYnJhcnktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtMb3JuYSBKYW5lXShodHRwczovL2xvcm5hamFuZS5uZXQvKSBhdCBbTE9STkFKQU5FIEJsb2ddKGh0dHBzOi8vbG9ybmFqYW5lLm5ldC9ibG9nKQotIDIwMTgvMTEvMTkgLSBbT3BlbkFQSXMgYXJlIGV2ZXJ5d2hlcmVdKGh0dHBzOi8veW91dHUuYmUvLWxEb3Q0WW43RGcpIGJ5IFtKZXJlbWllIEJyZXNzb24gKFVuYmx1KV0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBhdCBbRWNsaXBzZUNvbiBFdXJvcGUgMjAxOF0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOCkKLSAyMDE4LzEyLzA5IC0gW29wZW5hcGktZ2VuZXJhdG9yIOOCkuOCq+OCueOCv+ODnuOCpOOCuuOBmeOCi+aWueazlV0oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvL2l0ZW1zLzA5NjEyODdjMDJlYWM5MjExNTcyKSBieSBbQHdhdGlrb10oaHR0cHM6Ly9xaWl0YS5jb20vd2F0aWtvKQotIDIwMTkvMDEvMDMgLSBbQ2FsbGluZyBhIFN3YWdnZXIgc2VydmljZSBmcm9tIEFwZXggdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbGVra2ltd29ybGQuY29tLzIwMTkvMDEvMDMvY2FsbGluZy1hLXN3YWdnZXItc2VydmljZS1mcm9tLWFwZXgtdXNpbmctb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbTWlra2VsIEZsaW5kdCBIZWlzdGVyYmVyZ10oaHR0cHM6Ly9sZWtraW13b3JsZC5jb20pCi0gMjAxOS8wMS8xMyAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBp1JFU1RmdWwgQVBJ44Gu5a6a576p5pu444GL44KJ6Imy44CF6Ieq5YuV55Sf5oiQ44GZ44KLXShodHRwczovL2t5LXlrLWQuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8wMS8xMy8yMzQxMDgpIGJ5IFtAa3lfeWtfZF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9reV95a19kKQotIDIwMTkvMDEvMjAgLSBbQ29udHJhY3QtRmlyc3QgQVBJIERldmVsb3BtZW50IHdpdGggT3BlbkFQSSBHZW5lcmF0b3IgYW5kIENvbm5leGlvbl0oaHR0cHM6Ly9tZWRpdW0uY29tL2NvbW1lbmNpcy9jb250cmFjdC1maXJzdC1hcGktZGV2ZWxvcG1lbnQtd2l0aC1vcGVuYXBpLWdlbmVyYXRvci1hbmQtY29ubmV4aW9uLWIyMWJiZjJmOTI0NCkgYnkgW0FuaWwgQ2FuIEF5ZGluXShodHRwczovL2dpdGh1Yi5jb20vYW5sY255ZG4pCi0gMjAxOS8wMS8zMCAtIFtSYXBpZCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBXaXRoIEFQSSBGaXJzdCBBcHByb2FjaCBVc2luZyBPcGVuLUFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZHpvbmUuY29tL2FydGljbGVzL3JhcGlkLWFwaS1kZXZlbG9wbWVudC11c2luZy1vcGVuLWFwaS1nZW5lcmF0b3IpIGJ5IFtNaWxhbiBTb25rYXJdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzgyODMyOS9taWxhbl9zb25rYXIuaHRtbCkKLSAyMDE5LzAyLzAyIC0gW+W5s+mdmeOCkuS/neOBoeOAgeOCs+ODvOODieOCkueUn+aIkOOBm+OCiCDjgJwgT3BlbkFQSSBHZW5lcmF0b3LoqpXnlJ/jga7og4zmma/jgajou4zot6Eg44CcXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS9ha2loaXRvX25ha2Fuby9ndW5tYXdlYjM0KSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbR3VubWEud2ViICMzNCDjgrnjgq3jg7zjg57pp4bli5XplovnmbpdKGh0dHBzOi8vZ3VubWF3ZWIuY29ubnBhc3MuY29tL2V2ZW50LzExMzk3NC8pCi0gMjAxOS8wMi8yMCAtIFtBbiBhZHZlbnR1cmUgaW4gT3BlbkFQSSBWMyBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbXV4LmNvbS9ibG9nL2FuLWFkdmVudHVyZS1pbi1vcGVuYXBpLXYzLWFwaS1jb2RlLWdlbmVyYXRpb24vKSBieSBbUGhpbCBDbHVmZl0oaHR0cHM6Ly9tdXguY29tL2Jsb2cvYXV0aG9yL3BoaWxjLykKLSAyMDE5LzAyLzI2IC0gW0J1aWxkaW5nIEFQSSBTZXJ2aWNlczogQSBCZWdpbm5lcuKAmXMgR3VpZGVdKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQvYnVpbGRpbmctYXBpLXNlcnZpY2VzLWEtYmVnaW5uZXJzLWd1aWRlLTcyNzRhZTRjNTQ3ZikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS8wMi8yNiAtIFtCdWlsZGluZyBBUElzIHdpdGggT3BlbkFQSTogQ29udGludWVkXShodHRwczovL21lZGl1bS5jb20vQHJhdHJvc3kvYnVpbGRpbmctYXBpcy13aXRoLW9wZW5hcGktY29udGludWVkLTVkMGZhYWVkMzJlYikgYnkgW1JhdHJvcyBZLl0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYXRyb3N5KSBpbiBbR29vZ2xlIENsb3VkIFBsYXRmb3JtIEJsb2ddKGh0dHBzOi8vbWVkaXVtLmNvbS9nb29nbGUtY2xvdWQpCi0gMjAxOS0wMy0wNyAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgacgU3ByaW5nIEJvb3Qg44GoIEFuZ3VsYXIg44KS44K/44Kk44OX44K744O844OV44Gr57mL44GQXShodHRwczovL3FpaXRhLmNvbS9jaGliYXRvL2l0ZW1zL2U0YTc0OGRiMTI0MDliNDBjMDJmKSBieSBbVG9tb2Z1bWkgQ2hpYmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaGliYXQpCi0gMjAxOS0wMy0xNiAtIFtBIFF1aWNrIGludHJvZHVjdGlvbiB0byBtYW51YWwgT3BlbkFQSSBWM10oaHR0cHM6Ly92YWRvc3dhcmUuaW8vcG9zdC9xdWljay1pbnRyby10by1tYW51YWwtb3BlbmFwaS12My8pIGJ5IFt2YWRvc10oaHR0cHM6Ly9naXRodWIuY29tL3QzaG1ybWFuKSBhdCBbVkFET1NXQVJFXShodHRwczovL3ZhZG9zd2FyZS5pbykKLSAyMDE5LTAzLTI1IC0gW0FjY2VzcyBhbnkgUkVTVCBzZXJ2aWNlIHdpdGggdGhlIFNBUCBTLzRIQU5BIENsb3VkIFNES10oaHR0cHM6Ly9ibG9ncy5zYXAuY29tLzIwMTkvMDMvMjUvaW50ZWdyYXRlLXNhcC1zNGhhbmEtY2xvdWQtc2RrLXdpdGgtb3Blbi1hcGkvKSBieSBbQWxleGFuZGVyIER1ZW1vbnRdKGh0dHBzOi8vcGVvcGxlLnNhcC5jb20vYWxleGFuZGVyLmR1ZW1vbnQpCi0gMjAxOS0wMy0yNSAtIFtPcGVuQVBJIGdlbmVyYXRvcuOCkuippuOBl+OBpuOBv+OCi10oaHR0cHM6Ly9xaWl0YS5jb20vYW11eWlrYW0vaXRlbXMvZThhNDVkYWFlNTljNjhiZTBmYzgpIGJ5IFtAYW11eWlrYW1dKGh0dHBzOi8vdHdpdHRlci5jb20vYW11eWlrYW0pCi0gMjAxOS0wMy0yNyAtIFtPcGVuQVBJM+OCkuS9v+OBo+OBpuOBv+OCiOOBhu+8gUdv6KiA6Kqe44Gn44Kv44Op44Kk44Ki44Oz44OI44Go44K544K/44OW44Gu6Ieq5YuV55Sf5oiQ44G+44Gn77yBXShodHRwczovL3RlY2hibG9nLnpvem8uY29tL2VudHJ5L29wZW5hcGkzL2dvKSBieSBbQGdvbGRfa291XShodHRwczovL3R3aXR0ZXIuY29tL2dvbGRfa291KQotIDIwMTktMDQtMTcgLSBbT3BlbkFQSeOBq+OCiOOCi+OCueOCreODvOODnuODleOCoeODvOOCueODiOmWi+eZuuOBruWun+aWveOCteODs+ODl+ODq+OBqENsb3VkIFJ1buOBq+OBpOOBhOOBpl0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAxOS8wNC8xNy8xNzQwMDApIGJ5IFtAeXVrZXkxMDMxXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2V5MTAzMSkKLSAyMDE5LTA0LTE4IC0gW0hvdyB0byB1c2UgT3BlbkFQSTMgZm9yIEFQSSBkZXZlbG9wZXIgKFJ1YnlLYWlnaSAyMDE5KV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vb3RhNDJ5L2hvdy10by11c2Utb3BlbmFwaTMtZm9yLWFwaS1kZXZlbG9wZXIpIGJ5IFtAb3RhNDJ5XShodHRwczovL3R3aXR0ZXIuY29tL290YTQyeSkgYXQgW1J1YnlLYWlnaSAyMDE5XShodHRwczovL3J1YnlrYWlnaS5vcmcvMjAxOSkKLSAyMDE5LTA0LTI5IC0gW0EgQmVnaW5uZXIncyBHdWlkZSB0byBDb2RlIEdlbmVyYXRpb24gZm9yIFJFU1QgQVBJcyAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9vaykgYnkgW1dpbGxpYW0gQ2hlbmddKGh0dHBzOi8vdHdpdHRlci5jb20vd2luZzMyOCkKLSAyMDE5LTA1LTAxIC0gW0Rlc2lnbiBhbmQgZ2VuZXJhdGUgYSBSRVNUIEFQSSBmcm9tIFN3YWdnZXIgLyBPcGVuQVBJIGluIEphdmEsIFB5dGhvbiwgQyMgYW5kIG1vcmVdKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vZGVzaWduLWFuZC1nZW5lcmF0ZS1hcGktY29kZS1mcm9tLW9wZW5hcGkpIGJ5IFtTaW1wbHkgSG93XShodHRwczovL3NpbXBseS1ob3cuY29tLykKLSAyMDE5LTA1LTE3IC0gW0dlbmVyYXRlIFNwcmluZyBCb290IFJFU1QgQVBJIHVzaW5nIFN3YWdnZXIvT3BlbkFQSV0oaHR0cHM6Ly93d3cuNDdub3J0aGxhYnMuY29tL2tub3dsZWRnZS1iYXNlL2dlbmVyYXRlLXNwcmluZy1ib290LXJlc3QtYXBpLXVzaW5nLXN3YWdnZXItb3BlbmFwaS8pIGJ5IFtBbnRvbmllIFphZmlyb3ZdKGh0dHBzOi8vd3d3LjQ3bm9ydGhsYWJzLmNvbS9hdXRob3IvYW50b25pZS16YWZpcm92LykKLSAyMDE5LTA1LTIyIC0gW1JFU1QgQVBJc+S7o+eggeeUn+aIkOaMh+WNlyhPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2diKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW1hpbiBNZW5nXShodHRwczovL2dpdGh1Yi5jb20veG1lbmcxKQotIDIwMTktMDUtMjQgLSBbUkVTVCBBUEkg5Luj56K855Sf5oiQ5oyH5Y2XIChPcGVuQVBJIEdlbmVyYXRvcildKGh0dHBzOi8vZ3VtLmNvL29wZW5hcGlfZ2VuZXJhdG9yX2Vib29rX2JpZzUpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpCi0gMjAxOS0wNi0yNCAtIFtLdWJlcm5ldGVzIENsaWVudHMgYW5kIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2t1YmVybmV0ZXMtY2xpZW50cy1hbmQtb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL3R3aXR0ZXIuY29tL3dpbmczMjgpIGF0IFtLdWJlcm5ldGVzIENvbnRyaWJ1dG9yIFN1bW1pdHMgU2hhbmdoYWkgMjAxOV0oaHR0cHM6Ly93d3cubGZhc2lhbGxjLmNvbS9ldmVudHMvY29udHJpYnV0b3JzLXN1bW1pdC1jaGluYS0yMDE5LykKLSAyMDE5LTA2LTI4IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLmVjbGlwc2Uub3JnL2NvbnRlbnQvY29kZXdpbmQtb3BlbmFwaS10b29scykgaW4gW0VjbGlwc2UgTWFya2V0cGxhY2VdKGh0dHBzOi8vbWFya2V0cGxhY2UuZWNsaXBzZS5vcmcvKSBieSBJQk0KLSAyMDE5LTA2LTI5IFtDb2Rld2luZCBPcGVuQVBJIFRvb2xzXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vaXRlbXM/aXRlbU5hbWU9SUJNLmNvZGV3aW5kLW9wZW5hcGktdG9vbHMpIGluIFtWaXN1YWwgU3R1ZGlvIE1hcmtldHBsYWNlXShodHRwczovL21hcmtldHBsYWNlLnZpc3VhbHN0dWRpby5jb20vKSBieSBJQk0KLSAyMDE5LTA3LTA0IC0gW1JFU1QgQVBJIOOBruOBn+OCgeOBruOCs+ODvOODiOOCmeeUn+aIkOWFpemWgCAoT3BlbkFQSSBHZW5lcmF0b3IpXShodHRwczovL2d1bS5jby9vcGVuYXBpX2dlbmVyYXRvcl9lYm9va19iaWc1KSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCksIFvlkoznlLDmi5PmnJddKGh0dHBzOi8vZ2l0aHViLmNvbS90YXhwb24pCi0gMjAxOS0wNy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgavjgrPjg7Pjg4jjg6rjg5Pjg6Xjg7zjg4jjgZfjgZ/jgonnpL7lkI3jgYzovInjgaPjgZ/oqbHjgIIoQ0FNKSAtIENBTSBURUNIIEJMT0ddKGh0dHBzOi8vdGVjaC5jYW0taW5jLmNvLmpwL2VudHJ5LzIwMTkvMDcvMDgvMTQwMDAwKSBieSBbQ0FNLCBJbmMuXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwLykKLSAyMDE5LTA3LTE0IC0gW09wZW5BUEkgR2VuZXJhdG9y44GnUHl0aG9u44Gu44Kv44Op44Kk44Ki44Oz44OI44Op44Kk44OW44Op44Oq44KS5L2c5oiQ44GX44GfXShodHRwczovL3FpaXRhLmNvbS95dWppMzhrd210L2l0ZW1zL2RmYjkyOTMxNmExMzM1YTE2MWMwKSBieSBbeXVqaTM4a3dtdF0oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdCkKLSAyMDE5LTA3LTE5IC0gW0RldmVsb3BlciBFeHBlcmllbmNlIChEWCkgZm9yIE9wZW4tU291cmNlIFByb2plY3RzOiBIb3cgdG8gRW5nYWdlIERldmVsb3BlcnMgYW5kIEJ1aWxkIGEgR3Jvd2luZyBEZXZlbG9wZXIgQ29tbXVuaXR5XShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L2RldmVsb3Blci1leHBlcmllbmNlLWR4LWZvci1vcGVuLXNvdXJjZS1wcm9qZWN0cy1lbmdsaXNoLWphcGFuZXNlKSBieSBbV2lsbGlhbSBDaGVuZ10oaHR0cHM6Ly90d2l0dGVyLmNvbS93aW5nMzI4KSwgW+S4remHjuaageS6ul0oaHR0cHM6Ly9naXRodWIuY29tL2Fja2ludG9zaCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiAyMDE5XShodHRwczovL2V2ZW50cy5saW51eGZvdW5kYXRpb24ub3JnL2V2ZW50cy9vcGVuLXNvdXJjZS1zdW1taXQtamFwYW4tMjAxOS8pCi0gMjAxOS0wOC0xNCAtIFtPdXIgT3BlbkFQSSBqb3VybmV5IHdpdGggU3RhbmRhcmRpemluZyBTREtzXShodHRwczovL2JpdG1vdmluLmNvbS9vdXItb3BlbmFwaS1qb3VybmV5LXdpdGgtc3RhbmRhcmRpemluZy1zZGtzLykgYnkgW1NlYmFzdGlhbiBCdXJnc3RhbGxlcl0oaHR0cHM6Ly9iaXRtb3Zpbi5jb20vYXV0aG9yL3NidXJnc3RhbGxlci8pIGF0IFtCaXRtb3Zpbl0oaHR0cHM6Ly93d3cuYml0bW92aW4uY29tKQotIDIwMTktMDgtMTUgLSBbQVBJ44Gu44Kz44O844OJ44KS6Ieq5YuV55Sf5oiQ44GV44Gb44Gf44GE44Gg44GR44Gq44KJZ1JQQ+OBp+OBquOBj+OBpuOCguOCiOOBj+OBquOBhD9dKGh0dHBzOi8vd3d3Lm0zdGVjaC5ibG9nL2VudHJ5LzIwMTkvMDgvMTUvMTEwMDAwKSBieSBbTTMsIEluYy5dKGh0dHBzOi8vY29ycG9yYXRlLm0zLmNvbS8pCi0gMjAxOS0wOC0yMiAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgavjgYrjgZHjgotXZWIgQVBJ44K544Kt44O844Oe44Gu566h55CG4pSAIEdyYXBoUUzjgIFnUlBD44CBT3BlbkFQSeOBrueJueW+tOOBqOS9v+OBhOOBqeOBk+OCjV0oaHR0cHM6Ly9lbXBsb3ltZW50LmVuLWphcGFuLmNvbS9lbmdpbmVlcmh1Yi9lbnRyeS8yMDE5LzA4LzIyLzEwMzAwMCkgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDgtMjQgLSBbU3dhZ2dlcuODieOCreODpeODoeODs+ODiOOBi+OCiU9wZW5BUEkgR2VuZXJhdG9y44KS5L2/44Gj44Gm44Oi44OD44Kv44K144O844OQ44O85L2c5oiQXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyL2l0ZW1zLzQ4NDVlNGM3MTVkMDQ1ODdjMTA0KSBieSBb5Z2C5pys5q2j576pXShodHRwczovL3FpaXRhLmNvbS9tYXNheW9zaGkwMjIyKQotIDIwMTktMDgtMjkgLSBbT3BlbkFQSeWIneaOol0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xNDk1OTg2KSBieSBbcGVha3hpZV0oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvdXNlci8xMTEzMTUyKSBhdCBb6IW+6K6v5LqR56S+5Yy6XShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3BlcikKLSAyMDE5LTA4LTI5IC0gW+WFqOmdoui/m+WMlu+8mkt1YmVybmV0ZXMgQ1JEIDEuMTYgR0HliY3nnrtdKGh0dHBzOi8vd3d3LnNlcnZpY2VtZXNoZXIuY29tL2Jsb2cva3ViZXJuZXRlcy0xLjE2LWNyZC1nYS1wcmV2aWV3LykgYnkgW01pbiBLaW1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dWU5OTQ0ODgyKSBhdCBbU2VydmljZU1lc2hlciBCbG9nXShodHRwczovL3d3dy5zZXJ2aWNlbWVzaGVyLmNvbS9ibG9nLykKLSAyMDE5LTA5LTAxIC0gW0NyZWF0aW5nIGEgUEhQLVNsaW0gc2VydmVyIHVzaW5nIE9wZW5BUEkgKFlvdXR1YmUgdmlkZW8pXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTVjSnRiSXJzWWtnKSBieSBbRGFuaWVsIFBlcnNzb25dKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNuRy1UTjIzbHN3TzZRYnZXaE10eHBBKQotIDIwMTktMDktMDYgLSBbVmVydC54IGFuZCBPcGVuQVBJXShodHRwczovL3dpc3NlbC5uZXQvYmxvZy8yMDE5LzA5L3ZlcnR4LWFuZC1vcGVuYXBpLmh0bWwpIGJ5IFtTdGVwaGFuIEggV2lzc2VsXShodHRwczovL3R3aXR0ZXIuY29tL25vdGVzc2Vuc2VpKSBhdCBbd2lzc2VsLm5ldCBibG9nXShodHRwczovL3dpc3NlbC5uZXQpCi0gMjAxOS0wOS0wOSAtIFtDbG91ZC1uYXRpdmUgZGV2ZWxvcG1lbnQgLSBDcmVhdGluZyBSRVNUZnVsIG1pY3Jvc2VydmljZXNdKGh0dHBzOi8vY2xvdWQuaWJtLmNvbS9kb2NzL2Nsb3VkLW5hdGl2ZT90b3BpYz1jbG91ZC1uYXRpdmUtcmVzdC1hcGkpIGluIFtJQk0gQ2xvdWQgRG9jc10oaHR0cHM6Ly9jbG91ZC5pYm0uY29tL2RvY3MpCi0gMjAxOS0wOS0xNCAtIFtHZW5lcmF0aW5nIGFuZCBDb25maWd1cmluZyBhIE1hc3RlcmNhcmQgQVBJIENsaWVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubWFzdGVyY2FyZC5jb20vcGxhdGZvcm0vZG9jdW1lbnRhdGlvbi9nZW5lcmF0aW5nLWFuZC1jb25maWd1cmluZy1hLW1hc3RlcmNhcmQtYXBpLWNsaWVudC8pIGF0IFtNYXN0ZXJjYXJkIERldmVsb3BlcnMgUGxhdGZvcm1dKGh0dHBzOi8vZGV2ZWxvcGVyLm1hc3RlcmNhcmQuY29tL3BsYXRmb3JtL2RvY3VtZW50YXRpb24vKQotIDIwMTktMDktMTUgLSBbT3BlbkFQSShTd2FnZ2VyKeWwjuWFpeS4i+iqv+OBuV0oaHR0cHM6Ly9xaWl0YS5jb20vU2hvaWNoaUt1cmFva2EvaXRlbXMvZjFmN2EzYzIzNzZmN2NkOWM1NmEpIGJ5IFtTaG9pY2hpIEt1cmFva2FdKGh0dHBzOi8vcWlpdGEuY29tL1Nob2ljaGlLdXJhb2thKQotIDIwMTktMDktMTcgLSBbVHV0b3JpYWw6IERvY3VtZW50aW5nIGh0dHA0ayBBUElzIHdpdGggT3BlbkFwaTNdKGh0dHBzOi8vd3d3Lmh0dHA0ay5vcmcvdHV0b3JpYWxzL2RvY3VtZW50aW5nX2FwaXNfd2l0aF9vcGVuYXBpLykgYnkgW2h0dHA0a10oaHR0cHM6Ly93d3cuaHR0cDRrLm9yZy8pCi0gMjAxOS0wOS0yMiAtIFtPcGVuQVBJIDPjgpLlrozlhajjgavnkIbop6PjgafjgY3jgovmnKxdKGh0dHBzOi8vYm9vdGgucG0vamEvaXRlbXMvMTU3MTkwMikgYnkgW0BvdGE0MnldKGh0dHBzOi8vdHdpdHRlci5jb20vb3RhNDJ5KQotIDIwMTktMDktMjIgLSBbUkVTVGZ1bCBBUElzOiBUdXRvcmlhbCBvZiBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AYW1pcm0ubGF2YXNhbmkvcmVzdGZ1bC1hcGlzLXR1dG9yaWFsLW9mLW9wZW5hcGktc3BlY2lmaWNhdGlvbi1lZWFkYTBlMzkwMWQpIGJ5IFtBbWlyIExhdmFzYW5pXShodHRwczovL21lZGl1bS5jb20vQGFtaXJtLmxhdmFzYW5pKQotIDIwMTktMDktMjIgLSBbUmVkZWZpbmluZyBTREtzIGFzIHNvZnR3YXJlIGRpdmVyc2l0eSBraXRzXShodHRwczovL2RldnJlbC5uZXQvZGV2LXJlbC9yZWRlZmluaW5nLXNka3MtYXMtc29mdHdhcmUtZGl2ZXJzaXR5LWtpdHMpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pIGF0IFtEZXZSZWxDb24gU2FuIEZyYW5jaXNjbyAyMDE5XShodHRwczovL3NmMjAxOS5kZXZyZWwubmV0LykKLSAyMDE5LTA5LTIzIC0gW3N3YWdnZXLjgYvjgolPcGVuQXBpIEdlbmVyYXRvcuOBp1NwcmluZ+OBruOCs+ODvOODieOCkuiHquWLleeUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vbGl0dGxlRmVldC9pdGVtcy80OTJkZjJhZDY4YTA3OTlhNWU1ZSkgYnkgW0BsaXR0bGVGZWV0XShodHRwczovL3FpaXRhLmNvbS9saXR0bGVGZWV0KSBhdCBbUWlpdGFdKGh0dHBzOi8vcWlpdGEuY29tLykKLSAyMDE5LTA5LTI0IC0gW0VpbmUgU3R1bmRlIHdhcyBtaXQgQXBpIEZpcnN0IV0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvSmFuV2VpbnNjaGVua2VyL2VpbmUtc3R1bmRlLXdhcy1taXQtYXBpLWZpcnN0KSBieSBbQGphbndlaW5zY2hlbmtlcl0oaHR0cHM6Ly90d2l0dGVyLmNvbS9qYW53ZWluc2NoZW5rZXIpIGF0IFtKYXZhIEZvcnVtIE5vcmRdKGh0dHBzOi8vamF2YWZvcnVtbm9yZC5kZS8pCi0gMjAxOS0xMC0wOSAtIFtvcGVuYXBpLWdlbmVyYXRvciDjgafnlJ/miJDjgZfjgZ8gR28g44Kv44Op44Kk44Ki44Oz44OI44GnIEJlYXJlciDoqo3oqLzjgpLjgZnjgotdKGh0dHBzOi8vYXV0b3BwLXRlY2guaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAxOS8xMC8wOS8yMjIwMzkpIGJ5IFtBa2lyYSBUYW5pbXVyYV0oaHR0cHM6Ly9naXRodWIuY29tL2F1dG9wcCkKLSAyMDE5LTEwLTEwIC0gW0F1dG9tYXRpYyBHZW5lcmF0aW9uIG9mIFJFU1QgQ2xpZW50c10oaHR0cHM6Ly93d3cubWVldHVwLmNvbS9mci1GUi9Dcml0ZW8tTGFicy1UZWNoLVRhbGtzL2V2ZW50cy8yNjQ3NzU3NjgvKSBieSBUaG9tYXMgUGV5cmFyZCwgU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyIGF0IENyaXRlbyBpbiBbRnVsbC1TdGFjayBUZWNoIFRhbGtzIChNZWV0dXApXShodHRwczovL3d3dy5tZWV0dXAuY29tL2ZyLUZSL0NyaXRlby1MYWJzLVRlY2gtVGFsa3MvZXZlbnRzLzI2NDc3NTc2OC8pCi0gMjAxOS0xMC0xMiAtIFtPcGVuQXBp6Ieq5Yqo55Sf5oiQY2xpZW50XShodHRwczovL2Jsb2cuY3Nkbi5uZXQvd3hpZDI3OTgyMjYvYXJ0aWNsZS9kZXRhaWxzLzEwMjUyNzQ2NykgYnkgW+mDkeazvea0sl0oaHR0cHM6Ly9tZS5jc2RuLm5ldC93eGlkMjc5ODIyNikKLSAyMDE5LTEwLTE2IC0gW0hvdyB0byBzaGlwIEFQSXMgZmFzdGVyP10oaHR0cHM6Ly9tZWRpdW0uY29tL0BhY2NvdW50c183NjIyNC9ob3ctdG8tc2hpcC1hcGlzLWZhc3Rlci1jYWJlZjJmODE5ZTQpIGJ5IFtTaW1vbiBHdWlsbGlhbXMgQCBQb25pQ29kZV0oaHR0cHM6Ly9wb25pY29kZS5kZXYpCi0gMjAxOS0xMC0yMiAtIFtPcGVuQVBJICsgU3ByaW5nIEJvb3QoS290bGluKeOBp+ODleOCoeOCpOODq+ODgOOCpuODs+ODreODvOODiUFQSeOCkuS9nOaIkOOBmeOCi10oaHR0cHM6Ly9xaWl0YS5jb20vYm9yb25uZ28vaXRlbXMvNGI3OGI5MjUyNjIwOWRhZWFlZTkpIGJ5IFtZdWtpIEZ1cnVrYXdhXShodHRwczovL3R3aXR0ZXIuY29tL3l1a2lfZnVydWthd2E1KQotIDIwMTktMTAtMjQgLSBbTWljcm9wcm9maWxlIE9wZW5BUEkgLSBDb2RlIEZpcnN0IG9yIERlc2lnbiBGaXJzdD9dKGh0dHBzOi8vZ2l0aHViLmNvbS9wZS1zdC9hcGlkb2NzL2Jsb2IvbWFzdGVyL01pY3JvUHJvZmlsZS1PcGVuQVBJLWFsbC1zbGlkZXMucGRmKSBieSBbUGV0ZXIgW3DJm8qDyZldIFN0ZWluZXJdKGh0dHBzOi8vdHdpdHRlci5jb20vcGVzY2hlKSBhdCBbZWNsaXBzZWNvbiBFdXJvcGUgMjAxOV0oaHR0cHM6Ly93d3cuZWNsaXBzZWNvbi5vcmcvZXVyb3BlMjAxOS9zZXNzaW9ucy9taWNyb3Byb2ZpbGUtb3BlbmFwaS1jb2RlLWZpcnN0LW9yLWRlc2lnbi1maXJzdCkKLSAyMDE5LTExLTA2IC0gW0dlbmVyYXRpbmcgQVBJIGNsaWVudHMgYmFzZWQgb24gT3BlbkFQSSB2MyBzcGVjaWZpY2F0aW9uc10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbS9ibG9nL2dlbmVyYXRpbmctYXBpLWNsaWVudHMtYmFzZWQtb24tb3BlbmFwaS12My1zcGVjaWZpY2F0aW9ucykgYnkgW0RvbWluaWsgSmFzdHJ6xJlic2tpIEAgOThlbGVtZW50c10oaHR0cHM6Ly85OGVsZW1lbnRzLmNvbSkKLSAyMDE5LTExLTA2IC0gW09wZW5BUEnjgpLliKnnlKjjgZfjgaboh6rliY3jga5BUEnjgrXjg7zjg5Djg7woU2luYXRyYSnjgpLnp7vmpI3jgZfjgZ/mmYLjga7jg6Hjg6JdKGh0dHBzOi8vcWlpdGEuY29tL1lhc3VoaXJvQUJFL2l0ZW1zL2M3MzkyMGVhYjJkOWQ2ZTk3ZmQ5KSBieSBbWWFzdWhpcm8gQUJFXShodHRwczovL3R3aXR0ZXIuY29tL1lhc3VoaXJvQUJFKQotIDIwMTktMTEtMDcgLSBbQVBJIEZpcnN0IGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSAtIFlvdSBzaG91bGQgeW91IHByYWN0aXNlIGl0ICE/XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUY5aUYzYTFaOFk4KSBieSBbTmljayBWYW4gSG9vZl0oaHR0cHM6Ly93d3cubmlja3Zhbmhvb2YuY29tLykgYXQgW0Rldm94eCBCZWxnaXVtIDIwMTldKGh0dHBzOi8vZGV2b3h4LmJlLykKLSAyMDE5LTExLTA4IC0gW0pIaXBzdGVyIGJleW9uZCBDUlVEIC0gQVBJLUZpcnN0IGZvciBFbnRlcnByaXNlcyBieSBFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9bTI4SkZvdktRMjApIGJ5IFtFbnJpY28gQ29zdGFuemldKGh0dHBzOi8vdHdpdHRlci5jb20vZW5yaWNvY29zdGFuemkpIGF0IFtKSGlwc3RlciBDb25mIDIwMTkgaW4gUGFyaXNdKGh0dHBzOi8vamhpcHN0ZXItY29uZi5naXRodWIuaW8vKQotIDIwMTktMTEtMTEgLSBbVHlwZVNjcmlwdCBSRVNUIEFQSeOCr+ODqeOCpOOCouODs+ODiF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkL2l0ZW1zLzdiNzRmN2QzYzQzNTQ1ZGFkZDJiKSBieSBbQHVuaHVycmllZF0oaHR0cHM6Ly9xaWl0YS5jb20vdW5odXJyaWVkKQotIDIwMTktMTEtMTEgLSBbT25lIFNwZWMgdG8gUnVsZSB0aGVtIGFsbCAtIE9wZW5BUEkgaW4gQWN0aW9uXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PU1NYXlfbmh0OGVjKSBieSBbQW5kcmVhcyBMaXR0XShodHRwczovL2dpdGh1Yi5jb20vbGl0dGxkcikgYXQgW2NvZGUudGFsa3MgMjAxOV0oaHR0cHM6Ly93d3cuY29kZXRhbGtzLmNvbS8pCi0gMjAxOS0xMS0xMyAtIFtPcGVuQVBJIDMuMCBFZGl0b3IgQW5kIEdlbmVyYXRvciBXaXRoIEEgU3ByaW5nIEJvb3QgRXhhbXBsZV0oaHR0cHM6Ly9zaW1wbHktaG93LmNvbS9kZXNpZ24tYW5kLWdlbmVyYXRlLWFwaS1jb2RlLWZyb20tb3BlbmFwaSkgYXQgW1NpbXBseSBIb3ddKGh0dHBzOi8vc2ltcGx5LWhvdy5jb20vKQotIDIwMTktMTEtMTcgLSBbT3BlbkFQSSBHZW5lcmF0b3IgWW91VHViZSBwbGF5bGlzdF0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vcGxheWxpc3Q/bGlzdD1QTHRKeUhWTWR6ZkY2ZkJrT1VWNVZEVkVyUDIzQ0dnSEl5KSBhdCBbWW91VHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20pCi0gMjAxOS0xMS0yMCAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9ub3RpLnN0L2xvcm5hamFuZS9IdkRIN1UvaW50cm9kdWN0aW9uLXRvLW9wZW5hcGkpIGJ5IFtMb3JuYSBNaXRjaGVsbF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9sb3JuYWphbmUpIGF0IFtHT1RPIENvcGVuaGFnZW4gMjAxOV0oaHR0cHM6Ly9nb3RvY3BoLmNvbS8yMDE5LykKLSAyMDE5LTExLTIwIC0gW0hvdyB0byBHZW5lcmF0ZSBBbmd1bGFyIGNvZGUgZnJvbSBPcGVuQVBJIHNwZWNpZmljYXRpb25zXShodHRwczovL2RvdG5ldHRob3VnaHRzLm5ldC9ob3ctdG8tZ2VuZXJhdGUtYW5ndWxhci1jb2RlLWZyb20tb3BlbmFwaS1zcGVjaWZpY2F0aW9ucy8pIGJ5IEFudXJhagotIDIwMTktMTEtMjMgLSBbU3dhZ2dlciDjgafjga/jgarjgYQgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIDMuMCDjgavjgojjgosgQVBJIOOCteODvOODkOODvOmWi+eZul0oaHR0cHM6Ly93d3cuc2xpZGVzaGFyZS5uZXQvdGVjaGJsb2d5YWhvby9zd2FnZ2VyLW9wZW5hcGktc3BlY2lmaWNhdGlvbi0zMC1hcGkpIGJ5IFtUZXRzdXlhIE1vcmltb3RvXShodHRwczovL2dpdGh1Yi5jb20vdDJ5KSBhdCBbSkpVRyBDQ0MgMjAxOSBGYWxsXShodHRwczovL2NjYzIwMTlmYWxsLmphdmEtdXNlcnMuanAvKQotIDIwMTktMTEtMjQgLSBbQWNjZWxlcmF0ZSBGbHV0dGVyIGRldmVsb3BtZW50IHdpdGggT3BlbkFQSSBhbmQgRGFydCBjb2RlIGdlbmVyYXRpb25dKGh0dHBzOi8vbWVkaXVtLmNvbS9AaXJpbmFzb3V0aHdlbGxfMjIwL2FjY2VsZXJhdGUtZmx1dHRlci1kZXZlbG9wbWVudC13aXRoLW9wZW5hcGktYW5kLWRhcnQtY29kZS1nZW5lcmF0aW9uLTFmMTZmODMyOWE2YSkgYnkgW0lyaW5hIFNvdXRod2VsbF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BpcmluYXNvdXRod2VsbF8yMjApCi0gMjAxOS0xMS0yNSAtIFtvcGVuYXBpLWdlbmVyYXRvcuOBp+aJi+i7veOBq+OCueOCv+ODluOCteODvOODkOOBqOOCr+ODqeOCpOOCouODs+ODiOOBrueUn+aIkF0oaHR0cHM6Ly9xaWl0YS5jb20vcG9jaG9wb2NobzEzL2l0ZW1zLzhkYjY2MmUxOTM0ZmIyYjQwOGI4KSBieSBbQHBvY2hvcG9jaG8xM10oaHR0cHM6Ly90d2l0dGVyLmNvbS9wb2Nob3BvY2hvMTMpCi0gMjAxOS0xMS0yNiAtIFtDb3JkYUNvbiAyMDE5IEhpZ2hsaWdodHM6IEJyYWlkIFNlcnZlciBhbmQgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIENvcmRhIENsaWVudCBBUEnigJlzXShodHRwczovL2Jsb2cuYjlsYWIuY29tL2NvcmRhY29uLTIwMTktaGlnaGxpZ2h0cy1icmFpZC1zZXJ2ZXItYW5kLW9wZW5hcGktZ2VuZXJhdG9yLWZvci1jb3JkYS1mbG93cy1hcGktcy1kMjQxNzljY2IyN2MpIGJ5IFtBZGVsIFJ1c3R1bV0oaHR0cHM6Ly9ibG9nLmI5bGFiLmNvbS9AYWRlbHJlc3RvbSkgYXQgW0I5bGFiXShodHRwczovL2Jsb2cuYjlsYWIuY29tLykKLSAyMDE5LTEyLTAzIC0gW0EgUm9hZCB0byBMZXNzIENvZGluZzogQXV0by1HZW5lcmF0ZSBBUElMaWJyYXJ5XShodHRwczovL3d3dy5jb3JkYS5uZXQvYmxvZy9hLXJvYWQtdG8tbGVzcy1jb2RpbmctYXV0by1nZW5lcmF0ZS1hcGlsaWJyYXJ5LykgYXQgW0NvcmRhIEJsb2ddKGh0dHBzOi8vd3d3LmNvcmRhLm5ldC9ibG9nLykKLSAyMDE5LTEyLTA0IC0gW0FuZ3VsYXLvvItOZXN0SlPvvItPcGVuQVBJ77yIU3dhZ2dlcu+8ieOBp+ODnuOCpOOCr+ODreOCteODvOODk+OCueOCkuimlumHjuOBq+WFpeOCjOOBn+eSsOWig+OCkuiAg+OBiOOCi10oaHR0cHM6Ly9xaWl0YS5jb20vdGVyYWN5NTUvaXRlbXMvMDMyN2M3YTE3MGVjNzcyOTcwYzYpIGJ5IFvjgabjgonjgZfjg7xdKGh0dHBzOi8vdHdpdHRlci5jb20vdGVyYWN5NTUpCi0gMjAxOS0xMi0wNSAtIFtDb2RlIGdlbmVyYXRpb24gb24gdGhlIEphdmEgVk1dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcy9jb2RlLWdlbmVyYXRpb24tb24tdGhlLWphdmEtdm0tMjAxOS0xMi0wNSkgYnkgW1NlYW4gU3VsbGl2YW5dKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3N1bGxpcykKLSAyMDE5LTEyLTE3IC0gW09wZW5BUEkgR2VuZXJhdG9yIOOBpyBPQXV0aDIg44Ki44Kv44K744K544OI44O844Kv44Oz55m66KGM44Gu44Kz44O844OJ44G+44Gn55Sf5oiQ44GX44Gm44G/44KLXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvMjAxOS8xMi8xNy9vcGVuYXBpLWdlbmVyYXRvci1vYXV0aDItYWNjZXNzdG9rZW4vKSBieSBbVEVDSFNDT1JFXShodHRwczovL3d3dy50ZWNoc2NvcmUuY29tL2Jsb2cvKQotIDIwMTktMTItMjMgLSBbVXNlIEFkYSBmb3IgWW91ciBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vd3d3LmVsZWN0cm9uaWNkZXNpZ24uY29tL3RlY2hub2xvZ2llcy9lbWJlZGRlZC1yZXZvbHV0aW9uL2FydGljbGUvMjExMTkxNzcvdXNlLWFkYS1mb3IteW91ci13ZWItZGV2ZWxvcG1lbnQpIGJ5IFtTdGVwaGFuZSBDYXJyZXpdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGNhcnJleikKLSAyMDE5LTEyLTIzIC0gW09wZW5BUEnjga7jgrnjgq3jg7zjg57jgpLliIblibLjg7vmp4vpgKDljJbjgZfjgabjgYTjgY/mlrnms5VdKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL2FydGljbGVzL3N0cnVjdHVyZWQtb3BlbmFwaS1zY2hlbWEpIGJ5IFvlsI/po6/loZrpgZTkuZ9dKGh0dHBzOi8vZ2l0aHViLmNvbS90Mmg1KSBhdCBbR2lGVCwgSW5jXShodHRwczovL2dpZnQtdGVjaC5jby5qcC8pCi0gMjAyMC0wMS0xNyAtIFtPcGVuQVBJIGRlbW8gZm9yIFB1bHAgMy4wIEdBXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PW1GQlAtTTBaUGZ3JnQ9MTc4cykgYnkgW1B1bHBdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2NoYW5uZWwvVUNJNDNGZnM0VlBEdjdhd1h2dkJKZlJRKSBhdCBbWW91dHViZV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vKQotIDIwMjAtMDEtMTkgLSBbV2h5IGRvY3VtZW50IGEgUkVTVCBBUEkgYXMgY29kZT9dKGh0dHBzOi8vZGV2LnRvL3JvbGZzdHJlZWZrZXJrL3doeS1kb2N1bWVudC1hLXJlc3QtYXBpLWFzLWNvZGUtNWU3cCkgYnkgW1JvbGYgU3RyZWVma2Vya10oaHR0cHM6Ly9naXRodWIuY29tL3Jwc3RyZWVmKSBhdCBbREVWIENvbW11bml0eV0oaHR0cHM6Ly9kZXYudG8pCi0gMjAyMC0wMS0yOCAtIFtHZXQgWW91ciBTZXJ2ZXJsZXNzIFN3YWdnZXIgQmFjayB3aXRoIE9wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlci9nZXQteW91ci1zZXJ2ZXJsZXNzLXN3YWdnZXItYmFjay13aXRoLW9wZW5hcGktNDhnYykgYnkgW01hdHQgVHlsZXJdKGh0dHBzOi8vZGV2LnRvL21hdHR0eWxlcikKLSAyMDIwLTAxLTMwIC0gW09wZW5BUEkgR2VuZXJhdG9y44G444Gu44Kz44Oz44OI44Oq44OT44Ol44O844OIXShodHRwczovL3d3dy55dXRha2EwbS53b3JrL2VudHJ5LzIwMjAvMDEvMzAvMTYzOTA1KSBieSBbeXV0YWthMG1dKGh0dHBzOi8vZ2l0aHViLmNvbS95dXRha2EwbSkKLSAyMDIwLTAyLTAxIC0gW1VzaW5nIE9wZW5BUEkgdG8gTWF4aW1pc2UgWW91ciBQdWxwIDMgRXhwZXJpZW5jZV0oaHR0cHM6Ly9mb3NkZW0ub3JnLzIwMjAvc2NoZWR1bGUvZXZlbnQvb3BlbmFwaS8pIGJ5IFtEZW5uaXMgS2xpYmFuXShodHRwczovL2dpdGh1Yi5jb20vZGtsaWJhbi8pIGF0IFtGT1NERU1dKGh0dHBzOi8vZm9zZGVtLm9yZy8pCi0gMjAyMC0wMi0wNyAtIFtXaHkgeW91IHNob3VsZCB1c2UgT3BlbkFQSSBmb3IgeW91ciBBUEkgZGVzaWduXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXpoYjd2VUFwTFc4JnQ9OTI3cykgYnkgW05pY2sgVmFuIEhvb2ZdKGh0dHBzOi8vYXBpY29uZmVyZW5jZS5uZXQvc3BlYWtlci9uaWNrLXZhbi1ob29mLykgYXQgW0FQSSBDb25mZXJlbmNlXShodHRwczovL2FwaWNvbmZlcmVuY2UubmV0LykKLSAyMDIwLTAyLTE3IC0gW1J1YnluZXRlczogdXNpbmcgT3BlbkFQSSB0byB2YWxpZGF0ZSBLdWJlcm5ldGVzIGNvbmZpZ3NdKGh0dHBzOi8vd3d3LmJyaWdodGJveC5jb20vYmxvZy8yMDIwLzAyLzE3L3VzaW5nLW9wZW5hcGktdG8tdmFsaWRhdGUta3ViZXJuZXRlcy1jb25maWdzLykgYnkgTmVpbCBXaWxzb24gYXQgW0JyaWdodGJveF0oaHR0cHM6Ly93d3cuYnJpZ2h0Ym94LmNvbS8pCi0gMjAyMC0wMi0yMCAtIFtCdWlsZGluZyBTREtzIGZvciB0aGUgZnV0dXJlXShodHRwczovL2RldmJsb2cueGVyby5jb20vYnVpbGRpbmctc2Rrcy1mb3ItdGhlLWZ1dHVyZS1iNzlmZjcyNmRmZDYpIGJ5IFtTaWQgTWFlc3RyZSAoWGVybyldKGh0dHBzOi8vdHdpdHRlci5jb20vc2lkbmV5YWxsZW4pCi0gMjAyMC0wMi0yNyAtIFtOdXh05Yip55So44OX44Ot44OA44Kv44OI44GnSUUxMeOBqOS7suiJr+OBj+OBmeOCi+OBn+OCgeOBrkUyRV0oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvZW50cnkvZTJlLWllMTEpIGF0IFtNZWRwZWVyLmNvLmpwIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoLm1lZHBlZXIuY28uanAvKQotIDIwMjAtMDItMjkgLSBbUHJvdmlkaW5nIFN1cHBvcnQgdG8gSW9UIERldmljZXMgRGVwbG95ZWQgaW4gRGlzY29ubmVjdGVkIFJ1cmFsIEVudmlyb25tZW50IChDb25mZXJlbmNlIHBhcGVyKV0oaHR0cHM6Ly9saW5rLnNwcmluZ2VyLmNvbS9jaGFwdGVyLzEwLjEwMDcvOTc4LTMtMDMwLTQxNDk0LThfMTQpIGJ5IFNlcmdpbyBMYXNvLCBEYW5pZWwgRmxvcmVzLU1hcnTDrW4sIEp1YW4gTHVpcyBIZXJyZXJhQ2FybG9zLCBDYW5hbEp1YW4gTWFudWVsLCBNdXJpbGxvSmF2aWVyIEJlcnJvY2FsCi0gMjAyMC0wMy0wMiAtIFtIb3cgVG8gR2VuZXJhdGUgQW5ndWxhciAmIFNwcmluZyBDb2RlIEZyb20gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy5tb2trYXBwcy5kZS9ibG9nL2hvdy10by1nZW5lcmF0ZS1hbmd1bGFyLWFuZC1zcHJpbmctY29kZS1mcm9tLW9wZW4tYXBpLXNwZWNpZmljYXRpb24vKSBieSBbTWljaGFlbCBIb2ZmbWFubl0oaHR0cHM6Ly93d3cubW9ra2FwcHMuZGUvKQotIDIwMjAtMDMtMDIgLSBbT3BlbkFQSSBHZW5lcmF0b3IgKyBUeXBlU2NyaXB0IOOBp+Wni+OCgeOCi+iHquWLleeUn+aIkOOBruWei+OBq+WuiOOCieOCjOOBn+ixiuOBi+OBquOCr+ODqeOCpOOCouODs+ODiOeUn+a0u10oaHR0cHM6Ly9naWZ0LXRlY2guY28uanAvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItdHlwZXNjcmlwdCkgYnkgW+S6lOeZvuiUtSDnm7TmqLldKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwL21lbWJlcnMvbmFva2lpb3JvaSkgYXQgW0dpRlTmoKrlvI/kvJrnpL5dKGh0dHBzOi8vZ2lmdC10ZWNoLmNvLmpwLykKLSAyMDIwLTAzLTEwIC0gW09wZW5BUEkgR2VuZXJhdG9yIE1lZXR1cCAjMV0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vYWtpaGl0b19uYWthbm8vb3BlbmFwaS1nZW5lcmF0b3ItbWVldHVwLW51bWJlci0xKSBieSBb5Lit6YeO5pqB5Lq6XShodHRwczovL2dpdGh1Yi5jb20vYWNraW50b3NoKSBhdCBbT3BlbkFQSSBHZW5lcmF0b3IgTWVldHVwICMxXShodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLW1lZXR1cC5jb25ucGFzcy5jb20vZXZlbnQvMTY4MTg3LykKLSAyMDIwLTAzLTE1IC0gW0xvYWQgVGVzdGluZyBZb3VyIEFQSSB3aXRoIFN3YWdnZXIvT3BlbkFQSSBhbmQgazZdKGh0dHBzOi8vazYuaW8vYmxvZy9sb2FkLXRlc3RpbmcteW91ci1hcGktd2l0aC1zd2FnZ2VyLW9wZW5hcGktYW5kLWs2KQotIDIwMjAtMDQtMTMgLSBb5L+655qE44CQT0FT44CR44Go44Gu5ZCR44GN5ZCI44GE5pa5ICjniIbpgJ/jgadPcGVuQVBJ44Go5Y+L6YGU44Gr44Gq44KN44GGKV0oaHR0cHM6Ly90ZWNoLWJsb2cub3B0aW0uY28uanAvZW50cnkvMjAyMC8wNC8xMy8xMDAwMDApIGluIFtPUFRpbSBCbG9nXShodHRwczovL3RlY2gtYmxvZy5vcHRpbS5jby5qcC8pCi0gMjAyMC0wNC0yMiAtIFtJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vaW50cm9kdWN0aW9uLXRvLW9wZW5hcGktZ2VuZXJhdG9yLykgYnkgW0tyaXN0b3BoZXIgU2FuZG92YWxdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vYXV0aG9yL3NhbmRvdmFsZWZmZWN0LykgaW4gW05vcmRpYyBBUElzXShodHRwczovL25vcmRpY2FwaXMuY29tLykKLSAyMDIwLTA0LTI3IC0gW0hvdyB3ZSB1c2UgT3BlbiBBUEkgdjMgc3BlY2lmaWNhdGlvbiB0byBhdXRvLWdlbmVyYXRlIEFQSSBkb2N1bWVudGF0aW9uLCBjb2RlLXNuaXBwZXRzIGFuZCBjbGllbnRzXShodHRwczovL21lZGl1bS5jb20vcGRmLWdlbmVyYXRvci1hcGkvaG93LXdlLXVzZS1vcGVuLWFwaS12My1zcGVjaWZpY2F0aW9uLXRvLWF1dG8tZ2VuZXJhdGUtYXBpLWRvY3VtZW50YXRpb24tY29kZS1zbmlwcGV0cy1hbmQtY2xpZW50cy1kMTI3YTNjZWE3ODQpIGJ5IFtUYW5lbCBUw6RoZXDDtWxkXShodHRwczovL21lZGl1bS5jb20vQHRhbmVsLnRhaGVwb2xkKQotIDIwMjAtMDUtMDkgLSBbT3BlbkFQSeOBp+OBiuaJi+i7veOBq+ODouODg+OCr0FQSeOCteODvOODkOODvOOCkuWLleOBi+OBmV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZS9pdGVtcy85N2NhNmE4ZGQ0NjA1Njk1YzI1YykgYnkgW1NhY2hpZSBLYW1iYV0oaHR0cHM6Ly9xaWl0YS5jb20va2FzYV9sZSkKLSAyMDIwLTA1LTE4IC0gW1NwcmluZyBCb290IFJFU1Qgd2l0aCBPcGVuQVBJIDNdKGh0dHBzOi8vZGV2LnRvL2FsZm9uemphbmZyaXRoei9zcHJpbmctYm9vdC1yZXN0LXdpdGgtb3BlbmFwaS0zLTU5am0pIGJ5IFtBbGZvbnogSmFuIEZyaXRoel0oaHR0cHM6Ly9kZXYudG8vYWxmb256amFuZnJpdGh6KQotIDIwMjAtMDUtMTkgLSBbRGVhZCBTaW1wbGUgQVBJcyB3aXRoIE9wZW4gQVBJXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXNJYVhtUjZ4UkF3KSBieSBbQ2hyaXMgVGFua2Vyc2xleV0oaHR0cHM6Ly9naXRodWIuY29tL2RyYWdvbm1hbnRhbmspIGF0IFtOZXhtb10oaHR0cHM6Ly9kZXZlbG9wZXIubmV4bW8uY29tLykKLSAyMDIwLTA1LTIyIC0gW1R5cGVTY3JpcHQgUkVTVCBBUEkgQ2xpZW50XShodHRwczovL2Rldi50by91bmh1cnJpZWQvdHlwZXNjcmlwdC1yZXN0LWFwaS1jbGllbnQtNGluMykgYnkgWyJ1bmh1cnJpZWQiXShodHRwczovL2Rldi50by91bmh1cnJpZWQpCi0gMjAyMC0wNS0yOCAtIFvjgJDkvb/nlKggbG90aWZ5ICsgU3dhZ2dlciDlu7rnva7lj6/lhbHnlKjnmoQgTElORSBOb3RpZnkgYm9044CRIC0gI05pSmlhIEAgQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuIOesrCAjMTkg5bCP6IGaXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWFnWVZ6NmR6aDFJKSBieSBbQ2hhdGJvdCBEZXZlbG9wZXIgVGFpd2FuXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jaGFubmVsL1VDeGVZVXlaTm5IbXBYMjNZTkYtZXd2dykKLSAyMDIwLTA1LTI4IC0gW0J1aWxkaW5nIEFQSXMgd2l0aCBMYXJhdmVsIHVzaW5nIE9wZW5BUEldKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9eGV4THZRcUFoaUEpIGJ5IFtDaHJpcyBUYW5rZXJzbGV5XShodHRwczovL2dpdGh1Yi5jb20vZHJhZ29ubWFudGFuaykgYXQgW0xhcmFjb24gRVVdKGh0dHBzOi8vbGFyYWNvbi5ldS8pCi0gMjAyMC0wNi0xMiAtIFtJbnRlcm9wZXJhYmlsaXR5IGJ5IGNvbnN0cnVjdGlvbjogY29kZSBnZW5lcmF0aW9uIGZvciBBcnJvd2hlYWQgQ2xpZW50c10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkyNzQ3NDYpIGJ5IE1pY2hlbGUgQWxiYW5vLCBCcmlhbiBOaWVsc2VuIGF0IFsyMDIwIElFRUUgQ29uZmVyZW5jZSBvbiBJbmR1c3RyaWFsIEN5YmVycGh5c2ljYWwgU3lzdGVtcyAoSUNQUyldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85Mjc0NTQ0L3Byb2NlZWRpbmcpCi0gMjAyMC0wNi0yMyAtIFvmlrDopo/jgrXjg7zjg5Djg7zjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgatUeXBlU2NyaXB044KS5o6h55So44GX44Gm44G/44GfXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvMjAyMDA2MjMpIGF0IFtDQU0gVGVjaCBCbG9nXShodHRwczovL3d3dy5jYW0taW5jLmNvLmpwL25ld3MvdGVjaC1ibG9nLykKLSAyMDIwLTA2LTI5IC0gW0FydGlmYWN0IEFic3RyYWN0OiBEZXBsb3ltZW50IG9mIEFQSXMgb24gQW5kcm9pZCBNb2JpbGUgRGV2aWNlcyBhbmQgTWljcm9jb250cm9sbGVyc10oaHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2RvY3VtZW50LzkxMjczNTMpIGJ5IFtTZXJnaW8gTGFzbyA7IE1hcmlubyBMaW5hamUgOyBKb3NlIEdhcmNpYS1BbG9uc28gOyBKdWFuIE0uIE11cmlsbG8gOyBKYXZpZXIgQmVycm9jYWxdKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy9kb2N1bWVudC85MTI3MzUzL2F1dGhvcnMjYXV0aG9ycykgYXQgWzIwMjAgSUVFRSBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2Ugb24gUGVydmFzaXZlIENvbXB1dGluZyBhbmQgQ29tbXVuaWNhdGlvbnMgKFBlckNvbSldKGh0dHBzOi8vaWVlZXhwbG9yZS5pZWVlLm9yZy94cGwvY29uaG9tZS85MTI1NDQ5L3Byb2NlZWRpbmcpCi0gMjAyMC0wNy0wNyAtIFs1IEJlc3QgQVBJIERvY3VtZW50YXRpb24gVG9vbHNdKGh0dHBzOi8vYmxvZy5kcmVhbWZhY3RvcnkuY29tLzUtYmVzdC1hcGktZG9jdW1lbnRhdGlvbi10b29scy8pIGJ5IFN1c2FubmEgQm91c2UgYXQgW0RyZWFtRmFjdG9yeSBCbG9nXShodHRwczovL2Jsb2cuZHJlYW1mYWN0b3J5LmNvbS8pCi0gMjAyMC0wNy0xMiAtIFtPcGVuIEFQSSAzLjDjga7lrprnvqnjgYvjgolnb2xhbmfjga7jgrXjg7zjg5DjgrPjg7zjg4njga7jgrnjgrHjg6vjg4jjg7PjgpLkvZzmiJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Byb2Zlc3Nvci9pdGVtcy80Y2JkMDRlYzA4NGQxMzA1N2JjMikgYnkgW0Bwcm9mZXNzb3IgKFFpaXRhIEJsb2cpXShodHRwczovL3FpaXRhLmNvbS9wcm9mZXNzb3IpCi0gMjAyMC0wNy0yMCAtIFtEYXRhZG9nIEFQSSBjbGllbnQgbGlicmFyaWVzIG5vdyBhdmFpbGFibGUgZm9yIEphdmEgYW5kIEdvXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cvamF2YS1nby1saWJyYXJpZXMvKSBieSBKb3JkYW4gT2JleSBhdCBbRGF0YWRvZyBCbG9nXShodHRwczovL3d3dy5kYXRhZG9naHEuY29tL2Jsb2cpCi0gMjAyMC0wNy0yMyAtIFtHZW5lcmF0ZSBDbGllbnQgU0RLIGZvciAuTkVUIENvcmUgdXNpbmcgT3BlbiBBcGldKGh0dHBzOi8vZGV2LnRvL25vMGxhdzEvZ2VuZXJhdGUtY2xpZW50LXNkay1mb3ItbmV0LWNvcmUtdXNpbmctb3Blbi1hcGktMmRnaCkgYnkgW051bm8gUmVpc10oaHR0cHM6Ly9kZXYudG8vbm8wbGF3MSkKLSAyMDIwLTA3LTI2IC0gW0RhcnTjga5odHRwX2ludGVyY2VwdG9y44Op44Kk44OW44Op44Oq44KS5L2/44GG44Go6YWN5YiX44Gu44Kv44Ko44Oq44OR44Op44Oh44O844K/44GM5raI44GI44Gm44GX44G+44GG5Lu244Gu5b+c5oCl5Yem572uXShodHRwczovL3FpaXRhLmNvbS9neWFtb3RvL2l0ZW1zL2VlZWZmODFiNjc3MDQ4NzMxOWVkKSBieSBbQGd5YW1vdG9dKGh0dHBzOi8vcWlpdGEuY29tL2d5YW1vdG8pCi0gMjAyMC0wOC0wMSAtIFtHZW5lcmF0ZSBBbmd1bGFyIFJlYWN0aXZlRm9ybXMgZnJvbSBTd2FnZ2VyL09wZW5BUEldKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlci9nZW5lcmF0ZS1hbmd1bGFyLXJlYWN0aXZlZm9ybXMtZnJvbS1zd2FnZ2VyLW9wZW5hcGktMzVoOSkgYnkgW01hcnRpbiBNY1dob3J0ZXJdKGh0dHBzOi8vZGV2LnRvL21hcnRpbm1jd2hvcnRlcikKLSAyMDIwLTA4LTAzIC0gW0NyaWFuZG8gQmlibGlvdGVjYXMgcGFyYSBBUElzIFJFU1RmdWwgY29tIE9wZW5BUEksIFN3YWdnZXIgRWRpdG9yIGUgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZXZlcmlzQnJhc2lsL2NyaWFuZG8tYmlibGlvdGVjYXMtcGFyYS1hcGlzLXJlc3RmdWwtY29tLW9wZW5hcGktc3dhZ2dlci1lZGl0b3ItZS1vcGVuYXBpLWdlbmVyYXRvci03NTM0OWE2NDIwZmQpIGJ5IFtldmVyaXMgQnJhc2lsIChhbiBOVFQgREFUQSBDb21wYW55KV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BldmVyaXNCcmFzaWwpCi0gMjAyMC0wOC0xOSAtIFvjg57jgqTjgq/jg63jgrXjg7zjg5PjgrnjgpLpgKPmkLrjgZfjgabjgb/jgojjgYZdKGh0dHBzOi8vdGhpbmtpdC5jby5qcC9hcnRpY2xlLzE3NzA0KSBieSBb5bKh5LqVIOijleefoijjgYrjgYvjgYQg44KG44GG44KEKV0oaHR0cHM6Ly90aGlua2l0LmNvLmpwL2F1dGhvci8xNzU4OCksIFvms4kg5YudKOOBhOOBmuOBvyDjgb7jgZXjgospXShodHRwczovL3RoaW5raXQuY28uanAvYXV0aG9yLzE3NzA1KSBhdCBbVGhpbmsgSVTvvIjjgrfjg7Pjgq/jgqTjg4Pjg4jvvIldKGh0dHBzOi8vdGhpbmtpdC5jby5qcC8pCi0gMjAyMC0wOC0yNSAtIFtPcGVuQVBJIEdlbmVyYXRvciDjgaggVHlwZVNjcmlwdCDjgaflnovlronlhajjgavjg5Xjg63jg7Pjg4jjgqjjg7Pjg4nplovnmbrjgpLjgZfjgabjgYTjgovoqbFdKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwL2VudHJ5LzIwMjAvMDgvMjUvMTM1NjMxKSBhdCBbU21hcnRIUiBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaC5zbWFydGhyLmpwLykKLSAyMDIwLTA5LTEwIC0gW0ludHJvZHVjdGlvbiB0byBPcGVuQVBJIHdpdGggSW5zdGFuYV0oaHR0cHM6Ly93d3cuaW5zdGFuYS5jb20vYmxvZy9pbnRyb2R1Y3Rpb24tdG8tb3BlbmFwaS13aXRoLWluc3RhbmEvKSBieSBbQ2VkcmljIFppZWxdKGh0dHBzOi8vd3d3Lmluc3RhbmEuY29tL2Jsb2cvYXV0aG9yL2NlZHJpY3ppZWwvKSBhdCBbSW5zdGFuYSBCbG9nXShodHRwczovL3d3dy5pbnN0YW5hLmNvbS9ibG9nLykKLSAyMDIwLTA5LTE3IC0gW0dlbmVyYXRlIFBvd2VyU2hlbGxTREsgdXNpbmcgb3BlbmFwaS1nZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2h1ZnoubGVhcm4vZ2VuZXJhdGUtcG93ZXJzaGVsbHNkay11c2luZy1vcGVuYXBpLWdlbmVyYXRvci0zM2I3MDA4OTFlMzMpIGJ5IFtHaHVmcmFuIFphaGlkaV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BnaHVmei5sZWFybikKLSAyMDIwLTA5LTI0IC0gW0hvdyB0byBhdXRvbWF0ZSBBUEkgY29kZSBnZW5lcmF0aW9uIChPcGVuQVBJL1N3YWdnZXIpIGFuZCBib29zdCBwcm9kdWN0aXZpdHkgLSBUdXRvcmlhbCB3aXRoIFJlYWN0IE5hdGl2ZSBmZWF0dXJpbmcgVHlwZVNjcmlwdF0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraS9ob3ctdG8tYXV0b21hdGUtYXBpLWNvZGUtZ2VuZXJhdGlvbi1vcGVuYXBpLXN3YWdnZXItYW5kLWJvb3N0LXByb2R1Y3Rpdml0eS0xMTc2YTAwNTZkOGEpIGJ5IFtTYW5qaW4gQ2VsZXNraV0oaHR0cHM6Ly9tZWRpdW0uY29tL0BzY2VsZXNraSkKLSAyMDIwLTA5LTI1IC0gW0dlbmVyYXRlIE9wZW5BUEkgQW5ndWxhciBDbGllbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28vZ2VuZXJhdGUtb3BlbmFwaS1hbmd1bGFyLWNsaWVudC04YzkyODhlOGJiZDQpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vbWVkaXVtLmNvbS9AcGd1c28pCi0gMjAyMC0xMC0yNCAtIFtXb3JraW5nIHdpdGggTWljcm9zb2Z0IElkZW50aXR5IC0gUmVhY3QgTmF0aXZlIENsaWVudF0oaHR0cHM6Ly93d3cuam9zZXBoZ3VhZGFnbm8ubmV0LzIwMjAvMTAvMjQvd29ya2luZy13aXRoLW1pY3Jvc29mdC1pZGVudGl0eS1yZWFjdC1uYXRpdmUtY2xpZW50KSBieSBbSm9zZXBoIEd1YWRhZ25vXShodHRwczovL3d3dy5qb3NlcGhndWFkYWduby5uZXQvKQotIDIwMjAtMTAtMzEgLSBbW0IyXSBPcGVuQVBJIFNwZWNpZmljYXRpb27snLzroZwg7YOA7J6FLeyEuOydtO2UhO2VmOqyjCBBUEkg6rCc67Cc7ZWY6riwOiDtnazrp53tjrggVlMg7KCI66ed7Y64XShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUo0SkhMRVNBaUZrKSBieSDstZztg5zqsbQgYXQgW0ZFQ29uZiAyMDIwXShodHRwczovLzIwMjAuZmVjb25mLmtyLykKLSAyMDIwLTExLTA1IC0gW0F1dG9tYXRlZCBSRVNULUFwaSBDb2RlIEdlbmVyYXRpb246IFdpZSBJVC1TeXN0ZW1lIG1pdGVpbmFuZGVyIHNwcmVjaGVuXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nL2F1dG9tYXRlZC1yZXN0LWFwaS1jb2RlLWdlbmVyYXRpb24td2llLWl0LXN5c3RlbWUtbWl0ZWluYW5kZXItc3ByZWNoZW4pIGJ5IFN0ZWZhbiBSb3R0ZW5zdGVpbmVyIGF0IFtNQVNTSVZFIEFSVCBCbG9nXShodHRwczovL3d3dy5tYXNzaXZlYXJ0LmNvbS9ibG9nKQotIDIwMjAtMTItMDEgLSBbT3BlbkFQSSBHZW5lcmF0b3LjgadHb+OBrkFQSeOCteODvOODkOODvC/jgq/jg6njgqTjgqLjg7Pjg4jjgrPjg7zjg4njgpLoh6rli5XnlJ/miJDjgZnjgotdKGh0dHBzOi8vcWlpdGEuY29tL3Nha2ktZW5naW5lZXJpbmcvaXRlbXMvYjIwZDhiNjA3NGM0ZGE5NjY0YTUpIGJ5IFtAc2FraS1lbmdpbmVlcmluZ10oaHR0cHM6Ly9xaWl0YS5jb20vc2FraS1lbmdpbmVlcmluZykKLSAyMDIwLTEyLTA0IC0gW1NjYWxpbmcgdGhlIFRlc3QgQ292ZXJhZ2Ugb2YgT3BlbkFQSSBHZW5lcmF0b3IgZm9yIDMwKyBQcm9ncmFtbWluZyBMYW5ndWFnZXNdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9N0xrZTlkSFJxVDApIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW09wZW4gU291cmNlIFN1bW1pdCBKYXBhbiArIEF1dG9tb3RpdmUgTGludXggU3VtbWl0IDIwMjBdKGh0dHBzOi8vZXZlbnRzLmxpbnV4Zm91bmRhdGlvbi5vcmcvYXJjaGl2ZS8yMDIwL29wZW4tc291cmNlLXN1bW1pdC1qYXBhbi8pIChbU2xpZGVzXShodHRwczovL3NwZWFrZXJkZWNrLmNvbS93aW5nMzI4L3NjYWxpbmctdGhlLXRlc3QtY292ZXJhZ2Utb2Ytb3BlbmFwaS1nZW5lcmF0b3ItZm9yLTMwLXBsdXMtcHJvZ3JhbW1pbmctbGFuZ3VhZ2VzKSkKLSAyMDIwLTEyLTA5IC0gW+ODl+ODreOCuOOCp+OCr+ODiOOBq09wZW5BUEkgR2VuZXJhdG9y44Gn6Ieq5YuV55Sf5oiQ44GV44KM44Gf5Z6L5LuY44GNQVBJIENsaWVudOOCkuWwjuWFpeOBl+OBn+ipsV0oaHR0cHM6Ly9xaWl0YS5jb20veW9zaGlmdWppVC9pdGVtcy85MDVjMTg3MDBlZGUyM2Y0MDg0MCkgYnkgW0B5b3NoaWZ1amlUXShodHRwczovL2dpdGh1Yi5jb20veW9zaGlmdWppVCkKLSAyMDIwLTEyLTE1IC0gW05leHQuanMgKyBOZXN0SlMgKyBHcmFwaFFM44Gn5aSJ5YyW44Gr6L+95b6T44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44G4IOOAnCDjgrfjg6fjg4Pjg5Tjg7PjgrDjgq/jg7zjg53jg7Pjga7kuovkvovntLnku4tdKGh0dHBzOi8vdGVjaGJsb2cueWFob28uY28uanAvZW50cnkvMjAyMDEyMTUzMDA1Mjk1Mi8pIGJ5IFvlsI/lgIkg6Zm4XShodHRwczovL2dpdGh1Yi5jb20vb2d1Z3U5KSBhdCBbWWFob28hIEpBUEFOIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy55YWhvby5jby5qcC8pCi0gMjAyMS0wMS0wOCAtIFtIZWxsbywgTmV3IEFQSSDigJMgUGFydCAxXShodHRwczovL3d3dy5uZ2lueC5jb20vYmxvZy9oZWxsby1uZXctYXBpLXBhcnQtMS8pIGJ5IFtKZXJlbXkgU2NodWxtYW5dKGh0dHBzOi8vd3d3Lm5naW54LmNvbS9wZW9wbGUvamVyZW15LXNjaHVsbWFuLykgYXQgW01ham9yIExlYWd1ZSBCYXNlYmFsbF0oaHR0cHM6Ly93d3cubWxiLmNvbSkKLSAyMDIxLTAxLTE4IC0gW+OAjOOCouODl+ODqumWi+eZuuOBguOCi+OBguOCi+OAjeOCkueWkeOBhuOBk+OBqOOBi+OCieWni+OBvuOBo+OBn+OAgUFQSSBDbGllbnTjgrPjg7zjg4njga7oh6rli5XnlJ/miJDjgJDjg4fjg5bjgrnjg4gyMDIw44CRXShodHRwczovL2NvZGV6aW5lLmpwL2FydGljbGUvZGV0YWlsLzEzNDA2P3A9MikgYnkgW0NvZGVaaW5l57eo6ZuG6YOoXShodHRwczovL2NvZGV6aW5lLmpwL2F1dGhvci8xKQotIDIwMjEtMDItMDUgLSBbUkVTVC1BUEktUm91bmR0cmlwIHdpdGggU3ByaW5nRG9jIGFuZCBPcGVuQVBJIEdlbmVyYXRvcl0oaHR0cHM6Ly9ibG9nLnZpYWRlZS5kZS9lbi9yZXN0LWFwaS1yb3VuZHRyaXApIGJ5IFtCZW5qYW1pbiBLbGF0dF0oaHR0cHM6Ly90d2l0dGVyLmNvbS9iZW5rbGF0dCkgYXQgW3ZpYWRlZV0oaHR0cHM6Ly93d3cudmlhZGVlLmRlL2VuLykKLSAyMDIxLTAyLTE3IC0gW1JFU1QtQVBJLVJvdW5kdHJpcCB3aXRoIFNwcmluZ0RvYyBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vbWVkaXVtLmNvbS9uZXJkLWZvci10ZWNoL3Jlc3QtYXBpLXJvdW5kdHJpcC13aXRoLXNwcmluZ2RvYy1hbmQtb3BlbmFwaS1nZW5lcmF0b3ItMzBiZDI3Y2NmNjk4KSBieSBbY2xvdWQgQHZpYWRlZV0oaHR0cHM6Ly9jbG91ZC12aWFkZWUubWVkaXVtLmNvbS8pCi0gMjAyMS0wMy0wOCAtIFtPcGVuQVBJIEdlbmVyYXRvciDlt6XlhbfnmoTourrlnZHlsJ3or5VdKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxL2FydGljbGUvZGV0YWlscy8xMTQ1MzE5NzUpIGJ5IFvni6zlrrbpm6jlpKldKGh0dHBzOi8vYmxvZy5jc2RuLm5ldC91MDEzMDE5NzAxKSBhdCBbQ1NETuWumOaWueWNmuWuol0oaHR0cHM6Ly9ibG9nLmNzZG4ubmV0LykKLSAyMDIxLTAzLTE2IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9jbG91ZC50ZW5jZW50LmNvbS9kZXZlbG9wZXIvYXJ0aWNsZS8xODAyNzA0KSBieSBb6auY5qW8WmVlXShodHRwczovL2Nsb3VkLnRlbmNlbnQuY29tL2RldmVsb3Blci91c2VyLzU4MzYyNTUpIGF0IFvohb7orq/kupHkuJPmoI9dKGh0dHBzOi8vY2xvdWQudGVuY2VudC5jb20vZGV2ZWxvcGVyL2NvbHVtbikKLSAyMDIxLTAzLTI0IC0gW29wZW5hcGktZ2VuZXJhdG9yLWNsaSDjgavjgojjgosgVHlwZVNjcmlwdCDlnovlrprnvqldKGh0dHBzOi8vemVubi5kZXYvdGFrZXBlcGUvYXJ0aWNsZXMvb3BlbmFwaS1nZW5lcmF0b3ItY2xpLXRzKSBieSBbVGFrZWZ1bWkgWW9zaGlpXShodHRwczovL3plbm4uZGV2L3Rha2VwZXBlKQotIDIwMjEtMDMtMjggLSBbVHJ5aW5nIG91dCBOZXN0SlMgcGFydCA0OiBHZW5lcmF0ZSBUeXBlc2NyaXB0IGNsaWVudHMgZnJvbSBPcGVuQVBJIGRvY3VtZW50c10oaHR0cHM6Ly9kZXYudG8vYXJuYXVkY29ydGlzc2UvdHJ5aW5nLW91dC1uZXN0anMtcGFydC00LWdlbmVyYXRlLXR5cGVzY3JpcHQtY2xpZW50cy1mcm9tLW9wZW5hcGktZG9jdW1lbnRzLTI4bWspIGJ5IFtBcm5hdWQgQ29ydGlzc2VdKGh0dHBzOi8vZGV2LnRvL2FybmF1ZGNvcnRpc3NlKQotIDIwMjEtMDMtMzEgLSBbT3BlbiBBUEkgU2VydmVyIEltcGxlbWVudGF0aW9uIFVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFtCYWVsZHVuZ10oaHR0cHM6Ly93d3cuYmFlbGR1bmcuY29tLykKLSAyMDIxLTAzLTMxIC0gW+S9v+eUqE9wZW5BUEkgR2VuZXJhdG9y5a+m54++T3BlbiBBUEkgU2VydmVyXShodHRwczovL3d3dy4xanUub3JnL2FydGljbGUvamF2YS1vcGVuYXBpLWdlbmVyYXRvci1zZXJ2ZXIpIGF0IFvlhITogZrntrJdKGh0dHBzOi8vd3d3LjFqdS5vcmcvKQotIDIwMjEtMDQtMTkgLSBbSW50cm9kdWNpbmcgVHdpbGlv4oCZcyBPcGVuQVBJIFNwZWNpZmljYXRpb24gQmV0YV0oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2ludHJvZHVjaW5nLXR3aWxpby1vcGVuLWFwaS1zcGVjaWZpY2F0aW9uLWJldGEpIGJ5IFtHQVJFVEggUEFVTCBKT05FU10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nL2F1dGhvci9ncGopIGF0IFtUd2lsaW8gQmxvZ10oaHR0cHM6Ly93d3cudHdpbGlvLmNvbS9ibG9nKQotIDIwMjEtMDQtMjIgLSBbTGV2ZXJhZ2luZyBPcGVuQXBpIHN0cmVuZ3RocyBpbiBhIE1pY3JvLVNlcnZpY2UgZW52aXJvbm1lbnRdKGh0dHBzOi8vbWVkaXVtLmNvbS91bmlidWRkeS10ZWNobm9sb2d5LWJsb2cvbGV2ZXJhZ2luZy1vcGVuYXBpLXN0cmVuZ3Rocy1pbi1hLW1pY3JvLXNlcnZpY2UtZW52aXJvbm1lbnQtM2Q3ZjllN2MyNmZmKSBieSBOaWNvbGFzIEplbGxhYiBhdCBbVW5pYnVkZHkgVGVjaG5vbG9neSBCbG9nXShodHRwczovL21lZGl1bS5jb20vdW5pYnVkZHktdGVjaG5vbG9neS1ibG9nKQotIDIwMjEtMDQtMjcgLSBbRnJvbSB6ZXJvIHRvIHB1Ymxpc2hpbmcgUG93ZXJTaGVsbCBBUEkgY2xpZW50cyBpbiBQb3dlclNoZWxsIEdhbGxlcnkgd2l0aGluIG1pbnV0ZXNdKGh0dHBzOi8vc3BlYWtlcmRlY2suY29tL3dpbmczMjgvZnJvbS16ZXJvLXRvLXB1Ymxpc2hpbmctcG93ZXJzaGVsbC1hcGktY2xpZW50cy1pbi1wb3dlcnNoZWxsLWdhbGxlcnktd2l0aGluLW1pbnV0ZXMpIGJ5IFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkgYXQgW1Bvd2VyU2hlbGwgKyBEZXZPcHMgR2xvYmFsIFN1bW1pdCAyMDIxXShodHRwczovL2V2ZW50cy5kZXZvcHNjb2xsZWN0aXZlLm9yZy9ldmVudC9wb3dlcnNoZWxsLWRldm9wcy1nbG9iYWwtc3VtbWl0LTIwMjEvKQotIDIwMjEtMDUtMzEgLSBbRmx1dHRlcuOBp09wZW4gQXBpIEdlbmVyYXRvcihTd2FnZ2VyKeOCkuS9v+OBhl0oaHR0cHM6Ly9hYWtpcmEuYXBwL2Jsb2cvMjAyMS8wNS9mbHV0dGVyLW9wZW4tYXBpLykgYnkgW0FBa2lyYV0oaHR0cHM6Ly90d2l0dGVyLmNvbS9fYV9ha2lyYSkKLSAyMDIxLTA2LTIyIC0gW1Jlc3QgQVBJIERvY3VtZW50YXRpb24gYW5kIENsaWVudCBHZW5lcmF0aW9uIFdpdGggT3BlbkFQSV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvcmVzdC1hcGktZG9jdW1lbnRhdGlvbi1hbmQtY2xpZW50LWdlbmVyYXRpb24td2l0aCkgYnkgW1ByYXNhbnRoIEd1bGxhcGFsbGldKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzEwMTE3OTcvcHJhc2FudGhuYXRoLmdAZ21haWwuY29tLmh0bWwpCi0gMjAyMS0wNy0xNiAtIFvpioDooYzkuovmpa3jga7jgrXjg7zjg5Djg7zjgrXjgqTjg4nplovnmbrjgavjgaTjgYTjgaYgLyBMSU5FIOS6rOmDvemWi+eZuuWupCDjgqjjg7Pjgrjjg4vjgqLmjqHnlKjoqqzmmI7kvJpdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9WXJyS1FIeExQcFEpIGJ5IOmHjueUsOiqoOS6uiwgUm9iZXJ0IE1pdGNoZWxsCi0gMjAyMS0wNy0xOSAtIFtPcGVuQVBJIGNvZGUgZ2VuZXJhdGlvbiB3aXRoIGtvdGxpbl0oaHR0cHM6Ly9zeWxoYXJlLmdpdGh1Yi5pby8yMDIxLzA3LzE5L09wZW5hcGktc3dhZ2dlci1jb2RlZ2VuLXdpdGgta290bGluLmh0bWwpIGJ5IFtzeWxoYXJlXShodHRwczovL2dpdGh1Yi5jb20vc3lsaGFyZSkKLSAyMDIxLTA3LTI5IC0gW0hvdyBUbyBSZXdyaXRlIGEgSHVnZSBDb2RlYmFzZV0oaHR0cHM6Ly9kem9uZS5jb20vYXJ0aWNsZXMvaG93LXRvLXJld3JpdGUtYS1odWdlLWNvZGUtYmFzZSkgYnkgW0N1cnRpcyBQb2VdKGh0dHBzOi8vZHpvbmUuY29tL3VzZXJzLzQ1NjU0NDYvcHVibGl1c292aWRpdXMuaHRtbCkKLSAyMDIxLTA4LTIxIC0gW0dlbmVyYXRpbmcgQ2xpZW50IEFQSXMgdXNpbmcgU3dhZ2dlciBQYXJ0IDFdKGh0dHBzOi8vbWVkaXVtLmNvbS9AZmxvd3NxdWFkL2dlbmVyYXRpbmctY2xpZW50LWFwaXMtdXNpbmctc3dhZ2dlci1wYXJ0LTEtMmQ0NmYxM2Y1ZTkyKSBieSBbRmxvd1NxdWFkLmlvXShodHRwczovL21lZGl1bS5jb20vQGZsb3dzcXVhZCkKLSAyMDIxLTA5LTExIC0gW0ludm9raW5nIEFXUyBQYXJhbGxlbENsdXN0ZXIgQVBJXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpIGF0IFtBV1MgUGFyYWxsZWxDbHVzdGVyIEFQSSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcGFyYWxsZWxjbHVzdGVyL2xhdGVzdC91Zy9hcGktcmVmZXJlbmNlLXYzLmh0bWwpCi0gMjAyMS0wOS0yMCAtIFtPcGVuQVBJIEdlbmVyYXRvciAtIFRoZSBCYWJlbCBGaXNoIG9mIHRoZSBBUEkgV29ybGRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9czJ6TXR3ZDVrbGcpIGJ5IFtDbGlmZmFubyBTdWJhZ2lvIChQcmluY2lwYWwgRW5naW5lZXIgYXQgU2hpbmUgU29sdXRpb25zKV0oaHR0cHM6Ly9naXRodWIuY29tL2NsaWZmYW5vKSBhdCBbQXBpZGF5cyBMSVZFIEF1c3RyYWxpYSAyMDIxXShodHRwczovL3d3dy5hcGlkYXlzLmdsb2JhbC9hdXN0cmFsaWEyMDIxLykKLSAyMDIxLTEwLTAyIC0gW0hvdyB0byBXcml0ZSBGZXdlciBMaW5lcyBvZiBDb2RlIHdpdGggdGhlIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2hhY2tlcm5vb24uY29tL2hvdy10by13cml0ZS1mZXdlci1saW5lcy1vZi1jb2RlLXdpdGgtdGhlLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBbTWlraGFpbCBBbGZhXShodHRwczovL2hhY2tlcm5vb24uY29tL3UvYWxwaGFtaWtsZSkKLSAyMDIxLTEwLTEyIC0gW09wZW5BUEkgR2VuZXJhdG9yIDogNDAwMCDDqXRvaWxlcyBzdXIgR2l0SHViIGV0IGRlcyBzcGFnaGV0dGlzXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTloRXNOQlNxVEZrKSBieSBbSsOpcsOpbWllIEJyZXNzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgYXQgW0Rldm94eCBGUiAyMDIxXShodHRwczovL2NmcC5kZXZveHguZnIvMjAyMS9zcGVha2VyL2plcmVtaWVfYnJlc3NvbikKLSAyMDIxLTEwLTE3IC0gW0dlbmVyYXRlIGEgVHlwZVNjcmlwdCBIVFRQIENsaWVudCBGcm9tIEFuIE9wZW5BUEkgU3BlYyBJbiBEb3RORVQgNV0oaHR0cHM6Ly9yaWNoYXJkd2lsbGlzLmluZm8vYmxvZy9nZW5lcmF0ZS1hLXR5cGUtc2NyaXB0LWh0dHAtY2xpZW50LWZyb20tYW4tb3Blbi1hcGktc3BlYy1pbi1kb3QtbmV0LTUpIGJ5IFtSaWNoYXJkIFdpbGxpc10oaHR0cHM6Ly9naXRodWIuY29tL2JhZHN5bnRheCkKLSAyMDIxLTExLTA2IC0gW+OCueOCv+ODvOODiOOCouODg+ODl+OBrumWi+eZuuOBp+aEj+itmOOBl+OBn+OBk+OBqF0oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vL2FydGljbGVzLzVjYjA5ZjhlMjg5OWFlNzgyYWQxKSBieSBbd29vLW5vb10oaHR0cHM6Ly96ZW5uLmRldi93b29fbm9vKQotIDIwMjEtMTEtMDkgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3QvZWZmZWN0aXZlLXNvZnR3YXJlLWRldmVsb3BtZW50LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yKSBieSBBamlsIE9vbW1lCi0gMjAyMS0xMi0wNyAtIFtBbiBJbnRyb2R1Y3Rpb24gdG8gT3BlbkFQSV0oaHR0cHM6Ly9iZXR0ZXJwcm9ncmFtbWluZy5wdWIvNC11c2UtY2FzZXMtb2Ytb3BlbmFwaS13aGljaC1hcmUtZ29vZC10by1rbm93LTFhMDQxZjRhZDcxZSkgYnkgW05hJ2FtYW4gSGlyc2NoZmVsZF0oaHR0cHM6Ly9uYWFtYW5oaXJzY2hmZWxkLm1lZGl1bS5jb20vKQotIDIwMjItMDEtMDIgLSBbVG93YXJkcyBhIHNlY3VyZSBBUEkgY2xpZW50IGdlbmVyYXRvciBmb3IgSW9UIGRldmljZXNdKGh0dHBzOi8vYXJ4aXYub3JnL2Ficy8yMjAxLjAwMjcwKSBieSBBbmRlcnMgQWFlbiBTcHJpbmdib3JnLCBNYXJ0aW4gS2FsZGFobCBBbmRlcnNlbiwgS2FhcmUgSG9sbGFuZCBIYXR0ZWwsIE1pY2hlbGUgQWxiYW5vCi0gMjAyMi0wMi0wMiAtIFtVc2UgT3BlbkFwaSBnZW5lcmF0b3IgdG8gc2hhcmUgeW91ciBtb2RlbHMgYmV0d2VlbiBGbHV0dGVyIGFuZCB5b3VyIGJhY2tlbmRdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9a1BXN2NjdTlZdmspIGJ5IFtHdWlsbGF1bWUgQmVybm9zXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tL3NwZWFrZXJzL2d1aWxsYXVtZV9iZXJub3MpIGF0IFtGbHV0dGVyIFZpa2luZ3MgQ29uZmVyZW5jZSAyMDIyIChIeWJyaWQpXShodHRwczovL2ZlYjIwMjIuZmx1dHRlcnZpa2luZ3MuY29tLykKLSAyMDIyLTAzLTE1IC0gW09wZW5BUEkgU3BlY+OBp+ODj+OCpOODleODs+WMuuWIh+OCiuOBrkVudW3lgKTjgpJPcGVuQVBJIEdlbmVyYXRvcuOBp+WHuuWKm+OBmeOCi+OBqOOAgeODj+OCpOODleODs+WMuuWIh+OCiuOBruOBvuOBvuWHuuWKm+OBleOCjOOCi10oaHR0cHM6Ly9xaWl0YS5jb20veXVqaTM4a3dtdC9pdGVtcy84MjRkNzRkNDg4OTA1NWFiMzdkOCkgYnkgW3l1amkzOGt3bXRdKGh0dHBzOi8vcWlpdGEuY29tL3l1amkzOGt3bXQpCi0gMjAyMi0wNC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOBruOCs+ODvOODieeUn+aIkOOBqFNwcmluZyBGcmFtZXdvcmvjga7jgqvjgrnjgr/jg6Djg4fjg7zjgr/jg5DjgqTjg7Pjg4fjgqPjg7PjgrDjgpLlhbHlrZjjgZXjgZvjgotdKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vZW50cnkvY29leGlzdGVuY2Utb2Ytb3BlbmFwaS1hbmQtc3ByaW5nKSBpbiBbWk9aTyBUZWNoIEJsb2ddKGh0dHBzOi8vdGVjaGJsb2cuem96by5jb20vKQotIDIwMjItMDQtMDYgLSBbRWZmZWN0aXZlIFNvZnR3YXJlIERldmVsb3BtZW50IHVzaW5nIE9wZW5BUEkgR2VuZXJhdG9yXShodHRwczovL2FwZXhsYWJzLmFpL3Bvc3Qvb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IEFqaWwgT29tbWVuIChTZW5pb3IgRmx1dHRlciBEZXZlbG9wZXIpCi0gMjAyMi0wNS0xMyAtIFtBIFBhdGggRnJvbSBhbiBBUEkgVG8gQ2xpZW50IExpYnJhcmllc10oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1YQzhvVm5fZWZUdykgYnkgW0ZpbGlwIFNybmVjXShodHRwczovL3d3dy5kZXZveHguY28udWsvdGFsay8/aWQ9MTEyMTEpIGF0IEluZm9iaXAKLSAyMDIyLTA2LTAxIC0gW0FQSSBGaXJzdCwgdXNpbmcgT3BlbkFQSSBhbmQgU3ByaW5nIEJvb3RdKGh0dHBzOi8vbWVkaXVtLmNvbS94Z2Vla3MvYXBpLWZpcnN0LXVzaW5nLW9wZW5hcGktYW5kLXNwcmluZy1ib290LTI2MDJjMDRiYjBkMykgYnkgW01pY2FlbCBFc3Ryw6F6dWxhcyBWaWFubmFdKGh0dHBzOi8vZXN0cmF6dWxhcy5tZWRpdW0uY29tLykKLSAyMDIyLTA2LTEwIC0gW0F1dG9nZW5lcmF0aW5nIENsaWVudHMgd2l0aCBGYXN0QVBJIGFuZCBHaXRodWIgQWN0aW9uc10oaHR0cHM6Ly93d3cucHJvcGVsYXV0aC5jb20vcG9zdC9hdXRvZ2VuZXJhdGluZy1jbGllbnRzLXdpdGgtZmFzdGFwaS1hbmQtZ2l0aHViLWFjdGlvbnMpIGJ5IFtBbmRyZXcgSXNyYWVsXShodHRwczovL3d3dy5wcm9wZWxhdXRoLmNvbS9hdXRob3IvYW5kcmV3KQotIDIwMjItMDYtMTIgLSBbTXVzdGFjaGUgdGVtcGxhdGVzIHdpdGggT3BlbkFQSSBzcGVjc10oaHR0cHM6Ly9tZWRpdW0uY29tL2dlZWtjdWx0dXJlL211c3RhY2hlLXRlbXBsYXRlcy13aXRoLW9wZW5hcGktc3BlY3MtZjI0NzExYzY3ZGVjKSBieSBbQmVwcGUgQ2F0YW5lc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9nY2F0YW5lc2UpCi0gMjAyMi0wNy0wMSAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjItMDctMjIgLSBb5L2/55SoT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2lu5byA5Y+RYXBp5LyY5YWI55qEamF2YeWuouaIt+err+WSjOacjeWKoeerr+S7o+eggV0oaHR0cHM6Ly9ibG9nLnJvY2Nvc2hpLnRvcC8yMDIyL2phdmEvb3BlbmFwaS1nZW5lcmF0b3IlRTclOUElODQlRTQlQkQlQkYlRTclOTQlQTgvKSBieSBbTGluY2VzdF0oaHR0cHM6Ly9naXRodWIuY29tL0xpbmNlc3QpCi0gMjAyMi0wOC0wMSAtIFtUdXRvcmlhbDogRXRzeSBPcGVuIEFQSSB2MyAocnVieSldKGh0dHBzOi8vYmxvZy50am95YWwuZGV2L2V0c3ktb3Blbi1hcGktdjMvKSBieSBbVGhpZXJyeSBKb3lhbF0oaHR0cHM6Ly9naXRodWIuY29tL3Rqb3lhbCkKLSAyMDIyLTA5LTAzIC0gW09wZW5BUEkgR2VuZXJhdG9yIEZvciBHbyBXZWIgRGV2ZWxvcG1lbnRdKGh0dHBzOi8vYmxvZy5rZXZpbmh1Lm1lLzIwMjIvMDkvMDMvMDMtb3BlbmFwaS1nZW5lcmF0b3IvKSBieSBbS2V2aW4gSHVdKGh0dHBzOi8vdHdpdHRlci5jb20vT2xkZ3VuaXgpCi0gMjAyMi0xMC0wMSAtIFtPcGVuQVBJIEdlbmVyYXRvcuOCkuOCq+OCueOCv+ODnuOCpOOCuuOBl+OBn+OCs+ODvOODieOCkueUn+aIkOOBmeOCi++8iFN3YWdnZXIgQ29kZWdlbuOBqOOBu+OBvOWQjOOBmO+8iV0oaHR0cHM6Ly9uYWluYWlzdGFyLmhhdGVuYWJsb2cuY29tL2VudHJ5LzIwMjIvMTAvMDMvMTIwMDAwKSBieSBb44GN44KK5Li4XShodHRwczovL3R3aXR0ZXIuY29tL25haW5haXN0YXIpCi0gMjAyMi0xMC0yMSAtIFtLb3RsaW7vvIhTcHJpbmcgQm9vdO+8ieOBriBBUEkg44KSIE9wZW5BUEkgR2VuZXJhdG9yIOOBp+iHquWLleeUn+aIkF0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYXJ0aWNsZXMvMjAyMjEwMjEta290bGluLXNwcmluZy1vcGVuYXBpLWdlbmVyYXRvcikgYnkgW21za3NnbV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMi0xMC0yNiAtIFtRdWFya3VzIEluc2lnaHRzICMxMDY6IFF1YXJraXZlcnNlIEV4dGVuc2lvbiBTcG90bGlnaHQ6IE9wZW5BcGkgR2VuZXJhdG9yXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PV9zX2lmNjl0MmlRKSBieSBbUXVhcmt1c2lvXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9jL1F1YXJrdXNpbykKLSAyMDIyLTExLTI4IC0gW1RoZSBSRVNUIEFQSSBpbXBsZW1lbnRhdGlvbiBmbG93XShodHRwczovL3Rtc3ZyLmNvbS9vcGVuYXBpLWNvZGUtZ2VuZXJhdGlvbi1mb3ItcmVzdC1hcGlzLykgYnkgW0ltcmUgVMO2bcO2c3bDoXJpXShodHRwczovL3Rtc3ZyLmNvbS9hdXRob3IvaW1yZS8pCi0gMjAyMi0xMi0xMyAtIFtBUEktRmlyc3Qgd2l0aCBTcHJpbmcgV2ViRmx1eCBhbmQgT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vYm9vdHRlY2hub2xvZ2llcy1jaS5tZWRpdW0uY29tL2FwaS1maXJzdC13aXRoLXNwcmluZy13ZWJmbHV4LWFuZC1vcGVuYXBpLWdlbmVyYXRvci0zOGI3ODA0YzRlZDQpIGJ5IFtFcmljIEFuaWNldF0oaHR0cHM6Ly9ib290dGVjaG5vbG9naWVzLWNpLm1lZGl1bS5jb20vKQotIDIwMjMtMDEtMDYgLSBbTWFqb3IgSW1wcm92ZW1lbnRzIHdpdGggSGVsaWRvbiBhbmQgT3BlbkFQSV0oaHR0cHM6Ly9tZWRpdW0uY29tL2hlbGlkb24vbWFqb3ItaW1wcm92ZW1lbnRzLXdpdGgtaGVsaWRvbi1hbmQtb3BlbmFwaS1mNzZhMDk1MTUwOGUpIGJ5IFtUaW0gUXVpbm5dKGh0dHBzOi8vbWVkaXVtLmNvbS9AdHF1aW5ubzYwMCkKLSAyMDIzLTAyLTAyIC0gW1JlcGxhY2luZyBQb3N0bWFuIHdpdGggdGhlIEpldGJyYWlucyBIVFRQIENsaWVudF0oaHR0cHM6Ly9sZW5ncmFuZC5mci9yZXBsYWNpbmctcG9zdG1hbi1pbi1zZWNvbmRzLXdpdGgtdGhlLWpldGJyYWlucy1odHRwLWNsaWVudC8pIGJ5IFtqdWxpZW4gTGVuZ3JhbmQtTGFtYmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2psZW5ncmFuZCkKLSAyMDIzLTAzLTE1IC0gW09wZW5BUEkgR2VuZXJhdG9y44Gr6YGp44GX44GfT3BlbkFQSeOBruabuOOBjeaWuV0oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS9lbnRyeS9ob3ctdG8td3JpdGUtb3BlbmFwaS1mb3Itb3BlbmFwaS1nZW5lcmF0b3IpIGJ5IFtaT1pPIFRlY2ggQmxvZ10oaHR0cHM6Ly90ZWNoYmxvZy56b3pvLmNvbS8pCi0gMjAyMy0wMy0xOSAtIFtFWE9HRU06IEV4dGVuZGluZyBPcGVuQVBJIEdlbmVyYXRvciBmb3IgTW9uaXRvcmluZyBvZiBSRVNUZnVsIEFQSXNdKGh0dHBzOi8vbGluay5zcHJpbmdlci5jb20vY2hhcHRlci8xMC4xMDA3Lzk3OC0zLTAzMS0yNjUwNy01XzEwKSBieSBEYW5pZWwgRnJpaXMgSG9sdGVibywgSmFubmlrIEx1Y2FzIFNvbW1lciwgTWFnbnVzIE3DuGxnYWFyZCBMdW5kLCBBbGVzc2FuZHJvIFRpYm8sIEp1bmlvciBEb25nbyAmIE1pY2hlbGUgQWxiYW5vIGF0ICJJQ1NPQyAyMDIyOiBTZXJ2aWNlLU9yaWVudGVkIENvbXB1dGluZyDigJMgSUNTT0MgMjAyMiBXb3Jrc2hvcHMiCi0gMjAyMy0wMy0yOCAtIFtBUEktRmlyc3QgRGVzaWduIHdpdGggT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9wdWxzZS9hcGktZmlyc3QtZGVzaWduLW9wZW5hcGktZ2VuZXJhdG9yLWpvbmF0aGFuLW1hbmVyYS8pIGJ5IFtKb25hdGhhbiBNYW5lcmFdKGh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9tYW5lcmFqb25hLykKLSAyMDIzLTAzLTI4IC0gW+ODj+ODs+OCuuOCquODs+OBp+WtpuOBtuOCteODvOODkOODvOOCteOCpOODiSBLb3RsaW7vvIhTcHJpbmcgQm9vdCZBcnJvdyZPcGVuQVBJIEdlbmVyYXRvcu+8iXYxLjAuMV0oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20vYm9va3MvaW1wbGVtZW50aW5nLXNlcnZlci1zaWRlLWtvdGxpbi1kZXZlbG9wbWVudCkgYnkgW21za10oaHR0cHM6Ly96ZW5uLmRldi9tc2tzZ20pCi0gMjAyMy0wNC0wMSAtIFtPcGVuQVBJIENsaWVudCBDb2RlIEdlbmVyYXRpb25dKGh0dHBzOi8vdGVzdGluZ2Jvc3MuY29tL2Jsb2cvb3BlbmFwaS1jbGllbnQtZ2VuZXJhdGlvbi8pIGJ5IEt3byBEaW5nCi0gMjAyMy0wNC0yNyAtIFtDcmVhdGUgYW4gQW5ndWxhciBDbGllbnQgdXNpbmcgT3BlbkFQSSBTcGVjaWZpY2F0aW9uc10oQ3JlYXRlIGFuIEFuZ3VsYXIgQ2xpZW50IHVzaW5nIE9wZW5BUEkgU3BlY2lmaWNhdGlvbnMpIGJ5IFtQYXRyaWNdKGh0dHBzOi8vcGd1c28ubWVkaXVtLmNvbS8pCi0gMjAyMy0wNS0xNiAtIFtBZHllbiBmb3IgSmF2YSBkZXZlbG9wZXJzXShodHRwczovL3d3dy5hZHllbi5jb20vYmxvZy9hZHllbi1qYXZhLWxpYnJhcnkpIGJ5IFtCZXBwZSBDYXRhbmVzZSwgRGV2ZWxvcGVyIEFkdm9jYXRlLCBBZHllbl0oaHR0cHM6Ly9naXRodWIuY29tL2djYXRhbmVzZSkKLSAyMDIzLTA1LTE4IC0gW+WmguS9leWfuuS6jiBTd2FnZ2VyIOS9v+eUqCBPcGVuQVBJIEdlbmVyYXRvciDnlJ/miJAgSk1ldGVyIOiEmuacrO+8n10oaHR0cHM6Ly9ibG9nLjUxY3RvLmNvbS91XzE1MTgxNTcyLzYyOTQ5NzQpIGJ5IFvpq5jmpbzvvIhaZWUpXShodHRwczovL2Jsb2cuNTFjdG8uY29tL3VfMTUxODE1NzIpCi0gMjAyMy0wNi0yOCAtIFtHZW5lcmF0ZSBBUEkgY29udHJhY3QgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgTWF2ZW4gcGx1Z2luXShodHRwczovL2h1b25nZGFuamF2YS5jb20vZ2VuZXJhdGUtYXBpLWNvbnRyYWN0LXVzaW5nLW9wZW5hcGktZ2VuZXJhdG9yLW1hdmVuLXBsdWdpbi5odG1sKSBieSBbS2hhbmggTmd1eWVuXShodHRwczovL2h1b25nZGFuamF2YS5jb20vKQotIDIwMjMtMDYtMzAgLSBbR2VuZXJhdGUgQ2xpZW50IFNES3Mgd2l0aCBPcGVuQXBpIEdlbmVyYXRvciBpbiBTcHJpbmdib290XShodHRwczovL21lZGl1bS5jb20vQHJhbWF2YXRodmluYXlhay9nZW5lcmF0ZS1jbGllbnQtc2Rrcy13aXRoLW9wZW5hcGktZ2VuZXJhdG9yLWluLXNwcmluZ2Jvb3QtZjlmMDEyZTczYzBiKSBieSBbVmluYXlhayBSYW1hdmF0aF0oaHR0cHM6Ly9tZWRpdW0uY29tL0ByYW1hdmF0aHZpbmF5YWspCi0gMjAyMy0xMi0xMCAtIFtVbml0eeOBp09wZW5BUEkgR2VuZXJhdG9y44KS5L2/44GGXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNiTndLVlY1TFJNKSBieSBbU291cCBUb3JpXShodHRwczovL3d3dy55b3V0dWJlLmNvbS9Ac291cHRvcmk4NDE3KQotIDIwMjQtMDEtMjQgLSBbQ29tbWVudCBnw6luw6lyZXIgZGVzIHN0dWJzIHdpcmVtb2NrIGF2ZWMgb3BlbmFwaSBnZW5lcmF0b3JdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9MGpoT05mQnJjS3cpIGJ5IFtBbGV4aXMgQ291dnJldXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY291dnJldXIpCi0gMjAyNC0wMy0wNCAtIFtHZW5lcmF0aW5nIFR5cGVTY3JpcHQgVHlwZXMgd2l0aCBPcGVuQVBJIGZvciBSRVNUIEFQSSBDb25zdW1wdGlvbl0oaHR0cHM6Ly93d3cucHVsbHJlcXVlc3QuY29tL2Jsb2cvZ2VuZXJhdGluZy10eXBlc2NyaXB0LXR5cGVzLXdpdGgtb3BlbmFwaS1mb3ItcmVzdC1hcGktY29uc3VtcHRpb24vKSBieSBbUHVsbFJlcXVlc3RdKGh0dHBzOi8vd3d3LnB1bGxyZXF1ZXN0LmNvbS8pCi0gMjAyNC0wMy0wNyAtIFtGdWxseSB0eXBlZCBXZWIgQXBwcyB3aXRoIE9wZW5BUEkgKFBhcnQgMSldKGh0dHBzOi8vbWVkaXVtLmNvbS9AZ2ZveDE5ODQvZnVsbHktdHlwZWQtd2ViLWFwcHMtd2l0aC1vcGVuYXBpLXBhcnQtMS01OTVkNTU3NjY2NzApIGJ5IFtHdWlsbGF1bWUgUmVuYXJkXShodHRwczovL21lZGl1bS5jb20vQGdmb3gxOTg0KQotIDIwMjQtMDMtMDggLSBbTGFyYXZlbCBPcGVuQVBJ44Gr44KI44KLICLovpvjgY/jgarjgYQiIOOCueOCreODvOODnumnhuWLlemWi+eZul0oaHR0cHM6Ly9mb3J0ZWUuanAvcGhwZXJrYWlnaS0yMDI0L3Byb3Bvc2FsLzllMmU2YzM4LWQwNzgtNGVmYS05OWI0LTgzZWJmOTAzM2IzNCkgYnkgW0tlbnRhcm91VGFrZWRhXShodHRwczovL3R3aXR0ZXIuY29tL0tlbnRhcm91VGFrZWRhKQoKIyMgWzYgLSBBYm91dCBVc10oI3RhYmxlLW9mLWNvbnRlbnRzKQoKV2hhdCdzIHRoZSBkZXNpZ24gcGhpbG9zb3BoeSBvciBwcmluY2lwbGUgYmVoaW5kIE9wZW5BUEkgR2VuZXJhdG9yPwoKV2UgZm9jdXMgb24gZGV2ZWxvcGVyIGV4cGVyaWVuY2UuIFRoZSBnZW5lcmF0b3JzIHNob3VsZCBwcm9kdWNlIGNvZGUsIGNvbmZpZywgZG9jdW1lbnRhdGlvbiwgYW5kIG1vcmUgdGhhdCBhcmUgZWFzaWx5IHVuZGVyc3RhbmRhYmxlIGFuZCBjb25zdW1hYmxlIGJ5IHVzZXJzLiBXZSBmb2N1c2VkIG9uIHNpbXBsZSB1c2UgY2FzZXMgdG8gc3RhcnQgd2l0aCAoYm90dG9tLXVwIGFwcHJvYWNoKS4gU2luY2UgdGhlbiB0aGUgcHJvamVjdCBhbmQgdGhlIGNvbW11bml0eSBoYXZlIGdyb3duIGEgbG90OiA2MDBrIHdlZWtseSBkb3dubG9hZHMgdmlhIE5QTSBDTEkgd3JhcHBlciwgMzBNIGRvd25sb2FkcyB2aWEgb3BlbmFwaS1nZW5lcmF0b3ItY2xpIGRvY2tlciBpbWFnZSBqdXN0IHRvIGhpZ2hsaWdodCBhIGZldy4gV2UndmUgZ3JhZHVhbGx5IHN1cHBvcnRlZCBtb3JlIGZlYXR1cmVzIChlLmcuIG9uZU9mLCBhbnlPZiBpbnRyb2R1Y2VkIGluIE9wZW5BUEkgMy4wKSBpbiB2YXJpb3VzIGdlbmVyYXRvcnMgYW5kIHdlIHdpbGwgY29udGludWUgdGhpcyBhcHByb2FjaCB0byBkZWxpdmVyIHNvbWV0aGluZyBiYXNlZCBvbiBvdXIgdW5kZXJzdGFuZGluZyBvZiB1c2VyIGRlbWFuZCBhbmQgd2hhdCB0aGV5IHdhbnQsIGFuZCBjb250aW51ZSB0byBhZGQgc3VwcG9ydCBvZiBuZXcgZmVhdHVyZXMgaW50cm9kdWNlZCBpbiBPcGVuQVBJIHNwZWNpZmljYXRpb24gKHN1Y2ggYXMgdjMuMSBhbmQgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24pLgoKIyMjIFs2LjEgLSBPcGVuQVBJIEdlbmVyYXRvciBDb3JlIFRlYW1dKCN0YWJsZS1vZi1jb250ZW50cykKCk9wZW5BUEkgR2VuZXJhdG9yIGNvcmUgdGVhbSBtZW1iZXJzIGFyZSBjb250cmlidXRvcnMgd2hvIGhhdmUgYmVlbiBtYWtpbmcgc2lnbmlmaWNhbnQgY29udHJpYnV0aW9ucyAocmV2aWV3IGlzc3VlcywgZml4IGJ1Z3MsIG1ha2UgZW5oYW5jZW1lbnRzLCBldGMpIHRvIHRoZSBwcm9qZWN0IG9uIGEgcmVndWxhciBiYXNpcy4KCiMjIyMgQ29yZSBUZWFtIE1lbWJlcnMKKiBbQHdpbmczMjhdKGh0dHBzOi8vZ2l0aHViLmNvbS93aW5nMzI4KSAoMjAxNS8wNykgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiogW0BqaW1zY2h1YmVydF0oaHR0cHM6Ly9naXRodWIuY29tL2ppbXNjaHViZXJ0KSAoMjAxNi8wNSkgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQoqIFtAY2Jvcm5ldF0oaHR0cHM6Ly9naXRodWIuY29tL2Nib3JuZXQpICgyMDE2LzA1KQoqIFtAam1pbmldKGh0dHBzOi8vZ2l0aHViLmNvbS9qbWluaSkgKDIwMTgvMDQpICBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vam1pbmkpCiogW0BldGhlcmVhbGpveV0oaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZWFsam95KSAoMjAxOS8wNikKCjpoZWFydDogPSBMaW5rIHRvIHN1cHBvcnQgdGhlIGNvbnRyaWJ1dG9yIGRpcmVjdGx5CgojIyMjIFRlbXBsYXRlIENyZWF0b3IKCioqTk9URSoqOiBFbWJlZGRlZCB0ZW1wbGF0ZXMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIF9NdXN0YWNoZV8gZm9ybWF0LiBTdXBwb3J0IGZvciBhbGwgb3RoZXIgZm9ybWF0cyBpcyBleHBlcmltZW50YWwgYW5kIHN1YmplY3QgdG8gY2hhbmdlIGF0IGFueSB0aW1lLgoKSGVyZSBpcyBhIGxpc3Qgb2YgdGVtcGxhdGUgY3JlYXRvcnM6CiAqIEFQSSBDbGllbnRzOgogICAqIEFkYTogQHN0Y2FycmV6CiAgICogQXBleDogQGFzbmVsbGluZwogICAqIEJhc2g6IEBia3J5emEKICAgKiBDOiBAUG93ZXJPZkNyZWF0aW9uIEB6aGVtYW50IFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS96aGVtYW50KQogICAqIEMrKyBSRVNUOiBARGFuaWVsa3UxNQogICAqIEMrKyBUaW55OiBAQW5kZXJzU3ByaW5nYm9yZyBAa2FhcmVISCBAbWljaGVsZWFsYmFubyBAbWtha2JhcwogICAqIEMrKyBVRTQ6IEBLYWhuY29kZQogICAqIEMjICguTkVUIDIuMCk6IEB3aG8KICAgKiBDIyAoLk5FVCBTdGFuZGFyZCAxLjMgKTogQEdyb25zYWsKICAgKiBDIyAoLk5FVCA0LjUgcmVmYWN0b3JlZCk6IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogQyMgKEdlbmVyaWNIb3N0KTogQGRldmhsLWxhYnMKICAgKiBDIyAoSHR0cENsaWVudCk6IEBCbGFja2NsYXdzCiAgICogQ2xvanVyZTogQHhoaAogICAqIENyeXN0YWw6IEB3aW5nMzI4CiAgICogRGFydDogQHlpc3NhY2hhcgogICAqIERhcnQgKHJlZmFjdG9yKTogQGpvZXJuYWhyZW5zCiAgICogRGFydCAyOiBAc3dpcGVzaWdodAogICAqIERhcnQgKEphZ3Vhcik6IEBqYXVtYXJkCiAgICogRGFydCAoRGlvKTogQGpvc2gtYnVydG9uCiAgICogRWxpeGlyOiBAbmlrdQogICAqIEVsbTogQGVyaWt0aW0KICAgKiBFaWZmZWw6IEBqdmVsaWxsYQogICAqIEVybGFuZzogQHRzbG91Z2h0ZXIKICAgKiBFcmxhbmcgKFByb3BFcik6IEBqZmFjb3JybyBAcm9iZXJ0b2Fsb2kKICAgKiBHcm9vdnk6IEB2aWN0b3JnaXQKICAgKiBHbzogQHdpbmczMjggWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL3dpbmczMjgpCiAgICogR28gKHJld3JpdHRlbiBpbiAyLjMuMCk6IEBhbnRpaGF4CiAgICogSGFza2VsbCAoaHR0cC1jbGllbnQpOiBAam9uc2Nob25pbmcKICAgKiBKYXZhIChGZWlnbik6IEBkYXZpZGtpc3MKICAgKiBKYXZhIChSZXRyb2ZpdCk6IEAwbGVnZwogICAqIEphdmEgKFJldHJvZml0Mik6IEBlbWlsaWFub2JvbmFzc2kKICAgKiBKYXZhIChKZXJzZXkyKTogQHhoaAogICAqIEphdmEgKG9raHR0cC1nc29uKTogQHhoaAogICAqIEphdmEgKFJlc3RUZW1wbGF0ZSk6IEBuYnJ1bm8KICAgKiBKYXZhIChTcHJpbmcgNSBXZWJDbGllbnQpOiBAZGFvbm9taWMKICAgKiBKYXZhIChTcHJpbmcgNiBSZXN0Q2xpZW50KTogQG5pY2tsYXMyNzUxCiAgICogSmF2YSAoUkVTVEVhc3kpOiBAZ2F5YXRocmlncwogICAqIEphdmEgKFZlcnR4KTogQGxvcGVzbWNjCiAgICogSmF2YSAoR29vZ2xlIEFQSXMgQ2xpZW50IExpYnJhcnkpOiBAY2hhcmxlc2NhcHBzCiAgICogSmF2YSAoUmVzdC1hc3N1cmVkKTogQHZpY2xvdnNreQogICAqIEphdmEgKEphdmEgMTEgTmF0aXZlIEhUVFAgY2xpZW50KTogQGJiZG91Z2xhcwogICAqIEphdmEgKEFwYWNoZSBIdHRwQ2xpZW50IDUueCk6IEBoYXJyeXdoaXRlNCBAYW5kcmV2ZWdhcwogICAqIEphdmEgKEhlbGlkb24pOiBAc3BlcmljYXMgQHRqcXVpbm5vIEB0dmFsbGluCiAgICogSmF2YXNjcmlwdC9Ob2RlSlM6IEBqZmlhbGEKICAgKiBKYXZhU2NyaXB0IChBcG9sbG8gRGF0YVNvdXJjZSk6IEBlcml0aG1ldGljCiAgICogSmF2YVNjcmlwdCAoQ2xvc3VyZS1hbm5vdGF0ZWQgQW5ndWxhcikgQGFjaGV3MjIKICAgKiBKYXZhU2NyaXB0IChGbG93IHR5cGVzKSBAamF5cGVhCiAgICogSmV0YnJhaW5zIEhUVFAgQ2xpZW50IDogQGpsZW5ncmFuZAogICAqIEpNZXRlcjogQGRhdmlka2lzcwogICAqIEp1bGlhOiBAdGFubWF5a20KICAgKiBLb3RsaW46IEBqaW1zY2h1YmVydCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vamltc2NodWJlcnQpCiAgICogS290bGluIChNdWx0aVBsYXRmb3JtKTogQGFuZHJld2VtZXJ5CiAgICogS290bGluIChWb2xsZXkpOiBAYWxpc3RlcnMKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctd2ViY2xpZW50KTogQHN0ZWZhbmtvcHBpZXIKICAgKiBLb3RsaW4gKGp2bS1zcHJpbmctcmVzdGNsaWVudCk6IEBzdGVmYW5rb3BwaWVyCiAgICogTHVhOiBAZGF1cm5pbWF0b3IKICAgKiBONEpTOiBAbW1ld3MtbjQKICAgKiBOaW06IEBob2thbW90bwogICAqIE9DYW1sOiBAY2dlbnNvdWwKICAgKiBQZXJsOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBQSFAgKEd1enpsZSk6IEBiYWFydG9zegogICAqIFBIUCAod2l0aCBEYXRhIFRyYW5zZmVyKTogQEFydGljdXMKICAgKiBQb3dlclNoZWxsOiBAYmVhdGNyYWNrZXIKICAgKiBQb3dlclNoZWxsIChyZWZhY3RvcmVkIGluIDUuMC4wKTogQHdpbmczMjgKICAgKiBQeXRob246IEBzcGFjZXRoZXIgWzpoZWFydDpdW3NwYWNldGhlciBzcG9uc29yc2hpcF0KICAgKiBQeXRob24tRXhwZXJpbWVudGFsOiBAc3BhY2V0aGVyIFs6aGVhcnQ6XVtzcGFjZXRoZXIgc3BvbnNvcnNoaXBdCiAgICogUHl0aG9uIChyZWZhY3RvcmVkIGluIDcuMC4wKTogQHdpbmczMjgKICAgKiBSOiBAcmFtbm92CiAgICogUnVieSAoRmFyYWRheSk6IEBtZWdhbmVtdXJhIEBka2xpYmFuCiAgICogUnVieSAoSFRUUFgpOiBAaG9uZXlyeWRlcmNodWNrCiAgICogUnVzdDogQGZhcmNhbGxlcgogICAqIFJ1c3QgKHJ1c3Qtc2VydmVyKTogQG1ldGFzd2l0Y2gKICAgKiBTY2FsYSAoc2NhbGF6ICYgaHR0cDRzKTogQHRicm93bjE5NzkKICAgKiBTY2FsYSAoQWtrYSk6IEBjY2hhZmVyCiAgICogU2NhbGEgKHN0dHApOiBAY2hhbWVsZW9uODIKICAgKiBTY2FsYSAoc3R0cDQpOiBAZmxzaDg2CiAgICogU2NhbGEgKFBla2tvKTogQG1pY2thZWxtYWduaWV6CiAgICogU3dpZnQ6IEB0a3F1Ym8KICAgKiBTd2lmdCAzOiBAaGV4ZWxvbgogICAqIFN3aWZ0IDQ6IEBlaHljaGUKICAgKiBTd2lmdCA1OiBANGJydW51CiAgICogU3dpZnQgNjogQDRicnVudQogICAqIFN3aWZ0IENvbWJpbmU6IEBkeWR1czB4MTQKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyMSk6IEBtaGFyZG9yZgogICAqIFR5cGVTY3JpcHQgKEFuZ3VsYXIyKTogQHJvbmktZnJhbnRjaGkKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyNik6IEBha2VoaXIKICAgKiBUeXBlU2NyaXB0IChBbmd1bGFyNyk6IEB0b3BjZQogICAqIFR5cGVTY3JpcHQgKEF4aW9zKTogQG5pY29rb2VuaWcKICAgKiBUeXBlU2NyaXB0IChGZXRjaCk6IEBsZW9ueXUKICAgKiBUeXBlU2NyaXB0IChJbnZlcnNpZnkpOiBAZ3VhbHRpZXJpbQogICAqIFR5cGVTY3JpcHQgKGpRdWVyeSk6IEBiaGVyaWxhCiAgICogVHlwZVNjcmlwdCAoTmVzdGpzKTogQHZmcmFuazY2CiAgICogVHlwZVNjcmlwdCAoTm9kZSk6ICBAbWhhcmRvcmYKICAgKiBUeXBlU2NyaXB0IChSeGpzKTogQGRlbnlvCiAgICogVHlwZVNjcmlwdCAocmVkdXgtcXVlcnkpOiBAcGV0ZWpvaGFuc29ueG8KICAgKiBYb2pvOiBAVG9waGVlZQogICAqIFphcGllcjogQHZhbG1veiwgQGVtYWpvCiAqIFNlcnZlciBTdHVicwogICAqIEFkYTogQHN0Y2FycmV6CiAgICogQyMgQVNQLk5FVCA1OiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEMjIEFTUC5ORVQgQ29yZSAzLjA6IEBBLUpvc2hpCiAgICogQyMgQVBTLk5FVCBDb3JlIDMuMTogQHBoYXRjaGVyCiAgICogQyMgQXp1cmUgZnVuY3Rpb25zOiBAQWJyaG03Nzg2CiAgICogQyMgTmFuY3lGWDogQG1zdGVmYW5pdWsKICAgKiBDKysgKFF0NSBRSHR0cEVuZ2luZSk6IEBldGhlcmVhbGpveQogICAqIEMrKyBQaXN0YWNoZTogQHNlYnltaWFubwogICAqIEMrKyBSZXN0YmVkOiBAc3RrcndvcmsKICAgKiBFcmxhbmcgU2VydmVyOiBAZ2FsYXhpZSBAbmVsc29udmlkZXMKICAgKiBGIyAoR2lyYWZmZSkgU2VydmVyOiBAbm1maXNoZXIKICAgKiBHbyBTZXJ2ZXI6IEBndW9odWFuZwogICAqIEdvIFNlcnZlciAocmVmYWN0b3JlZCBpbiA3LjAuMCk6IEBsd2o1CiAgICogR28gKEVjaG8pIFNlcnZlcjogQHBoNHI1aDRkCiAgICogR28gKEdpbikgU2VydmVyOiBAa2Vtb2tlbW8KICAgKiBHcmFwaFFMIEV4cHJlc3MgU2VydmVyOiBAcmVuZXBhcmRvbgogICAqIEhhc2tlbGwgU2VydmFudDogQGFsZ2FzCiAgICogSGFza2VsbCBZZXNvZDogQHlvdHN1eWEKICAgKiBKYXZhIENhbWVsOiBAY2FybmV2YWxlZ2lhY29tbwogICAqIEphdmEgTVNGNEo6IEBzYW5qZWV3YS1tYWxhbGdvZGEKICAgKiBKYXZhIFNwcmluZyBCb290OiBAZGl5ZnIKICAgKiBKYXZhIFVuZGVydG93OiBAc3RldmVodQogICAqIEphdmEgUGxheSBGcmFtZXdvcms6IEBKRkNvdGUKICAgKiBKYXZhIFBLTVNUOiBAYW5zaHUyMTg1IEBzYW5zaHVtYW4gQHJrdW1hci1wayBAbmlub2RwaWxsYWkKICAgKiBKYXZhIFZlcnQueDogQGx3bGVlMjYwOAogICAqIEphdmEgTWljcm9uYXV0OiBAYW5kcml5LWRteXRydWsKICAgKiBKYXZhIEhlbGlkb246IEBzcGVyaWNhcyBAdGpxdWlubm8gQHR2YWxsaW4KICAgKiBKYXZhIFdpcmVNb2NrOiBbQGFjb3V2cmV1cl0oaHR0cHM6Ly9naXRodWIuY29tL2Fjb3V2cmV1cikKICAgKiBKQVgtUlMgUmVzdEVhc3k6IEBjaGFtZWxlb244MgogICAqIEpBWC1SUyBDWEY6IEBoaXZlc2hpcAogICAqIEpBWC1SUyBDWEYgKENESSk6IEBuaWNrY21heW5hcmQKICAgKiBKQVgtUlMgUmVzdEVhc3kgKEpCb3NzIEVBUCk6IEBqZmlhbGEKICAgKiBKdWxpYTogQHRhbm1heWttCiAgICogS290bGluOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIEtvdGxpbiAoU3ByaW5nIEJvb3QpOiBAZHI0a2U2MTYKICAgKiBLb3RsaW4gKFZlcnR4KTogQFdvb3ltZQogICAqIEtvdGxpbiAoSkFYLVJTKTogQGFudHRpbGVwcGEKICAgKiBLb3RsaW4gV2lyZU1vY2s6IEBzdGVmYW5rb3BwaWVyCiAgICogTm9kZUpTIEV4cHJlc3M6IEBZaXNoVGlzaAogICAqIFBIUCBGbGlnaHQ6IEBkYW5pZWwtc2MKICAgKiBQSFAgTGFyYXZlbDogQHJlbmVwYXJkb24KICAgKiBQSFAgTHVtZW46IEBhYmNzdW4KICAgKiBQSFAgTWV6emlvICh3aXRoIFBhdGggSGFuZGxlcik6IEBBcnRpY3VzCiAgICogUEhQIFNsaW06IEBqZmFzdG5hY2h0CiAgICogUEhQIFNsaW00OiBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pCiAgICogUEhQIFN5bWZvbnk6IEBrc20yCiAgICogUEhQIFN5bWZvbnk2OiBAQmVuamFtaW5IYWUKICAgKiBQeXRob24gRmFzdEFQSTogQGtyamFrYnJqYWsKICAgKiBQeXRob24gQUlPSFRUUDoKICAgKiBSdWJ5IG9uIFJhaWxzIDU6IEB6bHgKICAgKiBSdXN0IChydXN0LXNlcnZlcik6IEBtZXRhc3dpdGNoCiAgICogU2NhbGEgQWtrYTogQEJvdWlsbGllCiAgICogU2NhbGEgQ2FzazogQGFhcm9ucAogICAqIFNjYWxhIEZpbmNoOiBAamltc2NodWJlcnQgWzpoZWFydDpdKGh0dHBzOi8vd3d3LnBhdHJlb24uY29tL2ppbXNjaHViZXJ0KQogICAqIFNjYWxhIExhZ29tOiBAZ21rdW1hcjIwMDUKICAgKiBTY2FsYSBQbGF5OiBAYWRpZ2VyYmVyCiAqIERvY3VtZW50YXRpb24KICAgKiBBc2NpaURvYzogQG1hbi1hdC1ob21lCiAgICogSFRNTCBEb2MgMjogQGpoaXRjaGNvY2sKICAgKiBDb25mbHVlbmNlIFdpa2k6IEBqaGl0Y2hjb2NrCiAgICogUGxhbnRVTUw6IEBwYnVybHMKICogQ29uZmlndXJhdGlvbgogICAqIEFwYWNoZTI6IEBzdGtyd29yawogICAqIGs2OiBAbW9zdGFmYQogKiBTY2hlbWEKICAgKiBBdnJvOiBAc2dhZG91YXIKICAgKiBHcmFwaFFMOiBAd2luZzMyOCBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkKICAgKiBLdG9ybTogQEx1aXotTW9uYWQKICAgKiBNeVNRTDogW0B5YmVsZW5rb10oaHR0cHM6Ly9naXRodWIuY29tL3liZWxlbmtvKQogICAqIFBvc3RtYW4gQ29sbGVjdGlvbjogQGdjYXRhbmVzZQogICAqIFByb3RvY29sIEJ1ZmZlcjogQHdpbmczMjgKICAgKiBXU0RMOiBAYWRlc3NvRHBkCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIyBIb3cgdG8gam9pbiB0aGUgY29yZSB0ZWFtCgpIZXJlIGFyZSB0aGUgcmVxdWlyZW1lbnRzIHRvIGJlY29tZSBhIGNvcmUgdGVhbSBtZW1iZXI6Ci0gcmFuayB3aXRoaW4gdG9wIDUwIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvZ3JhcGhzL2NvbnRyaWJ1dG9ycwogIC0gdG8gY29udHJpYnV0ZSwgaGVyZSBhcmUgc29tZSBnb29kIFtzdGFydGluZyBwb2ludHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYXBpdG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvaXNzdWVzP3E9aXMlM0FvcGVuK2lzJTNBaXNzdWUrbGFiZWwlM0ElMjJoZWxwK3dhbnRlZCUyMikKLSByZWd1bGFyIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHByb2plY3QKICAtIGFib3V0IDMgaG91cnMgcGVyIHdlZWsKICAtIGZvciBjb250cmlidXRpb24sIGl0IGNhbiBiZSBhZGRyZXNzaW5nIGlzc3VlcywgcmV2aWV3aW5nIFBScyBzdWJtaXR0ZWQgYnkgb3RoZXJzLCBzdWJtaXR0aW5nIFBSIHRvIGZpeCBidWdzIG9yIG1ha2UgZW5oYW5jZW1lbnRzLCBldGMKICAtIG11c3QgYmUgYWN0aXZlIGluIHRoZSBwYXN0IDMgbW9udGhzIGF0IHRoZSB0aW1lIG9mIGFwcGxpY2F0aW9uCgogVG8gam9pbiB0aGUgY29yZSB0ZWFtLCBwbGVhc2UgcmVhY2ggb3V0IHRvIHRlYW1Ab3BlbmFwaXRvb2xzLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiBUbyBiZWNvbWUgYSBUZW1wbGF0ZSBDcmVhdG9yLCBzaW1wbHkgc3VibWl0IGEgUFIgZm9yIG5ldyBBUEkgY2xpZW50IChlLmcuIFJ1c3QsIEVsaXhpcikgb3Igc2VydmVyIHN0dWIgKGUuZy4gUnVieSBHcmFwZSkgZ2VuZXJhdG9yLgoKIyMjIFs2LjIgLSBPcGVuQVBJIEdlbmVyYXRvciBUZWNobmljYWwgQ29tbWl0dGVlXSgjdGFibGUtb2YtY29udGVudHMpCgpNZW1iZXJzIG9mIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0ZWNobmljYWwgY29tbWl0dGVlIHNob3VsZGVyIHRoZSBmb2xsb3dpbmcgcmVzcG9uc2liaWxpdGllczoKCi0gUHJvdmlkZXMgZ3VpZGFuY2UgYW5kIGRpcmVjdGlvbiB0byBvdGhlciB1c2VycwotIFJldmlld3MgcHVsbCByZXF1ZXN0cyBhbmQgaXNzdWVzCi0gSW1wcm92ZXMgdGhlIGdlbmVyYXRvciBieSBtYWtpbmcgZW5oYW5jZW1lbnRzLCBmaXhpbmcgYnVncyBvciB1cGRhdGluZyBkb2N1bWVudGF0aW9ucwotIFNldHMgdGhlIHRlY2huaWNhbCBkaXJlY3Rpb24gb2YgdGhlIGdlbmVyYXRvcgoKV2hvIGlzIGVsaWdpYmxlPyBUaG9zZSB3aG8gd2FudCB0byBqb2luIG11c3QgaGF2ZSBhdCBsZWFzdCAzIFBScyBtZXJnZWQgaW50byBhIGdlbmVyYXRvci4gKEV4Y2VwdGlvbnMgY2FuIGJlIGdyYW50ZWQgdG8gdGVtcGxhdGUgY3JlYXRvcnMgb3IgY29udHJpYnV0b3JzIHdobyBoYXZlIG1hZGUgYSBsb3Qgb2YgY29kZSBjaGFuZ2VzIHdpdGggbGVzcyB0aGFuIDMgbWVyZ2VkIFBScykKCklmIHlvdSB3YW50IHRvIGpvaW4gdGhlIGNvbW1pdHRlZSwgcGxlYXNlIGtpbmRseSBhcHBseSBieSBzZW5kaW5nIGFuIGVtYWlsIHRvIHRlYW1Ab3BlbmFwaXRvb2xzLm9yZyB3aXRoIHlvdXIgR2l0aHViIElELgoKIyMjIyBNZW1iZXJzIG9mIFRlY2huaWNhbCBDb21taXR0ZWUKCnwgTGFuZ3VhZ2VzL0dlbmVyYXRvcnMgIHwgTWVtYmVyIChqb2luIGRhdGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Oi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBBY3Rpb25TY3JpcHQgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQWRhICAgICAgICAgICAgICAgICAgIHwgQHN0Y2FycmV6ICgyMDE4LzAyKSBAbWljaGVsZWFsYmFubyAoMjAxOC8wMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEFuZHJvaWQgICAgICAgICAgICAgICB8IEBqYXotYWggKDIwMTcvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBBcGV4ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQmFzaCAgICAgICAgICAgICAgICAgIHwgQGZyb2wgKDIwMTcvMDcpIEBia3J5emEgKDIwMTcvMDgpIEBrZW5qb25lcy1jaXNjbyAoMjAxNy8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEMgICAgICAgICAgICAgICAgICAgICB8IEB6aGVtYW50ICgyMDE4LzExKSBAaXR5dWh1aSAoMjAxOS8xMikgQG1pY2hlbGVhbGJhbm8gKDIwMjAvMDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDKysgICAgICAgICAgICAgICAgICAgfCBAcmF2aW5pa2FtICgyMDE3LzA3KSBAc3RrcndvcmsgKDIwMTcvMDcpIEBldGhlcmVhbGpveSAoMjAxOC8wMikgQG1hcnRpbmRlbGlsbGUgKDIwMTgvMDMpIEBtdXR0bGV5eGQgKDIwMTkvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQyMgICAgICAgICAgICAgICAgICAgIHwgQG1hbmRyZWFuICgyMDE3LzA4KSBAc2hpYmF5YW4gKDIwMjAvMDIpIEBCbGFja2NsYXdzICgyMDIxLzAzKSBAbHVjYW1henphbnRpICgyMDIxLzA1KSBAaUJpY2hhICgyMDIzLzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBDbG9qdXJlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgQ3J5c3RhbCAgICAgICAgICAgICAgIHwgQGN5YW5nbGUgKDIwMjEvMDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IERhcnQgICAgICAgICAgICAgICAgICB8IEBqYXVtYXJkICgyMDE4LzA5KSBAam9zaC1idXJ0b24gKDIwMTkvMTIpIEBhbW9uZG5ldCAoMjAxOS8xMikgQHNidS1XQlQgKDIwMjAvMTIpIEBrdWhucm95YWwgKDIwMjAvMTIpIEBhZ2lsb2IgKDIwMjAvMTIpIEBhaG1lZG5md2VsYSAoMjAyMS8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFaWZmZWwgICAgICAgICAgICAgICAgfCBAanZlbGlsbGEgKDIwMTcvMDkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRWxpeGlyICAgICAgICAgICAgICAgIHwgQG1ybXN0biAoMjAxOC8xMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEVsbSAgICAgICAgICAgICAgICAgICB8IEBlcmlrdGltICgyMDE4LzA5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBFcmxhbmcgICAgICAgICAgICAgICAgfCBAdHNsb3VnaHRlciAoMjAxNy8xMSkgQGpmYWNvcnJvICgyMDE4LzEwKSBAcm9iZXJ0b2Fsb2kgKDIwMTgvMTApIEBuZWxzb252aWRlcyAoMjAyNC8wOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgRiMgICAgICAgICAgICAgICAgICAgIHwgQG5tZmlzaGVyICgyMDE5LzA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdvICAgICAgICAgICAgICAgICAgICB8IEBhbnRpaGF4ICgyMDE3LzExKSBAZ3Jva2lmeSAoMjAxOC8wNykgQGtlbW9rZW1vICgyMDE4LzA5KSBAamlyaWt1bmNhciAoMjAyMS8wMSkgQHBoNHI1aDRkICgyMDIxLzA0KSBAbHdqNSAoMjAyMy8wNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgR3JhcGhRTCAgICAgICAgICAgICAgIHwgQHJlbmVwYXJkb24gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEdyb292eSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBIYXNrZWxsICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSmF2YSAgICAgICAgICAgICAgICAgIHwgQGJiZG91Z2xhcyAoMjAxNy8wNykgQHNyZWVzaGFzICgyMDE3LzA4KSBAamZpYWxhICgyMDE3LzA4KSBAbHVrb3lhbm92ICgyMDE3LzA5KSBAY2Jvcm5ldCAoMjAxNy8wOSkgQGplZmY5ZmluZ2VyICgyMDE4LzAxKSBAa2FyaXNtYW5uICgyMDE5LzAzKSBAWm9tem9nICgyMDE5LzA0KSBAbHdsZWUyNjA4ICgyMDE5LzEwKSBAbWFydGluLW1mZyAoMjAyMy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKYXZhIFNwcmluZyAgICAgICAgICAgfCBAY2FjaGVzY3J1YmJlciAoMjAyMi8wMikgQHdlbHNobSAoMjAyMi8wMikgQE1lbGxlRCAoMjAyMi8wMikgQGF0ZXh0b3IgKDIwMjIvMDIpIEBtYW5lZGV2NzkgKDIwMjIvMDIpIEBqYXZpc3N0ICgyMDIyLzAyKSBAYm9yc2NoICgyMDIyLzAyKSBAYmFubGV2ZW50ZSAoMjAyMi8wMikgQFpvbXpvZyAoMjAyMi8wOSkgQG1hcnRpbi1tZmcgKDIwMjMvMDgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEpNZXRlciAgICAgICAgICAgICAgICB8IEBrYW5ua3lvICgyMDIxLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBKZXRicmFpbnMgSFRUUCBDbGllbnQgfCBAamxlbmdyYW5kICgyMDIzLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgSnVsaWEgICAgICAgICAgICAgICAgIHwgQHRhbm1heWttICgyMDIzLzAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEtvdGxpbiAgICAgICAgICAgICAgICB8IEBkcjRrZTYxNiAoMjAxOC8wOCkgQGthcmlzbWFubiAoMjAxOS8wMykgQFpvbXpvZyAoMjAxOS8wNCkgQGFuZHJld2VtZXJ5ICgyMDE5LzEwKSBANGJydW51ICgyMDE5LzExKSBAeXV0YWthMG0gKDIwMjAvMDMpIEBzdGVmYW5rb3BwaWVyICgyMDIyLzA2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IEx1YSAgICAgICAgICAgICAgICAgICB8IEBkYXVybmltYXRvciAoMjAxNy8wOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBONEpTICAgICAgICAgICAgICAgICAgfCBAbW1ld3MtbjQgKDIwMjMvMDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgTmltICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IE5vZGVKUy9KYXZhc2NyaXB0ICAgICB8IEBDb2RlTmluamFpICgyMDE3LzA3KSBAZnJvbCAoMjAxNy8wNykgQGNsaWZmYW5vICgyMDE3LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBPYmpDICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgT0NhbWwgICAgICAgICAgICAgICAgIHwgQGNnZW5zb3VsICgyMDE5LzA4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFBlcmwgICAgICAgICAgICAgICAgICB8IEB3aW5nMzI4ICgyMDE3LzA3KSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vd2luZzMyOCkgQHl1ZTk5NDQ4ODIgKDIwMTkvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBQSFAgICAgICAgICAgICAgICAgICAgfCBAamViZW50aWVyICgyMDE3LzA3KSwgQGRrYXJsb3ZpICgyMDE3LzA3KSwgQG1hbmRyZWFuICgyMDE3LzA4KSwgQGpmYXN0bmFjaHQgKDIwMTcvMDkpLCBbQHliZWxlbmtvXShodHRwczovL2dpdGh1Yi5jb20veWJlbGVua28pICgyMDE4LzA3KSwgQHJlbmVwYXJkb24gKDIwMTgvMTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgUG93ZXJTaGVsbCAgICAgICAgICAgIHwgQHdpbmczMjggKDIwMjAvMDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFB5dGhvbiAgICAgICAgICAgICAgICB8IEBjYm9ybmV0ICgyMDE3LzA5KSBAdG9tcGx1cyAoMjAxOC8xMCkgQGtyamFrYnJqYWsgKDIwMjMvMDIpIEBmYTAzMTEgKDIwMjMvMTApIEBtdWx0YW5pICgyMDIzLzEwKSB8CnwgUiAgICAgICAgICAgICAgICAgICAgIHwgQFJhbWFudGggKDIwMTkvMDcpIEBzYWlnaXJpZGhhcjIxICgyMDE5LzA3KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFJ1YnkgICAgICAgICAgICAgICAgICB8IEBjbGlmZmFubyAoMjAxNy8wNykgQHpseCAoMjAxNy8wOSkgQGF1dG9wcCAoMjAxOS8wMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBSdXN0ICAgICAgICAgICAgICAgICAgfCBAZnJvbCAoMjAxNy8wNykgQGZhcmNhbGxlciAoMjAxNy8wOCkgQHJpY2hhcmR3aGl1ayAoMjAxOS8wNykgQHBhbGFkaW56aCAoMjAyMC8wNSkgQGphY29iLXBybyAoMjAyMi8xMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgU2NhbGEgICAgICAgICAgICAgICAgIHwgQGNsYXNuYWtlICgyMDE3LzA3KSwgQHNoaWppbmt1aSAgKDIwMTgvMDEpLCBAcmFtemltYWFsZWogKDIwMTgvMDMpLCBAY2hhbWVsZW9uODIgKDIwMjAvMDMpLCBAQm91aWxsaWUgKDIwMjAvMDQpIEBmaXNoODYgKDIwMjMvMDYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IFN3aWZ0ICAgICAgICAgICAgICAgICB8IEBqZ2F2cmlzICgyMDE3LzA3KSBAZWh5Y2hlICgyMDE3LzA4KSBARWR1Yml0cyAoMjAxNy8wOSkgQGphei1haCAoMjAxNy8wOSkgQDRicnVudSAoMjAxOS8xMSkgQGR5ZHVzMHgxNCAoMjAyMy8wNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCBUeXBlU2NyaXB0ICAgICAgICAgICAgfCBAVGlGdSAoMjAxNy8wNykgQHRheHBvbiAoMjAxNy8wNykgQHNlYmFzdGlhbmhhYXMgKDIwMTcvMDcpIEBrZW5pc3Rld2FyZCAoMjAxNy8wNykgQFZyb2xpamt4ICgyMDE3LzA5KSBAbWFjam9obm55ICgyMDE4LzAxKSBAdG9wY2UgKDIwMTgvMTApIEBha2VoaXIgKDIwMTkvMDcpIEBwZXRlam9oYW5zb254byAoMjAxOS8xMSkgQGFtYWtocm92ICgyMDIwLzAyKSBAZGF2aWRnYW1lcm8gKDIwMjIvMDMpIEBta3VzYWthICgyMDIyLzA0KSB8CnwgWG9qbyAgICAgICAgICAgICAgICAgIHwgQFRvcGhlZWUgKDIwMjMvMDQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAoKClBhc3QgTWVtYmVycyBvZiBUZWNobmljYWwgQ29tbWl0dGVlOgp8IExhbmd1YWdlcy9HZW5lcmF0b3JzICAgICAgICAgfCBNZW1iZXIgKGpvaW4gZGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IDotLS0tLS0tLS0tLS0tLS0tIHwgOi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBQeXRob24gICAgICAgICAgICB8IEB0YXhwb24gKDIwMTcvMDcpIEBmcm9sICgyMDE3LzA3KSBAbWJvaGxvb2wgKDIwMTcvMDcpIEBjYm9ybmV0ICgyMDE3LzA5KSBAa2Vuam9uZXMtY2lzY28gKDIwMTcvMTEpIEB0b21wbHVzICgyMDE4LzEwKSBAYXJ1bi1uYWxsYSAoMjAxOS8xMSkgIHwKCgo6aGVhcnQ6ID0gTGluayB0byBzdXBwb3J0IHRoZSBjb250cmlidXRvciBkaXJlY3RseQoKIyMjIFs2LjMgLSBIaXN0b3J5IG9mIE9wZW5BUEkgR2VuZXJhdG9yXSgjdGFibGUtb2YtY29udGVudHMpCgpPcGVuQVBJIEdlbmVyYXRvciBpcyBhIGZvcmsgb2YgW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikuIEluIHZpZXcgb2YgdGhlIGlzc3VlcyB3aXRoIHRoZSBTd2FnZ2VyIENvZGVnZW4gMy4wLjAgKGJldGEpIHJlbGVhc2UgYW5kIHRoZSBkaXNhZ3JlZW1lbnQgb24gdGhlIHByb2plY3QncyBkaXJlY3Rpb24sIG1vcmUgdGhhbiA0MCB0b3AgY29udHJpYnV0b3JzIGFuZCB0ZW1wbGF0ZSBjcmVhdG9ycyBvZiBTd2FnZ2VyIENvZGVnZW4gZGVjaWRlZCB0byBmb3JrIFN3YWdnZXIgQ29kZWdlbiBhbmQgbWFpbnRhaW4gYSBjb21tdW5pdHktZHJpdmVuIHZlcnNpb24gY2FsbGVkICJPcGVuQVBJIEdlbmVyYXRvciIuIFBsZWFzZSByZWZlciB0byB0aGUgW1EmQV0oZG9jcy9xbmEubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMjIyBGb3VuZGluZyBNZW1iZXJzIChhbHBoYWJldGljYWwgb3JkZXIpOgoKLSBbQWtpaGl0byBOYWthbm9dKGh0dHBzOi8vZ2l0aHViLmNvbS9hY2tpbnRvc2gpCi0gW0FydGVtIE9jaGVyZWRrb10oaHR0cHM6Ly9naXRodWIuY29tL2dhbGF4aWUpCi0gW0FydGh1ciBNb2dsaWV2XShodHRwczovL2dpdGh1Yi5jb20vQXJ0aWN1cykKLSBbQmFydGVrIEtyeXphXShodHRwczovL2dpdGh1Yi5jb20vYmtyeXphKQotIFtCZW4gV2VsbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9idndlbGxzKQotIFtCZW5qYW1pbiBHaWxsXShodHRwczovL2dpdGh1Yi5jb20vYmpnaWxsKQotIFtDaHJpc3RvcGhlIEJvcm5ldF0oaHR0cHM6Ly9naXRodWIuY29tL2Nib3JuZXQpCi0gW0NsaWZmYW5vIFN1YmFnaW9dKGh0dHBzOi8vZ2l0aHViLmNvbS9jbGlmZmFubykKLSBbRGFpa2kgTWF0c3VkYXRlXShodHRwczovL2dpdGh1Yi5jb20vZC1kYXRlKQotIFtEYW5pZWxdKGh0dHBzOi8vZ2l0aHViLmNvbS9EYW5pZWxrdTE1KQotIFtFbWlsaWFubyBCb25hc3NpXShodHRwczovL2dpdGh1Yi5jb20vZW1pbGlhbm9ib25hc3NpKQotIFtFcmlrIFRpbW1lcnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9lcmlrdGltKQotIFtFc3RlYmFuIEdlaHJpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9tYWNqb2hubnkpCi0gW0d1c3Rhdm8gUGF6XShodHRwczovL2dpdGh1Yi5jb20vZ3VzdGF2b2FwYXopCi0gW0phdmllciBWZWxpbGxhXShodHRwczovL2dpdGh1Yi5jb20vanZlbGlsbGEpCi0gW0plYW4tRnJhbsOnb2lzIEPDtHTDqV0oaHR0cHM6Ly9naXRodWIuY29tL0pGQ290ZSkKLSBbSmltIFNjaHViZXJ0XShodHRwczovL2dpdGh1Yi5jb20vamltc2NodWJlcnQpCi0gW0pvbiBTY2hvbmluZ10oaHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaG9uaW5nKQotIFtKw6lyw6ltaWUgQnJlc3Nvbl0oaHR0cHM6Ly9naXRodWIuY29tL2ptaW5pKSBbOmhlYXJ0Ol0oaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vam1pbmkpCi0gW0rDtnJuIEFocmVuc10oaHR0cHM6Ly9naXRodWIuY29tL2pheWVhcm4pCi0gW0tlbmkgU3Rld2FyZF0oaHR0cHM6Ly9naXRodWIuY29tL2tlbmlzdGV3YXJkKQotIFtNYXJjaW4gU3RlZmFuaXVrXShodHRwczovL2dpdGh1Yi5jb20vbXN0ZWZhbml1aykKLSBbTWFydGluIERlbGlsbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ0aW5EZWxpbGxlKQotIFtNYXNhaGlybyBZYW1hdWNoaV0oaHR0cHM6Ly9naXRodWIuY29tL2FsZ2FzKQotIFtNaWNoZWxlIEFsYmFub10oaHR0cHM6Ly9naXRodWIuY29tL21pY2hlbGVhbGJhbm8pCi0gW1JhbXppIE1hYWxlal0oaHR0cHM6Ly9naXRodWIuY29tL3JhbXppbWFhbGVqKQotIFtSYXZpbmRyYSBOaWthbV0oaHR0cHM6Ly9naXRodWIuY29tL3JhdmluaWthbSkKLSBbUmljYXJkbyBDYXJkb25hXShodHRwczovL2dpdGh1Yi5jb20vcmljYXJkb25hKQotIFtTZWJhc3RpYW4gSGFhc10oaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmhhYXMpCi0gW1NlYmFzdGlhbiBNYW5kcmVhbl0oaHR0cHM6Ly9naXRodWIuY29tL21hbmRyZWFuKQotIFtTcmVlbmlkaGkgU3JlZXNoYV0oaHR0cHM6Ly9naXRodWIuY29tL3NyZWVzaGFzKQotIFtTdGVmYW4gS3Jpc21hbm5dKGh0dHBzOi8vZ2l0aHViLmNvbS9zdGtyd29yaykKLSBbU3RlcGhhbmUgQ2FycmV6XShodHRwczovL2dpdGh1Yi5jb20vc3RjYXJyZXopCi0gW1Rha3VybyBXYWRhXShodHRwczovL2dpdGh1Yi5jb20vdGF4cG9uKQotIFtUb21hc3ogUHJ1c10oaHR0cHM6Ly9naXRodWIuY29tL3RvbXBsdXMpCi0gW1RyaXN0YW4gU2xvdWdodGVyXShodHRwczovL2dpdGh1Yi5jb20vdHNsb3VnaHRlcikKLSBbVmljdG9yIE9ybG92c2t5XShodHRwczovL2dpdGh1Yi5jb20vdmljbG92c2t5KQotIFtWaWN0b3IgVHJha2h0ZW5iZXJnXShodHRwczovL2dpdGh1Yi5jb20vdmljdG9yZ2l0KQotIFtWbGFkIEZyb2xvdl0oaHR0cHM6Ly9naXRodWIuY29tL2Zyb2wpCi0gW1ZsYWRpbWlyIFBvdXphbm92XShodHRwczovL2dpdGh1Yi5jb20vZmFyY2FsbGVyKQotIFtXaWxsaWFtIENoZW5nXShodHRwczovL2dpdGh1Yi5jb20vd2luZzMyOCkKLSBbWGluIE1lbmddKGh0dHBzOi8vZ2l0aHViLmNvbS94bWVuZzEpIFs6aGVhcnQ6XShodHRwczovL3d3dy5wYXRyZW9uLmNvbS91c2VyL292ZXJ2aWV3P3U9MTY0MzUzODUpCi0gW1h1IEh1aSBIdWldKGh0dHBzOi8vZ2l0aHViLmNvbS94aGgpCi0gW2FudGloYXhdKGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRpaGF4KQotIFtiZWF0Y3JhY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL2JlYXRjcmFja2VyKQotIFtkYXVybmltYXRvcl0oaHR0cHM6L2dpdGh1Yi5jb20vZGF1cm5pbWF0b3IpCi0gW2V0aGVyZWFsam95XShodHRwczovL2dpdGh1Yi5jb20vZXRoZXJlYWxqb3kpCi0gW2pmaWFsYV0oaHR0cHM6Ly9naXRodWIuY29tL2pmaWFsYSkKLSBbbHVrb3lhbm92XShodHRwczovL2dpdGh1Yi5jb20vbHVrb3lhbm92KQoKOmhlYXJ0OiA9IExpbmsgdG8gc3VwcG9ydCB0aGUgY29udHJpYnV0b3IgZGlyZWN0bHkKCiMjIFs3IC0gTGljZW5zZV0oI3RhYmxlLW9mLWNvbnRlbnRzKQotLS0tLS0tCgpDb3B5cmlnaHQgMjAxOCBPcGVuQVBJLUdlbmVyYXRvciBDb250cmlidXRvcnMgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkKQ29weXJpZ2h0IDIwMTggU21hcnRCZWFyIFNvZnR3YXJlCgpMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgW2FwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBdKGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKLS0tCg==
+ readmeEtag: '"f934310d933858f19598920bf9ee78fc25c9c5b0"'
+ readmeLastModified: Fri, 27 Sep 2024 09:35:48 GMT
repositoryId: 133134007
description: >-
OpenAPI Generator allows generation of API client libraries (SDK
generation), server stubs, documentation and configuration automatically
given an OpenAPI Spec (v2, v3)
created: '2018-05-12T09:57:56Z'
- updated: '2024-09-27T01:05:12Z'
+ updated: '2024-09-27T23:59:23Z'
language: Java
archived: false
- stars: 21399
- watchers: 220
- forks: 6475
+ stars: 21406
+ watchers: 221
+ forks: 6476
owner: OpenAPITools
logo: https://avatars.githubusercontent.com/u/37325267?v=4
license: Apache-2.0
- repoEtag: '"035da46d8527aa725a93891cdf9bcbbe72f00b7e3d54451fd0a05f6aaca84e20"'
- repoLastModified: Fri, 27 Sep 2024 01:05:12 GMT
+ repoEtag: '"0c06f27f13acaf8ceb52cad97ef1716647c014f69bc41778d99a8583def97209"'
+ repoLastModified: Fri, 27 Sep 2024 23:59:23 GMT
foundInMaster: true
id: 0418f8afcd0196c648d1a46c0c5c20d1
v3_1_link: https://github.com/OpenAPITools/openapi-generator/issues/9083
@@ -1119,17 +1119,17 @@
repositoryId: 323665366
description: OpenAPI based HTTP Client code generator
created: '2020-12-22T15:35:49Z'
- updated: '2024-09-26T22:28:22Z'
+ updated: '2024-09-28T01:46:18Z'
language: C#
archived: false
- stars: 2855
+ stars: 2860
watchers: 43
forks: 194
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"e7cad298a3a3062fd019c5336d7749a6c4a0499370756204a7e3dafe024d0025"'
- repoLastModified: Thu, 26 Sep 2024 22:28:22 GMT
+ repoEtag: '"48bd4446db9f901dde403e6ffaac292d517a428fdf60caa8d8e856007387db4b"'
+ repoLastModified: Sat, 28 Sep 2024 01:46:18 GMT
foundInMaster: true
- source: https://openapi.tools/
name: FabriKt
@@ -1284,17 +1284,17 @@
repositoryId: 190430086
description: VisualStudio Code OpenAPI tools
created: '2019-06-05T16:27:53Z'
- updated: '2024-09-25T12:09:15Z'
+ updated: '2024-09-28T02:38:09Z'
language: TypeScript
archived: false
- stars: 326
+ stars: 327
watchers: 11
forks: 41
owner: 42Crunch
logo: https://avatars.githubusercontent.com/u/25365245?v=4
license: AGPL-3.0
- repoEtag: '"1223789166920f4db1986c724fdb1831bd8469279cfd56ee3deab50330f598b8"'
- repoLastModified: Wed, 25 Sep 2024 12:09:15 GMT
+ repoEtag: '"59408f9c65b05d5d8c54a297dcbf08bdb2e4dde6bdc9aa2b765dbe5fd5e79e39"'
+ repoLastModified: Sat, 28 Sep 2024 02:38:09 GMT
foundInMaster: true
id: 782ecbb10f1ff8ac9685e0ed24e52e58
v3_1: false
@@ -1359,17 +1359,17 @@
repositoryId: 19390712
description: Swagger Editor
created: '2014-05-02T22:47:10Z'
- updated: '2024-09-27T00:34:16Z'
+ updated: '2024-09-27T04:50:23Z'
language: JavaScript
archived: false
stars: 8886
watchers: 261
- forks: 2245
+ forks: 2246
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"648b388c72c467bfddf44c1e011a812786a30502bfd64bc36f779ed7ddc89b45"'
- repoLastModified: Fri, 27 Sep 2024 00:34:16 GMT
+ repoEtag: '"b42717410dae3906bc1b6ca7415d47ef722e7290b542608e0cd0a43138b606af"'
+ repoLastModified: Fri, 27 Sep 2024 04:50:23 GMT
foundInMaster: true
id: 951cf61d12c812ef9b201ad76b5d278d
v3_1: true
@@ -1522,7 +1522,7 @@
owner: Apicurio
logo: https://avatars.githubusercontent.com/u/28107283?v=4
license: Apache-2.0
- repoEtag: '"120b198934fa00d3840aa11003b8b795cda1316fc4e5993c7273524d8427be4e"'
+ repoEtag: '"b84b3525539508a6defa7149c0531296fa079ed426446017a739fcb91ebcb3e4"'
repoLastModified: Fri, 20 Sep 2024 12:41:38 GMT
foundInMaster: true
homepage: https://github.com/Apicurio/apicurio-studio
@@ -1729,17 +1729,17 @@
Turn any OpenAPI2/3 and Postman Collection file into an API server with
mocking, transformations and validations.
created: '2016-03-18T03:52:09Z'
- updated: '2024-09-26T12:25:51Z'
+ updated: '2024-09-27T14:45:54Z'
language: TypeScript
archived: false
- stars: 4243
+ stars: 4245
watchers: 55
forks: 345
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: Apache-2.0
- repoEtag: '"20e979ab48d4b30ebac77cb02e0eced87203bb6be6ef600f7dba85b4717c7dab"'
- repoLastModified: Thu, 26 Sep 2024 12:25:51 GMT
+ repoEtag: '"a5ba12665bf933291bb856b67a61d9d716207f0bac11738efe4df7b02371f0e0"'
+ repoLastModified: Fri, 27 Sep 2024 14:45:54 GMT
foundInMaster: true
useMasterProperties: true
id: 15aad8cd322242e03733b07f2a37890a
@@ -1772,17 +1772,17 @@
The open source, cloud native tool for API Mocking and Testing. Microcks
is a Cloud Native Computing Foundation sandbox project 🚀
created: '2015-02-23T15:46:09Z'
- updated: '2024-09-26T16:11:30Z'
+ updated: '2024-09-27T18:13:41Z'
language: Java
archived: false
- stars: 1358
+ stars: 1360
watchers: 22
forks: 212
owner: microcks
logo: https://avatars.githubusercontent.com/u/11051048?v=4
license: Apache-2.0
- repoEtag: '"b0020d9ab269dbdeeb2f6ceea1de176c4aeca63d4915fe1cf0a6df861fcc6105"'
- repoLastModified: Thu, 26 Sep 2024 16:11:30 GMT
+ repoEtag: '"4bab4366773bbe38e6623c84433e34d6f3f99addf5ec8a83ec478804ccf9c55a"'
+ repoLastModified: Fri, 27 Sep 2024 18:13:41 GMT
foundInMaster: true
id: 1c0e918b5a733b0f1726199e3ea101d6
- source: https://openapi.tools/
@@ -1978,17 +1978,17 @@
repositoryId: 741524414
description: ✨ Turn your OpenAPI specification into a beautiful TypeScript client
created: '2024-01-10T15:19:25Z'
- updated: '2024-09-26T15:55:35Z'
+ updated: '2024-09-27T14:17:30Z'
language: TypeScript
archived: false
- stars: 1057
+ stars: 1060
watchers: 7
forks: 88
owner: hey-api
logo: https://avatars.githubusercontent.com/u/164436240?v=4
license: NOASSERTION
- repoEtag: '"2a60d05e12812148f103423833a3432002411559b8da14fae6ab8783b4b632e2"'
- repoLastModified: Thu, 26 Sep 2024 15:55:35 GMT
+ repoEtag: '"a444d1af47ea799e04ec97f0aef9ce1d3e432dfbb59bbdce880518b86a4ed6cb"'
+ repoLastModified: Fri, 27 Sep 2024 14:17:30 GMT
category:
- Converters
- SDK
@@ -2024,17 +2024,17 @@
repositoryId: 26628954
description: HTTP web applications for Vert.x
created: '2014-11-14T08:15:20Z'
- updated: '2024-09-25T14:04:37Z'
+ updated: '2024-09-27T13:26:23Z'
language: Java
archived: false
- stars: 1106
+ stars: 1107
watchers: 82
forks: 531
owner: vert-x3
logo: https://avatars.githubusercontent.com/u/8124623?v=4
license: Apache-2.0
- repoEtag: '"c7483b2effc3407848cfce7d78ffc72a050c3a6038adc7db01c715e08ee58e81"'
- repoLastModified: Wed, 25 Sep 2024 14:04:37 GMT
+ repoEtag: '"e533d16948c1adecc8fd42497c6ca62d3497a8fcfc07f71a9310ba61ac05f444"'
+ repoLastModified: Fri, 27 Sep 2024 13:26:23 GMT
foundInMaster: true
v3_link: https://github.com/vert-x3/vertx-web/issues/1872
id: 2657bfe401922934e35bc38fbbef6b6d
@@ -2165,17 +2165,17 @@
🕸️ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream
changes in real-time.
created: '2015-03-06T21:46:05Z'
- updated: '2024-09-26T17:41:46Z'
+ updated: '2024-09-27T17:16:15Z'
language: TypeScript
archived: false
- stars: 8538
+ stars: 8540
watchers: 212
forks: 958
owner: api-platform
logo: https://avatars.githubusercontent.com/u/13420081?v=4
license: MIT
- repoEtag: '"3220e69ad8b464e6a053a17d28d018da5091c00dd3f298b335515acf16917d9a"'
- repoLastModified: Thu, 26 Sep 2024 17:41:46 GMT
+ repoEtag: '"db9449c355a5677f81665876ba68f5717e8e4bee9caf2a69d21e32b36fd5b2a7"'
+ repoLastModified: Fri, 27 Sep 2024 17:16:15 GMT
foundInMaster: true
id: d14f5904300aabf1ceef4660a6b3d57e
- source: https://openapi.tools/
@@ -2231,17 +2231,17 @@
repositoryId: 39904377
description: Open source API management platform
created: '2015-07-29T16:34:52Z'
- updated: '2024-09-25T05:24:56Z'
+ updated: '2024-09-27T04:21:39Z'
language: PHP
archived: false
- stars: 1852
+ stars: 1853
watchers: 58
forks: 221
owner: apioo
logo: https://avatars.githubusercontent.com/u/18172950?v=4
license: Apache-2.0
- repoEtag: '"fd5072459f5519ad4bfc3f6ae388688bce7672d809305a846470421ac6f7c1bb"'
- repoLastModified: Wed, 25 Sep 2024 05:24:56 GMT
+ repoEtag: '"4095ef2f586ba1b284b1e24448068713b75471c8a018f1973c053605ab9b8472"'
+ repoLastModified: Fri, 27 Sep 2024 04:21:39 GMT
foundInMaster: true
id: 5458da680012a142d20e79ac150bc4ab
- source:
@@ -2347,17 +2347,17 @@
repositoryId: 105440153
description: 'OpenAPI (Swagger) module for Nest framework (node.js) :earth_americas:'
created: '2017-10-01T12:20:24Z'
- updated: '2024-09-26T01:32:55Z'
+ updated: '2024-09-28T01:42:41Z'
language: TypeScript
archived: false
- stars: 1678
+ stars: 1680
watchers: 31
forks: 468
owner: nestjs
logo: https://avatars.githubusercontent.com/u/28507035?v=4
license: MIT
- repoEtag: '"38bf350ccc893a694617ab2990100449750d944d904d68b1e5c88bd669462e8b"'
- repoLastModified: Thu, 26 Sep 2024 01:32:55 GMT
+ repoEtag: '"bac7314f50d27550105c0a7a364a56b1965678a8ecb4647946a67f3f2894500b"'
+ repoLastModified: Sat, 28 Sep 2024 01:42:41 GMT
foundInMaster: true
id: 7071babd9853fc901c5decfa9b465b67
- source:
@@ -2562,7 +2562,7 @@
Port OpenAPI Specs to Postman Collections, inject test suite and run via
Newman 👨🏽🚀
created: '2021-05-05T10:42:29Z'
- updated: '2024-09-11T07:15:03Z'
+ updated: '2024-09-27T18:31:57Z'
language: TypeScript
archived: false
stars: 632
@@ -2571,8 +2571,8 @@
owner: apideck-libraries
logo: https://avatars.githubusercontent.com/u/73573473?v=4
license: Apache-2.0
- repoEtag: '"ce8bf831e176cf2c5fa140f34fc4eb15a8c9c6888a32854ecb8d15d754219525"'
- repoLastModified: Wed, 11 Sep 2024 07:15:03 GMT
+ repoEtag: '"ec4e978b2f7de974d3ef6deec454e84df207bb427940bc6ce0174f99685f1d90"'
+ repoLastModified: Fri, 27 Sep 2024 18:31:57 GMT
foundInMaster: true
id: a03cdb329f630a946a946dfe26802c43
- source: https://openapi.tools/
@@ -2600,17 +2600,17 @@
repositoryId: 537500924
description: Automated API Testing and Quality Assurance
created: '2022-09-16T14:48:21Z'
- updated: '2024-09-26T07:47:16Z'
+ updated: '2024-09-27T18:43:49Z'
language: TypeScript
archived: false
- stars: 1630
+ stars: 1632
watchers: 14
forks: 76
owner: stepci
logo: https://avatars.githubusercontent.com/u/61350067?v=4
license: MPL-2.0
- repoEtag: '"a97d9dd0377032f2965798deb14da744eed9a56b4911183ddd4ac1846adbb931"'
- repoLastModified: Thu, 26 Sep 2024 07:47:16 GMT
+ repoEtag: '"7c19d2c89e9811e5698fe8495c6e218eccfcf4b34d326cc18ef820ec42ec2b0c"'
+ repoLastModified: Fri, 27 Sep 2024 18:43:49 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -2681,17 +2681,17 @@
baked in support for OpenAPI (v3.1, v3.0, and v2.0), Arazzo v1.0, as well
as AsyncAPI v2.x.
created: '2018-08-15T18:43:18Z'
- updated: '2024-09-26T12:01:26Z'
+ updated: '2024-09-27T08:39:35Z'
language: TypeScript
archived: false
- stars: 2470
+ stars: 2471
watchers: 34
forks: 233
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: Apache-2.0
- repoEtag: '"6b60d94a0429d49d16dc4532650ec9b5a554909dc56b9d4a43abbe1ca063bee7"'
- repoLastModified: Thu, 26 Sep 2024 12:01:26 GMT
+ repoEtag: '"e4e81c5321396646eebe066b5c159b2dfd2da7c7417690007c9d3bb6cc79b4bb"'
+ repoLastModified: Fri, 27 Sep 2024 08:39:35 GMT
foundInMaster: true
id: fab3cc58898cd8953a30e43cc622e0fe
- source: https://openapi.tools/
@@ -2754,7 +2754,7 @@
owner: IBM
logo: https://avatars.githubusercontent.com/u/1459110?v=4
license: Apache-2.0
- repoEtag: '"8841665772e56a13d3570093206d4a8ec39e61aff03bbe46dacfd4977f628d20"'
+ repoEtag: '"824c495ccb48078093e278393dfcfeb7c0b1416003c3f15acb73240311faa305"'
repoLastModified: Wed, 25 Sep 2024 15:24:05 GMT
foundInMaster: true
id: 0bf7dd29a9d07232135bb00764928296
@@ -2786,7 +2786,7 @@
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"f911465d6f516762d30c9a1ff82f28f418b24444870790611c88bce4867c4c35"'
+ repoEtag: '"1a733dc21ac69212f328418eeb8b7fd1f8f32b6a07561f8d11067020f1420a34"'
repoLastModified: Thu, 26 Sep 2024 02:45:24 GMT
category:
- Description Validators
@@ -2900,11 +2900,11 @@
archived: false
stars: 114
watchers: 6
- forks: 13
+ forks: 14
owner: ahx
logo: https://avatars.githubusercontent.com/u/8669?v=4
license: MIT
- repoEtag: '"fd39453cb1cf797bb88eea3c30dd40f6ec42a0840f7ac345f50532ea0e14d5bb"'
+ repoEtag: '"f83f13cf23bfbab2a21988cce33a18725c7a6cfab45917a3a3ed332f04e54a0a"'
repoLastModified: Wed, 25 Sep 2024 15:48:00 GMT
foundInMaster: true
category: Data Validators
@@ -3001,17 +3001,17 @@
repositoryId: 25453221
description: Swagger 2.0 and OpenAPI 3.0 parser/validator
created: '2014-10-20T06:14:51Z'
- updated: '2024-09-25T20:36:56Z'
+ updated: '2024-09-27T11:29:50Z'
language: JavaScript
archived: false
- stars: 1096
+ stars: 1097
watchers: 18
forks: 154
owner: APIDevTools
logo: https://avatars.githubusercontent.com/u/43750074?v=4
license: MIT
- repoEtag: '"39374d73fcf1a2f3990ade8409c6e30746328c36420950bf1f2e75dc9ef62eaf"'
- repoLastModified: Wed, 25 Sep 2024 20:36:56 GMT
+ repoEtag: '"f2505bd980faf920ec735264620af2c6e62b11d1f926de7a94e755428d4d5c61"'
+ repoLastModified: Fri, 27 Sep 2024 11:29:50 GMT
category: Parsers
foundInMaster: true
name: APIDevTools/swagger-parser
@@ -3169,17 +3169,17 @@
OpenAPI 3.0 (and Swagger v2) implementation for Go (parsing, converting,
validation, and more)
created: '2017-06-11T20:12:06Z'
- updated: '2024-09-27T03:26:38Z'
+ updated: '2024-09-27T16:36:17Z'
language: Go
archived: false
- stars: 2562
+ stars: 2566
watchers: 24
forks: 426
owner: getkin
logo: https://avatars.githubusercontent.com/u/40365715?v=4
license: MIT
- repoEtag: '"f92043d31f54cd3b76e06efa4e19af4a9822c31468182e77af958b2fef043bb4"'
- repoLastModified: Fri, 27 Sep 2024 03:26:38 GMT
+ repoEtag: '"7a6442132a934ec2a5393fd40f6ccd890163d2ade96685b5e02ee3829b525eb1"'
+ repoLastModified: Fri, 27 Sep 2024 16:36:17 GMT
foundInMaster: true
v2: true
id: f6838ce08e87fa4c3dc813c97193ece3
@@ -3225,7 +3225,7 @@
owner: thephpleague
logo: https://avatars.githubusercontent.com/u/527621?v=4
license: MIT
- repoEtag: '"1066bdb5b5e243ac672b9dc97541c7f35cc7ead4cc33f7f3fdb7be26607c1cfd"'
+ repoEtag: '"7117ae2f37ece3e8773ae2fb6c4f25b2fcc7b7e26cf5b7bf7ed65d1f55595a37"'
repoLastModified: Sat, 14 Sep 2024 22:02:43 GMT
foundInMaster: true
v3_1_link: https://github.com/thephpleague/openapi-psr7-validator/issues/163
@@ -3286,17 +3286,17 @@
An object oriented approach to generating OpenAPI specs, implemented in
PHP.
created: '2018-09-26T20:11:56Z'
- updated: '2024-08-11T14:35:49Z'
+ updated: '2024-09-28T01:32:54Z'
language: PHP
archived: false
- stars: 224
+ stars: 225
watchers: 8
forks: 21
owner: goldspecdigital
logo: https://avatars.githubusercontent.com/u/31162012?v=4
license: MIT
- repoEtag: '"07bf8f7f35dff35d43e81966be2621318af6a8ff3253623f5e202cc2e1f48991"'
- repoLastModified: Sun, 11 Aug 2024 14:35:49 GMT
+ repoEtag: '"2cecfd523cd56de8aa5853088e489c67e516a31c10bdf9c50e709da91a3c2b30"'
+ repoLastModified: Sat, 28 Sep 2024 01:32:54 GMT
foundInMaster: true
id: b572581c8e045165d5121ee9c5bc361e
- source: https://openapi.tools/
@@ -3387,7 +3387,7 @@
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"5b6c10b4481c977fa7977af73f051bf4b19d8a2ab0ccd194f1c2dc0912e8135d"'
+ repoEtag: '"d28f7c76eda9a2e26ad9426cc4838c65dbdb0acd88642bfd2f5f4979b7c977d9"'
repoLastModified: Thu, 26 Sep 2024 15:51:13 GMT
foundInMaster: true
id: 1066748bb5b1f114a70856a29fee4aa7
@@ -3585,17 +3585,17 @@
repositoryId: 26726495
description: Swagger 2.0 implementation for go
created: '2014-11-16T20:13:15Z'
- updated: '2024-09-26T10:44:36Z'
+ updated: '2024-09-27T16:29:03Z'
language: Go
archived: false
- stars: 9484
+ stars: 9486
watchers: 120
- forks: 1247
+ forks: 1246
owner: go-swagger
logo: https://avatars.githubusercontent.com/u/10362650?v=4
license: Apache-2.0
- repoEtag: '"b9e6330ee10a0356e9d719e88d387f78995fd2b3c2fe5dd8fc33b9efe7e7b176"'
- repoLastModified: Thu, 26 Sep 2024 10:44:36 GMT
+ repoEtag: '"4f47b091a4e463ceb9a227cd2f47d28486ce1b7db45bd0c5422bab35abd2b545"'
+ repoLastModified: Fri, 27 Sep 2024 16:29:03 GMT
foundInMaster: true
id: ef136df9ffb40bb33ccbd76665d8f5b4
- source: https://openapi.tools/
@@ -3688,17 +3688,17 @@
repositoryId: 41822320
description: 'The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. '
created: '2015-09-02T19:11:57Z'
- updated: '2024-09-26T02:43:37Z'
+ updated: '2024-09-27T09:32:08Z'
language: C#
archived: false
- stars: 6708
+ stars: 6709
watchers: 167
- forks: 1241
+ forks: 1242
owner: RicoSuter
logo: https://avatars.githubusercontent.com/u/2603405?v=4
license: MIT
- repoEtag: '"8ec47cf153e55200d0257e36f6ebeb138fcb44d2e688547c577b5809ab14c445"'
- repoLastModified: Thu, 26 Sep 2024 02:43:37 GMT
+ repoEtag: '"944860d820ce481ee37114e4385ae844e03c756736639bdf6bda3654b6f57e75"'
+ repoLastModified: Fri, 27 Sep 2024 09:32:08 GMT
foundInMaster: true
id: 93636e95435e95198d7d15c9d507f0d3
- source: https://openapi.tools/
@@ -3761,17 +3761,17 @@
documentation, API clients and server stubs in different languages by
parsing your OpenAPI / Swagger definition.
created: '2011-07-06T14:26:48Z'
- updated: '2024-09-26T21:47:50Z'
+ updated: '2024-09-27T18:22:19Z'
language: Mustache
archived: false
- stars: 16922
+ stars: 16924
watchers: 412
forks: 6027
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"c5520d89582979fc59579cb4e11da8d98e1bca6a76fe2032cf28c56cc8e05805"'
- repoLastModified: Thu, 26 Sep 2024 21:47:50 GMT
+ repoEtag: '"ac525db3cdeaf9b375e4e3d4336ae83991a96e075ba0ec6fbffa332a113539b1"'
+ repoLastModified: Fri, 27 Sep 2024 18:22:19 GMT
foundInMaster: true
id: eda1e66e1b7805496e42f57851791a32
- source: https://openapi.tools/
@@ -3795,17 +3795,17 @@
OpenAPI (f.k.a Swagger) Specification code generator. Supports C#,
PowerShell, Go, Java, Node.js, TypeScript, Python
created: '2015-02-20T23:02:54Z'
- updated: '2024-09-26T03:22:23Z'
+ updated: '2024-09-27T05:10:53Z'
language: TypeScript
archived: false
- stars: 4597
+ stars: 4598
watchers: 894
forks: 733
owner: Azure
logo: https://avatars.githubusercontent.com/u/6844498?v=4
license: MIT
- repoEtag: '"8cc84d8af9dcefd31ebb3ca7bcec06d56a34e677d8763af8465ce9a81c3e0500"'
- repoLastModified: Thu, 26 Sep 2024 03:22:23 GMT
+ repoEtag: '"271d95e8e7ebfec5e0c946eb8262fa8b6ab2ca73448a9f30441b3546bd21258d"'
+ repoLastModified: Fri, 27 Sep 2024 05:10:53 GMT
foundInMaster: true
id: 648d92bca90bf58cd74407e0bcad2936
- source: https://openapi.tools/
@@ -3904,17 +3904,17 @@
repositoryId: 81140437
description: 🚀 Automatic SDK generation from an OpenAPI definition
created: '2017-02-06T22:31:07Z'
- updated: '2024-09-26T07:38:53Z'
+ updated: '2024-09-27T22:20:17Z'
language: TypeScript
archived: false
- stars: 571
+ stars: 570
watchers: 21
forks: 25
owner: readmeio
logo: https://avatars.githubusercontent.com/u/6878153?v=4
license: MIT
- repoEtag: '"ed84841cda1cb810cd06f4b18dc3c9de7ed045f37e438d74c734f79a3e027ed4"'
- repoLastModified: Thu, 26 Sep 2024 07:38:53 GMT
+ repoEtag: '"090128ed400ec3ab14f75e10ba5d6a458237cacf983eaa8071c8b49f97e69d55"'
+ repoLastModified: Fri, 27 Sep 2024 22:20:17 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -4189,17 +4189,17 @@
Black-box fuzzer that fuzzes APIs based on OpenAPI specification. Find
bugs for free!
created: '2020-12-23T22:33:38Z'
- updated: '2024-09-26T07:34:10Z'
+ updated: '2024-09-27T09:58:32Z'
language: Rust
archived: false
- stars: 534
+ stars: 533
watchers: 8
forks: 22
owner: matusf
logo: https://avatars.githubusercontent.com/u/18228995?v=4
license: AGPL-3.0
- repoEtag: '"a363967487413bf22ab78fcef425af9bc192602508ce4c6ec7fd56e75cdd79cd"'
- repoLastModified: Thu, 26 Sep 2024 07:34:10 GMT
+ repoEtag: '"2ae4c8e54b42f13068ff90741a803198eae7f1af32c7ad90219f0324eaee9c98"'
+ repoLastModified: Fri, 27 Sep 2024 09:58:32 GMT
id: 9e0191ba47403298459b30242dbfe9ad
- source: https://openapi.tools/
name: cats
@@ -4230,7 +4230,7 @@
configuration and no coding effort. Tests are self-healing and do not
require maintenance.
created: '2020-04-02T13:14:39Z'
- updated: '2024-09-26T07:45:14Z'
+ updated: '2024-09-27T18:08:08Z'
language: Java
archived: false
stars: 1169
@@ -4239,8 +4239,8 @@
owner: Endava
logo: https://avatars.githubusercontent.com/u/19396140?v=4
license: Apache-2.0
- repoEtag: '"58151726ef66c09376b7a3548444c7551a32e21963efd62d1742100a03151e6e"'
- repoLastModified: Thu, 26 Sep 2024 07:45:14 GMT
+ repoEtag: '"87843894604ff2fc30f5963320ff9b6096c160784f3e5ce81b7598ec5dab6bc2"'
+ repoLastModified: Fri, 27 Sep 2024 18:08:08 GMT
foundInMaster: true
- source: https://openapi.tools/
name: API Insights
@@ -4506,7 +4506,7 @@
Dev Proxy is an API simulator that helps you effortlessly test your app
beyond the happy path.
created: '2022-09-09T18:11:29Z'
- updated: '2024-09-26T12:11:50Z'
+ updated: '2024-09-27T06:53:23Z'
language: C#
archived: false
stars: 475
@@ -4515,8 +4515,8 @@
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"79caa3a3b17d800fa752212411b9204bd7254a87a614d0cdf98ec23e05fb9e96"'
- repoLastModified: Thu, 26 Sep 2024 12:11:50 GMT
+ repoEtag: '"414d6a69530085af4fc5322966fd86143c74b8ec6073f1bad0d787a7d7eeeb7a"'
+ repoLastModified: Fri, 27 Sep 2024 06:53:23 GMT
foundInMaster: true
- source: https://openapi.tools/
name: har2openapi
@@ -4686,17 +4686,17 @@
repositoryId: 381857226
description: null
created: '2021-06-30T23:29:49Z'
- updated: '2024-09-27T02:18:41Z'
+ updated: '2024-09-27T18:07:54Z'
language: Java
archived: false
- stars: 4339
+ stars: 4343
watchers: 45
- forks: 200
+ forks: 202
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"f47b41b8b482d4bdb771d0d51562da7080f715b0f1f9ae6e2e540e189249ded9"'
- repoLastModified: Fri, 27 Sep 2024 02:18:41 GMT
+ repoEtag: '"ab76c5b29559618873dd429ca3ecb9afe9cf4c3db902212aff8a0c2e938bff1f"'
+ repoLastModified: Fri, 27 Sep 2024 18:07:54 GMT
category:
- Auto Generators
- Server Implementations
@@ -4773,17 +4773,17 @@
Restish is a CLI for interacting with REST-ish HTTP APIs with some nice
features built-in
created: '2020-05-15T06:45:59Z'
- updated: '2024-09-24T18:45:02Z'
+ updated: '2024-09-28T03:14:11Z'
language: Go
archived: false
- stars: 888
+ stars: 895
watchers: 8
forks: 74
owner: danielgtaylor
logo: https://avatars.githubusercontent.com/u/106826?v=4
license: MIT
- repoEtag: '"da44e6c033fcefb5816b333e4c1dd1e81aeda325001ffd27f55eb540e62d612b"'
- repoLastModified: Tue, 24 Sep 2024 18:45:02 GMT
+ repoEtag: '"36ded1853a51db1a36580a6fbcde79fe783b0759178ed69409b6a48921ebda06"'
+ repoLastModified: Sat, 28 Sep 2024 03:14:11 GMT
foundInMaster: true
id: 22a8c610015b1b9d89af39221beabe66
v3_1: true
@@ -4817,7 +4817,7 @@
owner: codekie
logo: https://avatars.githubusercontent.com/u/1512840?v=4
license: MIT
- repoEtag: '"e7fd26432b1cdd7f98f526967dbb03c3e63fd39a13098a47b0ebb1c03029c2d4"'
+ repoEtag: '"93360a97465ee84ce1f59c7a5ca490e836c71556c34e12467cc834980e6dc781"'
repoLastModified: Wed, 28 Aug 2024 16:03:44 GMT
foundInMaster: true
id: 301e3f380f248daf345a88c8971d2a71
@@ -4875,13 +4875,13 @@
v3: true
repositoryMetadata:
base64Readme: >-
- IVtvcGVuYXBpLWZvcm1hdCBpY29uXSguL2Fzc2V0cy9vcGVuYXBpLWZvcm1hdC1sb2dvLnN2ZykKCjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktZm9ybWF0IiBhbHQ9IkxhdGVzdCBTdGFibGUgVmVyc2lvbiI+IVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb3BlbmFwaS1mb3JtYXQuc3ZnKTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1mb3JtYXQiIGFsdD0iVG90YWwgRG93bmxvYWRzIj4hW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvb3BlbmFwaS1mb3JtYXQuc3ZnKTwvYT4KCiMgb3BlbmFwaS1mb3JtYXQKCkZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IGJ5IG9yZGVyaW5nLCBmb3JtYXR0aW5nIGFuZCBmaWx0ZXJpbmcgZmllbGRzLgoKVGhlIG9wZW5hcGktZm9ybWF0IENMSSBjYW4gbG9hZCBhbiBPcGVuQVBJIGZpbGUsIHNvcnRzIHRoZSBPcGVuQVBJIGZpZWxkcyBieSBvcmRlcmluZyB0aGVtIGluIGEgaGllcmFyY2hpY2FsIG9yZGVyLCBmb3JtYXQgdGhlIGNhc2luZyBvZiB0aGUgZmllbGRzIGFuZApjYW4gb3V0cHV0IHRoZSBmaWxlIHdpdGggY2xlYW4gaW5kZW50aW5nLCB0byBlaXRoZXIgSlNPTiBvciBZQU1MLgoKTmV4dCB0byB0aGUgb3JkZXJpbmcgJiBmb3JtYXR0aW5nLCB0aGUgQ0xJIHByb3ZpZGVzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBmaWx0ZXIgZmllbGRzICYgcGFydHMgb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQgYmFzZWQgb24KZmxhZ3MsIHRhZ3MsIG1ldGhvZHMsIG9wZXJhdGlvbklEJ3MgYW5kIGV2ZW4gdW51c2VkIGNvbXBvbmVudHMuCgpUaGUgb3BlbmFwaS1mb3JtYXQgQ0xJIGhhcyB0aGUgb3B0aW9uIHRvIGNvbnZlcnQgYW4gT3BlbkFQSSAzLjAgZG9jdW1lbnQgdG8gYW4gT3BlbkFQSSB2ZXJzaW9uIDMuMS4KCiMjIFRhYmxlIG9mIGNvbnRlbnQKKiBbVXNlLWNhc2VzXSgjdXNlLWNhc2VzKQoqIFtGZWF0dXJlc10oI2ZlYXR1cmVzKQoqIFtPbmxpbmUgcGxheWdyb3VuZF0oI29ubGluZS1wbGF5Z3JvdW5kKQoqIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCiAgICArIFtMb2NhbCBJbnN0YWxsYXRpb24gKHJlY29tbWVuZGVkKV0oI2xvY2FsLWluc3RhbGxhdGlvbi1yZWNvbW1lbmRlZCkKICAgICsgW0dsb2JhbCBJbnN0YWxsYXRpb25dKCNnbG9iYWwtaW5zdGFsbGF0aW9uKQogICAgKyBbTlBYIHVzYWdlXSgjbnB4LXVzYWdlKQoqIFtDb21tYW5kIExpbmUgSW50ZXJmYWNlXSgjY29tbWFuZC1saW5lLWludGVyZmFjZSkKKiBbT3BlbkFQSSBmb3JtYXQgQ0xJIG9wdGlvbnNdKCNvcGVuYXBpLWZvcm1hdC1jbGktb3B0aW9ucykKKiBbT3BlbkFQSSBzb3J0IGNvbmZpZ3VyYXRpb24gb3B0aW9uc10oI29wZW5hcGktc29ydC1jb25maWd1cmF0aW9uLW9wdGlvbnMpCiogW09wZW5BUEkgZm9ybWF0dGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnNdKCNvcGVuYXBpLWZvcm1hdHRpbmctY29uZmlndXJhdGlvbi1vcHRpb25zKQoqIFtPcGVuQVBJIGZpbHRlciBvcHRpb25zXSgjb3BlbmFwaS1maWx0ZXItb3B0aW9ucykKKiBbT3BlbkFQSSBnZW5lcmF0ZSBlbGVtZW50c10oI29wZW5hcGktZ2VuZXJhdGUtb3B0aW9ucykKKiBbQ0xJIHNvcnQgdXNhZ2VdKCNjbGktc29ydC11c2FnZSkKKiBbQ0xJIGZpbHRlciB1c2FnZV0oI2NsaS1maWx0ZXItdXNhZ2UpCiogW0NMSSBnZW5lcmF0ZSB1c2FnZV0oI2NsaS1nZW5lcmF0ZS11c2FnZSkKKiBbQ0xJIGNhc2luZyB1c2FnZV0oI2NsaS1jYXNpbmctdXNhZ2UpCiogW0NMSSByZW5hbWUgdXNhZ2VdKCNjbGktcmVuYW1lLXVzYWdlKQoqIFtDTEkgY29udmVydFRvIHVzYWdlXSgjY2xpLWNvbnZlcnR0by11c2FnZSkKKiBbQ0xJIGNvbmZpZ3VyYXRpb24gdXNhZ2VdKCNjbGktY29uZmlndXJhdGlvbi11c2FnZSkKKiBbQ3JlZGl0c10oI2NyZWRpdHMpCgojIyBVc2UtY2FzZXMKCioqUHVibGljIGRvY3VtZW50YXRpb246KioKQW4gT3BlbkFQSSBkb2N1bWVudCBpcyBhIHNwZWNpZmljYXRpb24gdGhhdCBldm9sdmVzIGFuZCBjaGFuZ2VzLiBUbyBmYWNpbGl0YXRlIHdvcmtpbmcgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgcHVibGlzaGluZyB0aGUKZG9jdW1lbnQgYXMgcHVibGljIGRvY3VtZW50YXRpb24sIHlvdSB3YW50IHRvIGRlbGl2ZXIgYSBjbGVhbiBhbmQgc3RydWN0dXJlZCBzcGVjaWZpY2F0aW9uLiBPcGVuQVBJLWZvcm1hdCBoZWxwcyB5b3UgdG8Kb3JnYW5pemUgdGhlIGZpZWxkcyBieSBzb3J0aW5nLCBmb3JtYXR0aW5nIGFuZCBmaWx0ZXJpbmcgc3BlY2lmaWMgZWxlbWVudHMgZnJvbSB0aGUgT3BlbkFQSSBsaWtlIGludGVybmFsIGVuZHBvaW50cywgYmV0YSB0YWdzLCAuLi4KYW5kIGV2ZW4gdW51c2VkIHNjaGVtYXMsIGV4YW1wbGVzLCByZXNwb25zZXMsIC4uLiB3aXRoIGEgY2xlYW4gYW5kIG9wdGltaXplZCBPcGVuQVBJIGRvY3VtZW50IGFzIGEgcmVzdWx0LgoKKipNYWludGVuYW5jZToqKgpXaGVuIHdvcmtpbmcgb24gbGFyZ2UgT3BlbkFQSSBkb2N1bWVudHMgb3Igd2l0aCBtdWx0aXBsZSB0ZWFtIG1lbWJlcnMsIHRoZSBmaWxlIGNhbiBiZSBiZWNvbWUgbWVzc3kgYW5kIGRpZmZpY3VsdCB0bwpjb21wYXJlIGNoYW5nZXMuIEJ5IHNvcnRpbmcgJiBmb3JtYXR0aW5nIGZyb20gdGltZSB0byB0aW1lLCB0aGUgZmllbGRzIGFyZSBhbGwgb3JkZXJlZCBpbiBhIHN0cnVjdHVyZWQgbWFubmVyICYgcHJvcGVybHkgY2FzZWQsIHdoaWNoIHdpbGwgaGVscCB5b3UKdG8gbWFpbnRhaW4gdGhlIGZpbGUgd2l0aCBncmVhdGVyIGVhc2UuCgoqKkNJL0NEIHBpcGVsaW5lczoqKgpPcGVuQVBJLWZvcm1hdCBjYW4gYmUgdXNlZnVsIGluIENJL0NEIHBpcGVsaW5lcywgd2hlcmUgdGhlIE9wZW5BUEkgaXMgdXNlZCBhcyB0aGUgc291cmNlIGZvciBvdGhlciBkb2N1bWVudHMgbGlrZSBXZWIgZG9jdW1lbnRhdGlvbiwKUG9zdG1hbiBjb2xsZWN0aW9ucywgdGVzdCBzdWl0ZXMsIC4uLgoKIyMgRmVhdHVyZXMKCi0gW3hdIE9yZGVyIE9wZW5BUEkgZmllbGRzIGluIGEgZGVmYXVsdCBvcmRlcgotIFt4XSBPcmRlciBPcGVuQVBJIGZpZWxkcyBpbiBhIGN1c3RvbSBvcmRlcgotIFt4XSBPcmRlciBDb21wb25lbnRzIGVsZW1lbnRzIGJ5IGFscGhhYmV0Ci0gW3hdIEZvcm1hdCB0aGUgY2FzaW5nIChjYW1lbENhc2UsUGFzY2FsQ2FzZSwgLi4uKSBvZiBjb21wb25lbnQgZWxlbWVudHMKLSBbeF0gRmlsdGVyIE9wZW5BUEkgZmlsZXMgYmFzZWQgb24gbWV0aG9kcwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiBmbGFncwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiBmbGFncyB2YWx1ZXMKLSBbeF0gRmlsdGVyIE9wZW5BUEkgZmlsZXMgYmFzZWQgb24gdGFncwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiBvcGVyYXRpb25JRCdzCi0gW3hdIEZpbHRlciBPcGVuQVBJIGZpbGVzIGJhc2VkIG9uIG9wZXJhdGlvbnMgZGVmaW5pdGlvbgotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiByZXNwb25zZSBjb250ZW50LXR5cGVzCi0gW3hdIFN0cmlwIGZsYWdzIGZyb20gT3BlbkFQSSBmaWxlcwotIFt4XSBTdHJpcCB1bnVzZWQgY29tcG9uZW50cyBmcm9tIE9wZW5BUEkgZmlsZXMKLSBbeF0gR2VuZXJhdGUgT3BlbkFQSSBlbGVtZW50cyBmb3IgY29uc2lzdGVuY3kKLSBbeF0gQ29udmVydCBPcGVuQVBJIDMuMCBkb2N1bWVudHMgdG8gT3BlbkFQSSAzLjEgCi0gW3hdIFJlbmFtZSB0aGUgT3BlbkFQSSB0aXRsZQotIFt4XSBTdXBwb3J0IE9wZW5BUEkgZG9jdW1lbnRzIGluIEpTT04gZm9ybWF0Ci0gW3hdIFN1cHBvcnQgT3BlbkFQSSBkb2N1bWVudHMgaW4gWUFNTCBmb3JtYXQKLSBbeF0gRm9ybWF0IHZpYSBDTEkKLSBbeF0gRm9ybWF0IHZpYSBsb2NhbCBvciByZW1vdGUgY29uZmlnIGZpbGVzCi0gW3hdIFVzZSBhcyBhIE1vZHVsZQotIFt4XSBBbGlnbmVkIFlBTUwgcGFyc2luZyBzdHlsZSB3aXRoIFN0b3BsaWdodCBTdHVkaW8gc3R5bGUKLSBbeF0gU3VwcG9ydCBmb3IgT3BlbkFQSSAzLjAKLSBbeF0gU3VwcG9ydCBmb3IgT3BlbkFQSSAzLjEgKGJldGEpCi0gW3hdIE9ubGluZSBwbGF5Z3JvdW5kIChodHRwczovL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQudmVyY2VsLmFwcC8pCgojIyBPbmxpbmUgcGxheWdyb3VuZAoKVGhlIFtPcGVuQVBJLUZvcm1hdCBQbGF5Z3JvdW5kXShodHRwczovL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQudmVyY2VsLmFwcC8pIGlzIGEgd2ViLWJhc2VkIHRvb2wgZm9yIGZvcm1hdHRpbmcgYW5kIHNvcnRpbmcgT3BlbkFQSSBkb2N1bWVudHMsIHBvd2VyZWQgYnkgdGhlIG9wZW5hcGktZm9ybWF0IENMSS4KCjxhIGhyZWY9Imh0dHBzOi8vb3BlbmFwaS1mb3JtYXQtcGxheWdyb3VuZC52ZXJjZWwuYXBwLyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJPcGVuQVBJLWZvcm1hdCBQbGF5Z3JvdW5kIiByZWw9Im5vZm9sbG93Ij4KPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQvbWFpbi9hc3NldHMvb3BlbmFwaS1mb3JtYXQtcGxheWdyb3VuZC5wbmciIGFsdD0iT3BlbkFQSS1mb3JtYXQgUGxheWdyb3VuZCIgd2lkdGg9IjUwJSI+PGJyPgo8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdC9tYWluL2Fzc2V0cy9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLWRpZmYucG5nIiBhbHQ9Ik9wZW5BUEktZm9ybWF0IFBsYXlncm91bmQgRGlmZiB2aWV3ZXIiIHdpZHRoPSIyNSUiPgo8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdC9tYWluL2Fzc2V0cy9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLWZpbHRlci5wbmciIGFsdD0iT3BlbkFQSS1mb3JtYXQgUGxheWdyb3VuZCBGaWx0ZXIgVUkiIHdpZHRoPSIyNSUiPgo8L2E+CgpNb3JlIGluZm8gYWJvdXQgdGhlIGZlYXR1cmVzIGFuZCB1c2FnZSwgY2FuIGJlIGZvdW5kIGluIHRoZSBbcmVhZG1lXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQ/dGFiPXJlYWRtZS1vdi1maWxlI2ZlYXR1cmVzKS4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIExvY2FsIEluc3RhbGxhdGlvbiAocmVjb21tZW5kZWQpCgpXaGlsZSBwb3NzaWJsZSB0byBpbnN0YWxsIGdsb2JhbGx5LCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgYWRkIHRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgdG8gdGhlIGBub2RlX21vZHVsZXNgIGJ5IHVzaW5nOgoKYGBgc2hlbGwKJCBucG0gaW5zdGFsbCAtLXNhdmUgb3BlbmFwaS1mb3JtYXQKYGBgCgpvciB1c2luZyB5YXJuLi4uCgpgYGBzaGVsbAokIHlhcm4gYWRkIG9wZW5hcGktZm9ybWF0CmBgYAoKTm90ZSB0aGF0IHRoaXMgd2lsbCByZXF1aXJlIHlvdSB0byBydW4gdGhlIG9wZW5hcGktZm9ybWF0IENMSSB3aXRoIGBucHggb3BlbmFwaS1mb3JtYXQgeW91ci1vcGVuYXBpLWZpbGUueWFtbGAgb3IsIGlmCnlvdSBhcmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbnMgb2YgbnBtLCBgLi9ub2RlX21vZHVsZXMvLmJpbi9vcGVuYXBpLWZvcm1hdCB5b3VyLW9wZW5hcGktZmlsZS55YW1sYC4KCiMjIyBHbG9iYWwgSW5zdGFsbGF0aW9uCgpgYGBzaGVsbAokIG5wbSBpbnN0YWxsIC1nIG9wZW5hcGktZm9ybWF0CmBgYAoKIyMjIE5QWCB1c2FnZQoKVG8gZXhlY3V0ZSB0aGUgQ0xJIHdpdGhvdXQgaW5zdGFsbGluZyBpdCB2aWEgbnBtLCB1c2UgdGhlIG5weCBtZXRob2QKCmBgYHNoZWxsCiQgbnB4IG9wZW5hcGktZm9ybWF0IHlvdXItb3BlbmFwaS1maWxlLnlhbWwKYGBgCgojIyBDb21tYW5kIExpbmUgSW50ZXJmYWNlCgpgYGAKb3BlbmFwaS1mb3JtYXQuanMgPGlucHV0LWZpbGU+IC1vIFtvdXRwdXQtZmlsZV0gW29wdGlvbnNdCgpBcmd1bWVudHM6CiAgaW5wdXQtZmlsZSAgIHRoZSBPcGVuQVBJIGRvY3VtZW50IGNhbiBiZSBhIGxvY2FsIG9yIHJlbW90ZSBmaWxlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQKICBvdXRwdXQtZmlsZSAgdGhlIG91dHB1dCBmaWxlIGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgZWl0aGVyIGEgLmpzb24gb3IgLnlhbWwgZmlsZS4gCgpPcHRpb25zOgoKICAtLW91dHB1dCwgLW8gICAgICAgICAgU2F2ZSB0aGUgZm9ybWF0ZWQgT3BlbkFQSSBmaWxlIGFzIEpTT04vWUFNTCAgICAgICAgICAgICBbcGF0aF0KCiAgLS1zb3J0RmlsZSAgICAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgY3VzdG9tIE9wZW5BUEkgZmllbGRzIG9yZGVyaW5nICAgICAgW3BhdGhdCiAgLS1jYXNpbmdGaWxlICAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgY2FzaW5nIHJ1bGVzICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdCiAgLS1nZW5lcmF0ZUZpbGUgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgZ2VuZXJhdGUgcnVsZXMgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdCiAgLS1maWx0ZXJGaWxlICAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgZmlsdGVyIHJ1bGVzICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdCgogIC0tbm8tc29ydCAgICAgICAgICAgICBEb24ndCBzb3J0IHRoZSBPcGVuQVBJIGZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC0ta2VlcENvbW1lbnRzICAgICAgICBEb24ndCByZW1vdmUgdGhlIGNvbW1lbnRzIGZyb20gdGhlIE9wZW5BUEkgWUFNTCBmaWxlIFtib29sZWFuXQogIC0tc29ydENvbXBvbmVudHNGaWxlICBUaGUgZmlsZSB3aXRoIGNvbXBvbmVudHMgdG8gc29ydCBhbHBoYWJldGljYWxseSAgICAgICAgIFtwYXRoXQoKICAtLXJlbmFtZSAgICAgICAgICAgICAgUmVuYW1lIHRoZSBPcGVuQVBJIHRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KICAKICAtLWNvbnZlcnRUbyAgICAgICAgICAgY29udmVydCB0aGUgT3BlbkFQSSBkb2N1bWVudCB0byBPcGVuQVBJIHZlcnNpb24gMy4xICAgW3N0cmluZ10KCiAgLS1jb25maWdGaWxlICAgICAgICAgIFRoZSBmaWxlIHdpdGggdGhlIE9wZW5BUEktZm9ybWF0IENMSSBvcHRpb25zICAgICAgICAgICAgW3BhdGhdCgogIC0tbGluZVdpZHRoICAgICAgICAgICBNYXggbGluZSB3aWR0aCBvZiBZQU1MIG91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICBbbnVtYmVyXQoKICAtLWpzb24gICAgICAgICAgICAgICAgUHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBKU09OICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLXlhbWwgICAgICAgICAgICAgICAgUHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBZQU1MICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KCiAgLS1wbGF5Z3JvdW5kLCAtcCAgICAgIE9wZW4gY29uZmlnIGluIG9ubGluZSBwbGF5Z3JvdW5kCiAgLS1oZWxwICAgICAgICAgICAgICAgIFNob3cgaGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAgLS12ZXJzaW9uICAgICAgICAgICAgIE91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgLS12ZXJib3NlICAgICAgICAgICAgIE91dHB1dCBtb3JlIGRldGFpbHMgb2YgdGhlIGZpbHRlciBwcm9jZXNzICAgICAgICAgICAgICBbY291bnRdCmBgYAoKIyMgT3BlbkFQSSBmb3JtYXQgQ0xJIG9wdGlvbnMKCnwgUGFyYW1ldGVyICAgICAgICAgICAgfCBBbGlhcyAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5wdXQgdHlwZSAgIHwgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgfCBJbmZvICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgZmlsZSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgdGhlIE9wZW5BUEkgZG9jdW1lbnQgY2FuIGJlIGEgbG9jYWwgb3IgcmVtb3RlIGZpbGUgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXF1aXJlZCB8CnwgLS1vdXRwdXQgICAgICAgICAgICAgfCAtbyAgICAgICAgICAgIHwgc2F2ZSB0aGUgZm9ybWF0dGVkIE9wZW5BUEkgZmlsZSBhcyBKU09OL1lBTUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1zb3J0RmlsZSAgICAgICAgICAgfCAtcyAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBjdXN0b20gT3BlbkFQSSBmaWVsZHMgb3JkZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdFNvcnQuanNvbiAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1maWx0ZXJGaWxlICAgICAgICAgfCAtZiAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBmaWx0ZXIgc2V0dGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdEZpbHRlci5qc29uICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1jYXNpbmdGaWxlICAgICAgICAgfCAtayAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBjYXNpbmcgc2V0dGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1nZW5lcmF0ZUZpbGUgICAgICAgfCAtZyAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBnZW5lcmF0ZSBydWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1uby1zb3J0ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgZG9uJ3Qgc29ydCB0aGUgT3BlbkFQSSBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYm9vbGVhbiAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1rZWVwQ29tbWVudHMgICAgICAgfCAgICAgICAgICAgICAgIHwgZG9uJ3QgcmVtb3ZlIHRoZSBjb21tZW50cyBmcm9tIHRoZSBPcGVuQVBJIFlBTUwgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgYm9vbGVhbiAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1zb3J0Q29tcG9uZW50c0ZpbGUgfCAgICAgICAgICAgICAgIHwgc29ydCB0aGUgaXRlbXMgb2YgdGhlIGNvbXBvbmVudHMgKHNjaGVtYXMsIHBhcmFtZXRlcnMsIC4uLikgYnkgYWxwaGFiZXQgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdFNvcnRDb21wb25lbnRzLmpzb24gfCBvcHRpb25hbCB8CnwgLS1yZW5hbWUgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgcmVuYW1lIHRoZSBPcGVuQVBJIHRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1jb252ZXJ0VG8gICAgICAgICAgfCAgICAgICAgICAgICAgIHwgY29udmVydCB0aGUgT3BlbkFQSSBkb2N1bWVudCB0byBPcGVuQVBJIHZlcnNpb24gMy4xICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1jb25maWdGaWxlICAgICAgICAgfCAtYyAgICAgICAgICAgIHwgdGhlIGZpbGUgd2l0aCBhbGwgdGhlIGZvcm1hdCBjb25maWcgb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1saW5lV2lkdGggICAgICAgICAgfCAgICAgICAgICAgICAgIHwgbWF4IGxpbmUgd2lkdGggb2YgWUFNTCBvdXRwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyICAgICAgIHwgLTEgKEluZmluaXR5KSAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1qc29uICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgcHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBKU09OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS15YW1sICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgcHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBZQU1MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1wbGF5Z3JvdW5kICAgICAgICAgfCAtcCAgICAgICAgICAgIHwgb3BlbiBjb25maWcgaW4gb25saW5lIHBsYXlncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS12ZXJzaW9uICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgb3V0cHV0IHRoZSB2ZXJzaW9uIG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS12ZXJib3NlICAgICAgICAgICAgfCAtdiwgLXZ2LCAtdnZ2IHwgdmVyYm9zaXR5IHRoYXQgY2FuIGJlIGluY3JlYXNlZCwgd2hpY2ggd2lsbCBzaG93IG1vcmUgb3V0cHV0IG9mIHRoZSBwcm9jZXNzIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1oZWxwICAgICAgICAgICAgICAgfCBoICAgICAgICAgICAgIHwgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CgojIyBPcGVuQVBJIHNvcnQgY29uZmlndXJhdGlvbiBvcHRpb25zCgpUaGUgQ0xJIHdpbGwgc29ydCB0aGUgT3BlbkFQSSBkb2N1bWVudCBpbiB0aGUgZGVmaW5lZCBvcmRlciBsaWtlZCBkZWZpbmVkIHBlciBPcGVuQVBJIGtleS9maWVsZC9wcm9wZXJ0eS9lbGVtZW50LiBUaGUgZmllbGRzIHRoYXQgYXJlCm5vdCBzcGVjaWZpZWQgd2lsbCBrZWVwIHRoZWlyIG9yZGVyIGxpa2UgaXQgaXMgaW4gdGhlIG9yaWdpbmFsIE9wZW5BUEkgZG9jdW1lbnQsIHNvIG9ubHkgZGVmaW5lZCBmaWVsZHMgd2lsbCBiZQpyZS1vcmRlcmVkLgoKVGhlIGRlZmF1bHQgc29ydGluZyBvZiB0aGUgZGlmZmVyZW50IGZpZWxkcyBiYXNlZCBvbiB0aGUgZGVmaW5lZCBvcmRlciAobGlzdGVkIGluIHRoZSB0YWJsZSBiZWxvdyksIHdoaWNoIGlzIHN0b3JlZCBpbgp0aGUgW2RlZmF1bHRTb3J0Lmpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQvYmxvYi9tYWluL2RlZmF1bHRTb3J0Lmpzb24pIGZpbGUuCgojIyMgT3BlbkFQSSBzb3J0IGZpZWxkcwoKWW91IGNhbiBlYXNpbHkgbW9kaWZ5IHRoaXMgYnkgc3BlY2lmeWluZyB5b3VyIG93biBvcmRlcmluZyBwZXIga2V5LCB3aGljaCBjYW4gYmUgcGFzc2VkIG9uIHRvIHRoZSBDTEkgKHNlZSBiZWxvdyBmb3IgYW4KZXhhbXBsZSBvbiBob3cgdG8gZG8gdGhpcykuCgp8IEtleSAgICAgICAgIHwgT3JkZXJlZCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCByb290ICAgICAgICB8IC0gb3BlbmFwaTxicj5cLSBpbmZvPGJyPlwtIHNlcnZlcnM8YnI+XC0gcGF0aHM8YnI+XC0gY29tcG9uZW50czxicj5cLSB0YWdzPGJyPlwtIHgtdGFnR3JvdXBzPGJyPlwtIGV4dGVybmFsRG9jcyB8IFtvcGVuYXBpLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlbmFwaS1vYmplY3QpICAgICAgICAgICAgICAgICAgfAp8IGdldCAgICAgICAgIHwgLSBvcGVyYXRpb25JZDxicj5cLSBzdW1tYXJ5PGJyPlwtIGRlc2NyaXB0aW9uPGJyPlwtIHBhcmFtZXRlcnM8YnI+XC0gcmVxdWVzdEJvZHk8YnI+XC0gcmVzcG9uc2VzICAgICAgICAgICAgICAgIHwgW29wZXJhdGlvbk9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KSAgICAgICAgICAgICAgICB8CnwgcG9zdCAgICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcHV0ICAgICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcGF0Y2ggICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgZGVsZXRlICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcGFyYW1ldGVycyAgfCAtIG5hbWU8YnI+XC0gaW48YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcmVxdWlyZWQ8YnI+XC0gc2NoZW1hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcGFyYW1ldGVyT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXJhbWV0ZXJPYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcmVxdWVzdEJvZHkgfCAtIGRlc2NyaXB0aW9uPGJyPlwtIGhlYWRlcnM8YnI+XC0gY29udGVudDxicj5cLSBsaW5rcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcmVxdWVzdC1ib2R5LW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcmVxdWVzdC1ib2R5LW9iamVjdCkgICAgICAgICAgICAgfAp8IHJlc3BvbnNlcyAgIHwgLSBkZXNjcmlwdGlvbjxicj5cLSBoZWFkZXJzPGJyPlwtIGNvbnRlbnQ8YnI+XC0gbGlua3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3Jlc3BvbnNlcy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3Jlc3BvbnNlcy1vYmplY3QpICAgICAgICAgICAgICAgIHwKfCBjb250ZW50ICAgICB8IChCeSBhbHBoYWJldCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtyZXNwb25zZXMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNyZXNwb25zZXMtb2JqZWN0KSAgICAgICAgICAgICAgICB8CnwgY29tcG9uZW50cyAgfCAtIHBhcmFtZXRlcnM8YnI+XC0gc2NoZW1hcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSAgICAgICAgICAgICAgIHwKfCBzY2hlbWEgICAgICB8IC0gZGVzY3JpcHRpb248YnI+XC0gdHlwZTxicj5cLSBpdGVtczxicj5cLSBwcm9wZXJ0aWVzPGJyPlwtIGZvcm1hdDxicj5cLSBleGFtcGxlPGJyPlwtIGRlZmF1bHQgICAgICAgICAgICAgICAgICB8IFtzY2hlbWFPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3NjaGVtYU9iamVjdCkgICAgICAgICAgICAgICAgICAgIHwKfCBzY2hlbWFzICAgICB8IC0gZGVzY3JpcHRpb248YnI+XC0gdHlwZTxicj5cLSBpdGVtczxicj5cLSBwcm9wZXJ0aWVzPGJyPlwtIGZvcm1hdDxicj5cLSBleGFtcGxlPGJyPlwtIGRlZmF1bHQgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHByb3BlcnRpZXMgIHwgLSBkZXNjcmlwdGlvbjxicj5cLSB0eXBlPGJyPlwtIGl0ZW1zPGJyPlwtIGZvcm1hdDxicj5cLSBleGFtcGxlPGJyPlwtIGRlZmF1bHQ8YnI+XC0gZW51bSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgpIYXZlIGEgbG9vayBhdCB0aGUgZm9sZGVyIFt5YW1sLWRlZmF1bHRdKHRlc3QveWFtbC1kZWZhdWx0KSBhbmQgY29tcGFyZSB0aGUgIm91dHB1dC55YW1sIiAoc29ydGVkIGRvY3VtZW50KSB3aXRoIHRoZSAiaW5wdXQueWFtbCIgKG9yaWdpbmFsIGRvY3VtZW50KSwgdG8gc2VlIGhvdyBvcGVuYXBpLWZvcm1hdCBoYXZlIHNvcnRlZCB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCiMjIyBPcGVuQVBJIHNvcnQgUGF0aHMKCllvdSBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgcGF0aHMgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGFuZCBzb3J0IHRoZW0gYWxwaGFiZXRpY2FsbHkgKGBwYXRoYCkgb3IgYnkgdGhlIGZpcnN0IHRhZyBvZiB0aGUgZmlyc3QgbWV0aG9kIChgdGFnc2ApLgoKT3B0aW9ucyB0byBzb3J0IGJ5OgoKLSBgb3JpZ2luYWxgIChkZWZhdWx0KToga2VlcCB0aGUgb3JkZXIgYXMgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCi0gYHBhdGhgOiBvcmRlciB0aGUgcGF0aHMgYWxwaGFiZXRpY2FsbHkgYnkgdGhlIHBhdGggcGFydHMKLSBgdGFnc2A6IG9yZGVyIGJ5IHRoZSBmaXJzdCB0YWcgb2YgdGhlIGZpcnN0IG1ldGhvZAoKfCBLZXkgICAgICAgICB8IE9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuQVBJIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBzb3J0UGF0aHNCeSB8ICdvcmlnaW5hbCcgLyAncGF0aCcgLyAndGFncycgfCBbcGF0aHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXRocy1vYmplY3QpIHwKCgoKIyMgT3BlbkFQSSBmaWx0ZXIgb3B0aW9ucwoKQnkgc3BlY2lmeWluZyB0aGUgZGVzaXJlZCBmaWx0ZXIgdmFsdWVzIGZvciB0aGUgYXZhaWxhYmxlIGZpbHRlciB0eXBlcywgdGhlIG9wZW5hcGktZm9ybWF0IENMSSB3aWxsIHN0cmlwIG91dCBhbnkKbWF0Y2hpbmcgaXRlbSBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LiBZb3UgY2FuIGNvbWJpbmUgbXVsdGlwbGUgdHlwZXMgdG8gZmlsdGVyIG91dCBhIHJhbmdlIG9mIE9wZW5BUEkgaXRlbXMuCgpGb3IgbW9yZSBjb21wbGV4IHVzZS1jYXNlcywgd2UgY2FuIGFkdmlzZSB0aGUgZXhjZWxsZW50IGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29wZW5hcGktZmlsdGVyIHBhY2thZ2UsIHdoaWNoIGhhcwpleHRlbmRlZCBvcHRpb25zIGZvciBmaWx0ZXJpbmcgT3BlbkFQSSBkb2N1bWVudHMuCgp8IFR5cGUgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IEV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgbWV0aG9kcyAgICAgICAgICAgICAgICB8IE9wZW5BUEkgbWV0aG9kcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydnZXQnLCdwb3N0JywncHV0J10gICAgICAgICAgICAgICAgICAgICAgfAp8IGludmVyc2VNZXRob2RzICAgICAgICAgfCBPcGVuQVBJIG1ldGhvZHMgdGhhdCB3aWxsIGJlIGtlcHQgICAgICAgICAgIHwgYXJyYXkgICB8IFsnZ2V0JywncG9zdCcsJ3B1dCddICAgICAgICAgICAgICAgICAgICAgIHwKfCB0YWdzICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSB0YWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ3BldCcsJ3VzZXInXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW52ZXJzZVRhZ3MgICAgICAgICAgICB8IE9wZW5BUEkgdGFncyB0aGF0IHdpbGwgYmUga2VwdCAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydwZXQnLCd1c2VyJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IG9wZXJhdGlvbklkcyAgICAgICAgICAgfCBPcGVuQVBJIG9wZXJhdGlvbiBJRCdzICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsnZmluZFBldHNCeVN0YXR1cycsJ3VwZGF0ZVBldCddICAgICAgICAgIHwKfCBpbnZlcnNlT3BlcmF0aW9uSWRzICAgIHwgT3BlbkFQSSBvcGVyYXRpb24gSUQncyB0aGF0IHdpbGwgYmUga2VwdCAgICB8IGFycmF5ICAgfCBbJ2ZpbmRQZXRzQnlTdGF0dXMnLCd1cGRhdGVQZXQnXSAgICAgICAgICB8Cnwgb3BlcmF0aW9ucyAgICAgICAgICAgICB8IE9wZW5BUEkgb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydHRVQ6Oi9wZXRzJywnUFVUOjovcGV0cyddICAgICAgICAgICAgICAgfAp8IGZsYWdzICAgICAgICAgICAgICAgICAgfCBDdXN0b20gZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsneC1leGNsdWRlJywneC1pbnRlcm5hbCddICAgICAgICAgICAgICAgIHwKfCBpbnZlcnNlRmxhZ3MgICAgICAgICAgIHwgQ3VzdG9tIGZsYWdzIHRoYXQgd2lsbCBrZXB0ICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ3gtZXhjbHVkZScsJ3gtaW50ZXJuYWwnXSAgICAgICAgICAgICAgICB8CnwgZmxhZ1ZhbHVlcyAgICAgICAgICAgICB8IEN1c3RvbSBmbGFncyB3aXRoIGEgc3BlY2lmaWMgdmFsdWUgICAgICAgICAgfCBhcnJheSAgIHwgWyd4LXZlcnNpb246IDEuMCcsJ3gtdmVyc2lvbjogMy4wJ10gICAgICAgfAp8IGludmVyc2VGbGFnVmFsdWVzICAgICAgfCBDdXN0b20gZmxhZ3Mgd2l0aCBhIHZhbHVlIHRoYXQgd2lsbCBiZSBrZXB0IHwgYXJyYXkgICB8IFsneC12ZXJzaW9uOiAxLjAnLCd4LXZlcnNpb246IDMuMCddICAgICAgIHwKfCByZXNwb25zZUNvbnRlbnQgICAgICAgIHwgUmVzcG9uc2UgQ29udGVudCB0eXBlcyAgICAgICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ2FwcGxpY2F0aW9uL2pzb24nLCdhcHBsaWNhdGlvbi9odG1sJ10gICB8CnwgaW52ZXJzZVJlc3BvbnNlQ29udGVudCB8IFJlc3BvbnNlIENvbnRlbnQgdHlwZXMgdGhhdCB3aWxsIGtlcHQgICAgICAgfCBhcnJheSAgIHwgWydhcHBsaWNhdGlvbi9sZCtqc29uJ10gICAgICAgICAgICAgICAgICAgfAp8IHJlcXVlc3RDb250ZW50ICAgICAgICAgfCBSZXF1ZXN0IEJvZHkgQ29udGVudCB0eXBlcyAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsnYXBwbGljYXRpb24vanNvbicsJ2FwcGxpY2F0aW9uL2h0bWwnXSAgIHwKfCBpbnZlcnNlUmVxdWVzdENvbnRlbnQgIHwgUmVxdWVzdCBCb2R5IENvbnRlbnQgdHlwZXMgdGhhdCB3aWxsIGtlcHQgICB8IGFycmF5ICAgfCBbJ2FwcGxpY2F0aW9uL2xkK2pzb24nXSAgICAgICAgICAgICAgICAgICB8CnwgdW51c2VkQ29tcG9uZW50cyAgICAgICB8IFVudXNlZCBjb21wb25lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydleGFtcGxlcycsJ3NjaGVtYXMnXSAgICAgICAgICAgICAgICAgICAgfAp8IHN0cmlwRmxhZ3MgICAgICAgICAgICAgfCBDdXN0b20gZmxhZ3MgdGhhdCB3aWxsIGJlIHN0cmlwcGVkICAgICAgICAgIHwgYXJyYXkgICB8IFsneC1leGNsdWRlJywneC1pbnRlcm5hbCddICAgICAgICAgICAgICAgIHwKfCBwcmVzZXJ2ZUVtcHR5T2JqZWN0cyAgIHwgUHJlc2VydmUgZW1wdHkgb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICB8IGJvb2xlYW4gfCB0cnVlIE9SIFsnc2NoZW1hJ10gICAgICAgICAgICAgICAgICAgICAgICB8CnwgdGV4dFJlcGxhY2UgICAgICAgICAgICB8IFNlYXJjaCAmIHJlcGxhY2UgdmFsdWVzIHRvIHJlcGxhY2UgICAgICAgICAgfCBhcnJheSAgIHwgW3snc2VhcmNoRm9yJzonUGV0JywncmVwbGFjZVdpdGgnOidEb2cnfV0gfAoKU29tZSBtb3JlIGRldGFpbHMgb24gdGhlIGF2YWlsYWJsZSBmaWx0ZXIgdHlwZXM6CgojIyMgRmlsdGVyIC0gbWV0aG9kcy9pbnZlcnNlTWV0aG9kcwoKPT4gKiptZXRob2RzKio6IFJlZmVycyB0byB0aGUgW1BhdGggSXRlbSBPYmplY3RdKGh0dHA6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KQoKVGhpcyB3aWxsIHJlbW92ZSBhbGwgZmllbGRzIGFuZCBhdHRhY2hlZCBmaWVsZHMgdGhhdCBtYXRjaCB0aGUgdmVyYnMuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdAphbGwgYGdldGAsIGBwdXRgLCBgcG9zdGAgaXRlbXMgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHN1bW1hcnk6IEZpbmRzIFBldHMgYnkgc3RhdHVzCiAgICAgICAgcHV0OgogICAgICAgICAgICBzdW1tYXJ5OiBVcGRhdGUgYW4gZXhpc3RpbmcgcGV0CmBgYAoKPT4gKippbnZlcnNlTWV0aG9kcyoqOiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBpbnZlcnNlIGZpbHRlcmluZywgYnkga2VlcGluZyBvbmx5IHRoZSB2ZXJicyBkZWZpbmVkIGFuZCByZW1vdmUgYWxsIG90aGVyIHZlcmJzLgoKIyMjIEZpbHRlciAtIHRhZ3MKCj0+ICoqdGFncyoqOiBSZWZlcnMgdG8gdGhlICJ0YWdzIiBmaWVsZCBmcm9tIHRoZSAiT3BlcmF0aW9uCiAgT2JqZWN0IiBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QKClRoaXMgd2lsbCByZW1vdmUgYWxsIGZpZWxkcyBhbmQgYXR0YWNoZWQgZmllbGRzIHRoYXQgbWF0Y2ggdGhlIHRhZ3MuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhbGwKaXRlbXMgd2l0aCB0aGUgdGFncyBgcGV0YCBvciBgdXNlcmAgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIGV4YW1wbGU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIHB1dDoKICAgICAgICAgICAgdGFnczoKICAgICAgICAgICAgICAgIC0gcGV0CiAgICAgICAgICAgIHN1bW1hcnk6IFVwZGF0ZSBhbiBleGlzdGluZyBwZXQKYGBgCgo9PiAqKmludmVyc2VUYWdzKio6IFRoaXMgb3B0aW9uIGRvZXMgdGhlIGludmVyc2UgZmlsdGVyaW5nLCBieSBrZWVwaW5nIG9ubHkgdGhlIHRhZ3MgZGVmaW5lZCBhbmQgcmVtb3ZlIGFsbCBvdGhlciB0YWdzLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGlvbnMgd2l0aG91dCBhIHRhZ3MuCgojIyMgRmlsdGVyIC0gb3BlcmF0aW9uSWRzCgo9PiAqKm9wZXJhdGlvbklkcyoqOiBSZWZlcnMgdG8gdGhlICJvcGVyYXRpb25JZCIgZmllbGQgZnJvbSB0aGUgW09wZXJhdGlvbiBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI29wZXJhdGlvbk9iamVjdCkKClRoaXMgd2lsbCByZW1vdmUgc3BlY2lmaWMgZmllbGRzIGFuZCBhdHRhY2hlZCBmaWVsZHMgdGhhdCBtYXRjaCB0aGUgb3BlcmF0aW9uIElEJ3MuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkCm1lYW4gdGhhdCB0aGUgaXRlbSB3aXRoIG9wZXJhdGlvbklEIGBmaW5kUGV0c0J5U3RhdHVzYCB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpGb3IgZXhhbXBsZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgICBvcGVyYXRpb25JZDogZmluZFBldHNCeVN0YXR1cwpgYGAKCj0+ICoqaW52ZXJzZVRhZ3MqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgb3BlcmF0aW9uSWRzIGRlZmluZWQgYW5kIHJlbW92ZSBhbGwgb3RoZXIgb3BlcmF0aW9uSWRzLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGlvbnMgd2l0aG91dCBhbiBvcGVyYXRpb25JZC4KCiMjIyBGaWx0ZXIgLSBvcGVyYXRpb25zCgo9PiAqKm9wZXJhdGlvbnMqKjogUmVmZXJzIHRvIGEgY29tYmluYXRpb24gb2YgYSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggZnJvbSB0aGUgW1BhdGggT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXRocy1vYmplY3QpCiYgW1BhdGggaXRlbV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGF0aC1pdGVtLW9iamVjdCkKClRoaXMgd2lsbCByZW1vdmUgc3BlY2lmaWMgcGF0aCBpdGVtcyB0aGF0IG1hdGNoIHRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiBgUFVUOjovcGV0c2AuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkCm1lYW4gdGhhdCB0aGUgaXRlbSB3aXRoIHRoZSBwYXRoICcvcGV0cycgYW5kIG1ldGhvZCAnUFVUJyB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpGb3IgZXhhbXBsZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgICBzdW1tYXJ5OiBGaW5kcyBQZXRzIGJ5IHN0YXR1cwogICAgICAgIHB1dDoKICAgICAgICAgICAgc3VtbWFyeTogVXBkYXRlIGFuIGV4aXN0aW5nIHBldApgYGAKCkFuIGBvcGVyYXRpb25JZGAgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuIFRvIG9mZmVyIHN1cHBvcnQgZm9yIE9wZW5BUEkgZG9jdW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBvcGVyYXRpb25JZHMsIHdlIGhhdmUKYWRkZWQgdGhlIGBvcGVyYXRpb25gIGRlZmluaXRpb24gd2hpY2ggaXMgdGhlIHVuaXF1ZSBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoLCB3aXRoIGEgYDo6YCBzZXBhcmF0b3IKc3ltYm9sLgoKVGhpcyB3aWxsIGFsbG93IGZpbHRlcmluZyBmb3IgdmVyeSBzcGVjaWZpYyBPcGVuQVBJIGl0ZW1zLCB3aXRob3V0IHRoZSBuZWVkIG9mIGFkZGluZyBvcGVyYXRpb25JZHMgdG8gdGhlIE9wZW5BUEkKZG9jdW1lbnQuCgpUbyBmYWNpbGl0YXRlIG1hbmFnaW5nIHRoZSBmaWx0ZXJpbmcsIHdlIGhhdmUgaW5jbHVkZWQgd2lsZGNhcmQgb3B0aW9ucyBmb3IgdGhlIGBvcGVyYXRpb25zYCBvcHRpb24sIHN1cHBvcnRpbmcgdGhlCm1ldGhvZHMgJiBwYXRoIGRlZmluaXRpb25zLgoKUkVNQVJLOiBCZSBzdXJlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIHRoZSB0YXJnZXQgZGVmaW5pdGlvbi4KClN0cmljdCBtYXRjaGluZyBleGFtcGxlOiBgIkdFVDo6L3BldHMiYApUaGlzIHdpbGwgdGFyZ2V0IG9ubHkgdGhlICJHRVQiIG1ldGhvZCBhbmQgdGhlIHNwZWNpZmljIHBhdGggIi9wZXRzIgoKTWV0aG9kIHdpbGRjYXJkIG1hdGNoaW5nIGV4YW1wbGU6IGAiKjo6L3BldHMiYApUaGlzIHdpbGwgdGFyZ2V0IGFsbCBtZXRob2RzICgnZ2V0JywgJ3B1dCcsICdwb3N0JywgJ2RlbGV0ZScsICdvcHRpb25zJywgJ2hlYWQnLCAncGF0Y2gnLCAndHJhY2UnKSBhbmQgdGhlIHNwZWNpZmljCnBhdGggIi9wZXRzIgoKUGF0aCB3aWxkY2FyZCBtYXRjaGluZyBleGFtcGxlOiBgIkdFVDo6L3BldHMvKiJgClRoaXMgd2lsbCB0YXJnZXQgb25seSB0aGUgIkdFVCIgbWV0aG9kIGFuZCBhbnkgcGF0aCBtYXRjaGluZyBhbnkgZm9sZGVyIGJlaGluZCB0aGUgIi9wZXRzIiwgbGlrZSAiL3BldHMvMTIzIiBhbmQKIi9wZXRzLzEyMy9idXkiLgoKTWV0aG9kICYgUGF0aCB3aWxkY2FyZCBtYXRjaGluZyBleGFtcGxlOiBgIio6Oi9wZXRzLyoiYApBIGNvbWJpbmF0aW9uIG9mIHdpbGRjYXJkcyBmb3IgdGhlIG1ldGhvZCBhbmQgcGF0aCBwYXJ0cyBpcyBldmVuIHBvc3NpYmxlLgoKIyMjIEZpbHRlciAtIGZsYWdzL2ludmVyc2VGbGFncwoKPT4gKipmbGFncyoqOiBSZWZlcnMgdG8gYSBjdXN0b20gcHJvcGVydHkgdGhhdCBjYW4gYmUgc2V0IG9uIGFueSBmaWVsZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KClRoaXMgd2lsbCByZW1vdmUgYWxsIGZpZWxkcyBhbmQgYXR0YWNoZWQgZmllbGRzIHRoYXQgbWF0Y2ggdGhlIGZsYWdzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsCml0ZW1zIHdpdGggdGhlIGZsYWcgYHgtZXhjbHVkZWAgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIGV4YW1wbGU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgeC1leGNsdWRlOiB0cnVlCmBgYAoKPT4gKippbnZlcnNlRmxhZ3MqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgb3BlcmF0aW9ucywgY29tcG9uZW50cywgdGFncywgeC10YWdHcm91cHMgdGhhdCBtYXRjaCB0aGUgZmxhZyhzKS4gVGhpcyBpcyBhIHZlcnkgYWdncmVzc2l2ZSBvcHRpb24gdG8ga2VlcCBvbmx5IHRoZSBpdGVtcyB0aGF0IGFyZSBuZWVkZWQuCgojIyMgRmlsdGVyIC0gZmxhZ1ZhbHVlcy9pbnZlcnNlRmxhZ1ZhbHVlcwoKPT4gKipmbGFnVmFsdWVzKio6IFJlZmVycyB0byBhIGZsYWcsIGN1c3RvbSBwcm9wZXJ0eSB3aGljaCBjYW4gYmUgc2V0IG9uIGFueSBmaWVsZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCwgYW5kIHRoZSBjb21iaW5hdGlvbiB3aXRoIHRoZSB2YWx1ZSBmb3IgdGhhdCBmbGFnLgoKVGhpcyB3aWxsIHJlbW92ZSBhbGwgZmllbGRzIGFuZCBhdHRhY2hlZCBmaWVsZHMgdGhhdCBtYXRjaCB0aGUgZmxhZyB3aXRoIHRoZSBzcGVjaWZpYyB2YWx1ZS4KCkEgYGZsYWdWYWx1ZXNgIGV4YW1wbGU6CgpgYGB5YW1sCmZsYWdWYWx1ZXM6CiAgICAtIHgtdmVyc2lvbjogMS4wCiAgICAtIHgtdmVyc2lvbjogMy4wCmBgYApJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsIGl0ZW1zIHdpdGggdGhlIGZsYWcgYHgtdmVyc2lvbmAgdGhhdCBtYXRjaGVzIGB4LXZlcnNpb246IDEuMGAgT1IgYHgtdmVyc2lvbjogMy4wYCB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgeC12ZXJzaW9uOiAxLjAKYGBgCgpUaGUgZmlsdGVyIG9wdGlvbiBgZmxhZ1ZhbHVlc2AgYWxzbyB3aWxsIHJlbW92ZSBmbGFncyB0aGF0IGNvbnRhaW4gYW4gYXJyYXkgb2YgdmFsdWVzIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKQSBgZmxhZ1ZhbHVlc2AgZXhhbXBsZToKCmBgYHlhbWwKZmxhZ1ZhbHVlczoKICAgIC0geC12ZXJzaW9uczogMS4wCiAgICAtIHgtdmVyc2lvbnM6IDIuMApgYGAKCkluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhbGwgaXRlbXMgd2l0aCB0aGUgZmxhZyBgeC12ZXJzaW9uc2AsIHdoaWNoIGlzIGFuIGFycmF5LCB0aGF0IG1hdGNoIGB4LXZlcnNpb246IDEuMGAgT1IgYHgtdmVyc2lvbjogMy4wYCB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgeC12ZXJzaW9uczoKICAgICAgICAgICAgICAgIC0gMS4wCiAgICAgICAgICAgICAgICAtIDMuMAogICAgICAgICAgICAgICAgLSA1LjAKYGBgCgpIYXZlIGEgbG9vayBhdCBbZmxhZ1ZhbHVlc10odGVzdC95YW1sLWZpbHRlci1jdXN0b20tZmxhZ3N2YWx1ZS12YWx1ZSkgYW5kIFtmbGFnVmFsdWVzIGZvciBhcnJheSB2YWx1ZXNdKHRlc3QveWFtbC1maWx0ZXItY3VzdG9tLWZsYWdzdmFsdWUtYXJyYXkpIGZvciBhIHByYWN0aWNhbCBleGFtcGxlLgoKPT4gKippbnZlcnNlRmxhZ1ZhbHVlcyoqOiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBpbnZlcnNlIGZpbHRlcmluZywgYnkga2VlcGluZyBvbmx5IHRoZSBvcGVyYXRpb25zLCBjb21wb25lbnRzLCB0YWdzLCB4LXRhZ0dyb3VwcyB0aGF0IG1hdGNoIHRoZSBmbGFnIHdpdGggdGhlIHNwZWNpZmljIHZhbHVlLiBUaGlzIGlzIGEgdmVyeSBhZ2dyZXNzaXZlIG9wdGlvbiB0byBrZWVwIG9ubHkgdGhlIGl0ZW1zIHRoYXQgYXJlIG5lZWRlZC4KCiMjIyBGaWx0ZXIgLSByZXNwb25zZUNvbnRlbnQvaW52ZXJzZVJlc3BvbnNlQ29udGVudAoKPT4gKipSZXNwb25zZUNvbnRlbnQqKjogUmVmZXJzIHRvIHRoZSBbUmVzcG9uc2UgT2JqZWN0J3MgY29udGVudF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcmVzcG9uc2Utb2JqZWN0KQoKQSByZXNwb25zZXMgYGNvbnRlbnRgIGZpbHRlciBleGFtcGxlOgoKYGBgeWFtbApyZXNwb25zZUNvbnRlbnQ6CiAgLSBhcHBsaWNhdGlvbi9qc29uCmBgYAoKVGhpcyB3aWxsIHJlbW92ZSBhbGwgdGhlIGNvbnRlbnQgdGhhdCBtYXRjaCB0aGUgbWVkaWEgdHlwZXMgZnJvbSB0aGUgcmVzcG9uc2VzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsIGBhcHBsaWNhdGlvbi9qc29uYApjb250ZW50IGl0ZW1zIHdvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudAoKRXhhbXBsZSBiZWZvcmU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvcGV0OgogICAgcG9zdDoKICAgICAgdGFnczoKICAgICAgICAtIHBldAogICAgICBzdW1tYXJ5OiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBkZXNjcmlwdGlvbjogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgb3BlcmF0aW9uSWQ6IGFkZFBldAogICAgICB4LXZpc2liaWxpdHk6IHRydWUKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3NmdWwgb3BlcmF0aW9uCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi94bWw6CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwogICAgICAgICc0MDUnOgogICAgICAgICAgZGVzY3JpcHRpb246IEludmFsaWQgaW5wdXQKYGBgCgpFeGFtcGxlIGFmdGVyOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgL3BldDoKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXQKICAgICAgc3VtbWFyeTogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgZGVzY3JpcHRpb246IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIG9wZXJhdGlvbklkOiBhZGRQZXQKICAgICAgeC12aXNpYmlsaXR5OiB0cnVlCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBTdWNjZXNzZnVsIG9wZXJhdGlvbgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24veG1sOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCiAgICAgICAgJzQwNSc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogSW52YWxpZCBpbnB1dApgYGAKCj0+ICoqaW52ZXJzZVJlc3BvbnNlQ29udGVudCoqOiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBpbnZlcnNlIGZpbHRlcmluZywgYnkga2VlcGluZyBvbmx5IHRoZSBjb250ZW50IHdpdGggbWVkaWEgdHlwZXMgZGVmaW5lZCBhbmQgcmVtb3ZlIGFsbCBvdGhlciBjb250ZW50LgoKIyMjIEZpbHRlciAtIHJlcXVlc3RDb250ZW50L2ludmVyc2VSZXF1ZXN0Q29udGVudAoKPT4gKipyZXF1ZXN0Q29udGVudCoqOiBSZWZlcnMgdG8gdGhlIFtSZXF1ZXN0IEJvZHkgT2JqZWN0J3MgY29udGVudF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcmVxdWVzdC1ib2R5LW9iamVjdCkKCkEgIHJlcXVlc3QgYm9keSBgY29udGVudGAgZmlsdGVyIGV4YW1wbGU6CgpgYGB5YW1sCnJlcXVlc3RDb250ZW50OgogIC0gYXBwbGljYXRpb24vanNvbgpgYGAKClRoaXMgd2lsbCByZW1vdmUgYWxsIHRoZSBjb250ZW50IHRoYXQgbWF0Y2ggdGhlIG1lZGlhIHR5cGVzIGZyb20gdGhlIHJlcXVlc3QgYm9keS4gSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoaXMgd291bGQgbWVhbiB0aGF0IGFsbCBgYXBwbGljYXRpb24vanNvbmAKY29udGVudCBpdGVtcyB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9wZXQ6CiAgICBwb3N0OgogICAgICB0YWdzOgogICAgICAgIC0gcGV0CiAgICAgIHN1bW1hcnk6IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIGRlc2NyaXB0aW9uOiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBvcGVyYXRpb25JZDogYWRkUGV0CiAgICAgIHgtdmlzaWJpbGl0eTogdHJ1ZQogICAgICByZXF1ZXN0Qm9keTogCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi94bWw6CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwoKYGBgCgpFeGFtcGxlIGFmdGVyOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgL3BldDoKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXQKICAgICAgc3VtbWFyeTogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgZGVzY3JpcHRpb246IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIG9wZXJhdGlvbklkOiBhZGRQZXQKICAgICAgeC12aXNpYmlsaXR5OiB0cnVlCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24veG1sOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCmBgYAoKPT4gKippbnZlcnNlUmVxdWVzdENvbnRlbnQqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgY29udGVudCB3aXRoIG1lZGlhIHR5cGVzIGRlZmluZWQgYW5kIHJlbW92ZSBhbGwgb3RoZXIgY29udGVudCB0eXBlcyBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuCgojIyMgRmlsdGVyIC0gdW51c2VkQ29tcG9uZW50cwoKPT4gKip1bnVzZWRDb21wb25lbnRzKio6IFJlZmVycyB0byBhIGxpc3Qgb2YgW3JldXNhYmxlIGNvbXBvbmVudCB0eXBlc10oIGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSwgZnJvbSB3aGljaCB1bnVzZWQgaXRlbXMgd2lsbCBiZSByZW1vdmVkLgoKVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBzdHJpcCB0aGUgT3BlbkFQSSBkb2N1bWVudCBmcm9tIGFueSB1bnVzZWQgaXRlbXMgb2YgdGhlIHRhcmdldGVkIGBjb21wb25lbnRzYCB0eXBlcy4KQW55IGl0ZW0gaW4gdGhlIGxpc3Qgb2YgT3BlbkFQSSBgY29tcG9uZW50c2AgdGhhdCBpcyBub3QgcmVmZXJlbmNlZCBhcyBgJHJlZmAsIHdpbGwgZ2V0IG1hcmtlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKUkVNQVJLOiBXZSB3aWxsIHJlY3Vyc2l2ZWx5IHN0cmlwIGFsbCB1bnVzZWQgY29tcG9uZW50cywgd2l0aCBhIG1heGltdW0gZGVwdGggb2YgMTAgdGltZXMuIFRoaXMgbWVhbnMgdGhhdCAibmVzdGVkIiBjb21wb25lbnRzLCB0aGF0IGJlY29tZSB1bnVzZWQsIHdpbGwgYWxzbyBnZXQgcmVtb3ZlZAoKU3VwcG9ydGVkIGNvbXBvbmVudCB0eXBlcyB0aGF0IGNhbiBiZSBtYXJrZWQgYXMgInVudXNlZCI6Ci0gc2NoZW1hcwotIHBhcmFtZXRlcnMKLSBleGFtcGxlcwotIGhlYWRlcnMKLSByZXF1ZXN0Qm9kaWVzCi0gcmVzcG9uc2VzCgojIyMgRmlsdGVyIC0gdGV4dFJlcGxhY2UKCj0+ICoqdGV4dFJlcGxhY2UqKjogInNlYXJjaCAmIHJlcGxhY2UiIG9wdGlvbiB0byByZXBsYWNlIHRleHQgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgoKVGhlIGB0ZXh0UmVwbGFjZWAgcHJvdmlkZXMgYSAic2VhcmNoICYgcmVwbGFjZSIgbWV0aG9kLCB0aGF0IHdpbGwgc2VhcmNoIGZvciBhIHRleHQvd29yZC9jaGFyYWN0ZXJzIGluIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uLCBzdW1tYXJ5LCBVUkwgZmllbGRzIGFuZCByZXBsYWNlIGl0IHdpdGggYW5vdGhlciB0ZXh0L3dvcmQvY2hhcmFjdGVycy4KVGhpcyBpcyB2ZXJ5IHVzZWZ1bCB0byByZXBsYWNlIGRhdGEgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KCkEgYHRleHRSZXBsYWNlYCBleGFtcGxlOgoKYGBgeWFtbAp0ZXh0UmVwbGFjZToKICAgIC0gc2VhcmNoRm9yOiAnUGV0cycKICAgICAgcmVwbGFjZVdpdGg6ICdEb2dzJwogICAgLSBzZWFyY2hGb3I6ICdzd2FnZ2VyLmlvJwogICAgICByZXBsYWNlV2l0aDogJ29wZW5hcGlzLm9yZycKYGBgCgpUaGlzIHdpbGwgcmVwbGFjZSBhbGwgIlBldHMiIHdpdGggIkRvZ3MiICYgInN3YWdnZXIuaW8iIHdpdGggIm9wZW5hcGkub3JnIiBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCiMjIyBGaWx0ZXIgLSBzdHJpcEZsYWdzCgo9PiAqKnN0cmlwRmxhZ3MqKjogUmVmZXJzIHRvIGEgbGlzdCBvZiBjdXN0b20gcHJvcGVydGllcyB0aGF0IGNhbiBiZSBzZXQgb24gYW55IGZpZWxkIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKVGhlIGBzdHJpcEZsYWdzYCB3aWxsIHJlbW92ZSBvbmx5IHRoZSBmbGFncywgdGhlIGxpbmtlZCBwYXJlbnQgYW5kIHByb3BlcnRpZXMgd2lsbCByZW1haW4uIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhbGwKZmxhZ3MgYHgtZXhjbHVkZWAgaXRzZWxmIHdvdWxkIGJlIHN0cmlwcGVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgeC1leGNsdWRlOiB0cnVlCiAgICAgICAgICBzdW1tYXJ5OiBGaW5kcyBQZXRzIGJ5IHN0YXR1cwpgYGAKCkV4YW1wbGUgYWZ0ZXI6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgIHN1bW1hcnk6IEZpbmRzIFBldHMgYnkgc3RhdHVzCmBgYAoKIyMjIEZpbHRlciAtIHByZXNlcnZlRW1wdHlPYmplY3RzCgo9PiAqKnByZXNlcnZlRW1wdHlPYmplY3RzKio6IFJlZmVycyB0byBhbnkgcHJvcGVydGllcyBvZiB5b3VyIE9wZW5BUEkgZG9jdW1lbnQsIGZyb20gd2hpY2ggZW1wdHkgb2JqZWN0IHZhbHVlcyB3b3VsZCBiZSBrZXB0LgoKVGhlIGBwcmVzZXJ2ZUVtcHR5T2JqZWN0c2Agd2lsbCBwcmVzZXJ2ZSBhbGwgZW1wdHkgb2JqZWN0cyBpZiBzZXQgdG8gYHRydWVgLgoKWW91IGNhbiBhbHNvIHBhc3MgYSBsaXN0IG9mIGtleXMgZnJvbSB3aGljaCBwcmVzZXJ2ZSBlbXB0eSBvYmplY3RzLiBGb3IgaW5zdGFuY2UgYSBgWydzY2hlbWEnXWAgdmFsdWUgd291bGQgb25seSBwcmV2ZW50IHJlbW92YWwgb2YgZW1wdHkgb2JqZWN0cyBoYXZpbmcgZm9yIGtleSBgc2NoZW1hYC4KClJFTUFSSzogUGxlYXNlIG5vdGUgdGhhdCBvcGVuYXBpLWZvcm1hdCBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHJlbW92ZSBhbGwgZW1wdHkgb2JqZWN0cyBmcm9tIHlvdXIgZG9jdW1lbnQsIGV4Y2VwdCBmb3IgaXRlbXMgb2YgZXhhbXBsZXMsIHNlY3VyaXR5LCBzY2hlbWFzLCBkZWZhdWx0LCBvbmVPZiwgYWxsT2YuCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIHBvc3Q6CiAgICAgICAgICByZXF1ZXN0Qm9keToKICAgICAgICAgICAgZGVzY3JpcHRpb246IENyZWF0ZSBhIG5ldyBwZXQgaW4gdGhlIHN0b3JlCiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgIHNjaGVtYToge30KYGBgCgpFeGFtcGxlIGFmdGVyICh3aXRoIGBwcmVzZXJ2ZUVtcHR5T2JqZWN0czogZmFsc2VgKToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgcG9zdDoKICAgICAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgICBkZXNjcmlwdGlvbjogQ3JlYXRlIGEgbmV3IHBldCBpbiB0aGUgc3RvcmUKICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOiB7fQpgYGAKCiMjIE9wZW5BUEkgZm9ybWF0dGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMKClRvb2xzIGxpa2UgW3NwZWN0cmFsXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwpIG9yIFtzcGVjY3ldKGh0dHBzOi8vc3BlY2N5LmlvLyksIG9yIGFueSBvZiB0aGUgW2xpbnRpbmcgdG9vbHNdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vOC1vcGVuYXBpLWxpbnRlcnMvKSwgcHJvdmlkZSBhIG1hbm5lciB0byB2YWxpZGF0ZSAmIGxpbnQgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyB0byBiZSB1bmlmb3JtLiBUaGUgbGludGluZyB0b29sIGluZm9ybXMgYWJvdXQgdGhlIGluY29ycmVjdCB1c2FnZSBvZiBPcGVuQVBJIHByb3BlcnRpZXMgJiBpbmNvbnNpc3RlbnQgZmllbGQgbmFtZXMuClRoaXMgaXMgdmVyeSB1c2VmdWwgYW5kIGhlbHBzIHRvIGd1YXJkIHRoZSBxdWFsaXR5IG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uIFRoZXkgaW5mb3JtIHdoaWNoIGZpZWxkcyB0byBjb3JyZWN0IHNvIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gd2lsbCBjb21wbHkgd2l0aCBhbGwgdGhlIGRlZmluZWQgbGludGluZyBydWxlcy4KClRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgZm9ybWF0dGluZyBvcHRpb24gY2FuIGFzc2lzdCB3aXRoIGtlZXBpbmcgdGhlIGZpZWxkIG5hbWVzIGNvbnNpc3RlbnQgYnkgYXV0b21hdGljYWxseSBjaGFuZ2luZyB0aGUgY2FzaW5nIG9mIHRoZSBwcm9wZXJ0aWVzL2tleXMvbmFtZXMgZm9yIHRoZSBkaWZmZXJlbnQgZWxlbWVudHMgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuClRoZSBkZXNpcmVkIGNhc2luZyBjYW4gYmUgZGVmaW5lZCBwZXIgT3BlbkFQSSBrZXkvZWxlbWVudCAoc2VlIGxpc3QgYmVsb3cpLgpUaGUga2V5cyB0aGF0IGFyZSBub3Qgc3BlY2lmaWVkIHdpbGwga2VlcCB0aGVpciBjYXNpbmcgbGlrZSBpdCBpcyBpbiB0aGUgb3JpZ2luYWwgT3BlbkFQSSBkb2N1bWVudCwgc28gb25seSBmb3IgZGVmaW5lZCBmaWVsZHMsIHRoZSBjYXNpbmcgd2lsbCBiZSBjaGFuZ2VkLgoKfCBLZXkgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuQVBJIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBvcGVyYXRpb25JZCAgICAgICAgICAgICAgICB8IENoYW5nZXMgb3BlcmF0aW9uIElEJ3MgdGhhdCBhcmUgcGFydCBvZiB0aGUgT3BlcmF0aW9ucyBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uLW9iamVjdCl8CnwgcHJvcGVydGllcyAgICAgICAgICAgICAgICAgfCBDaGFuZ2VzIHByb3BlcnR5IGtleXMgb2YgdGhlIHNjaGVtYXMgb2YgdGhlIGlubGluZSByZXNwb25zZS9yZXF1ZXN0Qm9keSAmIGNvbXBvbmVudHMgICAgICAgICAgICAgICAgIHwgW3NjaGVtYU9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjc2NoZW1hT2JqZWN0KSB8CnwgcGFyYW1ldGVyc0Nvb2tpZSAgICAgICAgICAgfCBDaGFuZ2VzIHRoZSBjb29raWUgbmFtZSBvZiB0aGUgcGFyYW1ldGVycyBpbmxpbmUgJiBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3BhcmFtZXRlci1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3BhcmFtZXRlci1vYmplY3QpIHwKfCBwYXJhbWV0ZXJzUGF0aCAgICAgICAgICAgICB8IENoYW5nZXMgdGhlIHBhdGggbmFtZSBvZiB0aGUgcGFyYW1ldGVycyBpbmxpbmUgJiBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcGFyYW1ldGVyLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGFyYW1ldGVyLW9iamVjdCkgfAp8IHBhcmFtZXRlcnNIZWFkZXIgICAgICAgICAgIHwgQ2hhbmdlcyB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlIHBhcmFtZXRlcnMgaW5saW5lICYgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtwYXJhbWV0ZXItb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXJhbWV0ZXItb2JqZWN0KSB8CnwgcGFyYW1ldGVyc1F1ZXJ5ICAgICAgICAgICAgfCBDaGFuZ2VzIHRoZSBxdWVyeSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXJzIGlubGluZSAmIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3BhcmFtZXRlci1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3BhcmFtZXRlci1vYmplY3QpIHwKfCBjb21wb25lbnRzUGFyYW1ldGVyc0Nvb2tpZSB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgY29va2llIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBwYXJhbWV0ZXJzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHBhdGggbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHBhcmFtZXRlcnMgc2VjdGlvbnMgJiAiJHJlZiIgbGlua3MgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNQYXJhbWV0ZXJzUXVlcnkgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBxdWVyeSBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgcGFyYW1ldGVycyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzUGFyYW1ldGVyc0hlYWRlciB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgaGVhZGVyIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBwYXJhbWV0ZXJzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1NjaGVtYXMgICAgICAgICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHNjaGVtYSBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbnMgJiAiJHJlZiIgbGlua3MgICAgICAgICAgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNFeGFtcGxlcyAgICAgICAgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBleGFtcGxlIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzSGVhZGVycyAgICAgICAgICB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgaGVhZGVyIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1Jlc3BvbnNlcyAgICAgICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHJlc3BvbnNlIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNSZXF1ZXN0Qm9kaWVzICAgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSByZXF1ZXN0IGJvZHkgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzU2VjdXJpdHlTY2hlbWVzICB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgc2VjdXJpdHkgc2NoZW1lcyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CgojIyMgQ2FzaW5nIG9wdGlvbnMKCnwgQ2FzaW5nIHR5cGUgICAgICB8IENhc2luZyBhbGlhcyB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8Cnwg8J+QqiBjYW1lbENhc2UgICAgIHwgY2FtZWxDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBjYW1lbENhc2VgICAgICAgICAgICAgICAgICB8IGBvcGVuYXBpRm9ybWF0YCAgfAp8IPCfkajigI3wn4+rIFBhc2NhbENhc2UgICAgfCBQYXNjYWxDYXNlICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYFBhc2NhbENhc2VgICAgICAgICAgICAgICAgIHwgYE9wZW5hcGlGb3JtYXRgICB8Cnwg8J+lmSBrZWJhYi1jYXNlICAgIHwga2ViYWJDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBrZWJhYi1jYXNlYCAgICAgICAgICAgICAgICB8IGBvcGVuYXBpLWZvcm1hdGAgfAp8IPCfmoIgVHJhaW4tQ2FzZSAgICB8IFRyYWluQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgVHJhaW4tQ2FzZWAgICAgICAgICAgICAgICAgfCBgT3BlbmFwaS1Gb3JtYXRgIHwKfCDwn5CNIHNuYWtlX2Nhc2UgICAgfCBzbmFrZUNhc2UgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYHNuYWtlX2Nhc2VgICAgICAgICAgICAgICAgIHwgYG9wZW5hcGlfZm9ybWF0YCB8Cnwg8J+ViiBBZGFfQ2FzZSAgICAgIHwgQWRhQ2FzZSAgICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBBZGFfQ2FzZWAgICAgICAgICAgICAgICAgICB8IGBPcGVuYXBpX0Zvcm1hdGAgfAp8IPCfk6MgQ09OU1RBTlRfQ0FTRSB8IGNvbnN0YW50Q2FzZSB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgQ09OU1RBTlRfQ0FTRWAgICAgICAgICAgICAgfCBgT1BFTkFQSV9GT1JNQVRgIHwKfCDwn5GUIENPQk9MLUNBU0UgICAgfCBjb2JvbENhc2UgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYENPQk9MLUNBU0VgICAgICAgICAgICAgICAgIHwgYE9QRU5BUEktRk9STUFUYCB8Cnwg8J+TjSBEb3Qubm90YXRpb24gIHwgZG90Tm90YXRpb24gIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBEb3Qubm90YXRpb25gICAgICAgICAgICAgICB8IGBvcGVuYXBpLmZvcm1hdGAgfAp8IPCfm7AgU3BhY2UgY2FzZSAgICB8IHNwYWNlQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgU3BhY2UgY2FzZWAgKHdpdGggc3BhY2VzKSAgfCBgb3BlbmFwaSBmb3JtYXRgIHwKfCDwn4+bIENhcGl0YWwgQ2FzZSAgfCBjYXBpdGFsQ2FzZSAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYENhcGl0YWwgQ2FzZWAgKHdpdGggc3BhY2VzKXwgYE9wZW5hcGkgRm9ybWF0YCB8Cnwg8J+UoSBsb3dlciBjYXNlICAgIHwgbG93ZXJDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBsb3dlciBjYXNlYCAod2l0aCBzcGFjZXMpICB8IGBvcGVuYXBpIGZvcm1hdGAgfAp8IPCflKAgVVBQRVIgQ0FTRSAgICB8IHVwcGVyQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgVVBQRVIgQ0FTRWAgKHdpdGggc3BhY2VzKSAgfCBgT1BFTkFQSSBGT1JNQVRgIHwKCj4gUkVNQVJLOiBBbGwgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBzdHJpcHBlZCBkdXJpbmcgY29udmVyc2lvbiwgZXhjZXB0IGZvciB0aGUgYEBgIGFuZCBgJGAsIHNpbmNlIHRoZXkgY2FuIGJlIHBhcnQgb2YgdGhlIHF1ZXJ5IHN0cmluZ3MuCgpUaGUgY2FzaW5nIG9wdGlvbnMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBuYW5vIE5QTSBbY2FzZS1hbnl0aGluZ10oaHR0cHM6Ly9naXRodWIuY29tL21lc3F1ZWViL2Nhc2UtYW55dGhpbmcpIHBhY2thZ2UuCgojIyMgRm9ybWF0IGNhc2luZyAtIG9wZXJhdGlvbklkCgo9PiAqKm9wZXJhdGlvbklkKio6IFJlZmVycyB0byB0aGUgYG9wZXJhdGlvbklkYCBwcm9wZXJ0aWVzIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9ybWF0dGluZyBjYXNpbmcgZXhhbXBsZToKCmBgYHlhbWwKb3BlcmF0aW9uSWQ6IGtlYmFiLWNhc2UKYGBgCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICBvcGVyYXRpb25JZDogZ2V0UGV0cwpgYGAKCm9wZW5hcGktZm9ybWF0IHdpbGwgZm9ybWF0IHRoZSAiZ2V0UGV0cyIgZnJvbSB0aGUgb3JpZ2luYWwgY2FtZWxjYXNlIHRvIGtlYmFiLWNhc2UuCgpFeGFtcGxlIGFmdGVyOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwpwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgIG9wZXJhdGlvbklkOiBnZXQtcGV0cwpgYGAKCiMjIyBGb3JtYXQgY2FzaW5nIC0gbW9kZWwgJiBzY2hlbWEgcHJvcGVydGllcwoKPT4gKipwcm9wZXJ0aWVzKio6IFJlZmVycyB0byBhbGwgdGhlIHNjaGVtYSBwcm9wZXJ0aWVzLCB0aGF0IGFyZSBkZWZpbmVkIGlubGluZSBpbiB0aGUgcGF0aHMgcmVxdWVzdCBib2RpZXMgJiByZXNwb25zZXMgYW5kIHRoZSBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkZvcm1hdHRpbmcgY2FzaW5nIGV4YW1wbGU6CgpgYGB5YW1sCnByb3BlcnRpZXM6IHNuYWtlX2Nhc2UKYGBgCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKY29tcG9uZW50czoKICAgIHNjaGVtYXM6CiAgICAgICAgVXNlck1vZGVsOgogICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAxMAogICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IGpvaG5AZG9lLmNvbQogICAgICAgICAgICAgICAgZmlyc3ROYW1lOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IEpvaG4KYGBgCgpUaGUgQ0xJIHdpbGwgZm9ybWF0IGFsbCB0aGUgcHJvcGVydGllcyBsaWtlOiAiaWQiLCAidXNlcm5hbWUiLCAiZmlyc3ROYW1lIiBmcm9tIHRoZSBvcmlnaW5hbCBjYW1lbGNhc2UgdG8gc25ha2VfY2FzZS4KCkV4YW1wbGUgYWZ0ZXI6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCmNvbXBvbmVudHM6CiAgICBzY2hlbWFzOgogICAgICAgIFVzZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICBpZDoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogMTAKICAgICAgICAgICAgICAgIGVtYWlsX2FkZHJlc3M6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogam9obkBkb2UuY29tCiAgICAgICAgICAgICAgICBmaXJzdF9uYW1lOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IEpvaG4KYGBgCgojIyMgRm9ybWF0IGNhc2luZyAtIGNvbXBvbmVudCBrZXlzCgo9PiAqKmNvbXBvbmVudHNTY2hlbWFzIC8gY29tcG9uZW50c0V4YW1wbGVzIC8gY29tcG9uZW50c1BhcmFtZXRlcnNDb29raWUgLyBjb21wb25lbnRzUGFyYW1ldGVyc0hlYWRlciAvIGNvbXBvbmVudHNQYXJhbWV0ZXJzUXVlcnkgLyBjb21wb25lbnRzUGFyYW1ldGVyc1F1ZXJ5IC8gY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoIC8gY29tcG9uZW50c0hlYWRlcnMgLyBjb21wb25lbnRzUmVzcG9uc2VzIC8gY29tcG9uZW50c1JlcXVlc3RCb2RpZXMgLyBjb21wb25lbnRzU2VjdXJpdHlTY2hlbWVzKio6IFJlZmVycyB0byBhbGwgdGhlIG1vZGVsIG9iamVjdHMgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9ybWF0dGluZyBjYXNpbmcgZXhhbXBsZToKCmBgYHlhbWwKY29tcG9uZW50c1NjaGVtYXM6IFBhc2NhbENhc2UKYGBgCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAvb3JkZXJzOgogICAgICAgIGdldDoKICAgICAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvb3JkZXItbW9kZWwnCmNvbXBvbmVudHM6CiAgICBzY2hlbWFzOgogICAgICAgIHVzZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgb3JkZXItbW9kZWw6CiAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgIHBldF9tb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CmBgYAoKb3BlbmFwaS1mb3JtYXQgd2lsbCBmb3JtYXQgYWxsIHRoZSBjb21wb25lbnQga2V5cyBsaWtlOiAidXNlck1vZGVsIiwgIm9yZGVyLW1vZGVsIiwgInBldF9tb2RlbCIgdG8gUGFzY2FsQ2FzZSwgaW5jbHVkaW5nIGZvcm1hdHRpbmcgYWxsIHRoZSAiJHJlZiIgdXNlZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkV4YW1wbGUgYWZ0ZXI6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCnBhdGhzOgogICAgL29yZGVyczoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL09yZGVyTW9kZWwnCmNvbXBvbmVudHM6CiAgICBzY2hlbWFzOgogICAgICAgIFVzZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgT3JkZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgUGV0TW9kZWw6CiAgICAgICAgICAgIHR5cGU6IG9iamVjdApgYGAKCiMjIyBGb3JtYXQgY2FzaW5nIC0gcGFyYW1ldGVyIG5hbWVzCgo9PiAqKmNvbXBvbmVudHNQYXJhbWV0ZXJzQ29va2llIC8gY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoIC8gY29tcG9uZW50c1BhcmFtZXRlcnNRdWVyeSAvIGNvbXBvbmVudHNQYXJhbWV0ZXJzSGVhZGVyKio6IFJlZmVycyB0byAibmFtZSIgaW4gdGhlIFBhcmFtZXRlcnMgdHlwZXM6IFBhdGgsIFF1ZXJ5IG9yIEhlYWRlciwgd2hpY2ggY2FuIGJlIGRlZmluZWQgaW5saW5lIGluIHRoZSBQYXRoIG9yIGFzIGEgcmVmZXJlbmNlIGluIHRoZSBjb21wb25lbnRzIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9ybWF0dGluZyBjYXNpbmcgZXhhbXBsZToKCmBgYHlhbWwKY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoOiBrZWJhYi1jYXNlCmBgYAoKRXhhbXBsZSBiZWZvcmU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCnBhdGhzOgogICAgJy9wZXQve3BldElkfSc6CiAgICAgICAgZ2V0OgogICAgICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgICAgLSBuYW1lOiBwZXRJZAogICAgICAgICAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogSUQgb2YgcGV0IHRvIHJldHVybgogICAgICAgICAgICAgICAgLSAkcmVmOiAnIy9jb21wb25lbnRzL3BhcmFtZXRlcnMvTGltaXRQYXJhbScKY29tcG9uZW50czoKICAgIHBhcmFtZXRlcnM6CiAgICAgICAgTGltaXRQYXJhbToKICAgICAgICAgICAgbmFtZTogbGltaXRQYXJhbQogICAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgICAgZGVzY3JpcHRpb246IG1heCByZWNvcmRzIHRvIHJldHVybgpgYGAKClRoZSBDTEkgd2lsbCBmb3JtYXQgdGhlICJuYW1lIiBvZiB0aGUgcGFyYW1ldGVyczogUGF0aCwgUXVlcnkgb3IgSGVhZGVyIGxpa2U6ICJwZXRJZCIsICJsaW1pdFBhcmFtIiB0byBrZWJhYi1jYXNlIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRXhhbXBsZSBhZnRlcjoKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAnL3BldC97cGV0SWR9JzoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICAtIG5hbWU6IHBldC1pZAogICAgICAgICAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogSUQgb2YgcGV0IHRvIHJldHVybgogICAgICAgICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9MaW1pdFBhcmFtJwpjb21wb25lbnRzOgogICAgcGFyYW1ldGVyczoKICAgICAgICBMaW1pdFBhcmFtOgogICAgICAgICAgICBuYW1lOiBsaW1pdC1wYXJhbQogICAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgICAgZGVzY3JpcHRpb246IG1heCByZWNvcmRzIHRvIHJldHVybgpgYGAKCiMjIyBPcGVuQVBJIEdlbmVyYXRlIE9wdGlvbnMKClRoZSBPcGVuQVBJIGZvcm1hdHRpbmcgdG9vbCBhbGxvd3MgeW91IHRvIGdlbmVyYXRlIHZhcmlvdXMgZWxlbWVudHMgc3VjaCBhcyBgb3BlcmF0aW9uSWRgLCBhbmQgbW9yZSB1c2luZyBjdXN0b21pemFibGUgdGVtcGxhdGVzLiBUaGVzZSB0ZW1wbGF0ZXMgZW5hYmxlIGR5bmFtaWMgZ2VuZXJhdGlvbiBvZiBtaXNzaW5nIG9yIGluY29tcGxldGUgdmFsdWVzIGluIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhbmQgYWRoZXJlbmNlIHRvIHlvdXIgY29udmVudGlvbnMuCgpPcHRpb25zIGZvciBnZW5lcmF0aW5nIGVsZW1lbnRzOgoKLSBgb3BlcmF0aW9uSWRUZW1wbGF0ZWA6IEdlbmVyYXRlIHRoZSBgb3BlcmF0aW9uSWRgIHVzaW5nIHBsYWNlaG9sZGVycyBsaWtlIGA8bWV0aG9kPmAsIGA8cGF0aFBhcnQyPmAsIGV0Yy4KLSBgb3ZlcndyaXRlRXhpc3RpbmdgOiBTZXQgdG8gYHRydWVgIG9yIGBmYWxzZWAgdG8gY29udHJvbCB3aGV0aGVyIGV4aXN0aW5nIHZhbHVlcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gKGRlZmF1bHQ6IGBmYWxzZWApLgoKfCBLZXkgICAgICAgICAgICAgICAgIHwgT3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSBSZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBvcGVyYXRpb25JZFRlbXBsYXRlIHwgQ3VzdG9taXphYmxlIHdpdGggcGxhY2Vob2xkZXJzIHwgW29wZXJhdGlvbi1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI29wZXJhdGlvbi1vYmplY3QpIHwKfCBvdmVyd3JpdGVFeGlzdGluZyAgIHwgYHRydWVgIC8gYGZhbHNlYCAgICAgICAgICAgICAgIHwgTi9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKClNlZSBbQ0xJIGdlbmVyYXRlIHVzYWdlXSgjY2xpLWdlbmVyYXRlLXVzYWdlKSBmb3IgYW4gZXhhbXBsZSBhbmQgdGhlIGF2YWlsYWJsZSB0ZW1wbGF0ZSBvcHRpb25zLgoKIyMgQ0xJIHNvcnQgdXNhZ2UKCi0gRm9ybWF0IGEgc3BlYyB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IEpTT04gZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbgpgYGAKCi0gRm9ybWF0IGEgcmVtb3RlIHNwZWMgd2l0aCB0aGUgZGVmYXVsdCBzb3J0aW5nIGFuZCBzYXZlcyBpdCBhcyBhIG5ldyBKU09OIGZpbGUKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFpbi9leGFtcGxlcy92My4wL2FwaS13aXRoLWV4YW1wbGVzLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbgpgYGAKCi0gRm9ybWF0IGFuIE9wZW5BUEkgSlNPTiBkb2N1bWVudCB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IFlBTUwgZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS55YW1sCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCB1c2luZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWluaW5nIGFsbCB0aGUgb3B0aW9ucyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBwYXNzZWQgdmlhIHRoZSBDTEkuIAoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLnlhbWwgLS1jb25maWdGaWxlIG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbgpgYGAKClRoZSBmb3JtYXR0aW5nIHdpbGwgaGFwcGVuIGJhc2VkIG9uIGFsbCB0aGUgb3B0aW9ucyBzZXQgaW4gdGhlIGBvcGVuYXBpLWZvcm1hdC1vcHRpb25zLmpzb25gIGZpbGUuIEFsbCB0aGUKYXZhaWxhYmxlIFtPcGVuQVBJIGZvcm1hdCBvcHRpb25zXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0I29wZW5hcGktZm9ybWF0LW9wdGlvbnMpIGNhbiBiZSB1c2VkIGluIHRoZSBjb25maWcgZmlsZS4KCi0gRm9ybWF0IGFuIE9wZW5BUEkgZG9jdW1lbnQgd2l0aCB0aGUgZGVmYXVsdCBzb3J0aW5nIGFuZCBvdXRwdXQgaXQgYXMgSlNPTiB0byBTVERPVVQKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC0tanNvbgpgYGAKCi0gRm9ybWF0IGFuIE9wZW5BUEkgZG9jdW1lbnQgd2l0aCB0aGUgZGVmYXVsdCBzb3J0aW5nIGFuZCBvdXRwdXQgaXQgYXMgWUFNTCB0byBTVERPVVQKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC0teWFtbApgYGAKCi0gRm9ybWF0IGFuIE9wZW5BUEkgSlNPTiBkb2N1bWVudCB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmUgaXQgYXMgWUFNTAoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS55YW1sCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCBidXQgc2tpcCB0aGUgc29ydGluZyBhbmQgc2F2ZSBpdCBhcyBhIG5ldyBKU09OIGZpbGUKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIG9wZW5hcGktZm9ybWF0dGVkLmpzb24gLS1uby1zb3J0CmBgYAoKVGhpcyBzaG91bGQga2VlcCB0aGUgT3BlbkFQSSBmaWVsZHMgaW4gdGhlIHNhbWUgb3JkZXIuIFRoaXMgY2FuIGJlIG5lZWRlZCwgd2hlbiB5b3Ugb25seSB3YW50IHRvIGRvIGEgZmlsdGVyaW5nIG9yCnJlbmFtZSBhY3Rpb24uCgotIENvbnZlcnQgdGhlIE9wZW5BUEkgMy4wIGRvY3VtZW50IHRvIE9wZW5BUEkgMy4xIGJ1dCBza2lwIHRoZSBzb3J0aW5nIGFuZCBzYXZlIGl0IGFzIGEgbmV3IFlBTUwgZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLnlhbWwgLW8gb3BlbmFwaS0zLjEueWFtbCAtLW5vLXNvcnQgLS1jb252ZXJ0VG8gIjMuMSIKYGBgCgpUaGlzIHdpbGwgY29udmVydCB0aGUgT3BlbkFQSSAzLjAgZG9jdW1lbnQgaW50byB2ZXJzaW9uIDMuMSBvZiBPcGVuQVBJLCB3aXRob3V0IGFueSBvcmRlcmluZyBvciBmaWx0ZXJpbmcuCkR1cmluZyB0aGUgY29udmVyc2lvbiwgb3BlbmFwaS1mb3JtYXQgd2lsbCB0cmFuc2Zvcm0gYWxsIE9wZW5BUEkgMy4wIHByb3BlcnRpZXMgaW50byB0aGUgT3BlbkFQSSAzLjEgcHJvcGVydGllcywgYXMgZGVzY3JpYmVkIGluIHRoZSBbbWlncmF0aW9uIGd1aWRlIGZyb20KUGhpbCBTdHVyZ2Vvbl0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnL2Jsb2cvMjAyMS8wMi8xNi9taWdyYXRpbmctZnJvbS1vcGVuYXBpLTMtMC10by0zLTEtMCkuCgotIEZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50LCBpbmNsdWRpbmcgc29ydGluZyBhbGwgZWxlbWVudHMgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLXNvcnRDb21wb25lbnRzRmlsZSAuL3Rlc3QvanNvbi1zb3J0LWNvbXBvbmVudHMvY3VzdG9tU29ydENvbXBvbmVudHMuanNvbgpgYGAKClRoaXMgd2lsbCBzb3J0IGFsbCBlbGVtZW50cyBpbiB0aGUgY29tcG9uZW50cyAoIGNvbXBvbmVudHMvc2NoZW1hcywgY29tcG9uZW50cy9wYXJhbWV0ZXJzLCBjb21wb25lbnRzL2hlYWRlcnMsCmNvbXBvbmVudHMvcmVxdWVzdEJvZGllcywgY29tcG9uZW50cy9yZXNwb25zZXMsIC4uLikgc2VjdGlvbiBieSBhbHBoYWJldC4KCgojIyBDTEkgZmlsdGVyIHVzYWdlCgotIEZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IGJ5IGZpbHRlcmluZyBmaWVsZHMsIGRlZmF1bHQgc29ydGluZyBhbmQgc2F2ZXMgaXQgYXMgYSBuZXcgZmlsZQoKV2hlbiB5b3Ugd2FudCB0byBzdHJpcCBjZXJ0YWluIG1ldGhvZHMgLHRhZ3MsIG9wZXJhdGlvbklkcywgb3BlcmF0aW9ucywgZmxhZ3MgeW91IGNhbiBwYXNzIGEgYGZpbHRlckZpbGVgIHdoaWNoIGNvbnRhaW5zIHRoZQpzcGVjaWZpYyB2YWx1ZXMgZm9yIHRoZSBtZXRob2RzICx0YWdzLCBvcGVyYXRpb25JZHMsIG9wZXJhdGlvbnMsIGZsYWdzLgoKVGhpcyBjYW4gYmUgdXNlZnVsIHRvIGNvbWJpbmUgd2l0aCB0aGUgc29ydGluZywgdG8gZW5kIHVwIHdpdGggYW4gb3JkZXIgYW5kIGZpbHRlcmVkIE9wZW5BUEkgZG9jdW1lbnQuCgpleGFtcGxlOgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLWZpbHRlckZpbGUgY3VzdG9tRmlsdGVyLnlhbWwKYGBgCgp3aGVyZSB0aGUgYGN1c3RvbUZpbHRlci55YW1sYCB3b3VsZCBjb250YWluIGEgY29tYmluYXRpb24gb2YgYWxsIHRoZSBlbGVtZW50cyB5b3Ugd2FudCB0byBmaWx0ZXIgb3V0LgoKYGBgeWFtbApmbGFnczoKICAgIC0geC12aXNpYmlsaXR5CmZsYWdWYWx1ZXM6IFsgXQp0YWdzOiBbIF0Kb3BlcmF0aW9uSWRzOgogICAgLSBhZGRQZXQKICAgIC0gZmluZFBldHNCeVN0YXR1cwpgYGAKCiMjIENMSSBnZW5lcmF0ZSB1c2FnZQoKLSBHZW5lcmF0ZSBPcGVuQVBJIGVsZW1lbnRzIGFuZCBzYXZlcyBpdCBhcyBhIG5ldyBmaWxlCgpUaGUgT3BlbkFQSSBmb3JtYXR0aW5nIHRvb2wgYWxsb3dzIHlvdSB0byBnZW5lcmF0ZSBPcGVuQVBJIGVsZW1lbnRzLCBzdWNoIGFzIGBvcGVyYXRpb25JZGAsIGBzdW1tYXJ5YCwgYW5kIG1vcmUsIGJhc2VkIG9uIGNvbmZpZ3VyYWJsZSB0ZW1wbGF0ZXMuIFRoZSBnZW5lcmF0ZWQgZWxlbWVudHMgd2lsbCBiZSBzYXZlZCB0byB0aGUgb3V0cHV0IE9wZW5BUEkgZmlsZS4KCllvdSBjYW4gYWxzbyBjb21iaW5lIGdlbmVyYXRpb24gd2l0aCBmaWx0ZXJpbmcgYW5kIHNvcnRpbmcgdG8gY3VzdG9taXplIHRoZSBvdXRwdXQuCgpleGFtcGxlOgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLWdlbmVyYXRlRmlsZSBjdXN0b21HZW5lcmF0ZS55YW1sCmBgYAoKd2hlcmUgdGhlIGBjdXN0b21HZW5lcmF0ZS55YW1sYCB3b3VsZCBjb250YWluIGEgY29tYmluYXRpb24gb2YgYWxsIHRoZSBlbGVtZW50cyB5b3UgdG8gZ2VuZXJhdGUuCgpgYGB5YW1sCm9wZXJhdGlvbklkVGVtcGxhdGU6ICI8bWV0aG9kPl88cGF0aFBhcnQyPiIKb3ZlcndyaXRlRXhpc3Rpbmc6IGZhbHNlCmBgYAoKKipUZW1wbGF0ZSBPcHRpb25zOioqCkluIHRoZSBjdXN0b21HZW5lcmF0ZS55YW1sLCB5b3UgY2FuIGRlZmluZSB0ZW1wbGF0ZXMgZm9yIHZhcmlvdXMgT3BlbkFQSSBwcm9wZXJ0aWVzIHVzaW5nIGR5bmFtaWMgcGxhY2Vob2xkZXJzLiBUaGVzZSBwbGFjZWhvbGRlcnMgd2lsbCBiZSByZXBsYWNlZCBieSBhY3R1YWwgdmFsdWVzIGZyb20gdGhlIE9wZW5BUEkgb3BlcmF0aW9ucy4gQmVsb3cgaXMgYSBsaXN0IG9mIGF2YWlsYWJsZSBwbGFjZWhvbGRlcnMgYW5kIHdoYXQgdGhleSByZXByZXNlbnQ6CgotIGA8b3BlcmF0aW9uSWQ+YCA6IFRoZSBvcGVyYXRpb25JZCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IGxlYWRzQWxsCi0gYDxtZXRob2Q+YCA6IFRoZSBIVFRQIG1ldGhvZCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IEdFVAotIGA8cGF0aD5gIDogVGhlIHBhdGggb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLiBFeGFtcGxlOiAvY3JtL2xlYWRzCi0gYDxwYXRoUmVmPmAgOiBUaGUgcGF0aCByZWZlcmVuY2Ugb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLiBFeGFtcGxlOiBHRVQ6Oi9jcm0vbGVhZHMKLSBgPHRhZz5gIDogVGhlIGZpcnN0IHRhZyBuYW1lIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbi4gRXhhbXBsZTogTGVhZHMKLSBgPHRhZzE+YCA6IFRoZSBmaXJzdCB0YWcgbmFtZSBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IExlYWRzCi0gYDx0YWcyPmAgOiBUaGUgc2Vjb25kIHRhZyBuYW1lIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiwgaWYgbW9yZSB0aGFuIG9uZSB0YWcgaXMgZGVmaW5lZC4gRXhhbXBsZTogQ1JNCi0gYDx0YWduPmAgOiBUaGUgbnRoIHRhZyBuYW1lIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbiBpZiBtb3JlIHRoYW4gb25lIHRhZyBpcyBkZWZpbmVkLgotIGA8cGF0aFBhcnQxPmAgOiBUaGUgZmlyc3QgcGFydCBvZiB0aGUgcGF0aCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IGNybQotIGA8cGF0aFBhcnQyPmAgOiBUaGUgc2Vjb25kIHBhcnQgb2YgdGhlIHBhdGggb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLiBFeGFtcGxlOiBsZWFkcwotIGA8cGF0aFBhcnRuPmAgOiBUaGUgbnRoIHBhcnQgb2YgdGhlIHBhdGggb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLgoKWW91IGNhbiBhbHNvIGluY2x1ZGUgc3RhdGljIHRleHQgaW4gdGhlIHRlbXBsYXRlcywgd2hpY2ggd2lsbCBiZSBtZXJnZWQgd2l0aCB0aGUgZHluYW1pYyBwbGFjZWhvbGRlcnMuIEZvciBleGFtcGxlOgoKYGBgeWFtbApvcGVyYXRpb25JZFRlbXBsYXRlOiAiUHJlZml4XzxtZXRob2Q+XzxwYXRoUGFydDI+X0hhbmRsZXIiCmBgYAoKKipDb25maWd1cmF0aW9uIE9wdGlvbnM6KioKCi0gYG9wZXJhdGlvbklkVGVtcGxhdGVgOiBUZW1wbGF0ZSBmb3IgZ2VuZXJhdGluZyBgb3BlcmF0aW9uSWRgLiBVc2UgZHluYW1pYyBwbGFjZWhvbGRlcnMgbGlrZSA8bWV0aG9kPiBhbmQgPHBhdGhQYXJ0Mj4uCi0gYG92ZXJ3cml0ZUV4aXN0aW5nYDogU2V0IHRvIGB0cnVlYCBvciBgZmFsc2VgIHRvIGNvbnRyb2wgd2hldGhlciBleGlzdGluZyB2YWx1ZXMgc2hvdWxkIGJlIG92ZXJ3cml0dGVuLiBEZWZhdWx0OiBgZmFsc2VgLgoKIyMgQ0xJIGNhc2luZyB1c2FnZQoKLSBHZW5lcmF0ZSBPcGVuQVBJIGVsZW1lbnRzIGFuZCBzYXZlcyBpdCBhcyBhIG5ldyBmaWxlCgpUaGUgT3BlbkFQSSBmb3JtYXR0aW5nIHRvb2wgYWxsb3dzIHlvdSB0byBlbmZvcmNlIGNvbnNpc3RlbnQgY2FzaW5nIHN0eWxlcyBhY3Jvc3MgdmFyaW91cyBPcGVuQVBJIGVsZW1lbnRzLCBzdWNoIGFzIGBvcGVyYXRpb25JZGAsIGBzdW1tYXJ5YCwgYHBhcmFtZXRlcnNgLCBhbmQgbW9yZS4gVGhlIHNwZWNpZmllZCBjYXNpbmcgcHJlZmVyZW5jZXMgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSByZWxldmFudCBlbGVtZW50cyBhbmQgc2F2ZWQgdG8gdGhlIG91dHB1dCBPcGVuQVBJIGZpbGUuCgpleGFtcGxlOgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLWNhc2luZ0ZpbGUgY3VzdG9tQ2FzaW5nLnlhbWwKYGBgCgp3aGVyZSB0aGUgYGN1c3RvbUNhc2luZy55YW1sYCB3b3VsZCBjb250YWluIGEgY2FzaW5nIHByZWZlcmVuY2VzIGZvciB0aGUgc3BlY2lmaWVkIG9mIHRoZSBlbGVtZW50cy4KCkluIHRoaXMgZXhhbXBsZSwgdGhlIGN1c3RvbUNhc2luZy55YW1sIGZpbGUgd291bGQgY29udGFpbiB0aGUgZGVzaXJlZCBjYXNpbmcgcHJlZmVyZW5jZXMgZm9yIHNwZWNpZmljIE9wZW5BUEkgZWxlbWVudHMuCgpgYGB5YW1sCm9wZXJhdGlvbklkOiBzbmFrZV9jYXNlCnByb3BlcnRpZXM6IGNhbWVsQ2FzZQoKcGFyYW1ldGVyc1F1ZXJ5OiBrZWJhYi1jYXNlCnBhcmFtZXRlcnNIZWFkZXI6IGtlYmFiLWNhc2UKcGFyYW1ldGVyc1BhdGg6IHNuYWtlX2Nhc2UKCmNvbXBvbmVudHNFeGFtcGxlczogUGFzY2FsQ2FzZQpjb21wb25lbnRzU2NoZW1hczogY2FtZWxDYXNlCmNvbXBvbmVudHNIZWFkZXJzOiBrZWJhYi1jYXNlCmNvbXBvbmVudHNSZXNwb25zZXM6IHNuYWtlX2Nhc2UKY29tcG9uZW50c1JlcXVlc3RCb2RpZXM6IHNuYWtlX2Nhc2UKY29tcG9uZW50c1NlY3VyaXR5U2NoZW1lczogUGFzY2FsQ2FzZQoKY29tcG9uZW50c1BhcmFtZXRlcnNRdWVyeTogc25ha2VfY2FzZQpjb21wb25lbnRzUGFyYW1ldGVyc0hlYWRlcjoga2ViYWItY2FzZQpjb21wb25lbnRzUGFyYW1ldGVyc1BhdGg6IGNhbWVsQ2FzZQpgYGAKCioqQ2FzaW5nIE9wdGlvbnM6KioKSW4gdGhlIGN1c3RvbUNhc2luZy55YW1sLCB5b3UgY2FuIGRlZmluZSB0aGUgY2FzaW5nIHN0eWxlIGZvciB2YXJpb3VzIE9wZW5BUEkgcHJvcGVydGllcywgYWxsb3dpbmcgeW91IHRvIGN1c3RvbWl6ZSB0aGUgYXBwZWFyYW5jZSBvZiB5b3VyIGRvY3VtZW50IGNvbnNpc3RlbnRseS4KCi0gYG9wZXJhdGlvbklkYDogRGVmaW5lcyB0aGUgY2FzaW5nIGZvciBvcGVyYXRpb24gSURzLiBFeGFtcGxlOiBzbmFrZV9jYXNlLCBQYXNjYWxDYXNlLCBvciBjYW1lbENhc2UuCi0gYHByb3BlcnRpZXNgOiBTZXRzIHRoZSBjYXNpbmcgZm9yIHByb3BlcnRpZXMgd2l0aGluIGNvbXBvbmVudHMuIEV4YW1wbGU6IGNhbWVsQ2FzZS4KLSBgcGFyYW1ldGVyc1F1ZXJ5YCwgYHBhcmFtZXRlcnNIZWFkZXJgLCBgcGFyYW1ldGVyc1BhdGhgOiBEZWZpbmUgZGlmZmVyZW50IGNhc2luZyBzdHlsZXMgZm9yIHBhcmFtZXRlcnMgYmFzZWQgb24gdGhlaXIgbG9jYXRpb24gKHF1ZXJ5LCBoZWFkZXIsIHBhdGgpLiBFeGFtcGxlOiBzbmFrZV9jYXNlLCBrZWJhYi1jYXNlLgotIGFuZCBtYW55IG1vcmUKClNlZSBbT3BlbkFQSSBmb3JtYXR0aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uc10oI29wZW5hcGktZm9ybWF0dGluZy1jb25maWd1cmF0aW9uLW9wdGlvbnMpIGZvciB0aGUgZnVsbCBsaXN0IG9mIGNhc2luZyBvcHRpb25zCgojIyBDTEkgcmVuYW1lIHVzYWdlCgotIEZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IGJ5IGNoYW5naW5nIHRoZSB0aXRsZSBhbmQgc2F2ZXMgaXQgYXMgYSBuZXcgSlNPTiBmaWxlCgpEdXJpbmcgQ0kvQ0QgcGlwZWxpbmVzLCB5b3UgbWlnaHQgd2FudCB0byBjcmVhdGUgZGlmZmVyZW50IHJlc3VsdHMgb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQuIEhhdmluZyB0aGUgb3B0aW9uIHRvIHJlbmFtZQp0aGVtIG1pZ2h0IG1ha2UgaXQgZWFzaWVyIHRvIHdvcmsgd2l0aCB0aGUgcmVzdWx0cywgc28gdGhhdCBpcyB3aHkgd2UgcHJvdmlkZSB0aGlzIGNvbW1hbmQgb3B0aW9uLgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS5qc29uIC0tcmVuYW1lICJPcGVuQVBJIFBldHN0b3JlIC0gT3BlbkFQSSAzLjAiCmBgYAoKd2hpY2ggcmVzdWx0cyBpbgoKKipiZWZvcmUqKgoKYGBganNvbgp7CiAgICAib3BlbmFwaSI6ICIzLjAuMiIsCiAgICAiaW5mbyI6IHsKICAgICAgICAidGl0bGUiOiAiUGV0c3RvcmUgLSBPcGVuQVBJIDMuMCIsCmBgYAoKKiphZnRlcioqCgpgYGBqc29uCnsKICAgICJvcGVuYXBpIjogIjMuMC4yIiwKICAgICJpbmZvIjogewogICAgICAgICJ0aXRsZSI6ICJPcGVuQVBJIFBldHN0b3JlIC0gT3BlbkFQSSAzLjAiLApgYGAKCiMjIENMSSBjb252ZXJ0VG8gdXNhZ2UKCj4g8J+PlyBCRVRBIE5PVElDRTogVGhpcyBmZWF0dXJlIGlzIGNvbnNpZGVyZWQgQkVUQSBzaW5jZSB3ZSBhcmUgaW52ZXN0aWdhdGluZyB0aGUgY29uZmlndXJhdGlvbiBzeW50YXggYW5kIGV4dHJhIGZvcm1hdHRpbmcvY2FzaW5nIGNhcGFiaWxpdGllcy4KCi0gRm9ybWF0ICYgY29udmVydCB0aGUgT3BlbkFQSSBkb2N1bWVudCB0byBPcGVuQVBJIHZlcnNpb24gMy4xCgpvcGVuYXBpLWZvcm1hdCBjYW4gaGVscCB5b3UgdG8gdXBncmFkZSB5b3VyIGN1cnJlbnQgT3BlbkFQSSAzLjAueCBkb2N1bWVudCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gT3BlbkFQSSAzLjEuCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLTMuMS5qc29uIC0tY29udmVydFRvICIzLjEiCmBgYAoKd2hpY2ggcmVzdWx0cyBpbiBhbGwgdGhlIGNoYW5nZXMgZGVzY3JpYmVkIGluIHRoZSBbbWlncmF0aW9uIGd1aWRlIGZyb20gUGhpbCBTdHVyZ2Vvbl0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnL2Jsb2cvMjAyMS8wMi8xNi9taWdyYXRpbmctZnJvbS1vcGVuYXBpLTMtMC10by0zLTEtMCkKCioqYmVmb3JlKioKCmBgYGpzb24KewogICAgIm9wZW5hcGkiOiAiMy4wLjIiLAogICAgImluZm8iOiB7CiAgICAgICAgInRpdGxlIjogIlBldHN0b3JlIC0gT3BlbkFQSSIsCmBgYAoKKiphZnRlcioqCgpgYGBqc29uCnsKICAgICJvcGVuYXBpIjogIjMuMS4wIiwKICAgICJpbmZvIjogewogICAgICAgICJ0aXRsZSI6ICJPcGVuQVBJIFBldHN0b3JlIC0gT3BlbkFQSSIsCmBgYAoKIyMgQ0xJIGNvbmZpZ3VyYXRpb24gdXNhZ2UKClRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgc3VwcG9ydHMgYnVuZGxpbmcgYWxsIG9wdGlvbnMgaW4gYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlLiBUaGlzIGNhbiBzaW1wbGlmeSBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IGZvciBDSS9DRCBwaXBlbGluZXMgd2hlcmUgY29uZmlndXJhdGlvbnMgYXJlIHN0b3JlZCBpbiB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtcy4KCiMjIyBVc2luZyB0aGUgLS1jb25maWdGaWxlIG9wdGlvbgoKWW91IGNhbiBwYXNzIGEgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5pbmcgYWxsIHRoZSBvcHRpb25zIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHBhc3NlZCB2aWEgdGhlIENMSS4gVGhpcyBoZWxwcyBpbiBjZW50cmFsaXppbmcgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgT3BlbkFQSSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMuCgpFeGFtcGxlOgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLS1jb25maWdGaWxlIG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbgpgYGAKVGhlIGZvcm1hdHRpbmcgd2lsbCBoYXBwZW4gYmFzZWQgb24gYWxsIHRoZSBvcHRpb25zIHNldCBpbiB0aGUgYG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbmAgZmlsZS4gQWxsIHRoZQphdmFpbGFibGUgW09wZW5BUEkgZm9ybWF0IG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQjb3BlbmFwaS1mb3JtYXQtb3B0aW9ucykgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbmZpZyBmaWxlLgoKVGhlIG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbiBmaWxlIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgInNvcnQiOiB0cnVlLAogICJjYXNpbmdTZXQiOiB7CiAgICAib3BlcmF0aW9uSWQiOiAiY2FtZWxDYXNlIiwKICAgICJwcm9wZXJ0aWVzIjogInNuYWtlX2Nhc2UiCiAgfSwKICAiZmlsdGVyU2V0IjogewogICAgInRhZ3MiOiBbImludGVybmFsIiwgImJldGEiXQogIH0sCiAgImdlbmVyYXRlU2V0IjogewogICAgIm9wZXJhdGlvbklkVGVtcGxhdGUiOiAiPG1ldGhvZD5fPHBhdGhQYXJ0Mj5fSGFuZGxlciIKICB9Cn0KYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJlZmVyZW5jZSBleHRlcm5hbCBmaWxlcyBmb3IgZWFjaCBzZXR0aW5nIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIEZpbGUgcHJvcGVydGllcy4KCmBgYGpzb24KewogICAgInNvcnRGaWxlIjogImN1c3RvbVNvcnQuanNvbiIsCiAgICAiY2FzaW5nRmlsZSI6ICJjYXNpbmctcnVsZXMuanNvbiIsCiAgICAiZmlsdGVyRmlsZSI6ICJmaWx0ZXItcnVsZXMuanNvbiIsCiAgICAiZ2VuZXJhdGVGaWxlIjogImdlbmVyYXRlLXJ1bGVzLmpzb24iCn0KYGBgCgpJbiB0aGlzIGNhc2UsIHRoZSBzZXR0aW5ncyB3aWxsIGJlIGxvYWRlZCBmcm9tIHRoZSBleHRlcm5hbCBmaWxlcywgYW5kIHRoZXkgb3ZlcnJpZGUgYW55IGlubGluZSBjb25maWd1cmF0aW9ucy4KCioqRGVmaW5lIHNvcnQsIGZpbHRlciwgY2FzaW5nLCBnZW5lcmF0ZSBvcHRpb25zKioKCllvdSBjYW4gZWl0aGVyIHBhc3MgdGhlIHNldHRpbmdzIGlubGluZSBvciByZWZlcmVuY2UgYW4gZXh0ZXJuYWwgZmlsZSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgRmlsZSBwcm9wZXJ0eToKCi0gKipzb3J0U2V0KiogLyAqKnNvcnRGaWxlKio6IFNvcnQgdGhlIGZpZWxkcyBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCBiYXNlZCBvbiB0aGUgb3JkZXIgZGVmaW5lZCBpbiB0aGUgc29ydCBzZXR0aW5ncy4KCiAgLSBJbmxpbmU6IFBhc3MgdGhlIHNvcnQgb3JkZXIgZGlyZWN0bHkgdXNpbmcgc29ydFNldCBpbiB0aGUgY29uZmlnIGZpbGUuCiAgLSBGaWxlOiBVc2Ugc29ydEZpbGUgdG8gc3BlY2lmeSB0aGUgcGF0aCB0byBhIGxvY2FsIG9yIHJlbW90ZSBKU09OL1lBTUwgZmlsZSBjb250YWluaW5nIGN1c3RvbSBzb3J0aW5nIHJ1bGVzLgoKLSAqKmNhc2luZ1NldCoqIC8gKipjYXNpbmdGaWxlKio6IERlZmluZSB0aGUgY2FzaW5nIGNvbnZlbnRpb24gZm9yIG9wZXJhdGlvbklkLCBwYXJhbWV0ZXJzLCBwcm9wZXJ0aWVzLCBldGMuCgogIC0gSW5saW5lOgogICAgYGBganNvbgogICAgImNhc2luZ1NldCI6IHsKICAgICAgIm9wZXJhdGlvbklkIjogImNhbWVsQ2FzZSIsCiAgICAgICJwcm9wZXJ0aWVzIjogIlBhc2NhbENhc2UiCiAgICB9CiAgICBgYGAKCiAgLSBGaWxlOiBVc2UgY2FzaW5nRmlsZSB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jYWwgb3IgcmVtb3RlIEpTT04vWUFNTCBmaWxlIGNvbnRhaW5pbmcgY2FzaW5nIHJ1bGVzLgoKLSAqKmZpbHRlclNldCoqIC8gKipmaWx0ZXJGaWxlKio6IEZpbHRlciBvdXQgc3BlY2lmaWMgdGFncywgcGF0aHMsIG9yIGNvbXBvbmVudHMgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCiAgLSBJbmxpbmU6CiAgICBgYGBqc29uCiAgICAiZmlsdGVyU2V0IjogewogICAgICAidGFncyI6IFsiaW50ZXJuYWwiLCAiYmV0YSJdCiAgICB9CiAgICBgYGAKCiAgLSBGaWxlOiBVc2UgZmlsdGVyRmlsZSB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jYWwgb3IgcmVtb3RlIEpTT04vWUFNTCBmaWxlIGNvbnRhaW5pbmcgZmlsdGVyIHJ1bGVzLgoKLSAqKmdlbmVyYXRlU2V0KiogLyAqKmdlbmVyYXRlRmlsZSoqOiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9wZXJhdGlvbklkLCBzdW1tYXJ5LCBhbmQgb3RoZXIgZWxlbWVudHMgYmFzZWQgb24gcHJlZGVmaW5lZCB0ZW1wbGF0ZXMuCgogIC0gSW5saW5lOgogICAgYGBganNvbgogICAgImdlbmVyYXRlU2V0IjogewogICAgICAib3BlcmF0aW9uSWRUZW1wbGF0ZSI6ICI8bWV0aG9kPl88cGF0aFBhcnQyPl9IYW5kbGVyIgogICAgfQogICAgYGBgCgogIC0gRmlsZTogVXNlIGdlbmVyYXRlRmlsZSB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jYWwgb3IgcmVtb3RlIEpTT04vWUFNTCBmaWxlIGNvbnRhaW5pbmcgZ2VuZXJhdGUgcnVsZXMuCgoKIyMjIFVzaW5nIC5vcGVuYXBpZm9ybWF0cmMKCkluIGFkZGl0aW9uIHRvIHNwZWNpZnlpbmcgYSBjb25maWd1cmF0aW9uIGZpbGUgdXNpbmcgYC0tY29uZmlnRmlsZWAsIG9wZW5hcGktZm9ybWF0IGFsc28gc3VwcG9ydHMgYXV0b21hdGljYWxseSBsb2FkaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkIGAub3BlbmFwaWZvcm1hdHJjYCBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gSWYgdGhpcyBmaWxlIGlzIHByZXNlbnQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgY29uZmlndXJhdGlvbiBzb3VyY2UsIGFuZCBpbmRpdmlkdWFsIG9wdGlvbnMgcGFzc2VkIHZpYSB0aGUgQ0xJIHdpbGwgb3ZlcnJpZGUgdGhlIHNldHRpbmdzIGZyb20gdGhpcyBmaWxlLgoKRXhhbXBsZSBvZiBhIC5vcGVuYXBpZm9ybWF0cmMgZmlsZToKCmBgYGpzb24KewogICJvdXRwdXQiOiAib3BlbmFwaS1maW5hbC55YW1sIiwgIAogICJzb3J0IjogdHJ1ZSwKICAiZmlsdGVyU2V0IjogewogICAgICAidGFncyI6IFsiaW50ZXJuYWwiLCAiYmV0YSJdCiAgfQp9CmBgYAoKIyMgQXN5bmNBUEkgZG9jdW1lbnRzCgpGb3IgaGFuZGxpbmcgQXN5bmNBUEkgZG9jdW1lbnRzLCB3ZSBoYXZlIGNyZWF0ZWQgYSBzZXBhcmF0ZQpwYWNrYWdlIFthc3luY2FwaS1mb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvYXN5bmNhcGktZm9ybWF0KSB0byBhbGxvdyBjdXN0b21pc2F0aW9uIHNwZWNpZmljIGZvciBBc3luY0FQSQp1c2UtY2FzZXMuCgojIyBTdG9wbGlnaHQgU3R1ZGlvCgpXZSBoYXZlIGFkb3B0ZWQgdGhlIFlBTUwgcGFyc2luZyBzdHlsZSBmcm9tIFtTdG9wbGlnaHQgU3R1ZGlvXShodHRwczovL3N0b3BsaWdodC5pby9zdHVkaW8vKSwgYnkgbGV2ZXJhZ2luZwp0aGUgW0BzdG9wbGlnaHQveWFtbF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN0b3BsaWdodC95YW1sKSBwYWNrYWdlIGZvciBoYW5kbGluZyB0aGUgcGFyc2luZyBvZiBPcGVuQVBJIFlBTUwKZmlsZXMuCgpCeSB1c2luZyB0aGUgU3RvcGxpZ2h0IFlBTUwgcGFyc2luZywgdGhlIHJlc3VsdHMgd2lsbCBiZSBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSB3aGVuIHVzaW5nIGEgbm9ybWFsIFlBTUwgcGFyc2luZwpsaWJyYXJ5LCBsaWtlIFtqcy10by15YW1sXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9qcy15YW1sKS4gV2UgYXBwcmVjaWF0ZSB0aGUgU3RvcGxpZ2h0IFN0dWRpbyB0b29sLCBzaW5jZSBpdCBpcwphbiBleGNlbGxlbnQgR1VJIGZvciB3b3JraW5nIHdpdGggT3BlbkFQSSBkb2N1bWVudHMgZm9yIG5vbi1PcGVuQVBJIGV4cGVydHMgd2hvIHdpbGwgYmUgY29udHJpYnV0aW5nIGNoYW5nZXMuIEJ5CmFkb3B0aW5nIHRoZSBTdG9wbGlnaHQgU3R1ZGlvIFlBTUwgcGFyc2luZywgdGhlIHBvdGVudGlhbCByaXNrIG9mIG1lcmdlIGNvbmZsaWN0cyB3aWxsIGJlIGxvd2VyZWQsIHdoaWNoIGlzIHRoZSBtYWluCnJlYXNvbiB3aHkgd2Ugb3B0ZWQgZm9yIHVzaW5nIHRoZSBAc3RvcGxpZ2h0L3lhbWwgcGFja2FnZS4KCiMjIENyZWRpdHMKClRoaXMgcGFja2FnZSBpcyBpbnNwaXJlZCBieQp0aGUgW0BtaWNyb3NvZnQuYXp1cmUvZm9ybWF0LXNwZWNdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BtaWNyb3NvZnQuYXp1cmUvZm9ybWF0LXNwZWMpIGZyb20gW0BmZWFydGhlY293Ym95XShodHRwczovL2dpdGh1Yi5jb20vZmVhcnRoZWNvd2JveSkuIFRoZQpvcmlnaW5hbCBjb2RlIHdhcyBub3QgYXZhaWxhYmxlIG9uIEdpdEh1Yiwgd2l0aCB0aGUgbGFzdCB1cGRhdGUgYmVpbmcgMyB5ZWFycyBhZ28sIHNvIHRvIGltcHJvdmUgc3VwcG9ydCBhbmQgZXh0ZW5kIGl0IHdlCnRyaWVkIHRvIHJlcHJvZHVjZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb25hbGl0eS4KClRoZSBmaWx0ZXIgY2FwYWJpbGl0aWVzIGZyb20gYG9wZW5hcGktZm9ybWF0YCBhcmUgYSBsaWdodCB2ZXJzaW9uIGdyb3VuZGVkIGJ5IHRoZSB3b3JrIGZyb20gW0BNaWtlUmFscGhzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWtlcmFscGhzb24pIG9uCnRoZSBbb3BlbmFwaS1maWx0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29wZW5hcGktZmlsdGVyKSBwYWNrYWdlLgoKVGhlIGNhc2luZyBvcHRpb25zIGF2YWlsYWJsZSBpbiBgb3BlbmFwaS1mb3JtYXRgIGFyZSBwb3dlcmVkIGJ5IHRoZSBleGNlbGxlbnQgW2Nhc2UtYW55dGhpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNxdWVlYi9jYXNlLWFueXRoaW5nKSBuYW5vIHBhY2thZ2UgZnJvbSBMdWNhIEJhbiAoW0BtZXNxdWVlYl0oaHR0cHM6Ly9naXRodWIuY29tL21lc3F1ZWViKSkuCgo8YSBocmVmPSJodHRwczovL3d3dy5qZXRicmFpbnMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPgo8aW1nIHNyYz0iaHR0cHM6Ly9yZXNvdXJjZXMuamV0YnJhaW5zLmNvbS9zdG9yYWdlL3Byb2R1Y3RzL2NvbXBhbnkvYnJhbmQvbG9nb3MvamV0YnJhaW5zLnBuZyIgYWx0PSJKZXRCcmFpbnMgbG9nby4iIHdpZHRoPSIyMDBweCI+CjwvYT4KClNwZWNpYWwgdGhhbmtzIHRvIFtKZXRCcmFpbnNdKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vKSBmb3IgdGhlaXIgY29udGludW91cyBzcG9uc29yc2hpcCBvZiB0aGlzIHByb2plY3Qgb3ZlciB0aGUgbGFzdCAzIHllYXJzLCBhbmQgZm9yIHRoZWlyIHN1cHBvcnQgdG8gb3Blbi1zb3VyY2Ugc29mdHdhcmUgKE9TUykgaW5pdGlhdGl2ZXMuCg==
- readmeEtag: '"7455de1aaf739561aebf52964eb6ce26ad458aa4"'
- readmeLastModified: Tue, 10 Sep 2024 17:16:48 GMT
+ IVtvcGVuYXBpLWZvcm1hdCBpY29uXSguL2Fzc2V0cy9vcGVuYXBpLWZvcm1hdC1sb2dvLnN2ZykKCjxhIGhyZWY9Imh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wZW5hcGktZm9ybWF0IiBhbHQ9IkxhdGVzdCBTdGFibGUgVmVyc2lvbiI+IVtucG1dKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3Yvb3BlbmFwaS1mb3JtYXQuc3ZnKTwvYT4KPGEgaHJlZj0iaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvb3BlbmFwaS1mb3JtYXQiIGFsdD0iVG90YWwgRG93bmxvYWRzIj4hW25wbV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9ucG0vZHcvb3BlbmFwaS1mb3JtYXQuc3ZnKTwvYT4KCiMgb3BlbmFwaS1mb3JtYXQKCkZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IGJ5IG9yZGVyaW5nLCBmb3JtYXR0aW5nIGFuZCBmaWx0ZXJpbmcgZmllbGRzLgoKVGhlIG9wZW5hcGktZm9ybWF0IENMSSBjYW4gc29ydCB0aGUgT3BlbkFQSSBmaWVsZHMgYnkgb3JkZXJpbmcgdGhlbSBpbiBhIGhpZXJhcmNoaWNhbCBvcmRlciwgZm9ybWF0IHRoZSBjYXNpbmcgb2YgdGhlIGZpZWxkcyBhbmQKb3V0cHV0IGNsZWFubHkgaW5kZW50ZWQgSlNPTiBvciBZQU1MLgoKQWRkaXRpb25hbCBmZWF0dXJlcyBpbmNsdWRlIHBvd2VyZnVsIGZpbHRlcmluZyBvcHRpb25zIGJhc2VkIG9uIGZsYWdzLCB0YWdzLCBtZXRob2RzLCBvcGVyYXRpb25JRHMsIGFuZCBldmVuIHVudXNlZCBjb21wb25lbnRzLgpUbyBxdWlja2x5IHN0YW5kYXJkaXplIE9wZW5BUEkgZG9jdW1lbnRzIHRoZXJlIGlzIHN1cHBvcnQgZm9yIGdlbmVyYXRpbmcgdGhlIG9wZXJhdGlvbklkcy4KClRoZSBDTEkgY2FuIHNwbGl0IGxhcmdlIE9wZW5BUEkgZG9jdW1lbnRzIGludG8gbW9kdWxhciwgbXVsdGktZmlsZSBzdHJ1Y3R1cmVzIGZvciBlYXNpZXIgbWFuYWdlbWVudC4gCkZvciB1cGdyYWRlcywgdGhlIG9wZW5hcGktZm9ybWF0IENMSSBvZmZlcnMgdGhlIG9wdGlvbiB0byBjb252ZXJ0IGFuIE9wZW5BUEkgMy4wIGRvY3VtZW50IHRvIE9wZW5BUEkgMy4xLgoKIyMgVGFibGUgb2YgY29udGVudAoqIFtVc2UtY2FzZXNdKCN1c2UtY2FzZXMpCiogW0ZlYXR1cmVzXSgjZmVhdHVyZXMpCiogW09ubGluZSBwbGF5Z3JvdW5kXSgjb25saW5lLXBsYXlncm91bmQpCiogW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKICAgICsgW0xvY2FsIEluc3RhbGxhdGlvbiAocmVjb21tZW5kZWQpXSgjbG9jYWwtaW5zdGFsbGF0aW9uLXJlY29tbWVuZGVkKQogICAgKyBbR2xvYmFsIEluc3RhbGxhdGlvbl0oI2dsb2JhbC1pbnN0YWxsYXRpb24pCiAgICArIFtOUFggdXNhZ2VdKCNucHgtdXNhZ2UpCiogW0NvbW1hbmQgTGluZSBJbnRlcmZhY2VdKCNjb21tYW5kLWxpbmUtaW50ZXJmYWNlKQoqIFtPcGVuQVBJIGZvcm1hdCBDTEkgb3B0aW9uc10oI29wZW5hcGktZm9ybWF0LWNsaS1vcHRpb25zKQoqIFtPcGVuQVBJIHNvcnQgY29uZmlndXJhdGlvbiBvcHRpb25zXSgjb3BlbmFwaS1zb3J0LWNvbmZpZ3VyYXRpb24tb3B0aW9ucykKKiBbT3BlbkFQSSBmb3JtYXR0aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uc10oI29wZW5hcGktZm9ybWF0dGluZy1jb25maWd1cmF0aW9uLW9wdGlvbnMpCiogW09wZW5BUEkgZmlsdGVyIG9wdGlvbnNdKCNvcGVuYXBpLWZpbHRlci1vcHRpb25zKQoqIFtPcGVuQVBJIGdlbmVyYXRlIGVsZW1lbnRzXSgjb3BlbmFwaS1nZW5lcmF0ZS1vcHRpb25zKQoqIFtDTEkgc29ydCB1c2FnZV0oI2NsaS1zb3J0LXVzYWdlKQoqIFtDTEkgZmlsdGVyIHVzYWdlXSgjY2xpLWZpbHRlci11c2FnZSkKKiBbQ0xJIGdlbmVyYXRlIHVzYWdlXSgjY2xpLWdlbmVyYXRlLXVzYWdlKQoqIFtDTEkgY2FzaW5nIHVzYWdlXSgjY2xpLWNhc2luZy11c2FnZSkKKiBbQ0xJIHNwbGl0ICYgYnVuZGxlIHVzYWdlXSgjY2xpLWJ1bmRsZS0tc3BsaXQtdXNhZ2UpCiogW0NMSSByZW5hbWUgdXNhZ2VdKCNjbGktcmVuYW1lLXVzYWdlKQoqIFtDTEkgY29udmVydFRvIHVzYWdlXSgjY2xpLWNvbnZlcnR0by11c2FnZSkKKiBbQ0xJIGNvbmZpZ3VyYXRpb24gdXNhZ2VdKCNjbGktY29uZmlndXJhdGlvbi11c2FnZSkKKiBbQ3JlZGl0c10oI2NyZWRpdHMpCgojIyBVc2UtY2FzZXMKCioqUHVibGljIGRvY3VtZW50YXRpb246KioKQW4gT3BlbkFQSSBkb2N1bWVudCBpcyBhIHNwZWNpZmljYXRpb24gdGhhdCBldm9sdmVzIGFuZCBjaGFuZ2VzLiBUbyBmYWNpbGl0YXRlIHdvcmtpbmcgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgcHVibGlzaGluZyB0aGUKZG9jdW1lbnQgYXMgcHVibGljIGRvY3VtZW50YXRpb24sIHlvdSB3YW50IHRvIGRlbGl2ZXIgYSBjbGVhbiBhbmQgc3RydWN0dXJlZCBzcGVjaWZpY2F0aW9uLiBPcGVuQVBJLWZvcm1hdCBoZWxwcyB5b3UgdG8Kb3JnYW5pemUgdGhlIGZpZWxkcyBieSBzb3J0aW5nLCBmb3JtYXR0aW5nIGFuZCBmaWx0ZXJpbmcgc3BlY2lmaWMgZWxlbWVudHMgZnJvbSB0aGUgT3BlbkFQSSBsaWtlIGludGVybmFsIGVuZHBvaW50cywgYmV0YSB0YWdzLCAuLi4KYW5kIGV2ZW4gdW51c2VkIHNjaGVtYXMsIGV4YW1wbGVzLCByZXNwb25zZXMsIC4uLiB3aXRoIGEgY2xlYW4gYW5kIG9wdGltaXplZCBPcGVuQVBJIGRvY3VtZW50IGFzIGEgcmVzdWx0LgoKKipNYWludGVuYW5jZToqKgpXaGVuIHdvcmtpbmcgb24gbGFyZ2UgT3BlbkFQSSBkb2N1bWVudHMgb3Igd2l0aCBtdWx0aXBsZSB0ZWFtIG1lbWJlcnMsIHRoZSBmaWxlIGNhbiBiZSBiZWNvbWUgbWVzc3kgYW5kIGRpZmZpY3VsdCB0bwpjb21wYXJlIGNoYW5nZXMuIEJ5IHNvcnRpbmcgJiBmb3JtYXR0aW5nIGZyb20gdGltZSB0byB0aW1lLCB0aGUgZmllbGRzIGFyZSBhbGwgb3JkZXJlZCBpbiBhIHN0cnVjdHVyZWQgbWFubmVyICYgcHJvcGVybHkgY2FzZWQsIHdoaWNoIHdpbGwgaGVscCB5b3UKdG8gbWFpbnRhaW4gdGhlIGZpbGUgd2l0aCBncmVhdGVyIGVhc2UuCgoqKkNJL0NEIHBpcGVsaW5lczoqKgpPcGVuQVBJLWZvcm1hdCBjYW4gYmUgdXNlZnVsIGluIENJL0NEIHBpcGVsaW5lcywgd2hlcmUgdGhlIE9wZW5BUEkgaXMgdXNlZCBhcyB0aGUgc291cmNlIGZvciBvdGhlciBkb2N1bWVudHMgbGlrZSBXZWIgZG9jdW1lbnRhdGlvbiwKUG9zdG1hbiBjb2xsZWN0aW9ucywgdGVzdCBzdWl0ZXMsIC4uLgoKIyMgRmVhdHVyZXMKCi0gW3hdIE9yZGVyIE9wZW5BUEkgZmllbGRzIGluIGEgZGVmYXVsdCBvcmRlcgotIFt4XSBPcmRlciBPcGVuQVBJIGZpZWxkcyBpbiBhIGN1c3RvbSBvcmRlcgotIFt4XSBPcmRlciBDb21wb25lbnRzIGVsZW1lbnRzIGJ5IGFscGhhYmV0Ci0gW3hdIEZvcm1hdCB0aGUgY2FzaW5nIChjYW1lbENhc2UsUGFzY2FsQ2FzZSwgLi4uKSBvZiBjb21wb25lbnQgZWxlbWVudHMKLSBbeF0gRmlsdGVyIE9wZW5BUEkgZmlsZXMgYmFzZWQgb24gbWV0aG9kcwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiBmbGFncwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiBmbGFncyB2YWx1ZXMKLSBbeF0gRmlsdGVyIE9wZW5BUEkgZmlsZXMgYmFzZWQgb24gdGFncwotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiBvcGVyYXRpb25JRCdzCi0gW3hdIEZpbHRlciBPcGVuQVBJIGZpbGVzIGJhc2VkIG9uIG9wZXJhdGlvbnMgZGVmaW5pdGlvbgotIFt4XSBGaWx0ZXIgT3BlbkFQSSBmaWxlcyBiYXNlZCBvbiByZXNwb25zZSBjb250ZW50LXR5cGVzCi0gW3hdIFN0cmlwIGZsYWdzIGZyb20gT3BlbkFQSSBmaWxlcwotIFt4XSBTdHJpcCB1bnVzZWQgY29tcG9uZW50cyBmcm9tIE9wZW5BUEkgZmlsZXMKLSBbeF0gR2VuZXJhdGUgT3BlbkFQSSBlbGVtZW50cyBmb3IgY29uc2lzdGVuY3kKLSBbeF0gQnVuZGxlIGxvY2FsIGFuZCByZW1vdGUgcmVmZXJlbmNlcyBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudAotIFt4XSBTcGxpdCB0aGUgT3BlbkFQSSBkb2N1bWVudCBpbnRvIGEgbXVsdGktZmlsZSBzdHJ1Y3R1cmUKLSBbeF0gQ29udmVydCBPcGVuQVBJIDMuMCBkb2N1bWVudHMgdG8gT3BlbkFQSSAzLjEgCi0gW3hdIFJlbmFtZSB0aGUgT3BlbkFQSSB0aXRsZQotIFt4XSBTdXBwb3J0IE9wZW5BUEkgZG9jdW1lbnRzIGluIEpTT04gZm9ybWF0Ci0gW3hdIFN1cHBvcnQgT3BlbkFQSSBkb2N1bWVudHMgaW4gWUFNTCBmb3JtYXQKLSBbeF0gRm9ybWF0IHZpYSBDTEkKLSBbeF0gRm9ybWF0IHZpYSBsb2NhbCBvciByZW1vdGUgY29uZmlnIGZpbGVzCi0gW3hdIFVzZSBhcyBhIE1vZHVsZQotIFt4XSBBbGlnbmVkIFlBTUwgcGFyc2luZyBzdHlsZSB3aXRoIFN0b3BsaWdodCBTdHVkaW8gc3R5bGUKLSBbeF0gU3VwcG9ydCBmb3IgT3BlbkFQSSAzLjAKLSBbeF0gU3VwcG9ydCBmb3IgT3BlbkFQSSAzLjEgKGJldGEpCi0gW3hdIE9ubGluZSBwbGF5Z3JvdW5kIChodHRwczovL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQudmVyY2VsLmFwcC8pCgojIyBPbmxpbmUgcGxheWdyb3VuZAoKVGhlIFtPcGVuQVBJLUZvcm1hdCBQbGF5Z3JvdW5kXShodHRwczovL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQudmVyY2VsLmFwcC8pIGlzIGEgd2ViLWJhc2VkIHRvb2wgZm9yIGZvcm1hdHRpbmcgYW5kIHNvcnRpbmcgT3BlbkFQSSBkb2N1bWVudHMsIHBvd2VyZWQgYnkgdGhlIG9wZW5hcGktZm9ybWF0IENMSS4KCjxhIGhyZWY9Imh0dHBzOi8vb3BlbmFwaS1mb3JtYXQtcGxheWdyb3VuZC52ZXJjZWwuYXBwLyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJPcGVuQVBJLWZvcm1hdCBQbGF5Z3JvdW5kIiByZWw9Im5vZm9sbG93Ij4KPGltZyBzcmM9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQvbWFpbi9hc3NldHMvb3BlbmFwaS1mb3JtYXQtcGxheWdyb3VuZC5wbmciIGFsdD0iT3BlbkFQSS1mb3JtYXQgUGxheWdyb3VuZCIgd2lkdGg9IjUwJSI+PGJyPgo8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdC9tYWluL2Fzc2V0cy9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLWRpZmYucG5nIiBhbHQ9Ik9wZW5BUEktZm9ybWF0IFBsYXlncm91bmQgRGlmZiB2aWV3ZXIiIHdpZHRoPSIyNSUiPgo8aW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3RoaW04MS9vcGVuYXBpLWZvcm1hdC9tYWluL2Fzc2V0cy9vcGVuYXBpLWZvcm1hdC1wbGF5Z3JvdW5kLWZpbHRlci5wbmciIGFsdD0iT3BlbkFQSS1mb3JtYXQgUGxheWdyb3VuZCBGaWx0ZXIgVUkiIHdpZHRoPSIyNSUiPgo8L2E+CgpNb3JlIGluZm8gYWJvdXQgdGhlIGZlYXR1cmVzIGFuZCB1c2FnZSwgY2FuIGJlIGZvdW5kIGluIHRoZSBbcmVhZG1lXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0LXBsYXlncm91bmQ/dGFiPXJlYWRtZS1vdi1maWxlI2ZlYXR1cmVzKS4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIExvY2FsIEluc3RhbGxhdGlvbiAocmVjb21tZW5kZWQpCgpXaGlsZSBwb3NzaWJsZSB0byBpbnN0YWxsIGdsb2JhbGx5LCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgYWRkIHRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgdG8gdGhlIGBub2RlX21vZHVsZXNgIGJ5IHVzaW5nOgoKYGBgc2hlbGwKJCBucG0gaW5zdGFsbCAtLXNhdmUgb3BlbmFwaS1mb3JtYXQKYGBgCgpvciB1c2luZyB5YXJuLi4uCgpgYGBzaGVsbAokIHlhcm4gYWRkIG9wZW5hcGktZm9ybWF0CmBgYAoKTm90ZSB0aGF0IHRoaXMgd2lsbCByZXF1aXJlIHlvdSB0byBydW4gdGhlIG9wZW5hcGktZm9ybWF0IENMSSB3aXRoIGBucHggb3BlbmFwaS1mb3JtYXQgeW91ci1vcGVuYXBpLWZpbGUueWFtbGAgb3IsIGlmCnlvdSBhcmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbnMgb2YgbnBtLCBgLi9ub2RlX21vZHVsZXMvLmJpbi9vcGVuYXBpLWZvcm1hdCB5b3VyLW9wZW5hcGktZmlsZS55YW1sYC4KCiMjIyBHbG9iYWwgSW5zdGFsbGF0aW9uCgpgYGBzaGVsbAokIG5wbSBpbnN0YWxsIC1nIG9wZW5hcGktZm9ybWF0CmBgYAoKIyMjIE5QWCB1c2FnZQoKVG8gZXhlY3V0ZSB0aGUgQ0xJIHdpdGhvdXQgaW5zdGFsbGluZyBpdCB2aWEgbnBtLCB1c2UgdGhlIG5weCBtZXRob2QKCmBgYHNoZWxsCiQgbnB4IG9wZW5hcGktZm9ybWF0IHlvdXItb3BlbmFwaS1maWxlLnlhbWwKYGBgCgojIyBDb21tYW5kIExpbmUgSW50ZXJmYWNlCgpgYGAKb3BlbmFwaS1mb3JtYXQuanMgPGlucHV0LWZpbGU+IC1vIFtvdXRwdXQtZmlsZV0gW29wdGlvbnNdCgpBcmd1bWVudHM6CiAgaW5wdXQtZmlsZSAgIHRoZSBPcGVuQVBJIGRvY3VtZW50IGNhbiBiZSBhIGxvY2FsIG9yIHJlbW90ZSBmaWxlIGluIEpTT04gb3IgWUFNTCBmb3JtYXQKICBvdXRwdXQtZmlsZSAgdGhlIG91dHB1dCBmaWxlIGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgZWl0aGVyIGEgLmpzb24gb3IgLnlhbWwgZmlsZS4gCgpPcHRpb25zOgoKICAtLW91dHB1dCwgLW8gICAgICAgICAgU2F2ZSB0aGUgZm9ybWF0ZWQgT3BlbkFQSSBmaWxlIGFzIEpTT04vWUFNTCAgICAgICAgICAgICBbcGF0aF0KCiAgLS1zb3J0RmlsZSAgICAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgY3VzdG9tIE9wZW5BUEkgZmllbGRzIG9yZGVyaW5nICAgICAgW3BhdGhdCiAgLS1jYXNpbmdGaWxlICAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgY2FzaW5nIHJ1bGVzICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdCiAgLS1nZW5lcmF0ZUZpbGUgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgZ2VuZXJhdGUgcnVsZXMgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdCiAgLS1maWx0ZXJGaWxlICAgICAgICAgIFRoZSBmaWxlIHRvIHNwZWNpZnkgZmlsdGVyIHJ1bGVzICAgICAgICAgICAgICAgICAgICAgICAgW3BhdGhdCgogIC0tbm8tc29ydCAgICAgICAgICAgICBEb24ndCBzb3J0IHRoZSBPcGVuQVBJIGZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIFtib29sZWFuXQogIC0ta2VlcENvbW1lbnRzICAgICAgICBEb24ndCByZW1vdmUgdGhlIGNvbW1lbnRzIGZyb20gdGhlIE9wZW5BUEkgWUFNTCBmaWxlIFtib29sZWFuXQogIC0tc29ydENvbXBvbmVudHNGaWxlICBUaGUgZmlsZSB3aXRoIGNvbXBvbmVudHMgdG8gc29ydCBhbHBoYWJldGljYWxseSAgICAgICAgIFtwYXRoXQoKICAtLW5vLWJ1bmRsZSAgICAgICAgICAgRG9uJ3QgYnVuZGxlIHRoZSBsb2NhbCBhbmQgcmVtb3RlICRyZWYgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLXNwbGl0ICAgICAgICAgICAgICAgU3BsaXQgT3BlbkFQSSBkb2N1bWVudCBpbnRvIGEgbXVsdGktZmlsZSBzdHJ1Y3R1cmUgICBbYm9vbGVhbl0KICAKICAtLXJlbmFtZSAgICAgICAgICAgICAgUmVuYW1lIHRoZSBPcGVuQVBJIHRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZ10KICAKICAtLWNvbnZlcnRUbyAgICAgICAgICAgY29udmVydCB0aGUgT3BlbkFQSSBkb2N1bWVudCB0byBPcGVuQVBJIHZlcnNpb24gMy4xICAgW3N0cmluZ10KCiAgLS1jb25maWdGaWxlICAgICAgICAgIFRoZSBmaWxlIHdpdGggdGhlIE9wZW5BUEktZm9ybWF0IENMSSBvcHRpb25zICAgICAgICAgICAgW3BhdGhdCgogIC0tbGluZVdpZHRoICAgICAgICAgICBNYXggbGluZSB3aWR0aCBvZiBZQU1MIG91dHB1dCAgICAgICAgICAgICAgICAgICAgICAgICBbbnVtYmVyXQoKICAtLWpzb24gICAgICAgICAgICAgICAgUHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBKU09OICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KICAtLXlhbWwgICAgICAgICAgICAgICAgUHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBZQU1MICAgICAgICAgICAgICAgICAgICBbYm9vbGVhbl0KCiAgLS1wbGF5Z3JvdW5kLCAtcCAgICAgIE9wZW4gY29uZmlnIGluIG9ubGluZSBwbGF5Z3JvdW5kCiAgLS1oZWxwICAgICAgICAgICAgICAgIFNob3cgaGVscCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jvb2xlYW5dCiAgLS12ZXJzaW9uICAgICAgICAgICAgIE91dHB1dCB0aGUgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgLS12ZXJib3NlICAgICAgICAgICAgIE91dHB1dCBtb3JlIGRldGFpbHMgb2YgdGhlIGZpbHRlciBwcm9jZXNzICAgICAgICAgICAgICBbY291bnRdCmBgYAoKIyMgT3BlbkFQSSBmb3JtYXQgQ0xJIG9wdGlvbnMKCnwgUGFyYW1ldGVyICAgICAgICAgICAgfCBBbGlhcyAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5wdXQgdHlwZSAgIHwgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgfCBJbmZvICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgZmlsZSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgdGhlIE9wZW5BUEkgZG9jdW1lbnQgY2FuIGJlIGEgbG9jYWwgb3IgcmVtb3RlIGZpbGUgaW4gSlNPTiBvciBZQU1MIGZvcm1hdCAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXF1aXJlZCB8CnwgLS1vdXRwdXQgICAgICAgICAgICAgfCAtbyAgICAgICAgICAgIHwgc2F2ZSB0aGUgZm9ybWF0dGVkIE9wZW5BUEkgZmlsZSBhcyBKU09OL1lBTUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1zb3J0RmlsZSAgICAgICAgICAgfCAtcyAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBjdXN0b20gT3BlbkFQSSBmaWVsZHMgb3JkZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdFNvcnQuanNvbiAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1maWx0ZXJGaWxlICAgICAgICAgfCAtZiAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBmaWx0ZXIgc2V0dGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdEZpbHRlci5qc29uICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1jYXNpbmdGaWxlICAgICAgICAgfCAtayAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBjYXNpbmcgc2V0dGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1nZW5lcmF0ZUZpbGUgICAgICAgfCAtZyAgICAgICAgICAgIHwgdGhlIGZpbGUgdG8gc3BlY2lmeSBnZW5lcmF0ZSBydWxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1uby1zb3J0ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgZG9uJ3Qgc29ydCB0aGUgT3BlbkFQSSBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYm9vbGVhbiAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1rZWVwQ29tbWVudHMgICAgICAgfCAgICAgICAgICAgICAgIHwgZG9uJ3QgcmVtb3ZlIHRoZSBjb21tZW50cyBmcm9tIHRoZSBPcGVuQVBJIFlBTUwgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgYm9vbGVhbiAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1zb3J0Q29tcG9uZW50c0ZpbGUgfCAgICAgICAgICAgICAgIHwgc29ydCB0aGUgaXRlbXMgb2YgdGhlIGNvbXBvbmVudHMgKHNjaGVtYXMsIHBhcmFtZXRlcnMsIC4uLikgYnkgYWxwaGFiZXQgICAgIHwgcGF0aCB0byBmaWxlIHwgZGVmYXVsdFNvcnRDb21wb25lbnRzLmpzb24gfCBvcHRpb25hbCB8CnwgLS1uby1idW5sZGUgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgZG9uJ3QgYnVuZGxlIHRoZSBsb2NhbCBhbmQgcmVtb3RlICRyZWYgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQgICAgICAgICAgICAgIHwgYm9vbGVhbiAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1zcGxpdCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgc3BsaXQgdGhlIE9wZW5BUEkgZG9jdW1lbnQgaW50byBhIG11bHRpLWZpbGUgc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgIHwgYm9vbGVhbiAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1yZW5hbWUgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgcmVuYW1lIHRoZSBPcGVuQVBJIHRpdGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1jb252ZXJ0VG8gICAgICAgICAgfCAgICAgICAgICAgICAgIHwgY29udmVydCB0aGUgT3BlbkFQSSBkb2N1bWVudCB0byBPcGVuQVBJIHZlcnNpb24gMy4xICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1jb25maWdGaWxlICAgICAgICAgfCAtYyAgICAgICAgICAgIHwgdGhlIGZpbGUgd2l0aCBhbGwgdGhlIGZvcm1hdCBjb25maWcgb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCB0byBmaWxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1saW5lV2lkdGggICAgICAgICAgfCAgICAgICAgICAgICAgIHwgbWF4IGxpbmUgd2lkdGggb2YgWUFNTCBvdXRwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbnVtYmVyICAgICAgIHwgLTEgKEluZmluaXR5KSAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1qc29uICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgcHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBKU09OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS15YW1sICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgcHJpbnRzIHRoZSBmaWxlIHRvIHN0ZG91dCBhcyBZQU1MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgRkFMU0UgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1wbGF5Z3JvdW5kICAgICAgICAgfCAtcCAgICAgICAgICAgIHwgb3BlbiBjb25maWcgaW4gb25saW5lIHBsYXlncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS12ZXJzaW9uICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgb3V0cHV0IHRoZSB2ZXJzaW9uIG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS12ZXJib3NlICAgICAgICAgICAgfCAtdiwgLXZ2LCAtdnZ2IHwgdmVyYm9zaXR5IHRoYXQgY2FuIGJlIGluY3JlYXNlZCwgd2hpY2ggd2lsbCBzaG93IG1vcmUgb3V0cHV0IG9mIHRoZSBwcm9jZXNzIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CnwgLS1oZWxwICAgICAgICAgICAgICAgfCBoICAgICAgICAgICAgIHwgZGlzcGxheSBoZWxwIGZvciBjb21tYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvcHRpb25hbCB8CgojIyBPcGVuQVBJIHNvcnQgY29uZmlndXJhdGlvbiBvcHRpb25zCgpUaGUgQ0xJIHdpbGwgc29ydCB0aGUgT3BlbkFQSSBkb2N1bWVudCBpbiB0aGUgZGVmaW5lZCBvcmRlciBsaWtlZCBkZWZpbmVkIHBlciBPcGVuQVBJIGtleS9maWVsZC9wcm9wZXJ0eS9lbGVtZW50LiBUaGUgZmllbGRzIHRoYXQgYXJlCm5vdCBzcGVjaWZpZWQgd2lsbCBrZWVwIHRoZWlyIG9yZGVyIGxpa2UgaXQgaXMgaW4gdGhlIG9yaWdpbmFsIE9wZW5BUEkgZG9jdW1lbnQsIHNvIG9ubHkgZGVmaW5lZCBmaWVsZHMgd2lsbCBiZQpyZS1vcmRlcmVkLgoKVGhlIGRlZmF1bHQgc29ydGluZyBvZiB0aGUgZGlmZmVyZW50IGZpZWxkcyBiYXNlZCBvbiB0aGUgZGVmaW5lZCBvcmRlciAobGlzdGVkIGluIHRoZSB0YWJsZSBiZWxvdyksIHdoaWNoIGlzIHN0b3JlZCBpbgp0aGUgW2RlZmF1bHRTb3J0Lmpzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQvYmxvYi9tYWluL2RlZmF1bHRTb3J0Lmpzb24pIGZpbGUuCgojIyMgT3BlbkFQSSBzb3J0IGZpZWxkcwoKWW91IGNhbiBlYXNpbHkgbW9kaWZ5IHRoaXMgYnkgc3BlY2lmeWluZyB5b3VyIG93biBvcmRlcmluZyBwZXIga2V5LCB3aGljaCBjYW4gYmUgcGFzc2VkIG9uIHRvIHRoZSBDTEkgKHNlZSBiZWxvdyBmb3IgYW4KZXhhbXBsZSBvbiBob3cgdG8gZG8gdGhpcykuCgp8IEtleSAgICAgICAgIHwgT3JkZXJlZCBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCByb290ICAgICAgICB8IC0gb3BlbmFwaTxicj5cLSBpbmZvPGJyPlwtIHNlcnZlcnM8YnI+XC0gcGF0aHM8YnI+XC0gY29tcG9uZW50czxicj5cLSB0YWdzPGJyPlwtIHgtdGFnR3JvdXBzPGJyPlwtIGV4dGVybmFsRG9jcyB8IFtvcGVuYXBpLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlbmFwaS1vYmplY3QpICAgICAgICAgICAgICAgICAgfAp8IGdldCAgICAgICAgIHwgLSBvcGVyYXRpb25JZDxicj5cLSBzdW1tYXJ5PGJyPlwtIGRlc2NyaXB0aW9uPGJyPlwtIHBhcmFtZXRlcnM8YnI+XC0gcmVxdWVzdEJvZHk8YnI+XC0gcmVzcG9uc2VzICAgICAgICAgICAgICAgIHwgW29wZXJhdGlvbk9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KSAgICAgICAgICAgICAgICB8CnwgcG9zdCAgICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcHV0ICAgICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcGF0Y2ggICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgZGVsZXRlICAgICAgfCAtIG9wZXJhdGlvbklkPGJyPlwtIHN1bW1hcnk8YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcGFyYW1ldGVyczxicj5cLSByZXF1ZXN0Qm9keTxicj5cLSByZXNwb25zZXMgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcGFyYW1ldGVycyAgfCAtIG5hbWU8YnI+XC0gaW48YnI+XC0gZGVzY3JpcHRpb248YnI+XC0gcmVxdWlyZWQ8YnI+XC0gc2NoZW1hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcGFyYW1ldGVyT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXJhbWV0ZXJPYmplY3QpICAgICAgICAgICAgICAgICB8CnwgcmVxdWVzdEJvZHkgfCAtIGRlc2NyaXB0aW9uPGJyPlwtIGhlYWRlcnM8YnI+XC0gY29udGVudDxicj5cLSBsaW5rcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcmVxdWVzdC1ib2R5LW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcmVxdWVzdC1ib2R5LW9iamVjdCkgICAgICAgICAgICAgfAp8IHJlc3BvbnNlcyAgIHwgLSBkZXNjcmlwdGlvbjxicj5cLSBoZWFkZXJzPGJyPlwtIGNvbnRlbnQ8YnI+XC0gbGlua3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3Jlc3BvbnNlcy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3Jlc3BvbnNlcy1vYmplY3QpICAgICAgICAgICAgICAgIHwKfCBjb250ZW50ICAgICB8IChCeSBhbHBoYWJldCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtyZXNwb25zZXMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNyZXNwb25zZXMtb2JqZWN0KSAgICAgICAgICAgICAgICB8CnwgY29tcG9uZW50cyAgfCAtIHBhcmFtZXRlcnM8YnI+XC0gc2NoZW1hcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSAgICAgICAgICAgICAgIHwKfCBzY2hlbWEgICAgICB8IC0gZGVzY3JpcHRpb248YnI+XC0gdHlwZTxicj5cLSBpdGVtczxicj5cLSBwcm9wZXJ0aWVzPGJyPlwtIGZvcm1hdDxicj5cLSBleGFtcGxlPGJyPlwtIGRlZmF1bHQgICAgICAgICAgICAgICAgICB8IFtzY2hlbWFPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3NjaGVtYU9iamVjdCkgICAgICAgICAgICAgICAgICAgIHwKfCBzY2hlbWFzICAgICB8IC0gZGVzY3JpcHRpb248YnI+XC0gdHlwZTxicj5cLSBpdGVtczxicj5cLSBwcm9wZXJ0aWVzPGJyPlwtIGZvcm1hdDxicj5cLSBleGFtcGxlPGJyPlwtIGRlZmF1bHQgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IHByb3BlcnRpZXMgIHwgLSBkZXNjcmlwdGlvbjxicj5cLSB0eXBlPGJyPlwtIGl0ZW1zPGJyPlwtIGZvcm1hdDxicj5cLSBleGFtcGxlPGJyPlwtIGRlZmF1bHQ8YnI+XC0gZW51bSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgpIYXZlIGEgbG9vayBhdCB0aGUgZm9sZGVyIFt5YW1sLWRlZmF1bHRdKHRlc3QveWFtbC1kZWZhdWx0KSBhbmQgY29tcGFyZSB0aGUgIm91dHB1dC55YW1sIiAoc29ydGVkIGRvY3VtZW50KSB3aXRoIHRoZSAiaW5wdXQueWFtbCIgKG9yaWdpbmFsIGRvY3VtZW50KSwgdG8gc2VlIGhvdyBvcGVuYXBpLWZvcm1hdCBoYXZlIHNvcnRlZCB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCiMjIyBPcGVuQVBJIHNvcnQgUGF0aHMKCllvdSBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgcGF0aHMgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uIGFuZCBzb3J0IHRoZW0gYWxwaGFiZXRpY2FsbHkgKGBwYXRoYCkgb3IgYnkgdGhlIGZpcnN0IHRhZyBvZiB0aGUgZmlyc3QgbWV0aG9kIChgdGFnc2ApLgoKT3B0aW9ucyB0byBzb3J0IGJ5OgoKLSBgb3JpZ2luYWxgIChkZWZhdWx0KToga2VlcCB0aGUgb3JkZXIgYXMgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9uCi0gYHBhdGhgOiBvcmRlciB0aGUgcGF0aHMgYWxwaGFiZXRpY2FsbHkgYnkgdGhlIHBhdGggcGFydHMKLSBgdGFnc2A6IG9yZGVyIGJ5IHRoZSBmaXJzdCB0YWcgb2YgdGhlIGZpcnN0IG1ldGhvZAoKfCBLZXkgICAgICAgICB8IE9wdGlvbnMgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuQVBJIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBzb3J0UGF0aHNCeSB8ICdvcmlnaW5hbCcgLyAncGF0aCcgLyAndGFncycgfCBbcGF0aHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXRocy1vYmplY3QpIHwKCgoKIyMgT3BlbkFQSSBmaWx0ZXIgb3B0aW9ucwoKQnkgc3BlY2lmeWluZyB0aGUgZGVzaXJlZCBmaWx0ZXIgdmFsdWVzIGZvciB0aGUgYXZhaWxhYmxlIGZpbHRlciB0eXBlcywgdGhlIG9wZW5hcGktZm9ybWF0IENMSSB3aWxsIHN0cmlwIG91dCBhbnkKbWF0Y2hpbmcgaXRlbSBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LiBZb3UgY2FuIGNvbWJpbmUgbXVsdGlwbGUgdHlwZXMgdG8gZmlsdGVyIG91dCBhIHJhbmdlIG9mIE9wZW5BUEkgaXRlbXMuCgpGb3IgbW9yZSBjb21wbGV4IHVzZS1jYXNlcywgd2UgY2FuIGFkdmlzZSB0aGUgZXhjZWxsZW50IGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29wZW5hcGktZmlsdGVyIHBhY2thZ2UsIHdoaWNoIGhhcwpleHRlbmRlZCBvcHRpb25zIGZvciBmaWx0ZXJpbmcgT3BlbkFQSSBkb2N1bWVudHMuCgp8IFR5cGUgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlwZSAgICB8IEV4YW1wbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgbWV0aG9kcyAgICAgICAgICAgICAgICB8IE9wZW5BUEkgbWV0aG9kcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydnZXQnLCdwb3N0JywncHV0J10gICAgICAgICAgICAgICAgICAgICAgfAp8IGludmVyc2VNZXRob2RzICAgICAgICAgfCBPcGVuQVBJIG1ldGhvZHMgdGhhdCB3aWxsIGJlIGtlcHQgICAgICAgICAgIHwgYXJyYXkgICB8IFsnZ2V0JywncG9zdCcsJ3B1dCddICAgICAgICAgICAgICAgICAgICAgIHwKfCB0YWdzICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSB0YWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ3BldCcsJ3VzZXInXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgaW52ZXJzZVRhZ3MgICAgICAgICAgICB8IE9wZW5BUEkgdGFncyB0aGF0IHdpbGwgYmUga2VwdCAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydwZXQnLCd1c2VyJ10gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8IG9wZXJhdGlvbklkcyAgICAgICAgICAgfCBPcGVuQVBJIG9wZXJhdGlvbiBJRCdzICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsnZmluZFBldHNCeVN0YXR1cycsJ3VwZGF0ZVBldCddICAgICAgICAgIHwKfCBpbnZlcnNlT3BlcmF0aW9uSWRzICAgIHwgT3BlbkFQSSBvcGVyYXRpb24gSUQncyB0aGF0IHdpbGwgYmUga2VwdCAgICB8IGFycmF5ICAgfCBbJ2ZpbmRQZXRzQnlTdGF0dXMnLCd1cGRhdGVQZXQnXSAgICAgICAgICB8Cnwgb3BlcmF0aW9ucyAgICAgICAgICAgICB8IE9wZW5BUEkgb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydHRVQ6Oi9wZXRzJywnUFVUOjovcGV0cyddICAgICAgICAgICAgICAgfAp8IGZsYWdzICAgICAgICAgICAgICAgICAgfCBDdXN0b20gZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsneC1leGNsdWRlJywneC1pbnRlcm5hbCddICAgICAgICAgICAgICAgIHwKfCBpbnZlcnNlRmxhZ3MgICAgICAgICAgIHwgQ3VzdG9tIGZsYWdzIHRoYXQgd2lsbCBrZXB0ICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ3gtZXhjbHVkZScsJ3gtaW50ZXJuYWwnXSAgICAgICAgICAgICAgICB8CnwgZmxhZ1ZhbHVlcyAgICAgICAgICAgICB8IEN1c3RvbSBmbGFncyB3aXRoIGEgc3BlY2lmaWMgdmFsdWUgICAgICAgICAgfCBhcnJheSAgIHwgWyd4LXZlcnNpb246IDEuMCcsJ3gtdmVyc2lvbjogMy4wJ10gICAgICAgfAp8IGludmVyc2VGbGFnVmFsdWVzICAgICAgfCBDdXN0b20gZmxhZ3Mgd2l0aCBhIHZhbHVlIHRoYXQgd2lsbCBiZSBrZXB0IHwgYXJyYXkgICB8IFsneC12ZXJzaW9uOiAxLjAnLCd4LXZlcnNpb246IDMuMCddICAgICAgIHwKfCByZXNwb25zZUNvbnRlbnQgICAgICAgIHwgUmVzcG9uc2UgQ29udGVudCB0eXBlcyAgICAgICAgICAgICAgICAgICAgICB8IGFycmF5ICAgfCBbJ2FwcGxpY2F0aW9uL2pzb24nLCdhcHBsaWNhdGlvbi9odG1sJ10gICB8CnwgaW52ZXJzZVJlc3BvbnNlQ29udGVudCB8IFJlc3BvbnNlIENvbnRlbnQgdHlwZXMgdGhhdCB3aWxsIGtlcHQgICAgICAgfCBhcnJheSAgIHwgWydhcHBsaWNhdGlvbi9sZCtqc29uJ10gICAgICAgICAgICAgICAgICAgfAp8IHJlcXVlc3RDb250ZW50ICAgICAgICAgfCBSZXF1ZXN0IEJvZHkgQ29udGVudCB0eXBlcyAgICAgICAgICAgICAgICAgIHwgYXJyYXkgICB8IFsnYXBwbGljYXRpb24vanNvbicsJ2FwcGxpY2F0aW9uL2h0bWwnXSAgIHwKfCBpbnZlcnNlUmVxdWVzdENvbnRlbnQgIHwgUmVxdWVzdCBCb2R5IENvbnRlbnQgdHlwZXMgdGhhdCB3aWxsIGtlcHQgICB8IGFycmF5ICAgfCBbJ2FwcGxpY2F0aW9uL2xkK2pzb24nXSAgICAgICAgICAgICAgICAgICB8CnwgdW51c2VkQ29tcG9uZW50cyAgICAgICB8IFVudXNlZCBjb21wb25lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcnJheSAgIHwgWydleGFtcGxlcycsJ3NjaGVtYXMnXSAgICAgICAgICAgICAgICAgICAgfAp8IHN0cmlwRmxhZ3MgICAgICAgICAgICAgfCBDdXN0b20gZmxhZ3MgdGhhdCB3aWxsIGJlIHN0cmlwcGVkICAgICAgICAgIHwgYXJyYXkgICB8IFsneC1leGNsdWRlJywneC1pbnRlcm5hbCddICAgICAgICAgICAgICAgIHwKfCBwcmVzZXJ2ZUVtcHR5T2JqZWN0cyAgIHwgUHJlc2VydmUgZW1wdHkgb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICB8IGJvb2xlYW4gfCB0cnVlIE9SIFsnc2NoZW1hJ10gICAgICAgICAgICAgICAgICAgICAgICB8CnwgdGV4dFJlcGxhY2UgICAgICAgICAgICB8IFNlYXJjaCAmIHJlcGxhY2UgdmFsdWVzIHRvIHJlcGxhY2UgICAgICAgICAgfCBhcnJheSAgIHwgW3snc2VhcmNoRm9yJzonUGV0JywncmVwbGFjZVdpdGgnOidEb2cnfV0gfAoKU29tZSBtb3JlIGRldGFpbHMgb24gdGhlIGF2YWlsYWJsZSBmaWx0ZXIgdHlwZXM6CgojIyMgRmlsdGVyIC0gbWV0aG9kcy9pbnZlcnNlTWV0aG9kcwoKPT4gKiptZXRob2RzKio6IFJlZmVycyB0byB0aGUgW1BhdGggSXRlbSBPYmplY3RdKGh0dHA6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uT2JqZWN0KQoKVGhpcyB3aWxsIHJlbW92ZSBhbGwgZmllbGRzIGFuZCBhdHRhY2hlZCBmaWVsZHMgdGhhdCBtYXRjaCB0aGUgdmVyYnMuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdAphbGwgYGdldGAsIGBwdXRgLCBgcG9zdGAgaXRlbXMgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHN1bW1hcnk6IEZpbmRzIFBldHMgYnkgc3RhdHVzCiAgICAgICAgcHV0OgogICAgICAgICAgICBzdW1tYXJ5OiBVcGRhdGUgYW4gZXhpc3RpbmcgcGV0CmBgYAoKPT4gKippbnZlcnNlTWV0aG9kcyoqOiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBpbnZlcnNlIGZpbHRlcmluZywgYnkga2VlcGluZyBvbmx5IHRoZSB2ZXJicyBkZWZpbmVkIGFuZCByZW1vdmUgYWxsIG90aGVyIHZlcmJzLgoKIyMjIEZpbHRlciAtIHRhZ3MKCj0+ICoqdGFncyoqOiBSZWZlcnMgdG8gdGhlICJ0YWdzIiBmaWVsZCBmcm9tIHRoZSAiT3BlcmF0aW9uCiAgT2JqZWN0IiBodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNvcGVyYXRpb25PYmplY3QKClRoaXMgd2lsbCByZW1vdmUgYWxsIGZpZWxkcyBhbmQgYXR0YWNoZWQgZmllbGRzIHRoYXQgbWF0Y2ggdGhlIHRhZ3MuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhbGwKaXRlbXMgd2l0aCB0aGUgdGFncyBgcGV0YCBvciBgdXNlcmAgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIGV4YW1wbGU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIHB1dDoKICAgICAgICAgICAgdGFnczoKICAgICAgICAgICAgICAgIC0gcGV0CiAgICAgICAgICAgIHN1bW1hcnk6IFVwZGF0ZSBhbiBleGlzdGluZyBwZXQKYGBgCgo9PiAqKmludmVyc2VUYWdzKio6IFRoaXMgb3B0aW9uIGRvZXMgdGhlIGludmVyc2UgZmlsdGVyaW5nLCBieSBrZWVwaW5nIG9ubHkgdGhlIHRhZ3MgZGVmaW5lZCBhbmQgcmVtb3ZlIGFsbCBvdGhlciB0YWdzLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGlvbnMgd2l0aG91dCBhIHRhZ3MuCgojIyMgRmlsdGVyIC0gb3BlcmF0aW9uSWRzCgo9PiAqKm9wZXJhdGlvbklkcyoqOiBSZWZlcnMgdG8gdGhlICJvcGVyYXRpb25JZCIgZmllbGQgZnJvbSB0aGUgW09wZXJhdGlvbiBPYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI29wZXJhdGlvbk9iamVjdCkKClRoaXMgd2lsbCByZW1vdmUgc3BlY2lmaWMgZmllbGRzIGFuZCBhdHRhY2hlZCBmaWVsZHMgdGhhdCBtYXRjaCB0aGUgb3BlcmF0aW9uIElEJ3MuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkCm1lYW4gdGhhdCB0aGUgaXRlbSB3aXRoIG9wZXJhdGlvbklEIGBmaW5kUGV0c0J5U3RhdHVzYCB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpGb3IgZXhhbXBsZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgICBvcGVyYXRpb25JZDogZmluZFBldHNCeVN0YXR1cwpgYGAKCj0+ICoqaW52ZXJzZVRhZ3MqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgb3BlcmF0aW9uSWRzIGRlZmluZWQgYW5kIHJlbW92ZSBhbGwgb3RoZXIgb3BlcmF0aW9uSWRzLCBpbmNsdWRpbmcgdGhlIG9wZXJhdGlvbnMgd2l0aG91dCBhbiBvcGVyYXRpb25JZC4KCiMjIyBGaWx0ZXIgLSBvcGVyYXRpb25zCgo9PiAqKm9wZXJhdGlvbnMqKjogUmVmZXJzIHRvIGEgY29tYmluYXRpb24gb2YgYSBPcGVuQVBJIG1ldGhvZCAmIHBhdGggZnJvbSB0aGUgW1BhdGggT2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXRocy1vYmplY3QpCiYgW1BhdGggaXRlbV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGF0aC1pdGVtLW9iamVjdCkKClRoaXMgd2lsbCByZW1vdmUgc3BlY2lmaWMgcGF0aCBpdGVtcyB0aGF0IG1hdGNoIHRoZSBvcGVyYXRpb24gZGVmaW5pdGlvbiBgUFVUOjovcGV0c2AuIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkCm1lYW4gdGhhdCB0aGUgaXRlbSB3aXRoIHRoZSBwYXRoICcvcGV0cycgYW5kIG1ldGhvZCAnUFVUJyB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpGb3IgZXhhbXBsZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgICBzdW1tYXJ5OiBGaW5kcyBQZXRzIGJ5IHN0YXR1cwogICAgICAgIHB1dDoKICAgICAgICAgICAgc3VtbWFyeTogVXBkYXRlIGFuIGV4aXN0aW5nIHBldApgYGAKCkFuIGBvcGVyYXRpb25JZGAgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuIFRvIG9mZmVyIHN1cHBvcnQgZm9yIE9wZW5BUEkgZG9jdW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBvcGVyYXRpb25JZHMsIHdlIGhhdmUKYWRkZWQgdGhlIGBvcGVyYXRpb25gIGRlZmluaXRpb24gd2hpY2ggaXMgdGhlIHVuaXF1ZSBjb21iaW5hdGlvbiBvZiB0aGUgT3BlbkFQSSBtZXRob2QgJiBwYXRoLCB3aXRoIGEgYDo6YCBzZXBhcmF0b3IKc3ltYm9sLgoKVGhpcyB3aWxsIGFsbG93IGZpbHRlcmluZyBmb3IgdmVyeSBzcGVjaWZpYyBPcGVuQVBJIGl0ZW1zLCB3aXRob3V0IHRoZSBuZWVkIG9mIGFkZGluZyBvcGVyYXRpb25JZHMgdG8gdGhlIE9wZW5BUEkKZG9jdW1lbnQuCgpUbyBmYWNpbGl0YXRlIG1hbmFnaW5nIHRoZSBmaWx0ZXJpbmcsIHdlIGhhdmUgaW5jbHVkZWQgd2lsZGNhcmQgb3B0aW9ucyBmb3IgdGhlIGBvcGVyYXRpb25zYCBvcHRpb24sIHN1cHBvcnRpbmcgdGhlCm1ldGhvZHMgJiBwYXRoIGRlZmluaXRpb25zLgoKUkVNQVJLOiBCZSBzdXJlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIHRoZSB0YXJnZXQgZGVmaW5pdGlvbi4KClN0cmljdCBtYXRjaGluZyBleGFtcGxlOiBgIkdFVDo6L3BldHMiYApUaGlzIHdpbGwgdGFyZ2V0IG9ubHkgdGhlICJHRVQiIG1ldGhvZCBhbmQgdGhlIHNwZWNpZmljIHBhdGggIi9wZXRzIgoKTWV0aG9kIHdpbGRjYXJkIG1hdGNoaW5nIGV4YW1wbGU6IGAiKjo6L3BldHMiYApUaGlzIHdpbGwgdGFyZ2V0IGFsbCBtZXRob2RzICgnZ2V0JywgJ3B1dCcsICdwb3N0JywgJ2RlbGV0ZScsICdvcHRpb25zJywgJ2hlYWQnLCAncGF0Y2gnLCAndHJhY2UnKSBhbmQgdGhlIHNwZWNpZmljCnBhdGggIi9wZXRzIgoKUGF0aCB3aWxkY2FyZCBtYXRjaGluZyBleGFtcGxlOiBgIkdFVDo6L3BldHMvKiJgClRoaXMgd2lsbCB0YXJnZXQgb25seSB0aGUgIkdFVCIgbWV0aG9kIGFuZCBhbnkgcGF0aCBtYXRjaGluZyBhbnkgZm9sZGVyIGJlaGluZCB0aGUgIi9wZXRzIiwgbGlrZSAiL3BldHMvMTIzIiBhbmQKIi9wZXRzLzEyMy9idXkiLgoKTWV0aG9kICYgUGF0aCB3aWxkY2FyZCBtYXRjaGluZyBleGFtcGxlOiBgIio6Oi9wZXRzLyoiYApBIGNvbWJpbmF0aW9uIG9mIHdpbGRjYXJkcyBmb3IgdGhlIG1ldGhvZCBhbmQgcGF0aCBwYXJ0cyBpcyBldmVuIHBvc3NpYmxlLgoKIyMjIEZpbHRlciAtIGZsYWdzL2ludmVyc2VGbGFncwoKPT4gKipmbGFncyoqOiBSZWZlcnMgdG8gYSBjdXN0b20gcHJvcGVydHkgdGhhdCBjYW4gYmUgc2V0IG9uIGFueSBmaWVsZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KClRoaXMgd2lsbCByZW1vdmUgYWxsIGZpZWxkcyBhbmQgYXR0YWNoZWQgZmllbGRzIHRoYXQgbWF0Y2ggdGhlIGZsYWdzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsCml0ZW1zIHdpdGggdGhlIGZsYWcgYHgtZXhjbHVkZWAgd291bGQgYmUgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9yIGV4YW1wbGU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgeC1leGNsdWRlOiB0cnVlCmBgYAoKPT4gKippbnZlcnNlRmxhZ3MqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgb3BlcmF0aW9ucywgY29tcG9uZW50cywgdGFncywgeC10YWdHcm91cHMgdGhhdCBtYXRjaCB0aGUgZmxhZyhzKS4gVGhpcyBpcyBhIHZlcnkgYWdncmVzc2l2ZSBvcHRpb24gdG8ga2VlcCBvbmx5IHRoZSBpdGVtcyB0aGF0IGFyZSBuZWVkZWQuCgojIyMgRmlsdGVyIC0gZmxhZ1ZhbHVlcy9pbnZlcnNlRmxhZ1ZhbHVlcwoKPT4gKipmbGFnVmFsdWVzKio6IFJlZmVycyB0byBhIGZsYWcsIGN1c3RvbSBwcm9wZXJ0eSB3aGljaCBjYW4gYmUgc2V0IG9uIGFueSBmaWVsZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCwgYW5kIHRoZSBjb21iaW5hdGlvbiB3aXRoIHRoZSB2YWx1ZSBmb3IgdGhhdCBmbGFnLgoKVGhpcyB3aWxsIHJlbW92ZSBhbGwgZmllbGRzIGFuZCBhdHRhY2hlZCBmaWVsZHMgdGhhdCBtYXRjaCB0aGUgZmxhZyB3aXRoIHRoZSBzcGVjaWZpYyB2YWx1ZS4KCkEgYGZsYWdWYWx1ZXNgIGV4YW1wbGU6CgpgYGB5YW1sCmZsYWdWYWx1ZXM6CiAgICAtIHgtdmVyc2lvbjogMS4wCiAgICAtIHgtdmVyc2lvbjogMy4wCmBgYApJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsIGl0ZW1zIHdpdGggdGhlIGZsYWcgYHgtdmVyc2lvbmAgdGhhdCBtYXRjaGVzIGB4LXZlcnNpb246IDEuMGAgT1IgYHgtdmVyc2lvbjogMy4wYCB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgeC12ZXJzaW9uOiAxLjAKYGBgCgpUaGUgZmlsdGVyIG9wdGlvbiBgZmxhZ1ZhbHVlc2AgYWxzbyB3aWxsIHJlbW92ZSBmbGFncyB0aGF0IGNvbnRhaW4gYW4gYXJyYXkgb2YgdmFsdWVzIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKQSBgZmxhZ1ZhbHVlc2AgZXhhbXBsZToKCmBgYHlhbWwKZmxhZ1ZhbHVlczoKICAgIC0geC12ZXJzaW9uczogMS4wCiAgICAtIHgtdmVyc2lvbnM6IDIuMApgYGAKCkluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhbGwgaXRlbXMgd2l0aCB0aGUgZmxhZyBgeC12ZXJzaW9uc2AsIHdoaWNoIGlzIGFuIGFycmF5LCB0aGF0IG1hdGNoIGB4LXZlcnNpb246IDEuMGAgT1IgYHgtdmVyc2lvbjogMy4wYCB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgICAgeC12ZXJzaW9uczoKICAgICAgICAgICAgICAgIC0gMS4wCiAgICAgICAgICAgICAgICAtIDMuMAogICAgICAgICAgICAgICAgLSA1LjAKYGBgCgpIYXZlIGEgbG9vayBhdCBbZmxhZ1ZhbHVlc10odGVzdC95YW1sLWZpbHRlci1jdXN0b20tZmxhZ3N2YWx1ZS12YWx1ZSkgYW5kIFtmbGFnVmFsdWVzIGZvciBhcnJheSB2YWx1ZXNdKHRlc3QveWFtbC1maWx0ZXItY3VzdG9tLWZsYWdzdmFsdWUtYXJyYXkpIGZvciBhIHByYWN0aWNhbCBleGFtcGxlLgoKPT4gKippbnZlcnNlRmxhZ1ZhbHVlcyoqOiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBpbnZlcnNlIGZpbHRlcmluZywgYnkga2VlcGluZyBvbmx5IHRoZSBvcGVyYXRpb25zLCBjb21wb25lbnRzLCB0YWdzLCB4LXRhZ0dyb3VwcyB0aGF0IG1hdGNoIHRoZSBmbGFnIHdpdGggdGhlIHNwZWNpZmljIHZhbHVlLiBUaGlzIGlzIGEgdmVyeSBhZ2dyZXNzaXZlIG9wdGlvbiB0byBrZWVwIG9ubHkgdGhlIGl0ZW1zIHRoYXQgYXJlIG5lZWRlZC4KCiMjIyBGaWx0ZXIgLSByZXNwb25zZUNvbnRlbnQvaW52ZXJzZVJlc3BvbnNlQ29udGVudAoKPT4gKipSZXNwb25zZUNvbnRlbnQqKjogUmVmZXJzIHRvIHRoZSBbUmVzcG9uc2UgT2JqZWN0J3MgY29udGVudF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcmVzcG9uc2Utb2JqZWN0KQoKQSByZXNwb25zZXMgYGNvbnRlbnRgIGZpbHRlciBleGFtcGxlOgoKYGBgeWFtbApyZXNwb25zZUNvbnRlbnQ6CiAgLSBhcHBsaWNhdGlvbi9qc29uCmBgYAoKVGhpcyB3aWxsIHJlbW92ZSBhbGwgdGhlIGNvbnRlbnQgdGhhdCBtYXRjaCB0aGUgbWVkaWEgdHlwZXMgZnJvbSB0aGUgcmVzcG9uc2VzLiBJbiB0aGUgZXhhbXBsZSBiZWxvdywgdGhpcyB3b3VsZCBtZWFuIHRoYXQgYWxsIGBhcHBsaWNhdGlvbi9qc29uYApjb250ZW50IGl0ZW1zIHdvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudAoKRXhhbXBsZSBiZWZvcmU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAvcGV0OgogICAgcG9zdDoKICAgICAgdGFnczoKICAgICAgICAtIHBldAogICAgICBzdW1tYXJ5OiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBkZXNjcmlwdGlvbjogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgb3BlcmF0aW9uSWQ6IGFkZFBldAogICAgICB4LXZpc2liaWxpdHk6IHRydWUKICAgICAgcmVzcG9uc2VzOgogICAgICAgICcyMDAnOgogICAgICAgICAgZGVzY3JpcHRpb246IFN1Y2Nlc3NmdWwgb3BlcmF0aW9uCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi94bWw6CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwogICAgICAgICc0MDUnOgogICAgICAgICAgZGVzY3JpcHRpb246IEludmFsaWQgaW5wdXQKYGBgCgpFeGFtcGxlIGFmdGVyOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgL3BldDoKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXQKICAgICAgc3VtbWFyeTogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgZGVzY3JpcHRpb246IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIG9wZXJhdGlvbklkOiBhZGRQZXQKICAgICAgeC12aXNpYmlsaXR5OiB0cnVlCiAgICAgIHJlc3BvbnNlczoKICAgICAgICAnMjAwJzoKICAgICAgICAgIGRlc2NyaXB0aW9uOiBTdWNjZXNzZnVsIG9wZXJhdGlvbgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24veG1sOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCiAgICAgICAgJzQwNSc6CiAgICAgICAgICBkZXNjcmlwdGlvbjogSW52YWxpZCBpbnB1dApgYGAKCj0+ICoqaW52ZXJzZVJlc3BvbnNlQ29udGVudCoqOiBUaGlzIG9wdGlvbiBkb2VzIHRoZSBpbnZlcnNlIGZpbHRlcmluZywgYnkga2VlcGluZyBvbmx5IHRoZSBjb250ZW50IHdpdGggbWVkaWEgdHlwZXMgZGVmaW5lZCBhbmQgcmVtb3ZlIGFsbCBvdGhlciBjb250ZW50LgoKIyMjIEZpbHRlciAtIHJlcXVlc3RDb250ZW50L2ludmVyc2VSZXF1ZXN0Q29udGVudAoKPT4gKipyZXF1ZXN0Q29udGVudCoqOiBSZWZlcnMgdG8gdGhlIFtSZXF1ZXN0IEJvZHkgT2JqZWN0J3MgY29udGVudF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcmVxdWVzdC1ib2R5LW9iamVjdCkKCkEgIHJlcXVlc3QgYm9keSBgY29udGVudGAgZmlsdGVyIGV4YW1wbGU6CgpgYGB5YW1sCnJlcXVlc3RDb250ZW50OgogIC0gYXBwbGljYXRpb24vanNvbgpgYGAKClRoaXMgd2lsbCByZW1vdmUgYWxsIHRoZSBjb250ZW50IHRoYXQgbWF0Y2ggdGhlIG1lZGlhIHR5cGVzIGZyb20gdGhlIHJlcXVlc3QgYm9keS4gSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoaXMgd291bGQgbWVhbiB0aGF0IGFsbCBgYXBwbGljYXRpb24vanNvbmAKY29udGVudCBpdGVtcyB3b3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogIC9wZXQ6CiAgICBwb3N0OgogICAgICB0YWdzOgogICAgICAgIC0gcGV0CiAgICAgIHN1bW1hcnk6IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIGRlc2NyaXB0aW9uOiBBZGQgYSBuZXcgcGV0IHRvIHRoZSBzdG9yZQogICAgICBvcGVyYXRpb25JZDogYWRkUGV0CiAgICAgIHgtdmlzaWJpbGl0eTogdHJ1ZQogICAgICByZXF1ZXN0Qm9keTogCiAgICAgICAgICBjb250ZW50OgogICAgICAgICAgICBhcHBsaWNhdGlvbi94bWw6CiAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL1BldCcKICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvUGV0JwoKYGBgCgpFeGFtcGxlIGFmdGVyOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMAppbmZvOgogICAgdGl0bGU6IEFQSQogICAgdmVyc2lvbjogMS4wLjAKcGF0aHM6CiAgL3BldDoKICAgIHBvc3Q6CiAgICAgIHRhZ3M6CiAgICAgICAgLSBwZXQKICAgICAgc3VtbWFyeTogQWRkIGEgbmV3IHBldCB0byB0aGUgc3RvcmUKICAgICAgZGVzY3JpcHRpb246IEFkZCBhIG5ldyBwZXQgdG8gdGhlIHN0b3JlCiAgICAgIG9wZXJhdGlvbklkOiBhZGRQZXQKICAgICAgeC12aXNpYmlsaXR5OiB0cnVlCiAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgYXBwbGljYXRpb24veG1sOgogICAgICAgICAgICAgIHNjaGVtYToKICAgICAgICAgICAgICAgICRyZWY6ICcjL2NvbXBvbmVudHMvc2NoZW1hcy9QZXQnCmBgYAoKPT4gKippbnZlcnNlUmVxdWVzdENvbnRlbnQqKjogVGhpcyBvcHRpb24gZG9lcyB0aGUgaW52ZXJzZSBmaWx0ZXJpbmcsIGJ5IGtlZXBpbmcgb25seSB0aGUgY29udGVudCB3aXRoIG1lZGlhIHR5cGVzIGRlZmluZWQgYW5kIHJlbW92ZSBhbGwgb3RoZXIgY29udGVudCB0eXBlcyBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuCgojIyMgRmlsdGVyIC0gdW51c2VkQ29tcG9uZW50cwoKPT4gKip1bnVzZWRDb21wb25lbnRzKio6IFJlZmVycyB0byBhIGxpc3Qgb2YgW3JldXNhYmxlIGNvbXBvbmVudCB0eXBlc10oIGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSwgZnJvbSB3aGljaCB1bnVzZWQgaXRlbXMgd2lsbCBiZSByZW1vdmVkLgoKVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBzdHJpcCB0aGUgT3BlbkFQSSBkb2N1bWVudCBmcm9tIGFueSB1bnVzZWQgaXRlbXMgb2YgdGhlIHRhcmdldGVkIGBjb21wb25lbnRzYCB0eXBlcy4KQW55IGl0ZW0gaW4gdGhlIGxpc3Qgb2YgT3BlbkFQSSBgY29tcG9uZW50c2AgdGhhdCBpcyBub3QgcmVmZXJlbmNlZCBhcyBgJHJlZmAsIHdpbGwgZ2V0IG1hcmtlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKUkVNQVJLOiBXZSB3aWxsIHJlY3Vyc2l2ZWx5IHN0cmlwIGFsbCB1bnVzZWQgY29tcG9uZW50cywgd2l0aCBhIG1heGltdW0gZGVwdGggb2YgMTAgdGltZXMuIFRoaXMgbWVhbnMgdGhhdCAibmVzdGVkIiBjb21wb25lbnRzLCB0aGF0IGJlY29tZSB1bnVzZWQsIHdpbGwgYWxzbyBnZXQgcmVtb3ZlZAoKU3VwcG9ydGVkIGNvbXBvbmVudCB0eXBlcyB0aGF0IGNhbiBiZSBtYXJrZWQgYXMgInVudXNlZCI6Ci0gc2NoZW1hcwotIHBhcmFtZXRlcnMKLSBleGFtcGxlcwotIGhlYWRlcnMKLSByZXF1ZXN0Qm9kaWVzCi0gcmVzcG9uc2VzCgojIyMgRmlsdGVyIC0gdGV4dFJlcGxhY2UKCj0+ICoqdGV4dFJlcGxhY2UqKjogInNlYXJjaCAmIHJlcGxhY2UiIG9wdGlvbiB0byByZXBsYWNlIHRleHQgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbgoKVGhlIGB0ZXh0UmVwbGFjZWAgcHJvdmlkZXMgYSAic2VhcmNoICYgcmVwbGFjZSIgbWV0aG9kLCB0aGF0IHdpbGwgc2VhcmNoIGZvciBhIHRleHQvd29yZC9jaGFyYWN0ZXJzIGluIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uLCBzdW1tYXJ5LCBVUkwgZmllbGRzIGFuZCByZXBsYWNlIGl0IHdpdGggYW5vdGhlciB0ZXh0L3dvcmQvY2hhcmFjdGVycy4KVGhpcyBpcyB2ZXJ5IHVzZWZ1bCB0byByZXBsYWNlIGRhdGEgaW4gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbi4KCkEgYHRleHRSZXBsYWNlYCBleGFtcGxlOgoKYGBgeWFtbAp0ZXh0UmVwbGFjZToKICAgIC0gc2VhcmNoRm9yOiAnUGV0cycKICAgICAgcmVwbGFjZVdpdGg6ICdEb2dzJwogICAgLSBzZWFyY2hGb3I6ICdzd2FnZ2VyLmlvJwogICAgICByZXBsYWNlV2l0aDogJ29wZW5hcGlzLm9yZycKYGBgCgpUaGlzIHdpbGwgcmVwbGFjZSBhbGwgIlBldHMiIHdpdGggIkRvZ3MiICYgInN3YWdnZXIuaW8iIHdpdGggIm9wZW5hcGkub3JnIiBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCiMjIyBGaWx0ZXIgLSBzdHJpcEZsYWdzCgo9PiAqKnN0cmlwRmxhZ3MqKjogUmVmZXJzIHRvIGEgbGlzdCBvZiBjdXN0b20gcHJvcGVydGllcyB0aGF0IGNhbiBiZSBzZXQgb24gYW55IGZpZWxkIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKVGhlIGBzdHJpcEZsYWdzYCB3aWxsIHJlbW92ZSBvbmx5IHRoZSBmbGFncywgdGhlIGxpbmtlZCBwYXJlbnQgYW5kIHByb3BlcnRpZXMgd2lsbCByZW1haW4uIEluIHRoZSBleGFtcGxlIGJlbG93LCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhbGwKZmxhZ3MgYHgtZXhjbHVkZWAgaXRzZWxmIHdvdWxkIGJlIHN0cmlwcGVkIGZyb20gdGhlIE9wZW5BUEkgZG9jdW1lbnQuCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgZ2V0OgogICAgICAgICAgeC1leGNsdWRlOiB0cnVlCiAgICAgICAgICBzdW1tYXJ5OiBGaW5kcyBQZXRzIGJ5IHN0YXR1cwpgYGAKCkV4YW1wbGUgYWZ0ZXI6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgIHN1bW1hcnk6IEZpbmRzIFBldHMgYnkgc3RhdHVzCmBgYAoKIyMjIEZpbHRlciAtIHByZXNlcnZlRW1wdHlPYmplY3RzCgo9PiAqKnByZXNlcnZlRW1wdHlPYmplY3RzKio6IFJlZmVycyB0byBhbnkgcHJvcGVydGllcyBvZiB5b3VyIE9wZW5BUEkgZG9jdW1lbnQsIGZyb20gd2hpY2ggZW1wdHkgb2JqZWN0IHZhbHVlcyB3b3VsZCBiZSBrZXB0LgoKVGhlIGBwcmVzZXJ2ZUVtcHR5T2JqZWN0c2Agd2lsbCBwcmVzZXJ2ZSBhbGwgZW1wdHkgb2JqZWN0cyBpZiBzZXQgdG8gYHRydWVgLgoKWW91IGNhbiBhbHNvIHBhc3MgYSBsaXN0IG9mIGtleXMgZnJvbSB3aGljaCBwcmVzZXJ2ZSBlbXB0eSBvYmplY3RzLiBGb3IgaW5zdGFuY2UgYSBgWydzY2hlbWEnXWAgdmFsdWUgd291bGQgb25seSBwcmV2ZW50IHJlbW92YWwgb2YgZW1wdHkgb2JqZWN0cyBoYXZpbmcgZm9yIGtleSBgc2NoZW1hYC4KClJFTUFSSzogUGxlYXNlIG5vdGUgdGhhdCBvcGVuYXBpLWZvcm1hdCBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHJlbW92ZSBhbGwgZW1wdHkgb2JqZWN0cyBmcm9tIHlvdXIgZG9jdW1lbnQsIGV4Y2VwdCBmb3IgaXRlbXMgb2YgZXhhbXBsZXMsIHNlY3VyaXR5LCBzY2hlbWFzLCBkZWZhdWx0LCBvbmVPZiwgYWxsT2YuCgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4wCmluZm86CiAgICB0aXRsZTogQVBJCiAgICB2ZXJzaW9uOiAxLjAuMApwYXRoczoKICAgIC9wZXRzOgogICAgICAgIHBvc3Q6CiAgICAgICAgICByZXF1ZXN0Qm9keToKICAgICAgICAgICAgZGVzY3JpcHRpb246IENyZWF0ZSBhIG5ldyBwZXQgaW4gdGhlIHN0b3JlCiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlCiAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgIHNjaGVtYToge30KYGBgCgpFeGFtcGxlIGFmdGVyICh3aXRoIGBwcmVzZXJ2ZUVtcHR5T2JqZWN0czogZmFsc2VgKToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjAKaW5mbzoKICAgIHRpdGxlOiBBUEkKICAgIHZlcnNpb246IDEuMC4wCnBhdGhzOgogICAgL3BldHM6CiAgICAgICAgcG9zdDoKICAgICAgICAgIHJlcXVlc3RCb2R5OgogICAgICAgICAgICBkZXNjcmlwdGlvbjogQ3JlYXRlIGEgbmV3IHBldCBpbiB0aGUgc3RvcmUKICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUKICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOiB7fQpgYGAKCiMjIE9wZW5BUEkgZm9ybWF0dGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMKClRvb2xzIGxpa2UgW3NwZWN0cmFsXShodHRwczovL2dpdGh1Yi5jb20vc3RvcGxpZ2h0aW8vc3BlY3RyYWwpIG9yIFtzcGVjY3ldKGh0dHBzOi8vc3BlY2N5LmlvLyksIG9yIGFueSBvZiB0aGUgW2xpbnRpbmcgdG9vbHNdKGh0dHBzOi8vbm9yZGljYXBpcy5jb20vOC1vcGVuYXBpLWxpbnRlcnMvKSwgcHJvdmlkZSBhIG1hbm5lciB0byB2YWxpZGF0ZSAmIGxpbnQgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyB0byBiZSB1bmlmb3JtLiBUaGUgbGludGluZyB0b29sIGluZm9ybXMgYWJvdXQgdGhlIGluY29ycmVjdCB1c2FnZSBvZiBPcGVuQVBJIHByb3BlcnRpZXMgJiBpbmNvbnNpc3RlbnQgZmllbGQgbmFtZXMuClRoaXMgaXMgdmVyeSB1c2VmdWwgYW5kIGhlbHBzIHRvIGd1YXJkIHRoZSBxdWFsaXR5IG9mIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb24uIFRoZXkgaW5mb3JtIHdoaWNoIGZpZWxkcyB0byBjb3JyZWN0IHNvIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gd2lsbCBjb21wbHkgd2l0aCBhbGwgdGhlIGRlZmluZWQgbGludGluZyBydWxlcy4KClRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgZm9ybWF0dGluZyBvcHRpb24gY2FuIGFzc2lzdCB3aXRoIGtlZXBpbmcgdGhlIGZpZWxkIG5hbWVzIGNvbnNpc3RlbnQgYnkgYXV0b21hdGljYWxseSBjaGFuZ2luZyB0aGUgY2FzaW5nIG9mIHRoZSBwcm9wZXJ0aWVzL2tleXMvbmFtZXMgZm9yIHRoZSBkaWZmZXJlbnQgZWxlbWVudHMgaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQuClRoZSBkZXNpcmVkIGNhc2luZyBjYW4gYmUgZGVmaW5lZCBwZXIgT3BlbkFQSSBrZXkvZWxlbWVudCAoc2VlIGxpc3QgYmVsb3cpLgpUaGUga2V5cyB0aGF0IGFyZSBub3Qgc3BlY2lmaWVkIHdpbGwga2VlcCB0aGVpciBjYXNpbmcgbGlrZSBpdCBpcyBpbiB0aGUgb3JpZ2luYWwgT3BlbkFQSSBkb2N1bWVudCwgc28gb25seSBmb3IgZGVmaW5lZCBmaWVsZHMsIHRoZSBjYXNpbmcgd2lsbCBiZSBjaGFuZ2VkLgoKfCBLZXkgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuQVBJIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwKfCBvcGVyYXRpb25JZCAgICAgICAgICAgICAgICB8IENoYW5nZXMgb3BlcmF0aW9uIElEJ3MgdGhhdCBhcmUgcGFydCBvZiB0aGUgT3BlcmF0aW9ucyBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbb3BlcmF0aW9uLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjb3BlcmF0aW9uLW9iamVjdCl8CnwgcHJvcGVydGllcyAgICAgICAgICAgICAgICAgfCBDaGFuZ2VzIHByb3BlcnR5IGtleXMgb2YgdGhlIHNjaGVtYXMgb2YgdGhlIGlubGluZSByZXNwb25zZS9yZXF1ZXN0Qm9keSAmIGNvbXBvbmVudHMgICAgICAgICAgICAgICAgIHwgW3NjaGVtYU9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjc2NoZW1hT2JqZWN0KSB8CnwgcGFyYW1ldGVyc0Nvb2tpZSAgICAgICAgICAgfCBDaGFuZ2VzIHRoZSBjb29raWUgbmFtZSBvZiB0aGUgcGFyYW1ldGVycyBpbmxpbmUgJiBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3BhcmFtZXRlci1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3BhcmFtZXRlci1vYmplY3QpIHwKfCBwYXJhbWV0ZXJzUGF0aCAgICAgICAgICAgICB8IENoYW5nZXMgdGhlIHBhdGggbmFtZSBvZiB0aGUgcGFyYW1ldGVycyBpbmxpbmUgJiBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbcGFyYW1ldGVyLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjcGFyYW1ldGVyLW9iamVjdCkgfAp8IHBhcmFtZXRlcnNIZWFkZXIgICAgICAgICAgIHwgQ2hhbmdlcyB0aGUgaGVhZGVyIG5hbWUgb2YgdGhlIHBhcmFtZXRlcnMgaW5saW5lICYgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtwYXJhbWV0ZXItb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNwYXJhbWV0ZXItb2JqZWN0KSB8CnwgcGFyYW1ldGVyc1F1ZXJ5ICAgICAgICAgICAgfCBDaGFuZ2VzIHRoZSBxdWVyeSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXJzIGlubGluZSAmIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3BhcmFtZXRlci1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI3BhcmFtZXRlci1vYmplY3QpIHwKfCBjb21wb25lbnRzUGFyYW1ldGVyc0Nvb2tpZSB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgY29va2llIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBwYXJhbWV0ZXJzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHBhdGggbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHBhcmFtZXRlcnMgc2VjdGlvbnMgJiAiJHJlZiIgbGlua3MgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNQYXJhbWV0ZXJzUXVlcnkgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBxdWVyeSBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgcGFyYW1ldGVycyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzUGFyYW1ldGVyc0hlYWRlciB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgaGVhZGVyIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBwYXJhbWV0ZXJzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1NjaGVtYXMgICAgICAgICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHNjaGVtYSBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbnMgJiAiJHJlZiIgbGlua3MgICAgICAgICAgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNFeGFtcGxlcyAgICAgICAgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSBleGFtcGxlIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzSGVhZGVycyAgICAgICAgICB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgaGVhZGVyIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CnwgY29tcG9uZW50c1Jlc3BvbnNlcyAgICAgICAgfCBDaGFuZ2VzIHRoZSBrZXkgb2YgdGhlIHJlc3BvbnNlIG1vZGVscyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgIHwgW2NvbXBvbmVudHMtb2JqZWN0XShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy92My4wLjMuaHRtbCNjb21wb25lbnRzLW9iamVjdCkgfAp8IGNvbXBvbmVudHNSZXF1ZXN0Qm9kaWVzICAgIHwgQ2hhbmdlcyB0aGUga2V5IG9mIHRoZSByZXF1ZXN0IGJvZHkgbW9kZWxzIGluIHRoZSBjb21wb25lbnRzIHNlY3Rpb25zICYgIiRyZWYiIGxpbmtzICAgICAgICAgICAgICAgICB8IFtjb21wb25lbnRzLW9iamVjdF0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4zLmh0bWwjY29tcG9uZW50cy1vYmplY3QpIHwKfCBjb21wb25lbnRzU2VjdXJpdHlTY2hlbWVzICB8IENoYW5nZXMgdGhlIGtleSBvZiB0aGUgc2VjdXJpdHkgc2NoZW1lcyBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9ucyAmICIkcmVmIiBsaW5rcyAgICAgICAgICAgICAgICAgICAgfCBbY29tcG9uZW50cy1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI2NvbXBvbmVudHMtb2JqZWN0KSB8CgojIyMgQ2FzaW5nIG9wdGlvbnMKCnwgQ2FzaW5nIHR5cGUgICAgICB8IENhc2luZyBhbGlhcyB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgIHwKfCAtLS0tLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLSB8Cnwg8J+QqiBjYW1lbENhc2UgICAgIHwgY2FtZWxDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBjYW1lbENhc2VgICAgICAgICAgICAgICAgICB8IGBvcGVuYXBpRm9ybWF0YCAgfAp8IPCfkajigI3wn4+rIFBhc2NhbENhc2UgICAgfCBQYXNjYWxDYXNlICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYFBhc2NhbENhc2VgICAgICAgICAgICAgICAgIHwgYE9wZW5hcGlGb3JtYXRgICB8Cnwg8J+lmSBrZWJhYi1jYXNlICAgIHwga2ViYWJDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBrZWJhYi1jYXNlYCAgICAgICAgICAgICAgICB8IGBvcGVuYXBpLWZvcm1hdGAgfAp8IPCfmoIgVHJhaW4tQ2FzZSAgICB8IFRyYWluQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgVHJhaW4tQ2FzZWAgICAgICAgICAgICAgICAgfCBgT3BlbmFwaS1Gb3JtYXRgIHwKfCDwn5CNIHNuYWtlX2Nhc2UgICAgfCBzbmFrZUNhc2UgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYHNuYWtlX2Nhc2VgICAgICAgICAgICAgICAgIHwgYG9wZW5hcGlfZm9ybWF0YCB8Cnwg8J+ViiBBZGFfQ2FzZSAgICAgIHwgQWRhQ2FzZSAgICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBBZGFfQ2FzZWAgICAgICAgICAgICAgICAgICB8IGBPcGVuYXBpX0Zvcm1hdGAgfAp8IPCfk6MgQ09OU1RBTlRfQ0FTRSB8IGNvbnN0YW50Q2FzZSB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgQ09OU1RBTlRfQ0FTRWAgICAgICAgICAgICAgfCBgT1BFTkFQSV9GT1JNQVRgIHwKfCDwn5GUIENPQk9MLUNBU0UgICAgfCBjb2JvbENhc2UgICAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYENPQk9MLUNBU0VgICAgICAgICAgICAgICAgIHwgYE9QRU5BUEktRk9STUFUYCB8Cnwg8J+TjSBEb3Qubm90YXRpb24gIHwgZG90Tm90YXRpb24gIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBEb3Qubm90YXRpb25gICAgICAgICAgICAgICB8IGBvcGVuYXBpLmZvcm1hdGAgfAp8IPCfm7AgU3BhY2UgY2FzZSAgICB8IHNwYWNlQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgU3BhY2UgY2FzZWAgKHdpdGggc3BhY2VzKSAgfCBgb3BlbmFwaSBmb3JtYXRgIHwKfCDwn4+bIENhcGl0YWwgQ2FzZSAgfCBjYXBpdGFsQ2FzZSAgfCBjb252ZXJ0cyBhIHN0cmluZ3MgdG8gYENhcGl0YWwgQ2FzZWAgKHdpdGggc3BhY2VzKXwgYE9wZW5hcGkgRm9ybWF0YCB8Cnwg8J+UoSBsb3dlciBjYXNlICAgIHwgbG93ZXJDYXNlICAgIHwgY29udmVydHMgYSBzdHJpbmdzIHRvIGBsb3dlciBjYXNlYCAod2l0aCBzcGFjZXMpICB8IGBvcGVuYXBpIGZvcm1hdGAgfAp8IPCflKAgVVBQRVIgQ0FTRSAgICB8IHVwcGVyQ2FzZSAgICB8IGNvbnZlcnRzIGEgc3RyaW5ncyB0byBgVVBQRVIgQ0FTRWAgKHdpdGggc3BhY2VzKSAgfCBgT1BFTkFQSSBGT1JNQVRgIHwKCj4gUkVNQVJLOiBBbGwgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBzdHJpcHBlZCBkdXJpbmcgY29udmVyc2lvbiwgZXhjZXB0IGZvciB0aGUgYEBgIGFuZCBgJGAsIHNpbmNlIHRoZXkgY2FuIGJlIHBhcnQgb2YgdGhlIHF1ZXJ5IHN0cmluZ3MuCgpUaGUgY2FzaW5nIG9wdGlvbnMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBuYW5vIE5QTSBbY2FzZS1hbnl0aGluZ10oaHR0cHM6Ly9naXRodWIuY29tL21lc3F1ZWViL2Nhc2UtYW55dGhpbmcpIHBhY2thZ2UuCgojIyMgRm9ybWF0IGNhc2luZyAtIG9wZXJhdGlvbklkCgo9PiAqKm9wZXJhdGlvbklkKio6IFJlZmVycyB0byB0aGUgYG9wZXJhdGlvbklkYCBwcm9wZXJ0aWVzIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9ybWF0dGluZyBjYXNpbmcgZXhhbXBsZToKCmBgYHlhbWwKb3BlcmF0aW9uSWQ6IGtlYmFiLWNhc2UKYGBgCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAvcGV0czoKICAgICAgICBnZXQ6CiAgICAgICAgICBvcGVyYXRpb25JZDogZ2V0UGV0cwpgYGAKCm9wZW5hcGktZm9ybWF0IHdpbGwgZm9ybWF0IHRoZSAiZ2V0UGV0cyIgZnJvbSB0aGUgb3JpZ2luYWwgY2FtZWxjYXNlIHRvIGtlYmFiLWNhc2UuCgpFeGFtcGxlIGFmdGVyOgoKYGBgeWFtbApvcGVuYXBpOiAzLjAuMwpwYXRoczoKICAgIC9wZXRzOgogICAgICAgIGdldDoKICAgICAgICAgIG9wZXJhdGlvbklkOiBnZXQtcGV0cwpgYGAKCiMjIyBGb3JtYXQgY2FzaW5nIC0gbW9kZWwgJiBzY2hlbWEgcHJvcGVydGllcwoKPT4gKipwcm9wZXJ0aWVzKio6IFJlZmVycyB0byBhbGwgdGhlIHNjaGVtYSBwcm9wZXJ0aWVzLCB0aGF0IGFyZSBkZWZpbmVkIGlubGluZSBpbiB0aGUgcGF0aHMgcmVxdWVzdCBib2RpZXMgJiByZXNwb25zZXMgYW5kIHRoZSBtb2RlbHMgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkZvcm1hdHRpbmcgY2FzaW5nIGV4YW1wbGU6CgpgYGB5YW1sCnByb3BlcnRpZXM6IHNuYWtlX2Nhc2UKYGBgCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKY29tcG9uZW50czoKICAgIHNjaGVtYXM6CiAgICAgICAgVXNlck1vZGVsOgogICAgICAgICAgICB0eXBlOiBvYmplY3QKICAgICAgICAgICAgcHJvcGVydGllczoKICAgICAgICAgICAgICAgIGlkOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IGludGVnZXIKICAgICAgICAgICAgICAgICAgICBleGFtcGxlOiAxMAogICAgICAgICAgICAgICAgZW1haWxBZGRyZXNzOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IGpvaG5AZG9lLmNvbQogICAgICAgICAgICAgICAgZmlyc3ROYW1lOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IEpvaG4KYGBgCgpUaGUgQ0xJIHdpbGwgZm9ybWF0IGFsbCB0aGUgcHJvcGVydGllcyBsaWtlOiAiaWQiLCAidXNlcm5hbWUiLCAiZmlyc3ROYW1lIiBmcm9tIHRoZSBvcmlnaW5hbCBjYW1lbGNhc2UgdG8gc25ha2VfY2FzZS4KCkV4YW1wbGUgYWZ0ZXI6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCmNvbXBvbmVudHM6CiAgICBzY2hlbWFzOgogICAgICAgIFVzZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgICAgIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICBpZDoKICAgICAgICAgICAgICAgICAgICB0eXBlOiBpbnRlZ2VyCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogMTAKICAgICAgICAgICAgICAgIGVtYWlsX2FkZHJlc3M6CiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZXhhbXBsZTogam9obkBkb2UuY29tCiAgICAgICAgICAgICAgICBmaXJzdF9uYW1lOgogICAgICAgICAgICAgICAgICAgIHR5cGU6IHN0cmluZwogICAgICAgICAgICAgICAgICAgIGV4YW1wbGU6IEpvaG4KYGBgCgojIyMgRm9ybWF0IGNhc2luZyAtIGNvbXBvbmVudCBrZXlzCgo9PiAqKmNvbXBvbmVudHNTY2hlbWFzIC8gY29tcG9uZW50c0V4YW1wbGVzIC8gY29tcG9uZW50c1BhcmFtZXRlcnNDb29raWUgLyBjb21wb25lbnRzUGFyYW1ldGVyc0hlYWRlciAvIGNvbXBvbmVudHNQYXJhbWV0ZXJzUXVlcnkgLyBjb21wb25lbnRzUGFyYW1ldGVyc1F1ZXJ5IC8gY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoIC8gY29tcG9uZW50c0hlYWRlcnMgLyBjb21wb25lbnRzUmVzcG9uc2VzIC8gY29tcG9uZW50c1JlcXVlc3RCb2RpZXMgLyBjb21wb25lbnRzU2VjdXJpdHlTY2hlbWVzKio6IFJlZmVycyB0byBhbGwgdGhlIG1vZGVsIG9iamVjdHMgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgY29tcG9uZW50cyBzZWN0aW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9ybWF0dGluZyBjYXNpbmcgZXhhbXBsZToKCmBgYHlhbWwKY29tcG9uZW50c1NjaGVtYXM6IFBhc2NhbENhc2UKYGBgCgpFeGFtcGxlIGJlZm9yZToKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAvb3JkZXJzOgogICAgICAgIGdldDoKICAgICAgICAgICAgcmVzcG9uc2VzOgogICAgICAgICAgICAgICAgY29udGVudDoKICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbi9qc29uOgogICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiAnIy9jb21wb25lbnRzL3NjaGVtYXMvb3JkZXItbW9kZWwnCmNvbXBvbmVudHM6CiAgICBzY2hlbWFzOgogICAgICAgIHVzZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgb3JkZXItbW9kZWw6CiAgICAgICAgICAgIHR5cGU6IG9iamVjdAogICAgICAgIHBldF9tb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CmBgYAoKb3BlbmFwaS1mb3JtYXQgd2lsbCBmb3JtYXQgYWxsIHRoZSBjb21wb25lbnQga2V5cyBsaWtlOiAidXNlck1vZGVsIiwgIm9yZGVyLW1vZGVsIiwgInBldF9tb2RlbCIgdG8gUGFzY2FsQ2FzZSwgaW5jbHVkaW5nIGZvcm1hdHRpbmcgYWxsIHRoZSAiJHJlZiIgdXNlZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCkV4YW1wbGUgYWZ0ZXI6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCnBhdGhzOgogICAgL29yZGVyczoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHJlc3BvbnNlczoKICAgICAgICAgICAgICAgIGNvbnRlbnQ6CiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24vanNvbjoKICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1hOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlZjogJyMvY29tcG9uZW50cy9zY2hlbWFzL09yZGVyTW9kZWwnCmNvbXBvbmVudHM6CiAgICBzY2hlbWFzOgogICAgICAgIFVzZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgT3JkZXJNb2RlbDoKICAgICAgICAgICAgdHlwZTogb2JqZWN0CiAgICAgICAgUGV0TW9kZWw6CiAgICAgICAgICAgIHR5cGU6IG9iamVjdApgYGAKCiMjIyBGb3JtYXQgY2FzaW5nIC0gcGFyYW1ldGVyIG5hbWVzCgo9PiAqKmNvbXBvbmVudHNQYXJhbWV0ZXJzQ29va2llIC8gY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoIC8gY29tcG9uZW50c1BhcmFtZXRlcnNRdWVyeSAvIGNvbXBvbmVudHNQYXJhbWV0ZXJzSGVhZGVyKio6IFJlZmVycyB0byAibmFtZSIgaW4gdGhlIFBhcmFtZXRlcnMgdHlwZXM6IFBhdGgsIFF1ZXJ5IG9yIEhlYWRlciwgd2hpY2ggY2FuIGJlIGRlZmluZWQgaW5saW5lIGluIHRoZSBQYXRoIG9yIGFzIGEgcmVmZXJlbmNlIGluIHRoZSBjb21wb25lbnRzIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRm9ybWF0dGluZyBjYXNpbmcgZXhhbXBsZToKCmBgYHlhbWwKY29tcG9uZW50c1BhcmFtZXRlcnNQYXRoOiBrZWJhYi1jYXNlCmBgYAoKRXhhbXBsZSBiZWZvcmU6CgpgYGB5YW1sCm9wZW5hcGk6IDMuMC4zCnBhdGhzOgogICAgJy9wZXQve3BldElkfSc6CiAgICAgICAgZ2V0OgogICAgICAgICAgICBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgICAgLSBuYW1lOiBwZXRJZAogICAgICAgICAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogSUQgb2YgcGV0IHRvIHJldHVybgogICAgICAgICAgICAgICAgLSAkcmVmOiAnIy9jb21wb25lbnRzL3BhcmFtZXRlcnMvTGltaXRQYXJhbScKY29tcG9uZW50czoKICAgIHBhcmFtZXRlcnM6CiAgICAgICAgTGltaXRQYXJhbToKICAgICAgICAgICAgbmFtZTogbGltaXRQYXJhbQogICAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgICAgZGVzY3JpcHRpb246IG1heCByZWNvcmRzIHRvIHJldHVybgpgYGAKClRoZSBDTEkgd2lsbCBmb3JtYXQgdGhlICJuYW1lIiBvZiB0aGUgcGFyYW1ldGVyczogUGF0aCwgUXVlcnkgb3IgSGVhZGVyIGxpa2U6ICJwZXRJZCIsICJsaW1pdFBhcmFtIiB0byBrZWJhYi1jYXNlIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoKRXhhbXBsZSBhZnRlcjoKCmBgYHlhbWwKb3BlbmFwaTogMy4wLjMKcGF0aHM6CiAgICAnL3BldC97cGV0SWR9JzoKICAgICAgICBnZXQ6CiAgICAgICAgICAgIHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICAtIG5hbWU6IHBldC1pZAogICAgICAgICAgICAgICAgICBpbjogcGF0aAogICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogSUQgb2YgcGV0IHRvIHJldHVybgogICAgICAgICAgICAgICAtICRyZWY6ICcjL2NvbXBvbmVudHMvcGFyYW1ldGVycy9MaW1pdFBhcmFtJwpjb21wb25lbnRzOgogICAgcGFyYW1ldGVyczoKICAgICAgICBMaW1pdFBhcmFtOgogICAgICAgICAgICBuYW1lOiBsaW1pdC1wYXJhbQogICAgICAgICAgICBpbjogcXVlcnkKICAgICAgICAgICAgZGVzY3JpcHRpb246IG1heCByZWNvcmRzIHRvIHJldHVybgpgYGAKCiMjIyBPcGVuQVBJIEdlbmVyYXRlIE9wdGlvbnMKClRoZSBPcGVuQVBJIGZvcm1hdHRpbmcgdG9vbCBhbGxvd3MgeW91IHRvIGdlbmVyYXRlIHZhcmlvdXMgZWxlbWVudHMgc3VjaCBhcyBgb3BlcmF0aW9uSWRgLCBhbmQgbW9yZSB1c2luZyBjdXN0b21pemFibGUgdGVtcGxhdGVzLiBUaGVzZSB0ZW1wbGF0ZXMgZW5hYmxlIGR5bmFtaWMgZ2VuZXJhdGlvbiBvZiBtaXNzaW5nIG9yIGluY29tcGxldGUgdmFsdWVzIGluIHlvdXIgT3BlbkFQSSBzcGVjaWZpY2F0aW9uLCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhbmQgYWRoZXJlbmNlIHRvIHlvdXIgY29udmVudGlvbnMuCgpPcHRpb25zIGZvciBnZW5lcmF0aW5nIGVsZW1lbnRzOgoKLSBgb3BlcmF0aW9uSWRUZW1wbGF0ZWA6IEdlbmVyYXRlIHRoZSBgb3BlcmF0aW9uSWRgIHVzaW5nIHBsYWNlaG9sZGVycyBsaWtlIGA8bWV0aG9kPmAsIGA8cGF0aFBhcnQyPmAsIGV0Yy4KLSBgb3ZlcndyaXRlRXhpc3RpbmdgOiBTZXQgdG8gYHRydWVgIG9yIGBmYWxzZWAgdG8gY29udHJvbCB3aGV0aGVyIGV4aXN0aW5nIHZhbHVlcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gKGRlZmF1bHQ6IGBmYWxzZWApLgoKfCBLZXkgICAgICAgICAgICAgICAgIHwgT3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkFQSSBSZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBvcGVyYXRpb25JZFRlbXBsYXRlIHwgQ3VzdG9taXphYmxlIHdpdGggcGxhY2Vob2xkZXJzIHwgW29wZXJhdGlvbi1vYmplY3RdKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL3YzLjAuMy5odG1sI29wZXJhdGlvbi1vYmplY3QpIHwKfCBvdmVyd3JpdGVFeGlzdGluZyAgIHwgYHRydWVgIC8gYGZhbHNlYCAgICAgICAgICAgICAgIHwgTi9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKClNlZSBbQ0xJIGdlbmVyYXRlIHVzYWdlXSgjY2xpLWdlbmVyYXRlLXVzYWdlKSBmb3IgYW4gZXhhbXBsZSBhbmQgdGhlIGF2YWlsYWJsZSB0ZW1wbGF0ZSBvcHRpb25zLgoKIyMgQ0xJIHNvcnQgdXNhZ2UKCi0gRm9ybWF0IGEgc3BlYyB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IEpTT04gZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbgpgYGAKCi0gRm9ybWF0IGEgcmVtb3RlIHNwZWMgd2l0aCB0aGUgZGVmYXVsdCBzb3J0aW5nIGFuZCBzYXZlcyBpdCBhcyBhIG5ldyBKU09OIGZpbGUKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL09BSS9PcGVuQVBJLVNwZWNpZmljYXRpb24vbWFpbi9leGFtcGxlcy92My4wL2FwaS13aXRoLWV4YW1wbGVzLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbgpgYGAKCi0gRm9ybWF0IGFuIE9wZW5BUEkgSlNPTiBkb2N1bWVudCB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IFlBTUwgZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS55YW1sCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCB1c2luZyBhIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWluaW5nIGFsbCB0aGUgb3B0aW9ucyB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBwYXNzZWQgdmlhIHRoZSBDTEkuIAoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLnlhbWwgLS1jb25maWdGaWxlIG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbgpgYGAKClRoZSBmb3JtYXR0aW5nIHdpbGwgaGFwcGVuIGJhc2VkIG9uIGFsbCB0aGUgb3B0aW9ucyBzZXQgaW4gdGhlIGBvcGVuYXBpLWZvcm1hdC1vcHRpb25zLmpzb25gIGZpbGUuIEFsbCB0aGUKYXZhaWxhYmxlIFtPcGVuQVBJIGZvcm1hdCBvcHRpb25zXShodHRwczovL2dpdGh1Yi5jb20vdGhpbTgxL29wZW5hcGktZm9ybWF0I29wZW5hcGktZm9ybWF0LW9wdGlvbnMpIGNhbiBiZSB1c2VkIGluIHRoZSBjb25maWcgZmlsZS4KCi0gRm9ybWF0IGFuIE9wZW5BUEkgZG9jdW1lbnQgd2l0aCB0aGUgZGVmYXVsdCBzb3J0aW5nIGFuZCBvdXRwdXQgaXQgYXMgSlNPTiB0byBTVERPVVQKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC0tanNvbgpgYGAKCi0gRm9ybWF0IGFuIE9wZW5BUEkgZG9jdW1lbnQgd2l0aCB0aGUgZGVmYXVsdCBzb3J0aW5nIGFuZCBvdXRwdXQgaXQgYXMgWUFNTCB0byBTVERPVVQKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC0teWFtbApgYGAKCi0gRm9ybWF0IGFuIE9wZW5BUEkgSlNPTiBkb2N1bWVudCB3aXRoIHRoZSBkZWZhdWx0IHNvcnRpbmcgYW5kIHNhdmUgaXQgYXMgWUFNTAoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS55YW1sCmBgYAoKLSBGb3JtYXQgYW4gT3BlbkFQSSBkb2N1bWVudCBidXQgc2tpcCB0aGUgc29ydGluZyBhbmQgc2F2ZSBpdCBhcyBhIG5ldyBKU09OIGZpbGUKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIG9wZW5hcGktZm9ybWF0dGVkLmpzb24gLS1uby1zb3J0CmBgYAoKVGhpcyBzaG91bGQga2VlcCB0aGUgT3BlbkFQSSBmaWVsZHMgaW4gdGhlIHNhbWUgb3JkZXIuIFRoaXMgY2FuIGJlIG5lZWRlZCwgd2hlbiB5b3Ugb25seSB3YW50IHRvIGRvIGEgZmlsdGVyaW5nIG9yCnJlbmFtZSBhY3Rpb24uCgotIENvbnZlcnQgdGhlIE9wZW5BUEkgMy4wIGRvY3VtZW50IHRvIE9wZW5BUEkgMy4xIGJ1dCBza2lwIHRoZSBzb3J0aW5nIGFuZCBzYXZlIGl0IGFzIGEgbmV3IFlBTUwgZmlsZQoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLnlhbWwgLW8gb3BlbmFwaS0zLjEueWFtbCAtLW5vLXNvcnQgLS1jb252ZXJ0VG8gIjMuMSIKYGBgCgpUaGlzIHdpbGwgY29udmVydCB0aGUgT3BlbkFQSSAzLjAgZG9jdW1lbnQgaW50byB2ZXJzaW9uIDMuMSBvZiBPcGVuQVBJLCB3aXRob3V0IGFueSBvcmRlcmluZyBvciBmaWx0ZXJpbmcuCkR1cmluZyB0aGUgY29udmVyc2lvbiwgb3BlbmFwaS1mb3JtYXQgd2lsbCB0cmFuc2Zvcm0gYWxsIE9wZW5BUEkgMy4wIHByb3BlcnRpZXMgaW50byB0aGUgT3BlbkFQSSAzLjEgcHJvcGVydGllcywgYXMgZGVzY3JpYmVkIGluIHRoZSBbbWlncmF0aW9uIGd1aWRlIGZyb20KUGhpbCBTdHVyZ2Vvbl0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnL2Jsb2cvMjAyMS8wMi8xNi9taWdyYXRpbmctZnJvbS1vcGVuYXBpLTMtMC10by0zLTEtMCkuCgotIEZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50LCBpbmNsdWRpbmcgc29ydGluZyBhbGwgZWxlbWVudHMgaW4gdGhlIGNvbXBvbmVudHMgc2VjdGlvbgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS1mb3JtYXR0ZWQuanNvbiAtLXNvcnRDb21wb25lbnRzRmlsZSAuL3Rlc3QvanNvbi1zb3J0LWNvbXBvbmVudHMvY3VzdG9tU29ydENvbXBvbmVudHMuanNvbgpgYGAKClRoaXMgd2lsbCBzb3J0IGFsbCBlbGVtZW50cyBpbiB0aGUgY29tcG9uZW50cyAoIGNvbXBvbmVudHMvc2NoZW1hcywgY29tcG9uZW50cy9wYXJhbWV0ZXJzLCBjb21wb25lbnRzL2hlYWRlcnMsCmNvbXBvbmVudHMvcmVxdWVzdEJvZGllcywgY29tcG9uZW50cy9yZXNwb25zZXMsIC4uLikgc2VjdGlvbiBieSBhbHBoYWJldC4KCiMjIENMSSBmaWx0ZXIgdXNhZ2UKCi0gRm9ybWF0IGFuIE9wZW5BUEkgZG9jdW1lbnQgYnkgZmlsdGVyaW5nIGZpZWxkcywgZGVmYXVsdCBzb3J0aW5nIGFuZCBzYXZlcyBpdCBhcyBhIG5ldyBmaWxlCgpXaGVuIHlvdSB3YW50IHRvIHN0cmlwIGNlcnRhaW4gbWV0aG9kcyAsdGFncywgb3BlcmF0aW9uSWRzLCBvcGVyYXRpb25zLCBmbGFncyB5b3UgY2FuIHBhc3MgYSBgZmlsdGVyRmlsZWAgd2hpY2ggY29udGFpbnMgdGhlCnNwZWNpZmljIHZhbHVlcyBmb3IgdGhlIG1ldGhvZHMgLHRhZ3MsIG9wZXJhdGlvbklkcywgb3BlcmF0aW9ucywgZmxhZ3MuCgpUaGlzIGNhbiBiZSB1c2VmdWwgdG8gY29tYmluZSB3aXRoIHRoZSBzb3J0aW5nLCB0byBlbmQgdXAgd2l0aCBhbiBvcmRlciBhbmQgZmlsdGVyZWQgT3BlbkFQSSBkb2N1bWVudC4KCmV4YW1wbGU6CgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLWZvcm1hdHRlZC5qc29uIC0tZmlsdGVyRmlsZSBjdXN0b21GaWx0ZXIueWFtbApgYGAKCndoZXJlIHRoZSBgY3VzdG9tRmlsdGVyLnlhbWxgIHdvdWxkIGNvbnRhaW4gYSBjb21iaW5hdGlvbiBvZiBhbGwgdGhlIGVsZW1lbnRzIHlvdSB3YW50IHRvIGZpbHRlciBvdXQuCgpgYGB5YW1sCmZsYWdzOgogICAgLSB4LXZpc2liaWxpdHkKZmxhZ1ZhbHVlczogWyBdCnRhZ3M6IFsgXQpvcGVyYXRpb25JZHM6CiAgICAtIGFkZFBldAogICAgLSBmaW5kUGV0c0J5U3RhdHVzCmBgYAoKIyMgQ0xJIGdlbmVyYXRlIHVzYWdlCgotIEdlbmVyYXRlIE9wZW5BUEkgZWxlbWVudHMgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IGZpbGUKClRoZSBPcGVuQVBJIGZvcm1hdHRpbmcgdG9vbCBhbGxvd3MgeW91IHRvIGdlbmVyYXRlIE9wZW5BUEkgZWxlbWVudHMsIHN1Y2ggYXMgYG9wZXJhdGlvbklkYCwgYHN1bW1hcnlgLCBhbmQgbW9yZSwgYmFzZWQgb24gY29uZmlndXJhYmxlIHRlbXBsYXRlcy4gVGhlIGdlbmVyYXRlZCBlbGVtZW50cyB3aWxsIGJlIHNhdmVkIHRvIHRoZSBvdXRwdXQgT3BlbkFQSSBmaWxlLgoKWW91IGNhbiBhbHNvIGNvbWJpbmUgZ2VuZXJhdGlvbiB3aXRoIGZpbHRlcmluZyBhbmQgc29ydGluZyB0byBjdXN0b21pemUgdGhlIG91dHB1dC4KCmV4YW1wbGU6CgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLWZvcm1hdHRlZC5qc29uIC0tZ2VuZXJhdGVGaWxlIGN1c3RvbUdlbmVyYXRlLnlhbWwKYGBgCgp3aGVyZSB0aGUgYGN1c3RvbUdlbmVyYXRlLnlhbWxgIHdvdWxkIGNvbnRhaW4gYSBjb21iaW5hdGlvbiBvZiBhbGwgdGhlIGVsZW1lbnRzIHlvdSB0byBnZW5lcmF0ZS4KCmBgYHlhbWwKb3BlcmF0aW9uSWRUZW1wbGF0ZTogIjxtZXRob2Q+XzxwYXRoUGFydDI+IgpvdmVyd3JpdGVFeGlzdGluZzogZmFsc2UKYGBgCgoqKlRlbXBsYXRlIE9wdGlvbnM6KioKSW4gdGhlIGN1c3RvbUdlbmVyYXRlLnlhbWwsIHlvdSBjYW4gZGVmaW5lIHRlbXBsYXRlcyBmb3IgdmFyaW91cyBPcGVuQVBJIHByb3BlcnRpZXMgdXNpbmcgZHluYW1pYyBwbGFjZWhvbGRlcnMuIFRoZXNlIHBsYWNlaG9sZGVycyB3aWxsIGJlIHJlcGxhY2VkIGJ5IGFjdHVhbCB2YWx1ZXMgZnJvbSB0aGUgT3BlbkFQSSBvcGVyYXRpb25zLiBCZWxvdyBpcyBhIGxpc3Qgb2YgYXZhaWxhYmxlIHBsYWNlaG9sZGVycyBhbmQgd2hhdCB0aGV5IHJlcHJlc2VudDoKCi0gYDxvcGVyYXRpb25JZD5gIDogVGhlIG9wZXJhdGlvbklkIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbi4gRXhhbXBsZTogbGVhZHNBbGwKLSBgPG1ldGhvZD5gIDogVGhlIEhUVFAgbWV0aG9kIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbi4gRXhhbXBsZTogR0VUCi0gYDxwYXRoPmAgOiBUaGUgcGF0aCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IC9jcm0vbGVhZHMKLSBgPHBhdGhSZWY+YCA6IFRoZSBwYXRoIHJlZmVyZW5jZSBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IEdFVDo6L2NybS9sZWFkcwotIGA8dGFnPmAgOiBUaGUgZmlyc3QgdGFnIG5hbWUgb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLiBFeGFtcGxlOiBMZWFkcwotIGA8dGFnMT5gIDogVGhlIGZpcnN0IHRhZyBuYW1lIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbi4gRXhhbXBsZTogTGVhZHMKLSBgPHRhZzI+YCA6IFRoZSBzZWNvbmQgdGFnIG5hbWUgb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uLCBpZiBtb3JlIHRoYW4gb25lIHRhZyBpcyBkZWZpbmVkLiBFeGFtcGxlOiBDUk0KLSBgPHRhZ24+YCA6IFRoZSBudGggdGFnIG5hbWUgb2YgdGhlIE9wZW5BUEkgb3BlcmF0aW9uIGlmIG1vcmUgdGhhbiBvbmUgdGFnIGlzIGRlZmluZWQuCi0gYDxwYXRoUGFydDE+YCA6IFRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwYXRoIG9mIHRoZSBPcGVuQVBJIG9wZXJhdGlvbi4gRXhhbXBsZTogY3JtCi0gYDxwYXRoUGFydDI+YCA6IFRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGF0aCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uIEV4YW1wbGU6IGxlYWRzCi0gYDxwYXRoUGFydG4+YCA6IFRoZSBudGggcGFydCBvZiB0aGUgcGF0aCBvZiB0aGUgT3BlbkFQSSBvcGVyYXRpb24uCgpZb3UgY2FuIGFsc28gaW5jbHVkZSBzdGF0aWMgdGV4dCBpbiB0aGUgdGVtcGxhdGVzLCB3aGljaCB3aWxsIGJlIG1lcmdlZCB3aXRoIHRoZSBkeW5hbWljIHBsYWNlaG9sZGVycy4gRm9yIGV4YW1wbGU6CgpgYGB5YW1sCm9wZXJhdGlvbklkVGVtcGxhdGU6ICJQcmVmaXhfPG1ldGhvZD5fPHBhdGhQYXJ0Mj5fSGFuZGxlciIKYGBgCgoqKkNvbmZpZ3VyYXRpb24gT3B0aW9uczoqKgoKLSBgb3BlcmF0aW9uSWRUZW1wbGF0ZWA6IFRlbXBsYXRlIGZvciBnZW5lcmF0aW5nIGBvcGVyYXRpb25JZGAuIFVzZSBkeW5hbWljIHBsYWNlaG9sZGVycyBsaWtlIDxtZXRob2Q+IGFuZCA8cGF0aFBhcnQyPi4KLSBgb3ZlcndyaXRlRXhpc3RpbmdgOiBTZXQgdG8gYHRydWVgIG9yIGBmYWxzZWAgdG8gY29udHJvbCB3aGV0aGVyIGV4aXN0aW5nIHZhbHVlcyBzaG91bGQgYmUgb3ZlcndyaXR0ZW4uIERlZmF1bHQ6IGBmYWxzZWAuCgojIyBDTEkgY2FzaW5nIHVzYWdlCgotIEdlbmVyYXRlIE9wZW5BUEkgZWxlbWVudHMgYW5kIHNhdmVzIGl0IGFzIGEgbmV3IGZpbGUKClRoZSBPcGVuQVBJIGZvcm1hdHRpbmcgdG9vbCBhbGxvd3MgeW91IHRvIGVuZm9yY2UgY29uc2lzdGVudCBjYXNpbmcgc3R5bGVzIGFjcm9zcyB2YXJpb3VzIE9wZW5BUEkgZWxlbWVudHMsIHN1Y2ggYXMgYG9wZXJhdGlvbklkYCwgYHN1bW1hcnlgLCBgcGFyYW1ldGVyc2AsIGFuZCBtb3JlLiBUaGUgc3BlY2lmaWVkIGNhc2luZyBwcmVmZXJlbmNlcyB3aWxsIGJlIGFwcGxpZWQgdG8gdGhlIHJlbGV2YW50IGVsZW1lbnRzIGFuZCBzYXZlZCB0byB0aGUgb3V0cHV0IE9wZW5BUEkgZmlsZS4KCmV4YW1wbGU6CgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLWZvcm1hdHRlZC5qc29uIC0tY2FzaW5nRmlsZSBjdXN0b21DYXNpbmcueWFtbApgYGAKCndoZXJlIHRoZSBgY3VzdG9tQ2FzaW5nLnlhbWxgIHdvdWxkIGNvbnRhaW4gYSBjYXNpbmcgcHJlZmVyZW5jZXMgZm9yIHRoZSBzcGVjaWZpZWQgb2YgdGhlIGVsZW1lbnRzLgoKSW4gdGhpcyBleGFtcGxlLCB0aGUgY3VzdG9tQ2FzaW5nLnlhbWwgZmlsZSB3b3VsZCBjb250YWluIHRoZSBkZXNpcmVkIGNhc2luZyBwcmVmZXJlbmNlcyBmb3Igc3BlY2lmaWMgT3BlbkFQSSBlbGVtZW50cy4KCmBgYHlhbWwKb3BlcmF0aW9uSWQ6IHNuYWtlX2Nhc2UKcHJvcGVydGllczogY2FtZWxDYXNlCgpwYXJhbWV0ZXJzUXVlcnk6IGtlYmFiLWNhc2UKcGFyYW1ldGVyc0hlYWRlcjoga2ViYWItY2FzZQpwYXJhbWV0ZXJzUGF0aDogc25ha2VfY2FzZQoKY29tcG9uZW50c0V4YW1wbGVzOiBQYXNjYWxDYXNlCmNvbXBvbmVudHNTY2hlbWFzOiBjYW1lbENhc2UKY29tcG9uZW50c0hlYWRlcnM6IGtlYmFiLWNhc2UKY29tcG9uZW50c1Jlc3BvbnNlczogc25ha2VfY2FzZQpjb21wb25lbnRzUmVxdWVzdEJvZGllczogc25ha2VfY2FzZQpjb21wb25lbnRzU2VjdXJpdHlTY2hlbWVzOiBQYXNjYWxDYXNlCgpjb21wb25lbnRzUGFyYW1ldGVyc1F1ZXJ5OiBzbmFrZV9jYXNlCmNvbXBvbmVudHNQYXJhbWV0ZXJzSGVhZGVyOiBrZWJhYi1jYXNlCmNvbXBvbmVudHNQYXJhbWV0ZXJzUGF0aDogY2FtZWxDYXNlCmBgYAoKKipDYXNpbmcgT3B0aW9uczoqKgpJbiB0aGUgY3VzdG9tQ2FzaW5nLnlhbWwsIHlvdSBjYW4gZGVmaW5lIHRoZSBjYXNpbmcgc3R5bGUgZm9yIHZhcmlvdXMgT3BlbkFQSSBwcm9wZXJ0aWVzLCBhbGxvd2luZyB5b3UgdG8gY3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIG9mIHlvdXIgZG9jdW1lbnQgY29uc2lzdGVudGx5LgoKLSBgb3BlcmF0aW9uSWRgOiBEZWZpbmVzIHRoZSBjYXNpbmcgZm9yIG9wZXJhdGlvbiBJRHMuIEV4YW1wbGU6IHNuYWtlX2Nhc2UsIFBhc2NhbENhc2UsIG9yIGNhbWVsQ2FzZS4KLSBgcHJvcGVydGllc2A6IFNldHMgdGhlIGNhc2luZyBmb3IgcHJvcGVydGllcyB3aXRoaW4gY29tcG9uZW50cy4gRXhhbXBsZTogY2FtZWxDYXNlLgotIGBwYXJhbWV0ZXJzUXVlcnlgLCBgcGFyYW1ldGVyc0hlYWRlcmAsIGBwYXJhbWV0ZXJzUGF0aGA6IERlZmluZSBkaWZmZXJlbnQgY2FzaW5nIHN0eWxlcyBmb3IgcGFyYW1ldGVycyBiYXNlZCBvbiB0aGVpciBsb2NhdGlvbiAocXVlcnksIGhlYWRlciwgcGF0aCkuIEV4YW1wbGU6IHNuYWtlX2Nhc2UsIGtlYmFiLWNhc2UuCi0gYW5kIG1hbnkgbW9yZQoKU2VlIFtPcGVuQVBJIGZvcm1hdHRpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zXSgjb3BlbmFwaS1mb3JtYXR0aW5nLWNvbmZpZ3VyYXRpb24tb3B0aW9ucykgZm9yIHRoZSBmdWxsIGxpc3Qgb2YgY2FzaW5nIG9wdGlvbnMKCiMjIENMSSBCdW5kbGUgJiBTcGxpdCB1c2FnZQoKLSAqKkJ1bmRsaW5nKio6IENyZWF0ZSBhIHNlbGYtY29udGFpbmVkIE9wZW5BUEkgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gb3IgQVBJIHZhbGlkYXRpb24gdG9vbHMgdGhhdCBkb24ndCBzdXBwb3J0IGV4dGVybmFsIHJlZmVyZW5jZXMuCgotICoqU3BsaXR0aW5nKio6IEdlbmVyYXRlIGEgbW9kdWxhciBPcGVuQVBJIHN0cnVjdHVyZSBkdXJpbmcgZGV2ZWxvcG1lbnQgb3IgdGVzdGluZywgbWFraW5nIGl0IGVhc2llciB0byBtYW5hZ2UgY2hhbmdlcyB0byBpbmRpdmlkdWFsIHBhdGhzIG9yIGNvbXBvbmVudHMgd2l0aG91dCBhbHRlcmluZyB0aGUgZW50aXJlIGRvY3VtZW50LgoKIyMjIFNwbGl0dGluZyB0aGUgT3BlbkFQSSBEb2N1bWVudAoKVGhlIGAtLXNwbGl0YCBvcHRpb24gc3BsaXRzIHRoZSBPcGVuQVBJIGRvY3VtZW50IGludG8gYSBtb2R1bGFyIG11bHRpLWZpbGUgc3RydWN0dXJlLiBUaGlzIHN0cnVjdHVyZSBtYWtlcyBpdCBlYXNpZXIgdG8gbWFuYWdlIGxhcmdlciBzcGVjaWZpY2F0aW9ucyBieSBzZXBhcmF0aW5nIHBhdGhzLCBjb21wb25lbnRzIChzY2hlbWFzLCBwYXJhbWF0ZXJzLCAuLi4pIGludG8gaW5kaXZpZHVhbCBmaWxlcy4KCkV4YW1wbGU6IFNwbGl0dGluZyB0aGUgRG9jdW1lbnQKCmBgYHNoZWxsCiQgb3BlbmFwaS1mb3JtYXQgb3BlbmFwaS5qc29uIC1vIC4vb3BlbmFwaS1zcGxpdC9vcGVuYXBpLnlhbWwgLS1zcGxpdApgYGAKClRoaXMgY29tbWFuZCB3aWxsIHRha2UgdGhlIG9wZW5hcGkuanNvbiBhbmQgc3BsaXQgaXQgaW50byBtdWx0aXBsZSBmaWxlcywgc3RvcmVkIHVuZGVyIHRoZSAuL29wZW5hcGktc3BsaXQvIGRpcmVjdG9yeS4gCgpUaGUgcmVzdWx0aW5nIHN0cnVjdHVyZSBtaWdodCBsb29rIGxpa2UgdGhpczoKCmBgYGJhc2gKLi9vcGVuYXBpLXNwbGl0LwrilJzilIDilIAgb3BlbmFwaS55YW1sCuKUnOKUgOKUgCBwYXRocy8K4pSCICAg4pSc4pSA4pSAIC9wZXRzLnlhbWwK4pSCICAg4pSU4pSA4pSAIC9wZXRzL3twZXRJZH0ueWFtbArilJzilIDilIAgY29tcG9uZW50cy8K4pSc4pSA4pSAIHNjaGVtYXMvCuKUgiAgIOKUnOKUgOKUgCBQZXQueWFtbArilIIgICDilJTilIDilIAgRXJyb3IueWFtbArilJzilIDilIAgcGFyYW1ldGVycy8K4pSCICAg4pSU4pSA4pSAIHBldElkLnlhbWwKYGBgCgpUaGUgbWFpbiBvcGVuYXBpLnlhbWwgZmlsZSB3aWxsIGNvbnRhaW4gcmVmZXJlbmNlcyB0byB0aGVzZSBuZXdseSBjcmVhdGVkIGZpbGVzIHVzaW5nICRyZWYsIG1ha2luZyB0aGUgc3RydWN0dXJlIG1vZHVsYXIgYW5kIGVhc2llciB0byBuYXZpZ2F0ZS4KCiMjIyAgQnVuZGxpbmcgdGhlIE9wZW5BUEkgRG9jdW1lbnQKClRoZSBgLS1uby1idW5kbGVgIG9wdGlvbiBhbGxvd3MgeW91IHRvIGNvbnRyb2wgd2hldGhlciBsb2NhbCBhbmQgcmVtb3RlICRyZWYgcmVmZXJlbmNlcyBhcmUgYnVuZGxlZCBpbnRvIHRoZSBmaW5hbCBkb2N1bWVudC4gCgpCeSBkZWZhdWx0LCBhbGwgJHJlZiByZWZlcmVuY2VzIGFyZSBkZXJlZmVyZW5jZWQsIHJlc3VsdGluZyBpbiBhIHNpbmdsZSwgc2VsZi1jb250YWluZWQgT3BlbkFQSSBmaWxlLiBIb3dldmVyLCBpbiBzb21lIGNhc2VzLCB5b3UgbWlnaHQgcHJlZmVyIHRvIGtlZXAgdGhlICRyZWYgcmVmZXJlbmNlcyBpbnRhY3QsIGVzcGVjaWFsbHkgaWYgeW91J3JlIHdvcmtpbmcgd2l0aCBleHRlcm5hbCByZWZlcmVuY2VzIG9yIHdhbnQgdG8gbWFpbnRhaW4gYSBtb2R1bGFyIHN0cnVjdHVyZS4KCkV4YW1wbGU6IERlZmF1bHQgQnVuZGxpbmcKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBpbnB1dC5qc29uIC1vIGJ1bmRsZWQtb3BlbmFwaS5qc29uCmBgYAoKVGhpcyBleGFtcGxlIHByb2R1Y2VzIGEgZnVsbHkgZGVyZWZlcmVuY2VkIGRlcmVmZXJlbmNlZC1vcGVuYXBpLmpzb24sIHdoZXJlIGFsbCBsb2NhbCBhbmQgcmVtb3RlICRyZWYgcmVmZXJlbmNlcyBhcmUgcmVzb2x2ZWQgaW50byB0aGUgZmlsZS4KVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCgpFeGFtcGxlOiBObyBCdW5kbGluZwoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS5qc29uIC0tbm8tYnVuZGxlCmBgYAoKSW4gdGhpcyBjYXNlLCB0aGUgcmVzdWx0aW5nIGJ1bmRsZWQtb3BlbmFwaS5qc29uIHdpbGwgcHJlc2VydmUgYWxsICRyZWYgcmVmZXJlbmNlcyBhcyB0aGV5IGFyZSBpbiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQuCgojIyBDTEkgcmVuYW1lIHVzYWdlCgotIEZvcm1hdCBhbiBPcGVuQVBJIGRvY3VtZW50IGJ5IGNoYW5naW5nIHRoZSB0aXRsZSBhbmQgc2F2ZXMgaXQgYXMgYSBuZXcgSlNPTiBmaWxlCgpEdXJpbmcgQ0kvQ0QgcGlwZWxpbmVzLCB5b3UgbWlnaHQgd2FudCB0byBjcmVhdGUgZGlmZmVyZW50IHJlc3VsdHMgb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQuIEhhdmluZyB0aGUgb3B0aW9uIHRvIHJlbmFtZQp0aGVtIG1pZ2h0IG1ha2UgaXQgZWFzaWVyIHRvIHdvcmsgd2l0aCB0aGUgcmVzdWx0cywgc28gdGhhdCBpcyB3aHkgd2UgcHJvdmlkZSB0aGlzIGNvbW1hbmQgb3B0aW9uLgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLW8gb3BlbmFwaS5qc29uIC0tcmVuYW1lICJPcGVuQVBJIFBldHN0b3JlIC0gT3BlbkFQSSAzLjAiCmBgYAoKd2hpY2ggcmVzdWx0cyBpbgoKKipiZWZvcmUqKgoKYGBganNvbgp7CiAgICAib3BlbmFwaSI6ICIzLjAuMiIsCiAgICAiaW5mbyI6IHsKICAgICAgICAidGl0bGUiOiAiUGV0c3RvcmUgLSBPcGVuQVBJIDMuMCIsCmBgYAoKKiphZnRlcioqCgpgYGBqc29uCnsKICAgICJvcGVuYXBpIjogIjMuMC4yIiwKICAgICJpbmZvIjogewogICAgICAgICJ0aXRsZSI6ICJPcGVuQVBJIFBldHN0b3JlIC0gT3BlbkFQSSAzLjAiLApgYGAKCiMjIENMSSBjb252ZXJ0VG8gdXNhZ2UKCj4g8J+PlyBCRVRBIE5PVElDRTogVGhpcyBmZWF0dXJlIGlzIGNvbnNpZGVyZWQgQkVUQSBzaW5jZSB3ZSBhcmUgaW52ZXN0aWdhdGluZyB0aGUgY29uZmlndXJhdGlvbiBzeW50YXggYW5kIGV4dHJhIGZvcm1hdHRpbmcvY2FzaW5nIGNhcGFiaWxpdGllcy4KCi0gRm9ybWF0ICYgY29udmVydCB0aGUgT3BlbkFQSSBkb2N1bWVudCB0byBPcGVuQVBJIHZlcnNpb24gMy4xCgpvcGVuYXBpLWZvcm1hdCBjYW4gaGVscCB5b3UgdG8gdXBncmFkZSB5b3VyIGN1cnJlbnQgT3BlbkFQSSAzLjAueCBkb2N1bWVudCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gT3BlbkFQSSAzLjEuCgpgYGBzaGVsbAokIG9wZW5hcGktZm9ybWF0IG9wZW5hcGkuanNvbiAtbyBvcGVuYXBpLTMuMS5qc29uIC0tY29udmVydFRvICIzLjEiCmBgYAoKd2hpY2ggcmVzdWx0cyBpbiBhbGwgdGhlIGNoYW5nZXMgZGVzY3JpYmVkIGluIHRoZSBbbWlncmF0aW9uIGd1aWRlIGZyb20gUGhpbCBTdHVyZ2Vvbl0oaHR0cHM6Ly93d3cub3BlbmFwaXMub3JnL2Jsb2cvMjAyMS8wMi8xNi9taWdyYXRpbmctZnJvbS1vcGVuYXBpLTMtMC10by0zLTEtMCkKCioqYmVmb3JlKioKCmBgYGpzb24KewogICAgIm9wZW5hcGkiOiAiMy4wLjIiLAogICAgImluZm8iOiB7CiAgICAgICAgInRpdGxlIjogIlBldHN0b3JlIC0gT3BlbkFQSSIsCmBgYAoKKiphZnRlcioqCgpgYGBqc29uCnsKICAgICJvcGVuYXBpIjogIjMuMS4wIiwKICAgICJpbmZvIjogewogICAgICAgICJ0aXRsZSI6ICJPcGVuQVBJIFBldHN0b3JlIC0gT3BlbkFQSSIsCmBgYAoKIyMgQ0xJIGNvbmZpZ3VyYXRpb24gdXNhZ2UKClRoZSBvcGVuYXBpLWZvcm1hdCBDTEkgc3VwcG9ydHMgYnVuZGxpbmcgYWxsIG9wdGlvbnMgaW4gYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlLiBUaGlzIGNhbiBzaW1wbGlmeSBtYW5hZ2VtZW50LCBlc3BlY2lhbGx5IGZvciBDSS9DRCBwaXBlbGluZXMgd2hlcmUgY29uZmlndXJhdGlvbnMgYXJlIHN0b3JlZCBpbiB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtcy4KCiMjIyBVc2luZyB0aGUgLS1jb25maWdGaWxlIG9wdGlvbgoKWW91IGNhbiBwYXNzIGEgY29uZmlndXJhdGlvbiBmaWxlIGNvbnRhaW5pbmcgYWxsIHRoZSBvcHRpb25zIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHBhc3NlZCB2aWEgdGhlIENMSS4gVGhpcyBoZWxwcyBpbiBjZW50cmFsaXppbmcgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHlvdXIgT3BlbkFQSSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMuCgpFeGFtcGxlOgoKYGBgc2hlbGwKJCBvcGVuYXBpLWZvcm1hdCBvcGVuYXBpLmpzb24gLS1jb25maWdGaWxlIG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbgpgYGAKVGhlIGZvcm1hdHRpbmcgd2lsbCBoYXBwZW4gYmFzZWQgb24gYWxsIHRoZSBvcHRpb25zIHNldCBpbiB0aGUgYG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbmAgZmlsZS4gQWxsIHRoZQphdmFpbGFibGUgW09wZW5BUEkgZm9ybWF0IG9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvb3BlbmFwaS1mb3JtYXQjb3BlbmFwaS1mb3JtYXQtb3B0aW9ucykgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbmZpZyBmaWxlLgoKVGhlIG9wZW5hcGktZm9ybWF0LW9wdGlvbnMuanNvbiBmaWxlIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOgoKYGBganNvbgp7CiAgInNvcnQiOiB0cnVlLAogICJjYXNpbmdTZXQiOiB7CiAgICAib3BlcmF0aW9uSWQiOiAiY2FtZWxDYXNlIiwKICAgICJwcm9wZXJ0aWVzIjogInNuYWtlX2Nhc2UiCiAgfSwKICAiZmlsdGVyU2V0IjogewogICAgInRhZ3MiOiBbImludGVybmFsIiwgImJldGEiXQogIH0sCiAgImdlbmVyYXRlU2V0IjogewogICAgIm9wZXJhdGlvbklkVGVtcGxhdGUiOiAiPG1ldGhvZD5fPHBhdGhQYXJ0Mj5fSGFuZGxlciIKICB9Cn0KYGBgCgpBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHJlZmVyZW5jZSBleHRlcm5hbCBmaWxlcyBmb3IgZWFjaCBzZXR0aW5nIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIEZpbGUgcHJvcGVydGllcy4KCmBgYGpzb24KewogICAgInNvcnRGaWxlIjogImN1c3RvbVNvcnQuanNvbiIsCiAgICAiY2FzaW5nRmlsZSI6ICJjYXNpbmctcnVsZXMuanNvbiIsCiAgICAiZmlsdGVyRmlsZSI6ICJmaWx0ZXItcnVsZXMuanNvbiIsCiAgICAiZ2VuZXJhdGVGaWxlIjogImdlbmVyYXRlLXJ1bGVzLmpzb24iCn0KYGBgCgpJbiB0aGlzIGNhc2UsIHRoZSBzZXR0aW5ncyB3aWxsIGJlIGxvYWRlZCBmcm9tIHRoZSBleHRlcm5hbCBmaWxlcywgYW5kIHRoZXkgb3ZlcnJpZGUgYW55IGlubGluZSBjb25maWd1cmF0aW9ucy4KCioqRGVmaW5lIHNvcnQsIGZpbHRlciwgY2FzaW5nLCBnZW5lcmF0ZSBvcHRpb25zKioKCllvdSBjYW4gZWl0aGVyIHBhc3MgdGhlIHNldHRpbmdzIGlubGluZSBvciByZWZlcmVuY2UgYW4gZXh0ZXJuYWwgZmlsZSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgRmlsZSBwcm9wZXJ0eToKCi0gKipzb3J0U2V0KiogLyAqKnNvcnRGaWxlKio6IFNvcnQgdGhlIGZpZWxkcyBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCBiYXNlZCBvbiB0aGUgb3JkZXIgZGVmaW5lZCBpbiB0aGUgc29ydCBzZXR0aW5ncy4KCiAgLSBJbmxpbmU6IFBhc3MgdGhlIHNvcnQgb3JkZXIgZGlyZWN0bHkgdXNpbmcgc29ydFNldCBpbiB0aGUgY29uZmlnIGZpbGUuCiAgLSBGaWxlOiBVc2Ugc29ydEZpbGUgdG8gc3BlY2lmeSB0aGUgcGF0aCB0byBhIGxvY2FsIG9yIHJlbW90ZSBKU09OL1lBTUwgZmlsZSBjb250YWluaW5nIGN1c3RvbSBzb3J0aW5nIHJ1bGVzLgoKLSAqKmNhc2luZ1NldCoqIC8gKipjYXNpbmdGaWxlKio6IERlZmluZSB0aGUgY2FzaW5nIGNvbnZlbnRpb24gZm9yIG9wZXJhdGlvbklkLCBwYXJhbWV0ZXJzLCBwcm9wZXJ0aWVzLCBldGMuCgogIC0gSW5saW5lOgogICAgYGBganNvbgogICAgImNhc2luZ1NldCI6IHsKICAgICAgIm9wZXJhdGlvbklkIjogImNhbWVsQ2FzZSIsCiAgICAgICJwcm9wZXJ0aWVzIjogIlBhc2NhbENhc2UiCiAgICB9CiAgICBgYGAKCiAgLSBGaWxlOiBVc2UgY2FzaW5nRmlsZSB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jYWwgb3IgcmVtb3RlIEpTT04vWUFNTCBmaWxlIGNvbnRhaW5pbmcgY2FzaW5nIHJ1bGVzLgoKLSAqKmZpbHRlclNldCoqIC8gKipmaWx0ZXJGaWxlKio6IEZpbHRlciBvdXQgc3BlY2lmaWMgdGFncywgcGF0aHMsIG9yIGNvbXBvbmVudHMgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudC4KCiAgLSBJbmxpbmU6CiAgICBgYGBqc29uCiAgICAiZmlsdGVyU2V0IjogewogICAgICAidGFncyI6IFsiaW50ZXJuYWwiLCAiYmV0YSJdCiAgICB9CiAgICBgYGAKCiAgLSBGaWxlOiBVc2UgZmlsdGVyRmlsZSB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jYWwgb3IgcmVtb3RlIEpTT04vWUFNTCBmaWxlIGNvbnRhaW5pbmcgZmlsdGVyIHJ1bGVzLgoKLSAqKmdlbmVyYXRlU2V0KiogLyAqKmdlbmVyYXRlRmlsZSoqOiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9wZXJhdGlvbklkLCBzdW1tYXJ5LCBhbmQgb3RoZXIgZWxlbWVudHMgYmFzZWQgb24gcHJlZGVmaW5lZCB0ZW1wbGF0ZXMuCgogIC0gSW5saW5lOgogICAgYGBganNvbgogICAgImdlbmVyYXRlU2V0IjogewogICAgICAib3BlcmF0aW9uSWRUZW1wbGF0ZSI6ICI8bWV0aG9kPl88cGF0aFBhcnQyPl9IYW5kbGVyIgogICAgfQogICAgYGBgCgogIC0gRmlsZTogVXNlIGdlbmVyYXRlRmlsZSB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgbG9jYWwgb3IgcmVtb3RlIEpTT04vWUFNTCBmaWxlIGNvbnRhaW5pbmcgZ2VuZXJhdGUgcnVsZXMuCgoKIyMjIFVzaW5nIC5vcGVuYXBpZm9ybWF0cmMKCkluIGFkZGl0aW9uIHRvIHNwZWNpZnlpbmcgYSBjb25maWd1cmF0aW9uIGZpbGUgdXNpbmcgYC0tY29uZmlnRmlsZWAsIG9wZW5hcGktZm9ybWF0IGFsc28gc3VwcG9ydHMgYXV0b21hdGljYWxseSBsb2FkaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVkIGAub3BlbmFwaWZvcm1hdHJjYCBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gSWYgdGhpcyBmaWxlIGlzIHByZXNlbnQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgY29uZmlndXJhdGlvbiBzb3VyY2UsIGFuZCBpbmRpdmlkdWFsIG9wdGlvbnMgcGFzc2VkIHZpYSB0aGUgQ0xJIHdpbGwgb3ZlcnJpZGUgdGhlIHNldHRpbmdzIGZyb20gdGhpcyBmaWxlLgoKRXhhbXBsZSBvZiBhIC5vcGVuYXBpZm9ybWF0cmMgZmlsZToKCmBgYGpzb24KewogICJvdXRwdXQiOiAib3BlbmFwaS1maW5hbC55YW1sIiwgIAogICJzb3J0IjogdHJ1ZSwKICAiZmlsdGVyU2V0IjogewogICAgICAidGFncyI6IFsiaW50ZXJuYWwiLCAiYmV0YSJdCiAgfQp9CmBgYAoKIyMgQXN5bmNBUEkgZG9jdW1lbnRzCgpGb3IgaGFuZGxpbmcgQXN5bmNBUEkgZG9jdW1lbnRzLCB3ZSBoYXZlIGNyZWF0ZWQgYSBzZXBhcmF0ZQpwYWNrYWdlIFthc3luY2FwaS1mb3JtYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS90aGltODEvYXN5bmNhcGktZm9ybWF0KSB0byBhbGxvdyBjdXN0b21pc2F0aW9uIHNwZWNpZmljIGZvciBBc3luY0FQSQp1c2UtY2FzZXMuCgojIyBTdG9wbGlnaHQgU3R1ZGlvCgpXZSBoYXZlIGFkb3B0ZWQgdGhlIFlBTUwgcGFyc2luZyBzdHlsZSBmcm9tIFtTdG9wbGlnaHQgU3R1ZGlvXShodHRwczovL3N0b3BsaWdodC5pby9zdHVkaW8vKSwgYnkgbGV2ZXJhZ2luZwp0aGUgW0BzdG9wbGlnaHQveWFtbF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQHN0b3BsaWdodC95YW1sKSBwYWNrYWdlIGZvciBoYW5kbGluZyB0aGUgcGFyc2luZyBvZiBPcGVuQVBJIFlBTUwKZmlsZXMuCgpCeSB1c2luZyB0aGUgU3RvcGxpZ2h0IFlBTUwgcGFyc2luZywgdGhlIHJlc3VsdHMgd2lsbCBiZSBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSB3aGVuIHVzaW5nIGEgbm9ybWFsIFlBTUwgcGFyc2luZwpsaWJyYXJ5LCBsaWtlIFtqcy10by15YW1sXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9qcy15YW1sKS4gV2UgYXBwcmVjaWF0ZSB0aGUgU3RvcGxpZ2h0IFN0dWRpbyB0b29sLCBzaW5jZSBpdCBpcwphbiBleGNlbGxlbnQgR1VJIGZvciB3b3JraW5nIHdpdGggT3BlbkFQSSBkb2N1bWVudHMgZm9yIG5vbi1PcGVuQVBJIGV4cGVydHMgd2hvIHdpbGwgYmUgY29udHJpYnV0aW5nIGNoYW5nZXMuIEJ5CmFkb3B0aW5nIHRoZSBTdG9wbGlnaHQgU3R1ZGlvIFlBTUwgcGFyc2luZywgdGhlIHBvdGVudGlhbCByaXNrIG9mIG1lcmdlIGNvbmZsaWN0cyB3aWxsIGJlIGxvd2VyZWQsIHdoaWNoIGlzIHRoZSBtYWluCnJlYXNvbiB3aHkgd2Ugb3B0ZWQgZm9yIHVzaW5nIHRoZSBAc3RvcGxpZ2h0L3lhbWwgcGFja2FnZS4KCiMjIENyZWRpdHMKClRoaXMgcGFja2FnZSBpcyBpbnNwaXJlZCBieQp0aGUgW0BtaWNyb3NvZnQuYXp1cmUvZm9ybWF0LXNwZWNdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL0BtaWNyb3NvZnQuYXp1cmUvZm9ybWF0LXNwZWMpIGZyb20gW0BmZWFydGhlY293Ym95XShodHRwczovL2dpdGh1Yi5jb20vZmVhcnRoZWNvd2JveSkuIFRoZQpvcmlnaW5hbCBjb2RlIHdhcyBub3QgYXZhaWxhYmxlIG9uIEdpdEh1Yiwgd2l0aCB0aGUgbGFzdCB1cGRhdGUgYmVpbmcgMyB5ZWFycyBhZ28sIHNvIHRvIGltcHJvdmUgc3VwcG9ydCBhbmQgZXh0ZW5kIGl0IHdlCnRyaWVkIHRvIHJlcHJvZHVjZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb25hbGl0eS4KClRoZSBmaWx0ZXIgY2FwYWJpbGl0aWVzIGZyb20gYG9wZW5hcGktZm9ybWF0YCBhcmUgYSBsaWdodCB2ZXJzaW9uIGdyb3VuZGVkIGJ5IHRoZSB3b3JrIGZyb20gW0BNaWtlUmFscGhzb25dKGh0dHBzOi8vZ2l0aHViLmNvbS9taWtlcmFscGhzb24pIG9uCnRoZSBbb3BlbmFwaS1maWx0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9NZXJtYWRlL29wZW5hcGktZmlsdGVyKSBwYWNrYWdlLgoKVGhlIGNhc2luZyBvcHRpb25zIGF2YWlsYWJsZSBpbiBgb3BlbmFwaS1mb3JtYXRgIGFyZSBwb3dlcmVkIGJ5IHRoZSBleGNlbGxlbnQgW2Nhc2UtYW55dGhpbmddKGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNxdWVlYi9jYXNlLWFueXRoaW5nKSBuYW5vIHBhY2thZ2UgZnJvbSBMdWNhIEJhbiAoW0BtZXNxdWVlYl0oaHR0cHM6Ly9naXRodWIuY29tL21lc3F1ZWViKSkuCgo8YSBocmVmPSJodHRwczovL3d3dy5qZXRicmFpbnMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPgo8aW1nIHNyYz0iaHR0cHM6Ly9yZXNvdXJjZXMuamV0YnJhaW5zLmNvbS9zdG9yYWdlL3Byb2R1Y3RzL2NvbXBhbnkvYnJhbmQvbG9nb3MvamV0YnJhaW5zLnBuZyIgYWx0PSJKZXRCcmFpbnMgbG9nby4iIHdpZHRoPSIyMDBweCI+CjwvYT4KClNwZWNpYWwgdGhhbmtzIHRvIFtKZXRCcmFpbnNdKGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vKSBmb3IgdGhlaXIgY29udGludW91cyBzcG9uc29yc2hpcCBvZiB0aGlzIHByb2plY3Qgb3ZlciB0aGUgbGFzdCAzIHllYXJzLCBhbmQgZm9yIHRoZWlyIHN1cHBvcnQgdG8gb3Blbi1zb3VyY2Ugc29mdHdhcmUgKE9TUykgaW5pdGlhdGl2ZXMuCg==
+ readmeEtag: '"f70684cdd68be90f8ee7a3d2ab8f3627dc04910c"'
+ readmeLastModified: Fri, 27 Sep 2024 17:14:57 GMT
repositoryId: 345077537
description: Format an OpenAPI document by ordering, formatting and filtering fields.
created: '2021-03-06T11:31:52Z'
- updated: '2024-09-26T11:06:09Z'
+ updated: '2024-09-27T17:15:15Z'
language: JavaScript
archived: false
stars: 93
@@ -4890,8 +4890,8 @@
owner: thim81
logo: https://avatars.githubusercontent.com/u/952446?v=4
license: MIT
- repoEtag: '"98ec866907bdc1e681830d66dbe7e4e5012af004907f94c806799510f9b67b5b"'
- repoLastModified: Thu, 26 Sep 2024 11:06:09 GMT
+ repoEtag: '"9cb79bfb8838d49aede8b8c5c51342427b95058912aaaeed12366950e0ebfef4"'
+ repoLastModified: Fri, 27 Sep 2024 17:15:15 GMT
foundInMaster: true
id: 788dd625de099d0d3403fe30067f3743
v3_1: true
@@ -4926,7 +4926,7 @@
owner: github
logo: https://avatars.githubusercontent.com/u/9919?v=4
license: MIT
- repoEtag: '"83eb0c137ad0318bdf42fc3133f67197e71a53e42e5ce767fc002556e8c8ee84"'
+ repoEtag: '"09e76dbb312651a44dec5c146bf06df08b754297d4423c04c6c3630fd78da7e2"'
repoLastModified: Mon, 23 Sep 2024 14:00:26 GMT
foundInMaster: true
id: ec6a7a1e4a69a9beeb95bdebb88cb36d
@@ -4952,17 +4952,17 @@
repositoryId: 4238977
description: Automated JSON API documentation for API's built with Spring
created: '2012-05-06T06:38:57Z'
- updated: '2024-09-24T18:30:37Z'
+ updated: '2024-09-27T22:43:58Z'
language: Java
archived: false
- stars: 5928
+ stars: 5927
watchers: 265
forks: 1536
owner: springfox
logo: https://avatars.githubusercontent.com/u/11529357?v=4
license: Apache-2.0
- repoEtag: '"9712183e6ea373d5519d25cc76c0474fc75f74aab789ce4bb5c1f4f3e036c137"'
- repoLastModified: Tue, 24 Sep 2024 18:30:37 GMT
+ repoEtag: '"da8babd1f9c79a0204eba58be8989ddcaa99852f8667d52da6364dd2ab968d09"'
+ repoLastModified: Fri, 27 Sep 2024 22:43:58 GMT
foundInMaster: true
id: 2addde4c497bf582f20025ccac2cda86
- source:
@@ -5020,17 +5020,17 @@
repositoryId: 36817565
description: The ZAP by Checkmarx Core project
created: '2015-06-03T16:55:01Z'
- updated: '2024-09-26T11:55:17Z'
+ updated: '2024-09-27T17:50:50Z'
language: Java
archived: false
- stars: 12547
+ stars: 12549
watchers: 395
forks: 2243
owner: zaproxy
logo: https://avatars.githubusercontent.com/u/6716868?v=4
license: Apache-2.0
- repoEtag: '"da3d9cd8c711b27359b7684f8290b841f91d5ab8466989784aadbb9f1571ed4c"'
- repoLastModified: Thu, 26 Sep 2024 11:55:17 GMT
+ repoEtag: '"b8ea2d2b80061a824717b9d9d824e71995551bfda7eacbe624631b32d96cafd5"'
+ repoLastModified: Fri, 27 Sep 2024 17:50:50 GMT
foundInMaster: true
id: 9eedc1be44837a65f912bcf562844f39
- source:
@@ -5332,17 +5332,17 @@
Fuzz test your application using your OpenAPI or Swagger API definition
without coding
created: '2018-01-02T11:49:13Z'
- updated: '2024-09-24T21:08:31Z'
+ updated: '2024-09-27T09:58:12Z'
language: Python
archived: false
- stars: 421
+ stars: 419
watchers: 9
forks: 65
owner: KissPeter
logo: https://avatars.githubusercontent.com/u/19633417?v=4
license: GPL-3.0
- repoEtag: '"e7dc404ffccb8be30509b5482cd94bbad545446a71bb954f9506d44bba43309c"'
- repoLastModified: Tue, 24 Sep 2024 21:08:31 GMT
+ repoEtag: '"62eca828d3b4d80efb604720ba56781172d064f06ec6e1df6e0a15337dcaf1d7"'
+ repoLastModified: Fri, 27 Sep 2024 09:58:12 GMT
foundInMaster: true
id: bd38b4a53d7dcb21f05b494be14573e6
- source: https://openapi.tools/
@@ -5364,17 +5364,17 @@
repositoryId: 1431547
description: Web APIs for Django. 🎸
created: '2011-03-02T17:13:56Z'
- updated: '2024-09-27T03:09:53Z'
+ updated: '2024-09-28T02:45:30Z'
language: Python
archived: false
- stars: 28190
+ stars: 28197
watchers: 626
forks: 6815
owner: encode
logo: https://avatars.githubusercontent.com/u/19159390?v=4
license: NOASSERTION
- repoEtag: '"21a4a893b3118467a43e4af3aaed653e424830224ff2c1c0b5f5b1099f02e07b"'
- repoLastModified: Fri, 27 Sep 2024 03:09:53 GMT
+ repoEtag: '"90f83b03bbae62d299bb9623e474c97bd2b66b3c87fcfad207f7c13f3e3f79b4"'
+ repoLastModified: Sat, 28 Sep 2024 02:45:30 GMT
foundInMaster: true
id: fb8994c078a380cc3510b024f6ed1202
category: Server Implementations
@@ -5408,7 +5408,7 @@
owner: isa-group
logo: https://avatars.githubusercontent.com/u/2708867?v=4
license: LGPL-3.0
- repoEtag: '"4a36a7d8c886701c7d60e0e1f468febff7db7a7a2ea4ee565cc05532d982e0f6"'
+ repoEtag: '"2522327eca83d88f13a9179bac5188ae876b411ef5f307f5d796d3e37597595c"'
repoLastModified: Thu, 05 Sep 2024 11:25:04 GMT
foundInMaster: true
id: 9115f26fa9e7b17b844a0f10b9814db7
@@ -5559,17 +5559,17 @@
repositoryId: 240776275
description: Generate modern Python clients from OpenAPI
created: '2020-02-15T19:33:46Z'
- updated: '2024-09-26T00:42:18Z'
+ updated: '2024-09-27T15:35:10Z'
language: Python
archived: false
- stars: 1272
+ stars: 1274
watchers: 13
forks: 195
owner: openapi-generators
logo: https://avatars.githubusercontent.com/u/84925606?v=4
license: MIT
- repoEtag: '"731ed16f5a3ac20708977fa40d27465aa88010aa4121e76f7b053d57add08880"'
- repoLastModified: Thu, 26 Sep 2024 00:42:18 GMT
+ repoEtag: '"61641b49d4769824194ecac4917cee2cf93665f980d355986d34baac8a34c8eb"'
+ repoLastModified: Fri, 27 Sep 2024 15:35:10 GMT
foundInMaster: true
id: 784ec4adac4e47e4211ea74ef36dd5a5
v3_1: true
@@ -5599,17 +5599,17 @@
Build beautiful, interactive API Docs with embeddable React or Web
Components, powered by OpenAPI and Markdown.
created: '2019-05-03T01:05:01Z'
- updated: '2024-09-25T15:33:27Z'
+ updated: '2024-09-27T22:11:35Z'
language: TypeScript
archived: false
- stars: 1731
+ stars: 1732
watchers: 18
- forks: 199
+ forks: 200
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: Apache-2.0
- repoEtag: '"27c5fb0098fe6ee34c0139c9e9298098f55ff25d792a27809b5ef5beb885e7b9"'
- repoLastModified: Wed, 25 Sep 2024 15:33:27 GMT
+ repoEtag: '"32d3e92bcea3024047f0ddecb29e9acd373398b736ae2ee3d6497a67c5da8d01"'
+ repoLastModified: Fri, 27 Sep 2024 22:11:35 GMT
foundInMaster: true
id: 2f94cc1fc980953b17a9979d4ff2e7ec
- source:
@@ -5879,7 +5879,7 @@
repositoryId: 108694147
description: Build your OpenApi3 spec in kotlin!
created: '2017-10-29T00:33:35Z'
- updated: '2024-09-24T00:03:51Z'
+ updated: '2024-09-27T15:13:40Z'
language: Kotlin
archived: false
stars: 65
@@ -5888,8 +5888,8 @@
owner: derveloper
logo: https://avatars.githubusercontent.com/u/18556?v=4
license: Apache-2.0
- repoEtag: '"5589241b9da912852ce82e17a742f8631c177fca34b5849a77b5703244fd6f99"'
- repoLastModified: Tue, 24 Sep 2024 00:03:51 GMT
+ repoEtag: '"d9a867d313b88b073b334af6832aa62ee452413c3a4c5019ce22da78998f7f68"'
+ repoLastModified: Fri, 27 Sep 2024 15:13:40 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -6011,17 +6011,17 @@
repositoryId: 479515560
description: OpenAPI / Swagger to TypeScript generator and mock server
created: '2022-04-08T19:32:15Z'
- updated: '2024-09-27T03:25:56Z'
+ updated: '2024-09-27T21:35:45Z'
language: TypeScript
archived: false
- stars: 101
+ stars: 102
watchers: 7
forks: 13
owner: pmcelhaney
logo: https://avatars.githubusercontent.com/u/51504?v=4
license: MIT
- repoEtag: '"a5f63aba7d096bf82795949c0783e3de6521f90c1374e7cbf96fbed6c4afc821"'
- repoLastModified: Fri, 27 Sep 2024 03:25:56 GMT
+ repoEtag: '"2666b6d06ace4118c164e393c529ac321fd6ec796dff8033fc73e5a7659dc092"'
+ repoLastModified: Fri, 27 Sep 2024 21:35:45 GMT
category:
- Mock
- SDK
@@ -6074,17 +6074,17 @@
you can think. vacuum is compatible with Spectral rulesets and generates
compatible reports.
created: '2021-10-10T18:24:19Z'
- updated: '2024-09-26T23:04:21Z'
+ updated: '2024-09-27T11:38:09Z'
language: Go
archived: false
- stars: 573
+ stars: 574
watchers: 7
forks: 48
owner: daveshanley
logo: https://avatars.githubusercontent.com/u/187345?v=4
license: MIT
- repoEtag: '"a8aa04e0b95518ce1aa62f6f6ce953b6949692df8c54b0f070869ce3aa5fcb34"'
- repoLastModified: Thu, 26 Sep 2024 23:04:21 GMT
+ repoEtag: '"73dd7796ed5bc22915fe225b2819e962ca0d3de81059a8b7fd21cda7daa5192f"'
+ repoLastModified: Fri, 27 Sep 2024 11:38:09 GMT
foundInMaster: true
category:
- Description Validators
@@ -6169,17 +6169,17 @@
libopenapi is a fully featured, high performance OpenAPI 3.1, 3.0 and
Swagger parser, library, validator and toolkit for golang applications.
created: '2022-07-17T19:41:10Z'
- updated: '2024-09-26T11:18:01Z'
+ updated: '2024-09-28T01:45:53Z'
language: Go
archived: false
- stars: 442
+ stars: 446
watchers: 7
forks: 59
owner: pb33f
logo: https://avatars.githubusercontent.com/u/104016643?v=4
license: NOASSERTION
- repoEtag: '"098f4de256600f08d677c452ca1f7448a691411f07ee100cac32f1f3692752cc"'
- repoLastModified: Thu, 26 Sep 2024 11:18:01 GMT
+ repoEtag: '"983f3f3d56eb0ae58699a374dbb9319c2e22a455f02d99bd10e35afe06303f0a"'
+ repoLastModified: Sat, 28 Sep 2024 01:45:53 GMT
category: Parsers
foundInMaster: true
name: libopenapi
@@ -6474,7 +6474,7 @@
Development - Collaboratively Design & Independently Deploy MicroServices
& MicroFrontends.
created: '2020-03-16T13:33:07Z'
- updated: '2024-09-26T04:41:27Z'
+ updated: '2024-09-27T15:47:26Z'
language: Kotlin
archived: false
stars: 275
@@ -6483,8 +6483,8 @@
owner: znsio
logo: https://avatars.githubusercontent.com/u/75619722?v=4
license: MIT
- repoEtag: '"1594d27a02d1d8a19dd7bd2301c911ad44239eb32b43b908abc5022076bc08d5"'
- repoLastModified: Thu, 26 Sep 2024 04:41:27 GMT
+ repoEtag: '"de2d858c93e7f6526404351af90dafb80a06fb22dbdafd102e08d56835f1eefd"'
+ repoLastModified: Fri, 27 Sep 2024 15:47:26 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -6728,17 +6728,17 @@
repositoryId: 487499674
description: React component to view difference between two Json based API documents
created: '2022-05-01T09:49:52Z'
- updated: '2024-09-21T03:19:59Z'
+ updated: '2024-09-27T20:24:47Z'
language: TypeScript
archived: false
- stars: 30
+ stars: 32
watchers: 1
forks: 1
owner: udamir
logo: https://avatars.githubusercontent.com/u/29271460?v=4
license: MIT
- repoEtag: '"1f4f7b67700d5cd8e3a56b1a9824a4f5f6456cfcf9905d9ca6028f16faa50a3c"'
- repoLastModified: Sat, 21 Sep 2024 03:19:59 GMT
+ repoEtag: '"de627e43ffdf9e6fb61b6a71565272a1f99e661c62f9ca7e81abfc8e2dd8fa15"'
+ repoLastModified: Fri, 27 Sep 2024 20:24:47 GMT
foundInMaster: true
- source: https://openapi.tools/
name: allof-merge
@@ -6767,7 +6767,7 @@
owner: udamir
logo: https://avatars.githubusercontent.com/u/29271460?v=4
license: MIT
- repoEtag: '"75ee8c8cb4031d209c4ca015bbcf774e66f106cac0435367acf6be1f2eb1ae82"'
+ repoEtag: '"c5e9b04513a4f6a0ea32cf4bf77ac6632e1b138d5902b9aa20d9f37cf82d25f6"'
repoLastModified: Mon, 26 Aug 2024 03:29:53 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -6798,7 +6798,7 @@
owner: udamir
logo: https://avatars.githubusercontent.com/u/29271460?v=4
license: MIT
- repoEtag: '"4772ae9987653cf4b18baf9996a3234191876f8364328a92bf0c9c5ece23d04e"'
+ repoEtag: '"e7be2c7b04eacbe6466b1760f9841defe931c110c0f102da20c842b59593f1b2"'
repoLastModified: Tue, 24 Sep 2024 13:22:46 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -6878,17 +6878,17 @@
repositoryId: 476820102
description: Input OpenAPI. Output SDKs and Docs.
created: '2022-04-01T17:56:54Z'
- updated: '2024-09-26T22:52:06Z'
+ updated: '2024-09-28T00:40:54Z'
language: TypeScript
archived: false
- stars: 2598
+ stars: 2600
watchers: 16
forks: 139
owner: fern-api
logo: https://avatars.githubusercontent.com/u/102944815?v=4
license: Apache-2.0
- repoEtag: '"a43c6cc15631be82e432b26e2c7aca1b32e91ca7901b707af759b8c6b266c1c9"'
- repoLastModified: Thu, 26 Sep 2024 22:52:06 GMT
+ repoEtag: '"3e859a36f092b6242fa5cd9f4c5b34fe52b839fec0ac8254562ff0f68177ead7"'
+ repoLastModified: Sat, 28 Sep 2024 00:40:54 GMT
foundInMaster: true
sponsored: true
testimonial: >
@@ -6938,7 +6938,7 @@
forks: 2
owner: stainless-api
logo: https://avatars.githubusercontent.com/u/88061651?v=4
- repoEtag: '"b42daa33a8cc0700f99316b23504b5a18c4e75064292c2e42e7bfff7635956a0"'
+ repoEtag: '"c4b7f86934f19f374b58165a6af45e626b6c8db87a62f1337ed3c5b3d8220f55"'
repoLastModified: Wed, 25 Sep 2024 21:52:27 GMT
foundInMaster: true
- source: https://openapi.tools/
@@ -6992,17 +6992,17 @@
repositoryId: 630566794
description: Generate Swift client and server code from an OpenAPI document.
created: '2023-04-20T16:50:53Z'
- updated: '2024-09-25T12:08:40Z'
+ updated: '2024-09-27T19:44:48Z'
language: Swift
archived: false
- stars: 1372
+ stars: 1375
watchers: 106
forks: 111
owner: apple
logo: https://avatars.githubusercontent.com/u/10639145?v=4
license: Apache-2.0
- repoEtag: '"106000aa315ed0ccfa95e8978e99ea26b6a8505837b2bf8bc366a706f1389278"'
- repoLastModified: Wed, 25 Sep 2024 12:08:40 GMT
+ repoEtag: '"8917f2bbde2ba6dc3773f9165efdb17923ddbe3e95d5a6c672dfabfd37135019"'
+ repoLastModified: Fri, 27 Sep 2024 19:44:48 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -7020,17 +7020,17 @@
The world's coolest API Validation and compliance tool. Validate APIs
against OpenAPI specifications and much more
created: '2023-05-01T17:19:15Z'
- updated: '2024-09-25T17:01:49Z'
+ updated: '2024-09-27T17:59:32Z'
language: Go
archived: false
- stars: 101
+ stars: 102
watchers: 1
forks: 17
owner: pb33f
logo: https://avatars.githubusercontent.com/u/104016643?v=4
license: NOASSERTION
- repoEtag: '"0de9cc128ed773b3a3cab3dbefb0416afa2a0eb0fa905e0897b1f9528b22b846"'
- repoLastModified: Wed, 25 Sep 2024 17:01:49 GMT
+ repoEtag: '"74d91c8fbe1b4b7b9b2645276ae06befec779dac20df05ee15e209a69318a32b"'
+ repoLastModified: Fri, 27 Sep 2024 17:59:32 GMT
category:
- Testing Tools
- Testing
@@ -7231,7 +7231,7 @@
repositoryId: 706256859
description: Golang Fuego - web framework generating OpenAPI 3 spec from source code
created: '2023-10-17T15:36:43Z'
- updated: '2024-09-26T08:19:25Z'
+ updated: '2024-09-27T10:26:47Z'
language: Go
archived: false
stars: 813
@@ -7240,8 +7240,8 @@
owner: go-fuego
logo: https://avatars.githubusercontent.com/u/148255240?v=4
license: MIT
- repoEtag: '"b9a254b103435e377ca7637ffde0cc78caf27c646bc67c44704ae754acce168b"'
- repoLastModified: Thu, 26 Sep 2024 08:19:25 GMT
+ repoEtag: '"5a0a7db38fc51a9faf5e22db7afa71b96218a38ed64bc4b890128d302e7695aa"'
+ repoLastModified: Fri, 27 Sep 2024 10:26:47 GMT
foundInMaster: true
- source:
- https://openapi.tools/
@@ -7266,7 +7266,7 @@
owner: danielgtaylor
logo: https://avatars.githubusercontent.com/u/106826?v=4
license: MIT
- repoEtag: '"c56dc9793c6c7f5695f3cdbd8e251bfd0885885cd26e65e267068e1f990f5b74"'
+ repoEtag: '"3cd3732e71e2b79cc3f02bf59848672630c8a524bf83682e9cf80b95290965d5"'
repoLastModified: Fri, 27 Sep 2024 01:07:04 GMT
foundInMaster: true
category:
@@ -7476,17 +7476,17 @@
repositoryId: 843437350
description: Framework for building high quality, interactive API documentation.
created: '2024-08-16T14:09:50Z'
- updated: '2024-09-26T02:42:13Z'
+ updated: '2024-09-27T14:13:00Z'
language: TypeScript
archived: false
- stars: 56
+ stars: 57
watchers: 3
forks: 2
owner: zuplo
logo: https://avatars.githubusercontent.com/u/85497839?v=4
license: MIT
- repoEtag: '"bf82830e5e0a2c7c2cfc14e51193c20a2714d9de2c59a41fa127a05373a84a89"'
- repoLastModified: Thu, 26 Sep 2024 02:42:13 GMT
+ repoEtag: '"4a160514d3427dd9ffb444863b5adecbdda789c4724a487eafecb000026a026d"'
+ repoLastModified: Fri, 27 Sep 2024 14:13:00 GMT
foundInMaster: true
- source: openapi3 tags
name: FastAPI
@@ -7508,17 +7508,17 @@
FastAPI framework, high performance, easy to learn, fast to code, ready
for production
created: '2018-12-08T08:21:47Z'
- updated: '2024-09-27T03:30:27Z'
+ updated: '2024-09-27T23:44:05Z'
language: Python
archived: false
- stars: 76029
- watchers: 675
- forks: 6407
+ stars: 76062
+ watchers: 676
+ forks: 6408
owner: fastapi
logo: https://avatars.githubusercontent.com/u/156354296?v=4
license: MIT
- repoEtag: '"25c226b02740ab57976d0573f4c764b527345fed3132395386915e9e862b738b"'
- repoLastModified: Fri, 27 Sep 2024 03:30:27 GMT
+ repoEtag: '"de8d7482faa9be30fe204f485b65c48dbf48935a467a814b27298f73a00f81ac"'
+ repoLastModified: Fri, 27 Sep 2024 23:44:05 GMT
foundInMaster: true
id: 01f8d446752c39de698f67e8d2352229
oldLocations:
@@ -7538,17 +7538,17 @@
Swagger UI is a collection of HTML, JavaScript, and CSS assets that
dynamically generate beautiful documentation from a Swagger-compliant API.
created: '2011-07-15T22:56:39Z'
- updated: '2024-09-27T03:22:47Z'
+ updated: '2024-09-27T22:43:58Z'
language: JavaScript
archived: false
stars: 26374
watchers: 652
- forks: 8923
+ forks: 8922
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
license: Apache-2.0
- repoEtag: '"12aaa0d5e26f6e29e4b79c5b848d257c2cfbef9618d81a9dbbc568b6f12c342b"'
- repoLastModified: Fri, 27 Sep 2024 03:22:47 GMT
+ repoEtag: '"82e134d50acf3e40d3ddbf67fbf555f051399a192d4661d13513d4e2a99db4fc"'
+ repoLastModified: Fri, 27 Sep 2024 22:43:58 GMT
foundInMaster: true
name: swagger-ui
homepage: https://github.com/swagger-api/swagger-UI
@@ -7581,17 +7581,17 @@
repositoryId: 45250726
description: 📘 OpenAPI/Swagger-generated API Reference Documentation
created: '2015-10-30T12:53:02Z'
- updated: '2024-09-27T03:22:28Z'
+ updated: '2024-09-27T17:55:38Z'
language: TypeScript
archived: false
- stars: 23340
+ stars: 23345
watchers: 296
- forks: 2289
+ forks: 2290
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"8b32056d88f6199df1454281f9c7a4f1547c68a99c45b7225cfa5aed43aafbfb"'
- repoLastModified: Fri, 27 Sep 2024 03:22:28 GMT
+ repoEtag: '"44ce511ecf8a69cd72507fc7d5b7458158881f7dfc308c87c9960c152d6a2a23"'
+ repoLastModified: Fri, 27 Sep 2024 17:55:38 GMT
foundInMaster: true
v3_1: true
id: 2725d6db6977c1dd12ceaf9701787e07
@@ -7637,17 +7637,17 @@
Mockoon is the easiest and quickest way to run mock APIs locally. No
remote deployment, no account required, open source.
created: '2017-07-17T13:19:16Z'
- updated: '2024-09-26T19:38:26Z'
+ updated: '2024-09-27T10:13:56Z'
language: TypeScript
archived: false
- stars: 6278
+ stars: 6279
watchers: 60
forks: 374
owner: mockoon
logo: https://avatars.githubusercontent.com/u/49429147?v=4
license: NOASSERTION
- repoEtag: '"f3a3815401734542e940de1ab9b2d77ca1e9f13504a7a4714e6f87588ed6c2e3"'
- repoLastModified: Thu, 26 Sep 2024 19:38:26 GMT
+ repoEtag: '"c2381f93f2d3abe1d89d949803828aeb9912e39a35f39993d02267838adb73ef"'
+ repoLastModified: Fri, 27 Sep 2024 10:13:56 GMT
foundInMaster: true
category: Testing
id: 8728dfca2c1908dbecdcddd31597fad4
@@ -7670,17 +7670,17 @@
repositoryId: 173009358
description: Generate Go client and server boilerplate from OpenAPI 3 specifications
created: '2019-02-27T23:59:59Z'
- updated: '2024-09-26T16:46:02Z'
+ updated: '2024-09-27T15:11:10Z'
language: Go
archived: false
- stars: 6065
+ stars: 6070
watchers: 36
- forks: 840
+ forks: 841
owner: oapi-codegen
logo: https://avatars.githubusercontent.com/u/142752710?v=4
license: Apache-2.0
- repoEtag: '"054a92902e31055dc60ce5b82fa23879f7b0984379d5ab6d5793b6c849173b96"'
- repoLastModified: Thu, 26 Sep 2024 16:46:02 GMT
+ repoEtag: '"f32abc6ca18333c026b2d561325d446a353f829da77c29ff4afcd7813bcd16c3"'
+ repoLastModified: Fri, 27 Sep 2024 15:11:10 GMT
foundInMaster: true
id: 770a221110cc4ef0e399089f5caf8694
oldLocations:
@@ -7709,17 +7709,17 @@
repositoryId: 161691324
description: Generate TypeScript types from OpenAPI 3 specs
created: '2018-12-13T20:28:01Z'
- updated: '2024-09-26T23:39:58Z'
+ updated: '2024-09-27T21:51:01Z'
language: TypeScript
archived: false
- stars: 5611
+ stars: 5614
watchers: 25
forks: 453
owner: openapi-ts
logo: https://avatars.githubusercontent.com/u/172838200?v=4
license: MIT
- repoEtag: '"6f8483fb8ee9383d22790a9ddfe38fac5ff9ae2e935e6f97cdd401c4e69ad3d6"'
- repoLastModified: Thu, 26 Sep 2024 23:39:58 GMT
+ repoEtag: '"33392a48142d3e24e271b313d45cdbd530a3c22e6e772bcfa1d82dec09e27190"'
+ repoLastModified: Fri, 27 Sep 2024 21:51:01 GMT
foundInMaster: true
oldLocations:
- https://github.com/drwpow/openapi-typescript
@@ -7735,17 +7735,17 @@
repositoryId: 88701696
description: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution
created: '2017-04-19T04:44:28Z'
- updated: '2024-09-26T10:38:04Z'
+ updated: '2024-09-28T01:07:26Z'
language: HTML
archived: false
- stars: 4088
+ stars: 4090
watchers: 75
forks: 614
owner: xiaoymin
logo: https://avatars.githubusercontent.com/u/7894406?v=4
license: Apache-2.0
- repoEtag: '"ea969f3e1aba36897030917c2c9a035a9d2bf6c5f6be8db8dc217216c6e11f98"'
- repoLastModified: Thu, 26 Sep 2024 10:38:04 GMT
+ repoEtag: '"c5b132d356780f6626f494d4ac64a533084b27c43e03c9a0c372a5f0331fe364"'
+ repoLastModified: Sat, 28 Sep 2024 01:07:26 GMT
category: SDK
foundInMaster: true
- source: openapi3 tags
@@ -7761,17 +7761,17 @@
🌐 Wikipedia for Web APIs. Directory of REST API definitions in OpenAPI
2.0/3.x format
created: '2015-02-22T19:58:12Z'
- updated: '2024-09-26T16:11:51Z'
+ updated: '2024-09-27T03:47:04Z'
language: null
archived: false
- stars: 3836
+ stars: 3837
watchers: 113
forks: 575
owner: APIs-guru
logo: https://avatars.githubusercontent.com/u/10975548?v=4
license: CC0-1.0
- repoEtag: '"76ecbd4c1829500df7e1308fb59856399ad1bac79c28870308d5d094bcf80cf4"'
- repoLastModified: Thu, 26 Sep 2024 16:11:51 GMT
+ repoEtag: '"07fa049924fa2a7cce06bd87ca4fd574ff9ac5071ad2d3cb540482f4fe3095f9"'
+ repoLastModified: Fri, 27 Sep 2024 03:47:04 GMT
foundInMaster: true
category: SDK
id: 667f2aef78d9d19418fbd6c0a7835abb
@@ -7795,17 +7795,17 @@
repositoryId: 196475719
description: Library for OpenAPI 3 with spring-boot
created: '2019-07-11T23:08:20Z'
- updated: '2024-09-26T09:23:23Z'
+ updated: '2024-09-27T19:23:26Z'
language: Java
archived: false
- stars: 3252
- watchers: 43
+ stars: 3255
+ watchers: 44
forks: 492
owner: springdoc
logo: https://avatars.githubusercontent.com/u/52804136?v=4
license: Apache-2.0
- repoEtag: '"603e504107aee7eebf8e926d8b835190d80136d6f5db183b662d33e5326dd9d8"'
- repoLastModified: Thu, 26 Sep 2024 09:23:23 GMT
+ repoEtag: '"56a991bb880d47a8b986c9dd227533a16d911b55e1bcaf1464042b6af9bee8e7"'
+ repoLastModified: Fri, 27 Sep 2024 19:23:26 GMT
foundInMaster: true
id: 901410cec129651fcf7374c79f824f27
- source: openapi3 tags
@@ -7876,17 +7876,17 @@
repositoryId: 244234763
description: Sane and flexible OpenAPI 3 schema generation for Django REST framework.
created: '2020-03-01T22:36:54Z'
- updated: '2024-09-26T11:24:11Z'
+ updated: '2024-09-27T17:26:06Z'
language: Python
archived: false
- stars: 2323
+ stars: 2326
watchers: 11
forks: 259
owner: tfranzel
logo: https://avatars.githubusercontent.com/u/13507857?v=4
license: BSD-3-Clause
- repoEtag: '"793c5230e0e1ba449da8e844b93fbe13fcb5c58502d670372a6bb3ec5e47cb38"'
- repoLastModified: Thu, 26 Sep 2024 11:24:11 GMT
+ repoEtag: '"5e49e2ae2d0a5e5629e9e381f00d288ff38689dd92784bf83f5c3f0c70db911f"'
+ repoLastModified: Fri, 27 Sep 2024 17:26:06 GMT
foundInMaster: true
category: Server Implementations
id: 520f5c66c3e42a7b3fbface4f156c1dc
@@ -7904,17 +7904,17 @@
A fast serialization and validation library, with builtin support for
JSON, MessagePack, YAML, and TOML
created: '2021-01-26T02:53:57Z'
- updated: '2024-09-26T16:46:32Z'
+ updated: '2024-09-27T21:05:24Z'
language: Python
archived: false
- stars: 2275
+ stars: 2280
watchers: 19
forks: 67
owner: jcrist
logo: https://avatars.githubusercontent.com/u/2783717?v=4
license: BSD-3-Clause
- repoEtag: '"f4430b596f2690d9fc47909defced63f109191f89102c6d49f9d5efbb4d3fec9"'
- repoLastModified: Thu, 26 Sep 2024 16:46:32 GMT
+ repoEtag: '"d78bc8217f40cc3a4ee50af2fab9bdb12b6c1d70de801297aa8d652539d10dec"'
+ repoLastModified: Fri, 27 Sep 2024 21:05:24 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -7946,7 +7946,7 @@
owner: schemathesis
logo: https://avatars.githubusercontent.com/u/70383271?v=4
license: MIT
- repoEtag: '"55fa26e9d36f671d243a78947d98425ce6e1ac1e3e85209c5050cf1182b7b011"'
+ repoEtag: '"55177bdf15e59bdb52a0a220e5fcc92b67a0f556b0e8576b20ec8ff2dc2119e7"'
repoLastModified: Thu, 26 Sep 2024 21:43:12 GMT
foundInMaster: true
id: f4032fb371a703acffa691c0f1239d45
@@ -7992,17 +7992,17 @@
repositoryId: 165951750
description: RapiDoc -WebComponent for OpenAPI Spec
created: '2019-01-16T01:29:58Z'
- updated: '2024-09-27T00:34:15Z'
+ updated: '2024-09-27T21:15:54Z'
language: JavaScript
archived: false
- stars: 1648
+ stars: 1649
watchers: 12
forks: 277
owner: rapi-doc
logo: https://avatars.githubusercontent.com/u/104180085?v=4
license: MIT
- repoEtag: '"2c79d36c3a610c0f41b8deeb3b8145e0f8a11bac97549a2a1734eafe9d8f6e72"'
- repoLastModified: Fri, 27 Sep 2024 00:34:15 GMT
+ repoEtag: '"272f9023c34aca7f273a0cb6c8d6e68ecdedc755dda14530b0e2a528e13fce61"'
+ repoLastModified: Fri, 27 Sep 2024 21:15:54 GMT
foundInMaster: true
category:
- Documentation
@@ -8023,17 +8023,17 @@
A node package wrapper for
https://github.com/OpenAPITools/openapi-generator
created: '2018-10-26T10:21:23Z'
- updated: '2024-09-26T12:55:18Z'
+ updated: '2024-09-28T02:00:43Z'
language: TypeScript
archived: false
- stars: 1420
+ stars: 1421
watchers: 18
forks: 143
owner: OpenAPITools
logo: https://avatars.githubusercontent.com/u/37325267?v=4
license: Apache-2.0
- repoEtag: '"ed3960248406d8043f1d38b5ee77b41446821918f547c913a82b1ab219f75e03"'
- repoLastModified: Thu, 26 Sep 2024 12:55:18 GMT
+ repoEtag: '"7ef47878283f82cc22bd5db8f19bc51b0b72b124bc6ab58768d771c88ea8a00c"'
+ repoLastModified: Sat, 28 Sep 2024 02:00:43 GMT
foundInMaster: true
category:
- Code Generators
@@ -8082,17 +8082,17 @@
repositoryId: 372032505
description: OpenAPI v3 code generator for go
created: '2021-05-29T17:25:48Z'
- updated: '2024-09-26T16:26:38Z'
+ updated: '2024-09-27T21:14:11Z'
language: Go
archived: false
- stars: 1320
+ stars: 1324
watchers: 16
forks: 75
owner: ogen-go
logo: https://avatars.githubusercontent.com/u/85122432?v=4
license: Apache-2.0
- repoEtag: '"e6e032ef136a6069d66b6be4590ce3a0ce9b7f67aad75b2ea6b8ec75f8caf668"'
- repoLastModified: Thu, 26 Sep 2024 16:26:38 GMT
+ repoEtag: '"8498877e6b6dd4e6ce035e9473898d442bafbf63f35a3f05daefb7801aa97081"'
+ repoLastModified: Fri, 27 Sep 2024 21:14:11 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -8108,17 +8108,17 @@
A pluggable API specification generator. Currently supports the OpenAPI
Specification (f.k.a. the Swagger specification)..
created: '2014-10-18T23:48:49Z'
- updated: '2024-09-14T23:49:20Z'
+ updated: '2024-09-28T02:43:36Z'
language: Python
archived: false
- stars: 1169
+ stars: 1171
watchers: 24
forks: 175
owner: marshmallow-code
logo: https://avatars.githubusercontent.com/u/10334301?v=4
license: MIT
- repoEtag: '"becf9bf63e61d71674ba3594a3dc037df6b1f4c7911112ef351b185eaabbb428"'
- repoLastModified: Sat, 14 Sep 2024 23:49:20 GMT
+ repoEtag: '"04cb4590220806f89255c13498ba8ab8e4bc8a4a805069bc1cbf864b97498890"'
+ repoLastModified: Sat, 28 Sep 2024 02:43:36 GMT
foundInMaster: true
category: Parsers
id: c1528764f05dd585ca47886dd6dabb86
@@ -8134,17 +8134,17 @@
repositoryId: 329190167
description: A lightweight Python web API framework.
created: '2021-01-13T04:08:48Z'
- updated: '2024-09-26T06:39:40Z'
+ updated: '2024-09-27T13:10:35Z'
language: Python
archived: false
- stars: 1021
+ stars: 1022
watchers: 21
forks: 126
owner: apiflask
logo: https://avatars.githubusercontent.com/u/78075725?v=4
license: MIT
- repoEtag: '"6019570a3d02afedd6e3f88b1b5ccda667cbb7a6cd2ae27b60186ef5e6b5f4fa"'
- repoLastModified: Thu, 26 Sep 2024 06:39:40 GMT
+ repoEtag: '"a771e50e7826501faf4be6c90cfd430acf21982d7c4a1cfa752e58a4a4b7d670"'
+ repoLastModified: Fri, 27 Sep 2024 13:10:35 GMT
category: Server Implementations
foundInMaster: true
oldLocations:
@@ -8161,17 +8161,17 @@
repositoryId: 481579846
description: A library that generates OpenAPI (Swagger) docs from Zod schemas
created: '2022-04-14T11:32:57Z'
- updated: '2024-09-27T01:37:54Z'
+ updated: '2024-09-27T18:21:00Z'
language: TypeScript
archived: false
- stars: 912
+ stars: 911
watchers: 10
forks: 58
owner: asteasolutions
logo: https://avatars.githubusercontent.com/u/5244095?v=4
license: MIT
- repoEtag: '"421d5035f44bbbf1672791dbec0d6b0f643b6b39fdbee8ca8b568cc6ea4cdc86"'
- repoLastModified: Fri, 27 Sep 2024 01:37:54 GMT
+ repoEtag: '"4882dc575d33a84a20493b6a9a7efdd0762f55f938c24586229c1ab462aa28db"'
+ repoLastModified: Fri, 27 Sep 2024 18:21:00 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -8187,17 +8187,17 @@
A fast Java JSON schema validator that supports draft V4, V6, V7, V2019-09
and V2020-12
created: '2016-09-15T12:24:16Z'
- updated: '2024-09-25T16:20:00Z'
+ updated: '2024-09-27T20:18:27Z'
language: Java
archived: false
- stars: 833
+ stars: 835
watchers: 43
forks: 324
owner: networknt
logo: https://avatars.githubusercontent.com/u/8740739?v=4
license: Apache-2.0
- repoEtag: '"7bc560ec6e577dffe57cb3ff3916f6c1453a979891b519e80176b2048956ec25"'
- repoLastModified: Wed, 25 Sep 2024 16:20:00 GMT
+ repoEtag: '"8cd5829fe2be67654be703924a1ae6b48d3f7512ccc78dee5a534cd380d709ea"'
+ repoLastModified: Fri, 27 Sep 2024 20:18:27 GMT
foundInMaster: true
category: Parsers
id: 69c6f349899d198b4045edb7ffa3fb74
@@ -8212,17 +8212,17 @@
repositoryId: 192797744
description: The modern editor for API Design and Technical Writing.
created: '2019-06-19T20:09:49Z'
- updated: '2024-09-18T08:35:20Z'
+ updated: '2024-09-27T12:02:13Z'
language: null
archived: false
- stars: 805
+ stars: 806
watchers: 30
forks: 50
owner: stoplightio
logo: https://avatars.githubusercontent.com/u/10767217?v=4
license: NOASSERTION
- repoEtag: '"4bfa10bd51e2c8c56dcce85975bf521f9b1ac72d5e8c4b3a6c07b812843f68bf"'
- repoLastModified: Wed, 18 Sep 2024 08:35:20 GMT
+ repoEtag: '"8d2af26eeae40821e54e3ac77fb7f058309d4b7e1fcb745f2ed21a76cca98c43"'
+ repoLastModified: Fri, 27 Sep 2024 12:02:13 GMT
foundInMaster: true
category:
- Description Validators
@@ -8244,11 +8244,11 @@
archived: false
stars: 807
watchers: 20
- forks: 153
+ forks: 154
owner: OpenAPITools
logo: https://avatars.githubusercontent.com/u/37325267?v=4
license: Apache-2.0
- repoEtag: '"33f967485d6b193da46a511cfc37e8330a727798bbf23136fdc8f907743d4fa0"'
+ repoEtag: '"1a78c275090b39d4408b5e74b415cf86affa6e1dd278071a5d2ad43111088e37"'
repoLastModified: Thu, 26 Sep 2024 08:29:50 GMT
foundInMaster: true
category: Parsers
@@ -8367,17 +8367,17 @@
🤖 Generator for GH repo to help you manage the OpenAPI definition
lifecycle
created: '2016-05-16T22:45:23Z'
- updated: '2024-09-21T16:22:43Z'
+ updated: '2024-09-27T22:56:08Z'
language: JavaScript
archived: false
- stars: 669
+ stars: 670
watchers: 25
forks: 106
owner: Redocly
logo: https://avatars.githubusercontent.com/u/32099856?v=4
license: MIT
- repoEtag: '"f29d4d4e3e850f97e927c7cb94cd2b47377bdf67d185530c0837528f0aeaae6b"'
- repoLastModified: Sat, 21 Sep 2024 16:22:43 GMT
+ repoEtag: '"a5fe7fa704ca0b46b2818b832d681c65add73312b7baf0e4c7abdf6db9b217b4"'
+ repoLastModified: Fri, 27 Sep 2024 22:56:08 GMT
foundInMaster: true
v3_1: true
category:
@@ -8479,17 +8479,17 @@
一个实现了多种常用站点的易用化API的程序 / A program that implements easy-to-use APIs for a
variety of commonly used sites.
created: '2020-12-18T14:56:31Z'
- updated: '2024-09-20T17:17:32Z'
+ updated: '2024-09-27T08:51:41Z'
language: Python
archived: false
- stars: 541
+ stars: 542
watchers: 10
forks: 81
owner: mixmoe
logo: https://avatars.githubusercontent.com/u/68723928?v=4
license: Apache-2.0
- repoEtag: '"097aa68bbe9d58e33ebbc4225abcb8d2b2727bf5b10d5f65748721f9f350aeee"'
- repoLastModified: Fri, 20 Sep 2024 17:17:32 GMT
+ repoEtag: '"7d96cb0789df05ba2cbf7af5445fbf93ff3a69d16ecbb35b80a62677b94de3a0"'
+ repoLastModified: Fri, 27 Sep 2024 08:51:41 GMT
foundInMaster: true
category: Testing
id: a5ce8925c7b03da0bff459d65f63458a
@@ -8579,17 +8579,17 @@
repositoryId: 145602302
description: OpenAPI mock server with random data generation
created: '2018-08-21T18:16:27Z'
- updated: '2024-09-26T19:34:58Z'
+ updated: '2024-09-27T05:34:31Z'
language: Go
archived: false
- stars: 488
+ stars: 489
watchers: 9
forks: 55
owner: muonsoft
logo: https://avatars.githubusercontent.com/u/32521718?v=4
license: MIT
- repoEtag: '"7a797723a9f6a19639444f26bd28ede454ae18f41082aed8b91568a416fc963b"'
- repoLastModified: Thu, 26 Sep 2024 19:34:58 GMT
+ repoEtag: '"2a580c91c5974f562a8a6a1b94a010b5e87bc95609da52ef7098d40b38e4022b"'
+ repoLastModified: Fri, 27 Sep 2024 05:34:31 GMT
foundInMaster: true
category:
- Description Validators
@@ -8609,17 +8609,17 @@
Query, provision and operate Cloud and SaaS resources and APIs using an
extensible SQL based framework
created: '2022-01-03T08:20:06Z'
- updated: '2024-09-25T13:19:41Z'
+ updated: '2024-09-27T20:56:16Z'
language: Go
archived: false
- stars: 510
+ stars: 511
watchers: 12
forks: 47
owner: stackql
logo: https://avatars.githubusercontent.com/u/95105302?v=4
license: MIT
- repoEtag: '"ae341c6d7006dc9fc994777dbaa5734df1dc6414ab3f27f39f466dbe54949fc2"'
- repoLastModified: Wed, 25 Sep 2024 13:19:41 GMT
+ repoEtag: '"d8d2bc56dc8b218e3d89958895785304d8ce1e0294e6a2fba1de1bc1417561b4"'
+ repoLastModified: Fri, 27 Sep 2024 20:56:16 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -8744,17 +8744,17 @@
High-performance Async REST API, in Python. FastAPI + GINO + Arq + Uvicorn
(w/ Redis and PostgreSQL).
created: '2019-06-23T18:44:16Z'
- updated: '2024-08-12T13:21:05Z'
+ updated: '2024-09-27T17:42:26Z'
language: Python
archived: false
- stars: 413
+ stars: 414
watchers: 12
forks: 43
owner: leosussan
logo: https://avatars.githubusercontent.com/u/7993496?v=4
license: MIT
- repoEtag: '"90fbf89c3f9eeb5a6bba19b1ad07249acb1ece21862de3b56e49d7157ebd5774"'
- repoLastModified: Mon, 12 Aug 2024 13:21:05 GMT
+ repoEtag: '"7f71db87556fd3583212233f1098a1b4b23683ecffa5b97f05f5fc61e4ed4f37"'
+ repoLastModified: Fri, 27 Sep 2024 17:42:26 GMT
foundInMaster: true
category: Server Implementations
id: ca4835106497a7abc28ad7ff8d789dfd
@@ -8830,7 +8830,7 @@
owner: dgarcia360
logo: https://avatars.githubusercontent.com/u/9107969?v=4
license: NOASSERTION
- repoEtag: '"ae3b4d33a8f4d4511d48971610e71864bc9cbb7188e0bc127070a574ae72586d"'
+ repoEtag: '"c8f68dce72c18a7602374a038c5f70a997a16116c82a95021bb54006532914ff"'
repoLastModified: Thu, 26 Sep 2024 13:45:56 GMT
foundInMaster: true
category:
@@ -9024,17 +9024,17 @@
repositoryId: 202613633
description: Collection of RESTful APIs provided by Ethereum Beacon nodes
created: '2019-08-15T21:27:12Z'
- updated: '2024-09-24T21:56:40Z'
+ updated: '2024-09-27T22:51:49Z'
language: HTML
archived: false
- stars: 328
+ stars: 330
watchers: 35
forks: 168
owner: ethereum
logo: https://avatars.githubusercontent.com/u/6250754?v=4
license: CC0-1.0
- repoEtag: '"41c869b3ba470181a4696c8eb13c0f302223fd251f436dc63f969f45b65b586f"'
- repoLastModified: Tue, 24 Sep 2024 21:56:40 GMT
+ repoEtag: '"10713d3e8370d194c665e0f315873b51d8b97794085f5c65e942e2ba66802c48"'
+ repoLastModified: Fri, 27 Sep 2024 22:51:49 GMT
foundInMaster: true
category:
- Documentation
@@ -9079,7 +9079,7 @@
A library for generating typed models based on inputs such as AsyncAPI,
OpenAPI, and JSON Schema documents with high customization
created: '2021-01-21T12:27:51Z'
- updated: '2024-09-26T02:46:05Z'
+ updated: '2024-09-27T14:51:23Z'
language: TypeScript
archived: false
stars: 300
@@ -9088,8 +9088,8 @@
owner: asyncapi
logo: https://avatars.githubusercontent.com/u/16401334?v=4
license: Apache-2.0
- repoEtag: '"f635706407353d8d0d16a3106cfe705891ded47f14b555462d5dd49f74ec971c"'
- repoLastModified: Thu, 26 Sep 2024 02:46:05 GMT
+ repoEtag: '"e2fa723feedcfda7824d42aa766bbb37d72315dd4fd045b98104ba9e584363ba"'
+ repoLastModified: Fri, 27 Sep 2024 14:51:23 GMT
foundInMaster: true
- source:
- openapi3 tags
@@ -9139,7 +9139,7 @@
OpenAPI 3 and 3.1 schema generator and validator for Hono, itty-router and
more!
created: '2022-11-08T11:43:41Z'
- updated: '2024-09-26T02:19:33Z'
+ updated: '2024-09-27T13:50:00Z'
language: TypeScript
archived: false
stars: 299
@@ -9148,8 +9148,8 @@
owner: cloudflare
logo: https://avatars.githubusercontent.com/u/314135?v=4
license: MIT
- repoEtag: '"85551e6465a5a7f53f1d0ea23444dba1424aef72fe6924a5dfc9482ee29f33ed"'
- repoLastModified: Thu, 26 Sep 2024 02:19:33 GMT
+ repoEtag: '"b881b028b4f24e962514d79132b75e193c012e40947da7d3a6e9d25bd5f1e9d7"'
+ repoLastModified: Fri, 27 Sep 2024 13:50:00 GMT
category: Server Implementations
foundInMaster: true
oldLocations:
@@ -9272,7 +9272,7 @@
repositoryId: 628179878
description: Use Zod Schemas to create OpenAPI v3.x documentation
created: '2023-04-15T06:28:51Z'
- updated: '2024-09-23T03:37:39Z'
+ updated: '2024-09-28T02:46:31Z'
language: TypeScript
archived: false
stars: 254
@@ -9281,8 +9281,8 @@
owner: samchungy
logo: https://avatars.githubusercontent.com/u/18017094?v=4
license: MIT
- repoEtag: '"ff337669ff65fb4d47b3d479ac99dfa583622b43d698b80f860081f576aadd52"'
- repoLastModified: Mon, 23 Sep 2024 03:37:39 GMT
+ repoEtag: '"9e0cb9eef9d67b6cb8d4da0f5d038885ecc61a96344473402ebc63865e0b1e6d"'
+ repoLastModified: Sat, 28 Sep 2024 02:46:31 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -9442,12 +9442,12 @@
language: Go
archived: false
stars: 229
- watchers: 144
+ watchers: 143
forks: 12
owner: grafana
logo: https://avatars.githubusercontent.com/u/7195757?v=4
license: Apache-2.0
- repoEtag: '"e3f65c70534fb3402a1abc6049262cc148159d8fd620b34e0f32304f7ec86bd7"'
+ repoEtag: '"7dfa3f7ba26a7621de5c7a248a572a2a387f97e4830b5f8c0c60383cef32b29b"'
repoLastModified: Wed, 21 Aug 2024 10:44:42 GMT
foundInMaster: true
category:
@@ -9627,7 +9627,7 @@
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"5ecdbabe40e0200ed3646a8ff899c6a9047be74a8d2acb1811bc8a2ded5d2d1e"'
+ repoEtag: '"34c31d9bb25ff941c57edaa94f05a4d372afb83de84bf4b91c355f815bbe1f5c"'
repoLastModified: Tue, 24 Sep 2024 06:26:57 GMT
foundInMaster: true
category:
@@ -9824,7 +9824,7 @@
Autogenered docs, Zod - BullMQ - Nodemailer - Docker - MongoDB (Mongoose)
- Socket.io
created: '2024-08-11T02:19:59Z'
- updated: '2024-09-25T17:59:59Z'
+ updated: '2024-09-27T11:12:25Z'
language: TypeScript
archived: false
stars: 191
@@ -9833,8 +9833,8 @@
owner: muneebhashone
logo: https://avatars.githubusercontent.com/u/88892379?v=4
license: MIT
- repoEtag: '"241babbd07cb3842a02423a610f1a98dfe4100dfbf95113de73ab8adc4506d60"'
- repoLastModified: Wed, 25 Sep 2024 17:59:59 GMT
+ repoEtag: '"eab3e414156936af903c38a7bc13495c39f8315442155ef45b2e9aa75e151e05"'
+ repoLastModified: Fri, 27 Sep 2024 11:12:25 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -9928,7 +9928,7 @@
A tool for generating Refit interfaces and contracts from OpenAPI
specifications
created: '2023-02-07T23:18:12Z'
- updated: '2024-09-26T19:44:30Z'
+ updated: '2024-09-27T09:54:02Z'
language: C#
archived: false
stars: 184
@@ -9937,8 +9937,8 @@
owner: christianhelle
logo: https://avatars.githubusercontent.com/u/710400?v=4
license: MIT
- repoEtag: '"8a69051acef61ffeb08da2338dc1f7fb6b61184b13ffb9bb5c0958f6b8dcebce"'
- repoLastModified: Thu, 26 Sep 2024 19:44:30 GMT
+ repoEtag: '"34f49d73755a2214de5d2eabd5014e76d24a7202e2cf35128d491a1f59dfd315"'
+ repoLastModified: Fri, 27 Sep 2024 09:54:02 GMT
category: Parsers
foundInMaster: true
- source:
@@ -9979,13 +9979,13 @@
id: b04ab57cb5fd068ea45591850bba85fc
repositoryMetadata:
base64Readme: >-
- PGJyIC8+PGJyIC8+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKPGEgaHJlZj0iW1NwZWFrZWFzeV0oaHR0cHM6Ly9zcGVha2Vhc3kuY29tLykiPgogIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kvYXNzZXRzLzY4MDE2MzUxL2U5NTlmODFhLWIyNTAtNDAwMy04YzVjLWE0NWI5NDYzZmM5NSIgYWx0PSJTcGVha2Vhc3kgTG9nbyIgd2lkdGg9IjcwMCI+CjxoMj5FbnRlcnByaXNlLVJlYWR5IERldmVsb3BlciBFeHBlcmllbmNlIGZvciB5b3VyIFJFU1QgQVBJPC9oMj4KPHA+TGF1bmNoIHByb2R1Y3Rpb24tcXVhbGl0eSBTREtzLCBUZXJyYWZvcm0gcHJvdmlkZXJzLCBkb2NzLCBhbmQgbW9yZSBpbiBtaW51dGVzIDpyb2NrZXQ6PC9wPgo8L2E+CjxiciAvPgo8YnIgLz4KCiAgIDxhIGhyZWY9Imh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL2NyZWF0ZS1jbGllbnQtc2Rrcy8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1Eb2NzJm1lc3NhZ2U9UXVpY2tzdGFydCZjb2xvcj0wMDAmc3R5bGU9Zm9yLXRoZS1iYWRnZSIgLz48L2E+CiAgIDxhIGhyZWY9Imh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9zcGVha2Vhc3ktZGV2L3NoYXJlZF9pbnZpdGUvenQtMWN3YjNmbHh6LWxTNVN5WnhBc0ZfM05PcTV4YzhDanciPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1TbGFjayZtZXNzYWdlPUpvaW4mY29sb3I9NzI4OWRhJnN0eWxlPWZvci10aGUtYmFkZ2UiIC8+PC9hPgoKICAhW0dyb3VwIDI2XShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kvYXNzZXRzLzY4MDE2MzUxLzE1OWYwNTY1LTBjZmEtNDY4YS04ZmNkLTdjMzU5MGVlYTM1NSkKCiAgIVtlemdpZiBjb20tdmlkZW8tdG8tZ2lmICgxKV0oaHR0cHM6Ly9naXRodWIuY29tL3NwZWFrZWFzeS1hcGkvc3BlYWtlYXN5L2Fzc2V0cy85MDI4OTUwMC9mZjY5NzJjNC00ZThhLTRhNWMtYTk3Ni03NWU5N2NjNDJmNWEpCjwvZGl2Pgo8YnIgLz4KCiMjIFdoYXQgaXMgU3BlYWtlYXN5PwoKW1NwZWFrZWFzeV0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS8pIGdpdmVzIHlvdXIgdXNlcnMgdGhlIGRldmVsb3BlciBleHBlcmllbmNlIHRoYXQgbWFrZXMgQVBJIGludGVncmF0aW9ucyBlYXN5LgoKRG9uJ3QgcHV0IHRoZSBidXJkZW4gb2YgaW50ZWdyYXRpb24gb24geW91ciB1c2Vycy4gVGFrZSB5b3VyIEFQSXMgdG8gbWFya2V0IHdpdGggYmVzdC1pbi1jbGFzcywgZW50ZXJwcmlzZS1yZWFkeSBTREtzLCBUZXJyYWZvcm0gcHJvdmlkZXJzLCBTREsgZG9jcywgYW5kIG1vcmUuCgohW0dyb3VwIDI3XShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kvYXNzZXRzLzY4MDE2MzUxLzA3MzM1MzIxLTJhZTEtNDFkZS1hMWIxLTNiZTcyZGYzOGE5MCkKCiMjIyBLZXkgRmVhdHVyZXMKCiogKipMTE0gUG93ZXJlZCBBUEkgTWFpbnRlbmFuY2UqKiAtIEtlZXAgeW91ciBBUEkgc2NoZW1hIHVwIHRvIGRhdGUgYW5kIGZvbGxvdyBiZXN0IHByYWN0aWNlcyB3aXRoIGF1dG9tYXRpYyBtYWludGVuYW5jZSBwb3dlcmVkIGJ5IGJlc3QtaW4tY2xhc3MgTExNcy4gVHJ5IGl0IG91dCBub3cgaW4gdGhlIENMSSB3aXRoIGBzcGVha2Vhc3kgc3VnZ2VzdGAgb3IgZW1iZWQgaXQgaW50byB5b3VyIEdpdEh1YiB3b3JrZmxvdyB1c2luZyBvdXIgW2FjdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3NwZWFrZWFzeS1hcGkvc2RrLWdlbmVyYXRpb24tYWN0aW9uKS4gCiogKipQcm9kdWN0aW9uLVF1YWxpdHkgU0RLcyoqIC0gRXJnb25vbWljLCB0eXBlLXNhZmUsIGFuZCBmYXVsdC10b2xlcmFudCBjbGllbnQgbGlicmFyaWVzIGJ1aWx0IGZvciBwcm9kdWN0aW9uIHVzZSBjYXNlcyB3aXRoIGlkaW9tYXRpY3Mgb3B0aW1pemVkIGZvciBlYWNoIGxhbmd1YWdlLiBFbWJlZCBhZGRpdGlvbmFsIGNhcGFiaWxpdGllcyBsaWtlIGF1dGgsIHJldHJpZXMsIHBhZ2luYXRpb24sIGFuZCBtb3JlIHVzaW5nIHNwZWMtYmFzZWQgZXh0ZW5zaW9ucy4gCiogKipQcm9kdWN0aW9uLVF1YWxpdHkgVGVycmFmb3JtIFByb3ZpZGVycyoqIC0gRXhwb3NlIHlvdXIgQVBJIGZvciBpbmZyYXN0cnVjdHVyZS1hcy1jb2RlIHVzZSBjYXNlcyB3aXRoIGZ1bGx5IGZlYXR1cmVkIFRlcnJhZm9ybSBwcm92aWRlcnMuIAoqICoqU0RLIERvY3MqKiAtIE1hcmtkb3duIHVzYWdlIHNuaXBwZXRzIGZvciBldmVyeSBzaW5nbGUgb3BlcmF0aW9uIGFuZCBtb2RlbCBpbiB5b3VyIFNESy4gRXhwb3J0IHVzYWdlIHNuaXBwZXRzIGFuZCBob3N0IHRoZW0gb24gYSBicmFuZGVkIFNESyBhbmQgQVBJIGRvY3Mgc2l0ZSB1c2luZyBvdXIgRG9jdXNhdXJ1cyBSZWFjdCBwbHVnaW4uIAoqICoqRGlzdHJpYnV0aW9uIHRvIFBhY2thZ2UgTWFuYWdlcnMqKiAtIEEgY29tcGxldGUgcGlwZWxpbmUgZm9yIGRpc3RyaWJ1dGluZyB5b3VyIGxpYnJhcmllcyB0byBwb3B1bGFyIHBhY2thZ2UgbWFuYWdlcnMgbGlrZSBucG0sIFB5UEksIE1hdmVuLCBhbmQgVGVycmFmb3JtIFJlZ2lzdHJ5LiAKKiAqKlN1cHBvcnRzIE9wZW4gU3RhbmRhcmRzKiogLSBTcGVha2Vhc3kgd29ya3Mgd2l0aCB5b3VyIGV4aXN0aW5nIEFQSSBmcmFtZXdvcmsgYnkgc3VwcG9ydGluZyBPcGVuQVBJMy5YIGFuZCBvdGhlciBvcGVuIHN0YW5kYXJkcy4gUGx1ZyBhbmQgcGxheSBub3QgcmlwIGFuZCByZXBsYWNlLiAKCkZvciB1cGNvbWluZyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzLCBjaGVjayBvdXQgb3VyIFtwdWJsaWMgcm9hZG1hcF0oaHR0cHM6Ly9naXRodWIuY29tL29yZ3Mvc3BlYWtlYXN5LWFwaS9wcm9qZWN0cy82L3ZpZXdzLzEpLgoKIyMgV2hhdCBpcyB0aGUgU3BlYWtlYXN5IENMST8KClRoZSBbU3BlYWtlYXN5IENMSV0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL3NwZWFrZWFzeS1jbGkvZ2V0dGluZy1zdGFydGVkKSBpcyBhIHRvb2wgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIFNwZWFrZWFzeSBwbGF0Zm9ybSB0aGF0IGJyaW5ncyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBTcGVha2Vhc3kgaW50byB5b3VyIGRldmVsb3BtZW50IHdvcmtmbG93LiAKCllvdSBjYW4gcnVuIHRoZSBTcGVha2Vhc3kgQ0xJIGxvY2FsbHkgb3IgaW4geW91ciBDSS9DRCBwaXBlbGluZSB0byB2YWxpZGF0ZSB5b3VyIEFQSSBzcGVjcywgZ2VuZXJhdGUgU0RLcywgYW5kIG1vcmUuIExvb2tpbmcgdG8gZW1iZWQgdGhpcyBpbnRvIHlvdXIgR2l0SHViIENJL0NEPyBDaGVjayBvdXQgW3RoZXNlIGRvY3NdKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL2NyZWF0ZS1jbGllbnQtc2Rrcy9naXRodWItc2V0dXAvKSBpbnN0ZWFkLiAKCkhlcmUgYXJlIGEgZmV3IGtleSBmdW5jdGlvbnMgb2YgdGhlIENMSToKCiogYHF1aWNrc3RhcnRgIC0gQ3JlYXRlIGFuIGlkaW9tYXRpYyBjbGllbnQgU0RLIG9yIHRhcmdldCwgc3VjaCBhcyBhIFRlcnJhZm9ybSBQcm92aWRlciwgZnJvbSB5b3VyIEFQSSBzcGVjcy4KKiBgcnVuYCAtIFJlZ2VuZXJhdGUgZXhpc3RpbmcgU0RLL3RhcmdldCBmcm9tIHlvdXIgQVBJIHNwZWNzLgoqIGB2YWxpZGF0ZWAgLSBWYWxpZGF0ZSB0aGUgY29ycmVjdG5lc3Mgb2YgeW91ciBBUEkgc3BlY3MuIFRoZSBDTEkgaGFzIGEgYnVpbHQtaW4gY29tbWFuZCB0byB2YWxpZGF0ZSB5b3VyIHNwZWMgZm9yIFNESyByZWFkaW5lc3MgYW5kIHBvc3QgaGVscGZ1bCBlcnJvciBtZXNzYWdlcy4KKiBgc3VnZ2VzdGAgLSBVc2UgYW4gTExNIHRvIGF1dG9jb3JyZWN0IHlvdXIgc3BlYyB2YWxpZGF0aW9uIGZhaWx1cmVzLiAKKiBgbWVyZ2VgIC0gV29yayB3aXRoIHlvdXIgZXhpc3RpbmcgZG9jdW1lbnRhdGlvbiB3b3JrZmxvd3MgYnkgbWVyZ2luZyB5b3VyIEFQSSBzcGVjcyBpbnRvIGEgc2luZ2xlIHNwZWMuIAoqIGBhdXRoYCAtIEF1dGhlbnRpY2F0ZSB3aXRoIHRoZSBwbGF0Zm9ybSBhbmQgbWFuYWdlIEFQSSBrZXlzLiAKKiBgc3RhdHVzYCAtIFJldmlldyBhbGwgU0RLL3RhcmdldHMgaW4gY3VycmVudCB3b3Jrc3BhY2UuCgpGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIGNvbW1hbmRzIGNoZWNrIG91dCBvdXIgW3JlZmVyZW5jZV0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL3NwZWFrZWFzeS1jbGkvZ2V0dGluZy1zdGFydGVkKSBvciB0eXBlIGBzcGVha2Vhc3lgIGFuZCBvdXIgaW50ZXJhY3RpdmUgbW9kZSB3aWxsIHRha2UgeW91IHRocm91Z2ggdGhlIGF2YWlsYWJsZSBmdW5jdGlvbnMuIAoKIyMgRGVzaWduIENob2ljZXMKCkVhY2ggU0RLIGdlbmVyYXRlZCBieSBTcGVha2Vhc3kgaXMgaWRpb21hdGljIHRvIHRoZSBsYW5ndWFnZSBpdCdzIGdlbmVyYXRlZCBmb3Igd2hpbGUgc2hhcmluZyBjb21tb24gcGF0dGVybnMgd2l0aCBTREtzIGZvciBvdGhlciBsYW5ndWFnZXMgdG8gYWxsb3cgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIHRoZW0uIFVzaW5nIHNoYXJlZCBwYXR0ZXJucyBhbHNvIGhlbHBzIHRvIGtlZXAgdGhlIFNwZWFrZWFzeSBnZW5lcmF0aW9uIGVuZ2luZSBlZmZpY2llbnQgd2hpbGUgc3VwcG9ydGluZyBtYW55IGxhbmd1YWdlcy4KCkhlcmUgYXJlIHNvbWUgb2YgdGhlIFNwZWFrZWFzeSBkZXNpZ24gZGVjaXNpb25zOgoKKiBFYWNoIFNESyBnZW5lcmFsbHkgaW1wbGVtZW50cyBhIGJhc2UgU0RLIGNsYXNzIHRoYXQgY29udGFpbnMgdGhlIG1ldGhvZHMgZm9yIGVhY2ggb2YgdGhlIEFQSSBlbmRwb2ludHMgZGVmaW5lZCBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudC4KKiBXaGVyZSBwb3NzaWJsZSwgU3BlYWtlYXN5IGdlbmVyYXRlcyBmdWxseSB0eXBlZCBtb2RlbHMgZnJvbSB0aGUgT3BlbkFQSSBkb2N1bWVudCwgc2VwYXJhdGluZyBtb2RlbHMgZGVmaW5lZCBhcyBjb21wb25lbnRzIGluIHRoZSBkb2NzIGZyb20gbW9kZWxzIGRlZmluZWQgaW4gbGluZSB3aXRoIG9wZXJhdGlvbnMuCiogQmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gaW4gdGhlIE9wZW5BUEkgZG9jdW1lbnQsIFNwZWFrZWFzeSBhbm5vdGF0ZXMgdHlwZXMgdXNpbmcgcmVmbGVjdGlvbiBtZXRhZGF0YSB0byBkZXRlcm1pbmUgaG93IHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgdGhlbS4KKiBUbyBnZXQgU0RLcyB0byB5b3VyIGVuZCB1c2VycyBxdWlja2x5LCBTcGVha2Vhc3kgZ2VuZXJhdGVzIGZ1bGwgcGFja2FnZXMgZm9yIGVhY2ggbGFuZ3VhZ2UgdGhhdCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcHVibGlzaCB0byBhIHBhY2thZ2UgcmVnaXN0cnkgd2l0aCBsaXR0bGUgYWRkaXRpb25hbCB3b3JrLiBJZiB5b3UncmUgaW50ZXJlc3RlZCBpbiBoYXZpbmcgYSBtYW5hZ2VkIHBpcGVsaW5lIHRvIHlvdXIgcGFja2FnZSBtYW5hZ2VyLCBjaGVjayBvdXQgdGhlIFNwZWFrZWFzeSBHZW5lcmF0aW9uIEdpdEh1YiBBY3Rpb24uCgpXYW50IHRvIGxlYXJuIG1vcmUgYWJvdXQgdGhlIFNwZWFrZWFzeSBtZXRob2RvbG9neT8gVGFrZSBhIGxvb2sgYXQgW2hvdyB0aGUgU3BlYWtlYXN5IFNESyBnZW5lcmF0b3IgY29tcGFyZXMgdG8gT1NTIG9wdGlvbnNdKGh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vcG9zdC9jbGllbnQtc2Rrcy1hcy1hLXNlcnZpY2UpLiAKCklmIHlvdSdyZSBpbnRlcmVzdGVkIGluIGdlbmVyYXRpbmcgbWFuYWdlZCBHaXRIdWIgcmVwb3MgZm9yIHlvdXIgU0RLcyBvciBlbnRlcnByaXNlIHN1cHBvcnQsIFtyZWFjaCBvdXQgdG8gdXNdKGh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vcmVxdWVzdC1hY2Nlc3MpIG9yIFtzY2hlZHVsZSBhIGNoYXRdKGh0dHBzOi8vY2FsZW5kbHkuY29tL2QvZHJ3LXQ5OC1ycHEvc2ltb24tc2FnYXItc3BlYWtlYXN5KS4gV2UnZCBsb3ZlIHRvIGhlbHAgeW91IGJ1aWxkIG91dCBBUEkgRGV2RXguCgpJZiB5b3UncmUgaW50ZXJlc3RlZCBpbiBoYXZpbmcgbWFuYWdlZCBHaXRIdWIgcmVwb3MgZ2VuZXJhdGVkIGZvciB5b3VyIFNES3Mgb3IgZW50ZXJwcmlzZSBzdXBwb3J0LCBbcmVhY2ggb3V0IHRvIHVzXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL3JlcXVlc3QtYWNjZXNzKSBvciBbc2NoZWR1bGUgYSBjaGF0XShodHRwczovL2NhbGVuZGx5LmNvbS9kL2Rydy10OTgtcnBxL3NpbW9uLXNhZ2FyLXNwZWFrZWFzeSkuIFdlJ2QgbG92ZSB0byBoZWxwIHlvdSBidWlsZCBvdXQgQVBJIERldkV4LgoKPiBTcGVha2Vhc3kgbWF5IGNhcHR1cmUgbWV0YWRhdGEgb24gdXNhZ2Ugb2YgdGhlIFNwZWFrZWFzeSBDTEkgdG8gYmV0dGVyIHVuZGVyc3RhbmQgT3BlbkFQSSBmZWF0dXJlcyBzbyB0aGF0IHdlIGNhbiBidWlsZCBiZXR0ZXIgY29kZSBnZW5lcmF0b3JzIGFuZCBvdGhlciB0b29scyBvdmVyIHRpbWUuCgojIyBJbnN0YWxsYXRpb24KCiMjIyBIb21lYnJldyAobWFjT1MgYW5kIExpbnV4KQoKYGBgYmFzaApicmV3IGluc3RhbGwgc3BlYWtlYXN5LWFwaS9ob21lYnJldy10YXAvc3BlYWtlYXN5CmBgYAoKIyMjIFNjcmlwdCAobWFjT1MgYW5kIExpbnV4KQoKYGBgYmFzaApjdXJsIC1mc1NMIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zcGVha2Vhc3ktYXBpL3NwZWFrZWFzeS9tYWluL2luc3RhbGwuc2ggfCBzaApgYGAKCiMjIyBDaG9jb2xhdGV5IChXaW5kb3dzKQoKYGBgY21kCmNob2NvIGluc3RhbGwgc3BlYWtlYXN5CmBgYAoKIyMjIE1hbnVhbCBJbnN0YWxsYXRpb24KCkRvd25sb2FkIHRoZSBsYXRlc3QgcmVsZWFzZSBmb3IgeW91ciBwbGF0Zm9ybSBmcm9tIHRoZSBbcmVsZWFzZXMgcGFnZV0oaHR0cHM6Ly9naXRodWIuY29tL3NwZWFrZWFzeS1hcGkvc3BlYWtlYXN5L3JlbGVhc2VzKSwgZXh0cmFjdCwgYW5kIGFkZCB0aGUgYmluYXJ5IHRvIHlvdXIgcGF0aC4KCiMjIyBLZWVwaW5nIFVwIHRvIERhdGUKClRoZSBDTEkgd2lsbCB3YXJuIHlvdSBpZiB5b3UncmUgcnVubmluZyBhbiBvdXRkYXRlZCB2ZXJzaW9uLiBUbyB1cGRhdGUgdGhlIENMSSBydW46CgpgYGBiYXNoCnNwZWFrZWFzeSB1cGRhdGUKYGBgCgpBbHRlcm5hdGl2ZWx5LCBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiB2aWEgeW91ciBwYWNrYWdlIG1hbmFnZXIuCgojIyBHZXR0aW5nIFN0YXJ0ZWQgV2l0aCB0aGUgU3BlYWtlYXN5IENMSQoKT25jZSB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIFNwZWFrZWFzeSBDTEksIHlvdSBjYW4gdmVyaWZ5IGl0J3Mgd29ya2luZyBieSBydW5uaW5nOgoKYGBgYmFzaApzcGVha2Vhc3kgLS1oZWxwCmBgYAoKU2VlIHRoZSBTcGVha2Vhc3kgZG9jcyBmb3IgW2hvdyB0byBnZXQgc3RhcnRlZCB3aXRoIHRoZSBTcGVha2Vhc3kgQ0xJXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3Mvc3BlYWtlYXN5LWNsaS9nZXR0aW5nLXN0YXJ0ZWQpLgoKIyMjIEF1dGhlbnRpY2F0aW5nIHRoZSBTcGVha2Vhc3kgQ0xJCgpUaGUgU3BlYWtlYXN5IENMSSBkZXBlbmRzIG9uIFNwZWFrZWFzeSBQbGF0Zm9ybSBBUElzLiBDb25uZWN0IHlvdXIgU3BlYWtlYXN5IENMSSB3aXRoIHRoZSBTcGVha2Vhc3kgUGxhdGZvcm0gYnkgcnVubmluZzoKCmBgYGJhc2gKc3BlYWtlYXN5IGF1dGggbG9naW4KYGBgCllvdSdsbCBiZSByZWRpcmVjdGVkIHRvIGEgbG9naW4gVVJMIHRvIHNlbGVjdCBhbiBleGlzdGluZyB3b3Jrc3BhY2Ugb3IgY3JlYXRlIGEgbmV3IHdvcmtzcGFjZSBvbiB0aGUgcGxhdGZvcm0uIElmIHlvdXIgbG9jYWwgbmV0d29yayBwcmV2ZW50cyB5b3UgZnJvbSBhY2Nlc3NpbmcgdGhlIGxvZ2luIHBhZ2UgcHJvbXB0ZWQgYnkgdGhlIENMSSwgeW91IGNhbiBsb2cgaW4gbWFudWFsbHkgYXQgW2FwcC5zcGVha2Vhc3kuY29tXShodHRwczovL2FwcC5zcGVha2Vhc3kuY29tKSwgcmV0cmlldmUgYW4gQVBJIGtleSwgYW5kIHBvcHVsYXRlIGEgbG9jYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZWQgYFNQRUFLRUFTWV9BUElfS0VZYCB3aXRoIHRoZSBrZXkuCgo8aW1nIHdpZHRoPSIxMjY4IiBhbHQ9IlNjcmVlbnNob3QgMjAyMy0wMS0yOSBhdCAyMyAxMiAwNSIgc3JjPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS82ODAxNjM1MS8yMTU0MTA5ODMtYjQxZGFiOGMtMTJiMS00NzJjLWEyZmItMzMyNWI4ODFmZjhlLnBuZyI+CgojIyMgU0RLIEdlbmVyYXRpb24KCioqQ29tbWFuZCoqOgoKYGBgYmFzaApzcGVha2Vhc3kgZ2VuZXJhdGUgc2RrIFtmbGFnc10KYGBgCgoqKk9wdGlvbnMqKjoKCmBgYGJhc2gKICAtYiwgLS1iYXNldXJsIHN0cmluZyAgIGJhc2UgVVJMIGZvciB0aGUgQVBJIChvbmx5IHJlcXVpcmVkIGlmIE9wZW5BUEkgc3BlYyBkb2Vzbid0IHNwZWNpZnkgcm9vdCBzZXJ2ZXIgVVJMcykKICAtZCwgLS1kZWJ1ZyAgICAgICAgICAgIGVuYWJsZSB3cml0aW5nIGRlYnVnIGZpbGVzIHdpdGggYnJva2VuIGNvZGUKICAtaCwgLS1oZWxwICAgICAgICAgICAgIGhlbHAgZm9yIFNESwogIC1sLCAtLWxhbmcgc3RyaW5nICAgICAgbGFuZ3VhZ2UgdG8gZ2VuZXJhdGUgU0RLIGZvciwgZGVmYXVsdHMgdG8gZ28gKGF2YWlsYWJsZSBvcHRpb25zOiBnbywgcHl0aG9uLCB0eXBlc2NyaXB0LCBqYXZhKQogIC1vLCAtLW91dCBzdHJpbmcgICAgICAgcGF0aCB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeQogIC1zLCAtLXNjaGVtYSBzdHJpbmcgICAgcGF0aCB0byB0aGUgT3BlbkFQSSBzY2hlbWEKICAteSwgLS1hdXRvLXllcyBzdHJpbmcgIGF1dG8gYW5zd2VyIHllcyB0byBhbGwgcHJvbXB0cwpgYGAKClRha2UgYSBsb29rIGF0IHRoZSBTcGVha2Vhc3kgW2dldHRpbmcgc3RhcnRlZF0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9kb2NzL3NwZWFrZWFzeS1jbGkvZ2V0dGluZy1zdGFydGVkKSBwYWdlIGZvciBpbi1kZXB0aCBpbmZvcm1hdGlvbi4KCiMjIFNjaGVtYSBWYWxpZGF0aW9uCgpOb3RlIHRoYXQgeW91IGRvbid0IG5lZWQgdG8gYmUgbG9nZ2VkIGluIHRvIHRoZSBTcGVha2Vhc3kgcGxhdGZvcm0gdG8gdmFsaWRhdGUgeW91ciBBUEkgc2NoZW1hLgoKKipDb21tYW5kKio6CgpgYGBiYXNoCnNwZWFrZWFzeSB2YWxpZGF0ZSBvcGVuYXBpIFtmbGFnc10KYGBgCgoqKk9wdGlvbnMqKjoKCmBgYGJhc2gKICAtaCwgLS1oZWxwICAgICAgICAgICAgaGVscCBmb3IgT3BlbkFQSQogIC1zLCAtLXNjaGVtYSBzdHJpbmcgICBwYXRoIHRvIHRoZSBPcGVuQVBJIHNjaGVtYQpgYGAKCiMjIE9wZW5BUEkgVXNhZ2UKCk5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBiZSBsb2dnZWQgaW4gdG8gdGhlIFNwZWFrZWFzeSBwbGF0Zm9ybSB0byB2aWV3IE9wZW5BUEkgdXNhZ2UgaW5mb3JtYXRpb24uCgoqKkNvbW1hbmQqKjoKClVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgdG8gcmV0dXJuIHVzYWdlIGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIE9wZW5BUEkgc2NoZW1hIHRvIGEgQ1NWLiBVc2FnZSBpbmZvcm1hdGlvbiBpbmNsdWRlcyBjb3VudHMgb2YgT3BlbkFQSSBmZWF0dXJlcy4KCmBgYGJhc2gKc3BlYWtlYXN5IHVzYWdlIFtmbGFnc10KYGBgCgoqKk9wdGlvbnMqKjoKCmBgYGJhc2gKICAtZCwgLS1kZWJ1ZyAgICAgICAgIGVuYWJsZSB3cml0aW5nIGRlYnVnIGZpbGVzIHdpdGggYnJva2VuIGNvZGUKICAtZiwgLS1maWxlIHN0cmluZyAgIHBhdGggdG8gZmlsZSB0byBnZW5lcmF0ZSB1c2FnZSBpbmZvcm1hdGlvbiBmb3IKICAtaCwgLS1oZWxwICAgICAgICAgIGhlbHAgZm9yIHVzYWdlCiAgLW8sIC0tb3V0IHN0cmluZyAgICBwYXRoIHRvIG91dHB1dCBmaWxlCmBgYAoKIyMgT3BlbkFQSSBTdXBwb3J0CgpUaGUgdGFibGVzIGJlbG93IGdpdmUgYW4gb3ZlcnZpZXcgb2Ygd2hhdCB3ZSBzdXBwb3J0IGZyb20gT3BlbkFQSS4KCiMjIyDinIUgU2VydmVyIENvbmZpZ3VyYXRpb24gCgp8IE5hbWUgfCBOb3RlcyB8IFN3YWdnZXIgTGluayB8U3VwcG9ydCB8CnwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLXwKfCBTZXJ2ZXJVUkwgY29uZmlnIHwgR2xvYmFsIGFuZCBwZXItbWV0aG9kIChpbmNsdWRlIGJhc2UgVVJMIGFuZCB0ZW1wbGF0aW5nKSB8IFthcGktaG9zdC1hbmQtYmFzZS1wYXRoXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2FwaS1ob3N0LWFuZC1iYXNlLXBhdGgvKSB84pyFIHwKfCBBdXRoZW50aWNhdGlvbiBhbmQgc2VjdXJpdHkgfCBHbG9iYWwgYW5kIHBlci1tZXRob2QgfCBbYXV0aGVudGljYXRpb25dKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYXV0aGVudGljYXRpb24vKSB84pyFIHwKfCBNZXRob2QgZ2VuZXJhdGlvbiB8ICB8ICAgfOKchSB8CnwgTW9kZWwgZ2VuZXJhdGlvbiB8ICBSZXF1ZXN0IGFuZCByZXNwb25zZSB8ICAgfOKchSB8CgojIyMg4pqg77iPIFBhdGggUGFyYW1ldGVycyBTZXJpYWxpemF0aW9uIChbcGF0aC1wYXJhbWV0ZXJzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Rlc2NyaWJpbmctcGFyYW1ldGVycy8jcGF0aC1wYXJhbWV0ZXJzKSkKCnwgTmFtZSB8IE5vdGVzIHwgU3dhZ2dlciBMaW5rIHwgU3VwcG9ydCB8CnwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18CnwgRGVmYXVsdCB8IGAoc3R5bGUgPSBzaW1wbGUsIGV4cGxvZGUgPSBmYWxzZSlgIHwgW3NlcmlhbGl6YXRpb24vI3BhdGhdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vc2VyaWFsaXphdGlvbi8jcGF0aC8pIHwg4pyFIHwKfCBCYXNpYyB0eXBlcyB8IHwgfCDinIUgfAp8IFNpbXBsZSBvYmplY3RzIHwgfCB8IOKchSB8CnwgYGxhYmVsYCB8IHwgfCDinYwgfAp8IGBtYXRyaXhgIHwgfCB8IOKdjCB8CgojIyMg4pqg77iPIFF1ZXJ5IFBhcmFtZXRlcnMgU2VyaWFsaXphdGlvbiAoW3F1ZXJ5LXBhcmFtZXRlcnNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGVzY3JpYmluZy1wYXJhbWV0ZXJzLyNxdWVyeS1wYXJhbWV0ZXJzKSAmIFtxdWVyeV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXBhcmFtZXRlcnMvI3F1ZXJ5KSkKCnwgTmFtZSB8IE5vdGVzIHwgU3dhZ2dlciBMaW5rIHwgU3VwcG9ydCB8CnwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18CnwgYGpzb25gIHwgfCB8IOKchSB8CnwgYGZvcm1gIHwgfCB8IOKchSB8CnwgYHNwYWNlRGVsaW1pdGVkYCB8IHwgfCDinIUgfAp8IGBwaXBlRGVsaW1pdGVkYCB8IHwgfCDinIUgfAp8IGBkZWVwT2JqZWN0YCB8IHwgfCDinIUgfAp8IEJhc2ljIHR5cGVzIHwgfCB8IOKchSB8CnwgU2ltcGxlIG9iamVjdHMgfCB8IHwg4pyFIHwKCiMjIyDinIUgIFJlcXVlc3QgSGVhZGVycyAoW2hlYWRlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9zZXJpYWxpemF0aW9uLyNoZWFkZXIpKQoKfCBOYW1lIHwgTm90ZXMgfCBTd2FnZ2VyIExpbmsgfCBTdXBwb3J0IHwKfC0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwKfCBTaW1wbGUgKGV4cGxvZGUgPSB0cnVlKXwgfCB8IOKchSB8CnwgU2ltcGxlIChleHBsb2RlID0gZmFsc2UpfCB8IHwg4pyFIHwKCiMjIyDimqDvuI8gIFJlcXVlc3QgQm9keSBTZXJpYWxpemF0aW9uCgp8IE5hbWUgfCBOb3RlcyB8IFN3YWdnZXIgTGluayB8IFN1cHBvcnQgfAp8LS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IE11bHRpcGFydCBlbmNvZGluZyB8IHwgW211bHRpLXBhcnQgcmVxdWVzdHNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGVzY3JpYmluZy1yZXF1ZXN0LWJvZHkvbXVsdGlwYXJ0LXJlcXVlc3RzLyl8IOKchSB8CnwgQmluYXJ5fCB8IHwg4pyFIHwKfCBGb3JtIGRhdGEgfCB8IHwg4pyFIHwKfCBKU09OIHwgQm90aCBgYXBwbGljYXRpb24vanNvbmAgYW5kIGB0ZXh0L2pzb25gfCB8IOKchSB8CnwgYHgtd3d3LWZvcm0tdXJsZW5jb2RlZGAgfCAgSW5jbHVkaW5nIGVuY29kaW5nLCBidXQgbm90IG5vbi1vYmplY3QgdHlwZXMgfCBbZGVzY3JpYmluZy1yZXF1ZXN0LWJvZHldKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGVzY3JpYmluZy1yZXF1ZXN0LWJvZHkpfCDimqDvuI8gfAp8IFBsYWluIHRleHQgfCB8IHwg4pyFIHwKfCBSYXcgYnl0ZSB8IHwgfCDinIUgfAp8IEhhbmRsaW5nIGByZXF1aXJlZGAgYm9keSB8IHwgfCDinIUgfAp8IFhNTCB8IHwgfCDinYwgfAp8IE90aGVyIG1lZGlhIHR5cGVzfCB8IHwg4p2MIHwKCiMjIyDimqDvuI8gIFJlc3BvbnNlIEJvZHkgRGVzZXJpYWxpemF0aW9uCgp8IE5hbWUgfCBOb3RlcyB8IFN3YWdnZXIgTGluayB8IFN1cHBvcnQgfAp8LS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IFJldHVybiBTdGF0dXNDb2RlIGFuZCBDb250ZW50LVR5cGUgfCB8IHwg4pyFIHwKfCBKU09OIHwgfCB8IOKchSB8CnwgUGxhaW4gdGV4dCB8IHwgfCDinIUgfAp8IFJhdyBieXRlIHwgfCB8IOKchSB8CnwgSlNPTiB8IHwgfCDinIUgfAp8IE90aGVyIG1lZGlhIHR5cGVzfCB8IHwg4p2MIHwKCiMjIyDinIUgTWVkaWEtVHlwZSBQYXR0ZXJucyAoW21lZGlhLXR5cGVzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL21lZGlhLXR5cGVzKSkKCiMjIyDinIUgRGF0YXR5cGVzCgp8IE5hbWUgfCBOb3RlcyB8IFN3YWdnZXIgTGluayB8IFN1cHBvcnQgfAp8LS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IEJhc2ljIHR5cGVzIHwgfCBbZGF0YS1tb2RlbHMvZGF0YS10eXBlc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9kYXRhLXR5cGVzLyl8IOKchSB8CnwgRW51bXMgfCB8IHwg4pyFIHwKfCBOdW1iZXIgZm9ybWF0cyB8IGZsb2F0LCBkb3VibGUsIGludDMyLCBpbnQ2NCB8IHwg4pyFIHwKfCBEYXRlLXRpbWUgfCB8IHwg4pyFIHwKfCBCaW5hcnkgfCB8IHwg4pyFIHwKfCBBcnJheXMgfCB8IHwg4pyFIHwKfCBPYmplY3RzIHwgfCB8IOKchSB8CnwgT3B0aW9uYWwgfCB8IHwg4pyFIHwKfCBNYXBzIHwgfCB8IOKchSB8CnwgQW55IHR5cGUgfCB8IHwg4pyFIHwKfCBPbmVPZi9BbnlPZi9BbGxPZiB8IGFueU9mIHRyZWF0ZWQgYXMgb25lT2YgfFtvbmVvZi1hbnlvZi1hbGxvZi1ub3RdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGF0YS1tb2RlbHMvb25lb2YtYW55b2YtYWxsb2Ytbm90Lyl8IOKchSB8CgojIyMg4pyFICBNaXNjZWxsYW5lb3VzCgp8IE5hbWUgfCBOb3RlcyB8IFN3YWdnZXIgTGluayB8IFN1cHBvcnQgfAp8LS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IEF1eGlsaWFyeSBmaWxlcyogfCB8IHwg4pyFIHwKfCBgeC1zcGVha2Vhc3ktc2VydmVyLWlkYCBnZW5lcmF0aW9uIHwgfCB8IOKchSB8CnwgU25pcHBldCBnZW5lcmF0aW9uIHwgfCB8IOKchSB8CnwgUkVBRE1FIGdlbmVyYXRpb24gfCB8IHwg4pyFIHwKfCBEb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gfCB8IHwg4pyFIHwKClwqIFV0aWxpdHkgY2xhc3NlcyBhbmQgZnVuY3Rpb25zIHRvIGhlbHAgd2l0aCBzZXJpYWxpemF0aW9uIGFuZCBkZXNlcmlhbGl6YXRpb24uCgpcKiBGaWxlcyBuZWVkZWQgZm9yIGNyZWF0aW5nIGEgZnVsbHkgY29tcGlsYWJsZSBwYWNrYWdlIHRoYXQgY2FuIGJlIHB1Ymxpc2hlZCB0byB0aGUgcmVsZXZhbnQgcGFja2FnZSBtYW5hZ2VyIHdpdGhvdXQgZnVydGhlciBjaGFuZ2VzLgoKCiMjIEFkdmFuY2VkIEdlbmVyYXRpb24gRmVhdHVyZXMKCiogW1NESyBHZW4gQ29uZmlndXJhdGlvbl0oaHR0cHM6Ly9zcGVha2Vhc3kuY29tL2RvY3MvdXNpbmctc3BlYWtlYXN5L2NyZWF0ZS1jbGllbnQtc2Rrcy9jdXN0b21pemUtc2Rrcy9pbnRyby8pIC0gTGVhcm4gaG93IHRvIGNvbmZpZ3VyZSB0aGUgU0RLIGdlbmVyYXRvciB0byB5b3VyIG5lZWRzLgoqIFtHZW5lcmF0ZWQgQ29tbWVudHNdKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL3VzaW5nLXNwZWFrZWFzeS9jcmVhdGUtY2xpZW50LXNka3Mvc2RrLWRvY3MvI2NvbW1lbnRzKSAtIExlYXJuIGhvdyBjb21tZW50cyBhcmUgZ2VuZXJhdGVkIGZyb20geW91ciBPcGVuQVBJIGRvY3VtZW50IGFuZCBob3cgdG8gY3VzdG9taXplIHRoZW0uCiogW0NvbmZpZ3VyaW5nIHRoZSBTREsgd2l0aCBTZXJ2ZXIgVVJMc10oaHR0cHM6Ly9zcGVha2Vhc3kuY29tL2RvY3MvdXNpbmctc3BlYWtlYXN5L2NyZWF0ZS1jbGllbnQtc2Rrcy9jdXN0b21pemUtc2Rrcy9zZXJ2ZXJzLykgLSBMZWFybiBob3cgdG8gY29uZmlndXJlIHRoZSBTREsgdG8gdXNlIGRpZmZlcmVudCBzZXJ2ZXIgVVJMcyBmb3IgZGlmZmVyZW50IGVudmlyb25tZW50cy4KKiBbUmVhZG1lIEdlbmVyYXRpb25dKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL3VzaW5nLXNwZWFrZWFzeS9jcmVhdGUtY2xpZW50LXNka3Mvc2RrLWRvY3MvKSAtIExlYXJuIGhvdyB0aGUgU0RLIGdlbmVyYXRlcyBSRUFETUUubWQgZmlsZXMgYW5kIGhvdyB0byBjb250cm9sIHRoaXMuCiogW1VzaW5nIEN1c3RvbSBIVFRQIENsaWVudHMgV2l0aCB0aGUgU0RLXShodHRwczovL3NwZWFrZWFzeS5jb20vZG9jcy91c2luZy1zcGVha2Vhc3kvY3JlYXRlLWNsaWVudC1zZGtzL2N1c3RvbWl6ZS1zZGtzL2N1c3RvbS1odHRwLWNsaWVudC8pIC0gTGVhcm4gaG93IHRvIHByb3ZpZGUgYSBjdXN0b20gSFRUUCBDbGllbnQgdG8gdGhlIFNES3MgYXQgcnVudGltZS4KKiBbQ2FwdHVyaW5nIFRlbGVtZXRyeSBvbiBTREsgVXNhZ2VdKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL3VzaW5nLXNwZWFrZWFzeS9jcmVhdGUtY2xpZW50LXNka3Mvc2RrLXRlbGVtZXRyeS8pIC0gTGVhcm4gaG93IHlvdSBjYW4gY2FwdHVyZSB0ZWxlbWV0cnkgdG8gZ2V0IGFuIHVuZGVyc3RhbmRpbmcgb2YgaG93IHlvdXIgU0RLcyBhcmUgYmVpbmcgdXNlZC4KKiBbQXV0b21hdGVkIFNESyBHZW5lcmF0aW9uXShodHRwczovL3NwZWFrZWFzeS5jb20vZG9jcy91c2luZy1zcGVha2Vhc3kvY3JlYXRlLWNsaWVudC1zZGtzL2dpdGh1Yi1zZXR1cC8pIC0gVXNlIG91ciBHaXRIdWIgQWN0aW9uIGFuZCBXb3JrZmxvd3MgdG8gc2V0IHVwIENJL0NEIGZvciBnZW5lcmF0aW5nIGFuZCBwdWJsaXNoaW5nIHlvdXIgU0RLcy4KKiBbT3ZlcnJpZGUgR2VuZXJhdGVkIE5hbWVzXShodHRwczovL3NwZWFrZWFzeS5jb20vZG9jcy91c2luZy1zcGVha2Vhc3kvY3JlYXRlLWNsaWVudC1zZGtzL2N1c3RvbWl6ZS1zZGtzL21ldGhvZHMvKSAtIFNwZWFrZWFzeSB1c2VzIHlvdXIgT3BlbkFQSSBzY2hlbWEgdG8gaW5mZXIgbmFtZXMgZm9yIGNsYXNzIHR5cGVzLCBtZXRob2RzLCBhbmQgcGFyYW1ldGVycy4gSG93ZXZlciwgeW91IGNhbiBvdmVycmlkZSB0aGVzZSBuYW1lcyB0byB0YWlsb3IgdGhlIGdlbmVyYXRlZCBTREsgdG8geW91ciBwcmVmZXJlbmNlcy4KKiBbQWRkIFJldHJpZXMgdG8gWW91ciBTREtzXShodHRwczovL3NwZWFrZWFzeS5jb20vZG9jcy91c2luZy1zcGVha2Vhc3kvY3JlYXRlLWNsaWVudC1zZGtzL2N1c3RvbWl6ZS1zZGtzL3JldHJpZXMvKSAtIFRoZSBnZW5lcmF0b3Igc3VwcG9ydHMgdGhlIGFiaWxpdHkgdG8gZ2VuZXJhdGUgU0RLcyB0aGF0IHdpbGwgYXV0b21hdGljYWxseSByZXRyeSByZXF1ZXN0cyB0aGF0IGZhaWwgZHVlIHRvIG5ldHdvcmsgZXJyb3JzIG9yIGFueSBjb25maWd1cmVkIEhUVFAgc3RhdHVzIGNvZGUuCgojIyBHZXR0aW5nIFN1cHBvcnQKCklmIHlvdSBuZWVkIHN1cHBvcnQgdXNpbmcgdGhlIFNwZWFrZWFzeSBDTEksIHBsZWFzZSBjb250YWN0IHVzIHZpYSBbZW1haWxdKGluZm9Ac3BlYWtlYXN5LmNvbSksIG9uIFtTbGFja10oaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS90L3NwZWFrZWFzeS1kZXYvc2hhcmVkX2ludml0ZS96dC0xZGYwbGFsazUtSENBbHBjUWlxUHc4dkd1a1FXaGV4dyksIG9yIGZpbGUgYSBHaXRIdWIgaXNzdWUgYW5kIHdlJ2xsIHJlc3BvbmQgQVNBUCEKCjwhLS0gV0FSTklORzogVGhlIGJlbG93IGNvbnRlbnQgaXMgcmVwbGFjZWQgYnkgcnVubmluZyBgZ28gcnVuIGNtZC9kb2NzL21haW4uZ29gIHBsZWFzZSBkb24ndCBtYW51YWxseSBlZGl0IGFueXRoaW5nIGJlbG93IHRoaXMgbGluZSAtLT4KCiMjIyBVc2FnZQoKYGBgYmFzaApzcGVha2Vhc3kgW2ZsYWdzXQpgYGAKCiMjIyMgT3B0aW9ucwoKYGBgYmFzaAogIC1oLCAtLWhlbHAgICBoZWxwIGZvciBzcGVha2Vhc3kKYGBgCgojIyMjIFN1YiBDb21tYW5kcwoKKiBbc3BlYWtlYXN5IGFwaV0oZG9jcy9hcGkvUkVBRE1FLm1kKSAgLSBBY2Nlc3MgdGhlIFNwZWFrZWFzeSBBUEkgdmlhIHRoZSBDTEkKKiBbc3BlYWtlYXN5IGF1dGhdKGRvY3MvYXV0aC9SRUFETUUubWQpICAtIEF1dGhlbnRpY2F0ZSB0aGUgQ0xJCiogW3NwZWFrZWFzeSBnZW5lcmF0ZV0oZG9jcy9nZW5lcmF0ZS9SRUFETUUubWQpICAtIEdlbmVyYXRlIENsaWVudCBTREtzIGFuZCBUZXJyYWZvcm0gUHJvdmlkZXJzCiogW3NwZWFrZWFzeSB2YWxpZGF0ZV0oZG9jcy92YWxpZGF0ZS9SRUFETUUubWQpICAtIFZhbGlkYXRlIE9wZW5BUEkgZG9jdW1lbnRzCgojIyBDTEkgIApgc3BlYWtlYXN5YCAgCgoKVGhlIFNwZWFrZWFzeSBDTEkgdG9vbCBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFNwZWFrZWFzeS5jb20gcGxhdGZvcm0gIAoKIyMjIERldGFpbHMKCiMgU3BlYWtlYXN5IAoKQSBDTEkgdG9vbCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgW1NwZWFrZWFzeSBwbGF0Zm9ybV0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS8pIGFuZCBpdHMgQVBJcy4KClVzZSB0aGlzIENMSSB0bzoKLSBMaW50IGFuZCB2YWxpZGF0ZSBPcGVuQVBJIHNwZWNzCi0gQ3JlYXRlLCBtYW5hZ2UsIGFuZCBydW4gU3BlYWtlYXN5IHdvcmtmbG93cwotIENvbmZpZ3VyZSBHaXRIdWIgQWN0aW9ucyBmb3IgU3BlYWtlYXN5IHdvcmtmbG93cwotIFN1Z2dlc3QgaW1wcm92ZW1lbnRzIHRvIE9wZW5BUEkgc3BlY3MKCkdlbmVyYXRlIGZyb20gT3BlbkFQSSBTcGVjczoKLSBDbGllbnQgYW5kIFNlcnZlciBTREtzIGluIEdPLCBQeXRob24sIFR5cGVTY3JpcHQsIEphdmEsIFBIUCwgQyMsIFN3aWZ0LCBSdWJ5Ci0gUG9zdG1hbiBjb2xsZWN0aW9ucwotIFRlcnJhZm9ybSBwcm92aWRlcnMKCltRdWlja3N0YXJ0IGd1aWRlXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3MvY3JlYXRlLWNsaWVudC1zZGtzKQoKVmlzaXQgW1NwZWFrZWFzeV0oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS8pIGZvciBtb3JlIGluZm9ybWF0aW9uCgoKIyMjIFVzYWdlCgpgYGAKc3BlYWtlYXN5IFtmbGFnc10KYGBgCgojIyMjIE9wdGlvbnMKCmBgYAogIC1oLCAtLWhlbHAgICAgICAgICAgICAgIGhlbHAgZm9yIHNwZWFrZWFzeQogICAgICAtLWxvZ0xldmVsIHN0cmluZyAgIHRoZSBsb2cgbGV2ZWwgKGF2YWlsYWJsZSBvcHRpb25zOiBbaW5mbywgd2FybiwgZXJyb3JdKSAoZGVmYXVsdCAiaW5mbyIpCmBgYAoKIyMjIyBTdWIgQ29tbWFuZHMKCiogW3NwZWFrZWFzeSBhc2tdKGRvY3MvYXNrLm1kKQkgLSBTdGFydHMgYSBjb252ZXJzYXRpb24gd2l0aCBTcGVha2Vhc3kgdHJhaW5lZCBBSQoqIFtzcGVha2Vhc3kgYXV0aF0oZG9jcy9hdXRoL1JFQURNRS5tZCkJIC0gQXV0aGVudGljYXRlIHRoZSBDTEkKKiBbc3BlYWtlYXN5IGJ1bXBdKGRvY3MvYnVtcC5tZCkJIC0gQnVtcHMgdGhlIHZlcnNpb24gb2YgYSBTcGVha2Vhc3kgR2VuZXJhdGlvbiBUYXJnZXQKKiBbc3BlYWtlYXN5IGNsZWFuXShkb2NzL2NsZWFuLm1kKQkgLSBTcGVha2Vhc3kgY2xlYW4gY2FuIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2FjaGUsIHN0YWxlIHRlbXAgZm9sZGVycywgYW5kIG9sZCBDTEkgYmluYXJpZXMuCiogW3NwZWFrZWFzeSBjb25maWd1cmVdKGRvY3MvY29uZmlndXJlL1JFQURNRS5tZCkJIC0gQ29uZmlndXJlIHlvdXIgU3BlYWtlYXN5IFNESyBTZXR1cC4KKiBbc3BlYWtlYXN5IGdlbmVyYXRlXShkb2NzL2dlbmVyYXRlL1JFQURNRS5tZCkJIC0gT25lIG9mZiBHZW5lcmF0aW9ucyBmb3IgY2xpZW50IFNES3MgYW5kIG1vcmUKKiBbc3BlYWtlYXN5IGxpbnRdKGRvY3MvbGludC9SRUFETUUubWQpCSAtIExpbnQvVmFsaWRhdGUgT3BlbkFQSSBkb2N1bWVudHMgYW5kIFNwZWFrZWFzeSBjb25maWd1cmF0aW9uIGZpbGVzCiogW3NwZWFrZWFzeSBtZXJnZV0oZG9jcy9tZXJnZS5tZCkJIC0gTWVyZ2UgbXVsdGlwbGUgT3BlbkFQSSBkb2N1bWVudHMgaW50byBhIHNpbmdsZSBkb2N1bWVudAoqIFtzcGVha2Vhc3kgb3BlbmFwaV0oZG9jcy9vcGVuYXBpL1JFQURNRS5tZCkJIC0gVXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggT3BlbkFQSSBkb2N1bWVudHMKKiBbc3BlYWtlYXN5IG92ZXJsYXldKGRvY3Mvb3ZlcmxheS9SRUFETUUubWQpCSAtIFdvcmsgd2l0aCBPcGVuQVBJIE92ZXJsYXlzCiogW3NwZWFrZWFzeSBxdWlja3N0YXJ0XShkb2NzL3F1aWNrc3RhcnQubWQpCSAtIEd1aWRlZCBzZXR1cCB0byBoZWxwIHlvdSBjcmVhdGUgYSBuZXcgU0RLIGluIG1pbnV0ZXMuCiogW3NwZWFrZWFzeSBydW5dKGRvY3MvcnVuLm1kKQkgLSBSdW4gYWxsIHRoZSB3b3JrZmxvd3MgZGVmaW5lZCBpbiB5b3VyIHdvcmtmbG93LnlhbWwgZmlsZS4gVGhpcyBjYW4gaW5jbHVkZSBtdWx0aXBsZSBTREsgZ2VuZXJhdGlvbnMgZnJvbSBkaWZmZXJlbnQgT3BlbkFQSSBzb3VyY2VzCiogW3NwZWFrZWFzeSBzdGF0dXNdKGRvY3Mvc3RhdHVzLm1kKQkgLSBSZXZpZXcgc3RhdHVzIG9mIGN1cnJlbnQgd29ya3NwYWNlCiogW3NwZWFrZWFzeSBzdWdnZXN0XShkb2NzL3N1Z2dlc3QvUkVBRE1FLm1kKQkgLSBBdXRvbWF0aWNhbGx5IGltcHJvdmUgeW91ciBPcGVuQVBJIGRvY3VtZW50IHdpdGggYW4gTExNCiogW3NwZWFrZWFzeSB0YWddKGRvY3MvdGFnL1JFQURNRS5tZCkJIC0gQWRkIHRhZ3MgdG8gYSBnaXZlbiByZXZpc2lvbiBvZiB5b3VyIEFQSS4gU3BlY2lmaWMgdG8gYSByZWdpc3RyeSBuYW1lc3BhY2UKKiBbc3BlYWtlYXN5IHVwZGF0ZV0oZG9jcy91cGRhdGUubWQpCSAtIFVwZGF0ZSB0aGUgU3BlYWtlYXN5IENMSSB0byB0aGUgbGF0ZXN0IHZlcnNpb24K
- readmeEtag: '"de2d19d055273f1c6ec7d4e8d58fbe1f738cf0ac"'
- readmeLastModified: Thu, 05 Sep 2024 15:33:55 GMT
+ PGJyIC8+PGJyIC8+Cgo8ZGl2IGFsaWduPSJjZW50ZXIiPgoKPGEgaHJlZj0iW1NwZWFrZWFzeV0oaHR0cHM6Ly9zcGVha2Vhc3kuY29tLykiPgogIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kvYXNzZXRzLzY4MDE2MzUxL2U5NTlmODFhLWIyNTAtNDAwMy04YzVjLWE0NWI5NDYzZmM5NSIgYWx0PSJTcGVha2Vhc3kgTG9nbyIgd2lkdGg9IjcwMCI+CjxoMj5FbnRlcnByaXNlLVJlYWR5IERldmVsb3BlciBFeHBlcmllbmNlIGZvciB5b3VyIFJFU1QgQVBJPC9oMj4KPHA+TGF1bmNoIHByb2R1Y3Rpb24tcXVhbGl0eSBTREtzLCBUZXJyYWZvcm0gcHJvdmlkZXJzLCBkb2NzLCBhbmQgbW9yZSBpbiBtaW51dGVzIDpyb2NrZXQ6PC9wPgo8L2E+CjxiciAvPgo8YnIgLz4KCiAgIDxhIGhyZWY9Imh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL2NyZWF0ZS1jbGllbnQtc2Rrcy8iPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1Eb2NzJm1lc3NhZ2U9UXVpY2tzdGFydCZjb2xvcj0wMDAmc3R5bGU9Zm9yLXRoZS1iYWRnZSIgLz48L2E+CiAgIDxhIGhyZWY9Imh0dHBzOi8vam9pbi5zbGFjay5jb20vdC9zcGVha2Vhc3ktZGV2L3NoYXJlZF9pbnZpdGUvenQtMWN3YjNmbHh6LWxTNVN5WnhBc0ZfM05PcTV4YzhDanciPjxpbWcgc3JjPSJodHRwczovL2ltZy5zaGllbGRzLmlvL3N0YXRpYy92MT9sYWJlbD1TbGFjayZtZXNzYWdlPUpvaW4mY29sb3I9NzI4OWRhJnN0eWxlPWZvci10aGUtYmFkZ2UiIC8+PC9hPgoKICA8cGljdHVyZT4KICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kvYXNzZXRzLzY4MDE2MzUxLzE1OWYwNTY1LTBjZmEtNDY4YS04ZmNkLTdjMzU5MGVlYTM1NSI+CiAgPC9waWN0dXJlPgogIDxiciAvPgogIDxiciAvPgoKICAhW2V6Z2lmIGNvbS12aWRlby10by1naWYgKDEpXShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kvYXNzZXRzLzkwMjg5NTAwL2ZmNjk3MmM0LTRlOGEtNGE1Yy1hOTc2LTc1ZTk3Y2M0MmY1YSkKPC9kaXY+CjxiciAvPgoKIyMgV2hhdCBpcyBTcGVha2Vhc3k/CgpbU3BlYWtlYXN5XShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tLykgZ2l2ZXMgeW91ciB1c2VycyB0aGUgZGV2ZWxvcGVyIGV4cGVyaWVuY2UgdGhhdCBtYWtlcyBBUEkgaW50ZWdyYXRpb25zIGVhc3kuCgpEb24ndCBwdXQgdGhlIGJ1cmRlbiBvZiBpbnRlZ3JhdGlvbiBvbiB5b3VyIHVzZXJzLiBUYWtlIHlvdXIgQVBJcyB0byBtYXJrZXQgd2l0aCBiZXN0LWluLWNsYXNzLCBlbnRlcnByaXNlLXJlYWR5IFNES3MsIFRlcnJhZm9ybSBwcm92aWRlcnMsIFNESyBkb2NzLCBhbmQgbW9yZS4KCiFbR3JvdXAgMjddKGh0dHBzOi8vZ2l0aHViLmNvbS9zcGVha2Vhc3ktYXBpL3NwZWFrZWFzeS9hc3NldHMvNjgwMTYzNTEvMDczMzUzMjEtMmFlMS00MWRlLWExYjEtM2JlNzJkZjM4YTkwKQoKIyMjIEtleSBGZWF0dXJlcwoKKiAqKkxMTSBQb3dlcmVkIEFQSSBNYWludGVuYW5jZSoqIC0gS2VlcCB5b3VyIEFQSSBzY2hlbWEgdXAgdG8gZGF0ZSBhbmQgZm9sbG93IGJlc3QgcHJhY3RpY2VzIHdpdGggYXV0b21hdGljIG1haW50ZW5hbmNlIHBvd2VyZWQgYnkgYmVzdC1pbi1jbGFzcyBMTE1zLiBUcnkgaXQgb3V0IG5vdyBpbiB0aGUgQ0xJIHdpdGggYHNwZWFrZWFzeSBzdWdnZXN0YCBvciBlbWJlZCBpdCBpbnRvIHlvdXIgR2l0SHViIHdvcmtmbG93IHVzaW5nIG91ciBbYWN0aW9uXShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zZGstZ2VuZXJhdGlvbi1hY3Rpb24pLiAKKiAqKlByb2R1Y3Rpb24tUXVhbGl0eSBTREtzKiogLSBFcmdvbm9taWMsIHR5cGUtc2FmZSwgYW5kIGZhdWx0LXRvbGVyYW50IGNsaWVudCBsaWJyYXJpZXMgYnVpbHQgZm9yIHByb2R1Y3Rpb24gdXNlIGNhc2VzIHdpdGggaWRpb21hdGljcyBvcHRpbWl6ZWQgZm9yIGVhY2ggbGFuZ3VhZ2UuIEVtYmVkIGFkZGl0aW9uYWwgY2FwYWJpbGl0aWVzIGxpa2UgYXV0aCwgcmV0cmllcywgcGFnaW5hdGlvbiwgYW5kIG1vcmUgdXNpbmcgc3BlYy1iYXNlZCBleHRlbnNpb25zLiAKKiAqKlByb2R1Y3Rpb24tUXVhbGl0eSBUZXJyYWZvcm0gUHJvdmlkZXJzKiogLSBFeHBvc2UgeW91ciBBUEkgZm9yIGluZnJhc3RydWN0dXJlLWFzLWNvZGUgdXNlIGNhc2VzIHdpdGggZnVsbHkgZmVhdHVyZWQgVGVycmFmb3JtIHByb3ZpZGVycy4gCiogKipTREsgRG9jcyoqIC0gTWFya2Rvd24gdXNhZ2Ugc25pcHBldHMgZm9yIGV2ZXJ5IHNpbmdsZSBvcGVyYXRpb24gYW5kIG1vZGVsIGluIHlvdXIgU0RLLiBFeHBvcnQgdXNhZ2Ugc25pcHBldHMgYW5kIGhvc3QgdGhlbSBvbiBhIGJyYW5kZWQgU0RLIGFuZCBBUEkgZG9jcyBzaXRlIHVzaW5nIG91ciBEb2N1c2F1cnVzIFJlYWN0IHBsdWdpbi4gCiogKipEaXN0cmlidXRpb24gdG8gUGFja2FnZSBNYW5hZ2VycyoqIC0gQSBjb21wbGV0ZSBwaXBlbGluZSBmb3IgZGlzdHJpYnV0aW5nIHlvdXIgbGlicmFyaWVzIHRvIHBvcHVsYXIgcGFja2FnZSBtYW5hZ2VycyBsaWtlIG5wbSwgUHlQSSwgTWF2ZW4sIGFuZCBUZXJyYWZvcm0gUmVnaXN0cnkuIAoqICoqU3VwcG9ydHMgT3BlbiBTdGFuZGFyZHMqKiAtIFNwZWFrZWFzeSB3b3JrcyB3aXRoIHlvdXIgZXhpc3RpbmcgQVBJIGZyYW1ld29yayBieSBzdXBwb3J0aW5nIE9wZW5BUEkzLlggYW5kIG90aGVyIG9wZW4gc3RhbmRhcmRzLiBQbHVnIGFuZCBwbGF5IG5vdCByaXAgYW5kIHJlcGxhY2UuIAoKRm9yIHVwY29taW5nIGZlYXR1cmVzIGFuZCBidWcgZml4ZXMsIGNoZWNrIG91dCBvdXIgW3B1YmxpYyByb2FkbWFwXShodHRwczovL2dpdGh1Yi5jb20vb3Jncy9zcGVha2Vhc3ktYXBpL3Byb2plY3RzLzYvdmlld3MvMSkuCgojIyBXaGF0IGlzIHRoZSBTcGVha2Vhc3kgQ0xJPwoKVGhlIFtTcGVha2Vhc3kgQ0xJXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3Mvc3BlYWtlYXN5LWNsaS9nZXR0aW5nLXN0YXJ0ZWQpIGlzIGEgdG9vbCBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgU3BlYWtlYXN5IHBsYXRmb3JtIHRoYXQgYnJpbmdzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFNwZWFrZWFzeSBpbnRvIHlvdXIgZGV2ZWxvcG1lbnQgd29ya2Zsb3cuIAoKWW91IGNhbiBydW4gdGhlIFNwZWFrZWFzeSBDTEkgbG9jYWxseSBvciBpbiB5b3VyIENJL0NEIHBpcGVsaW5lIHRvIHZhbGlkYXRlIHlvdXIgQVBJIHNwZWNzLCBnZW5lcmF0ZSBTREtzLCBhbmQgbW9yZS4gTG9va2luZyB0byBlbWJlZCB0aGlzIGludG8geW91ciBHaXRIdWIgQ0kvQ0Q/IENoZWNrIG91dCBbdGhlc2UgZG9jc10oaHR0cHM6Ly9zcGVha2Vhc3kuY29tL2RvY3MvY3JlYXRlLWNsaWVudC1zZGtzL2dpdGh1Yi1zZXR1cC8pIGluc3RlYWQuIAoKSGVyZSBhcmUgYSBmZXcga2V5IGZ1bmN0aW9ucyBvZiB0aGUgQ0xJOgoKKiBgcXVpY2tzdGFydGAgLSBDcmVhdGUgYW4gaWRpb21hdGljIGNsaWVudCBTREsgb3IgdGFyZ2V0LCBzdWNoIGFzIGEgVGVycmFmb3JtIFByb3ZpZGVyLCBmcm9tIHlvdXIgQVBJIHNwZWNzLgoqIGBydW5gIC0gUmVnZW5lcmF0ZSBleGlzdGluZyBTREsvdGFyZ2V0IGZyb20geW91ciBBUEkgc3BlY3MuCiogYHZhbGlkYXRlYCAtIFZhbGlkYXRlIHRoZSBjb3JyZWN0bmVzcyBvZiB5b3VyIEFQSSBzcGVjcy4gVGhlIENMSSBoYXMgYSBidWlsdC1pbiBjb21tYW5kIHRvIHZhbGlkYXRlIHlvdXIgc3BlYyBmb3IgU0RLIHJlYWRpbmVzcyBhbmQgcG9zdCBoZWxwZnVsIGVycm9yIG1lc3NhZ2VzLgoqIGBzdWdnZXN0YCAtIFVzZSBhbiBMTE0gdG8gYXV0b2NvcnJlY3QgeW91ciBzcGVjIHZhbGlkYXRpb24gZmFpbHVyZXMuIAoqIGBtZXJnZWAgLSBXb3JrIHdpdGggeW91ciBleGlzdGluZyBkb2N1bWVudGF0aW9uIHdvcmtmbG93cyBieSBtZXJnaW5nIHlvdXIgQVBJIHNwZWNzIGludG8gYSBzaW5nbGUgc3BlYy4gCiogYGF1dGhgIC0gQXV0aGVudGljYXRlIHdpdGggdGhlIHBsYXRmb3JtIGFuZCBtYW5hZ2UgQVBJIGtleXMuIAoqIGBzdGF0dXNgIC0gUmV2aWV3IGFsbCBTREsvdGFyZ2V0cyBpbiBjdXJyZW50IHdvcmtzcGFjZS4KCkZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgY29tbWFuZHMgY2hlY2sgb3V0IG91ciBbcmVmZXJlbmNlXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3Mvc3BlYWtlYXN5LWNsaS9nZXR0aW5nLXN0YXJ0ZWQpIG9yIHR5cGUgYHNwZWFrZWFzeWAgYW5kIG91ciBpbnRlcmFjdGl2ZSBtb2RlIHdpbGwgdGFrZSB5b3UgdGhyb3VnaCB0aGUgYXZhaWxhYmxlIGZ1bmN0aW9ucy4gCgojIyBEZXNpZ24gQ2hvaWNlcwoKRWFjaCBTREsgZ2VuZXJhdGVkIGJ5IFNwZWFrZWFzeSBpcyBpZGlvbWF0aWMgdG8gdGhlIGxhbmd1YWdlIGl0J3MgZ2VuZXJhdGVkIGZvciB3aGlsZSBzaGFyaW5nIGNvbW1vbiBwYXR0ZXJucyB3aXRoIFNES3MgZm9yIG90aGVyIGxhbmd1YWdlcyB0byBhbGxvdyBmb3Igc3dpdGNoaW5nIGJldHdlZW4gdGhlbS4gVXNpbmcgc2hhcmVkIHBhdHRlcm5zIGFsc28gaGVscHMgdG8ga2VlcCB0aGUgU3BlYWtlYXN5IGdlbmVyYXRpb24gZW5naW5lIGVmZmljaWVudCB3aGlsZSBzdXBwb3J0aW5nIG1hbnkgbGFuZ3VhZ2VzLgoKSGVyZSBhcmUgc29tZSBvZiB0aGUgU3BlYWtlYXN5IGRlc2lnbiBkZWNpc2lvbnM6CgoqIEVhY2ggU0RLIGdlbmVyYWxseSBpbXBsZW1lbnRzIGEgYmFzZSBTREsgY2xhc3MgdGhhdCBjb250YWlucyB0aGUgbWV0aG9kcyBmb3IgZWFjaCBvZiB0aGUgQVBJIGVuZHBvaW50cyBkZWZpbmVkIGluIHRoZSBPcGVuQVBJIGRvY3VtZW50LgoqIFdoZXJlIHBvc3NpYmxlLCBTcGVha2Vhc3kgZ2VuZXJhdGVzIGZ1bGx5IHR5cGVkIG1vZGVscyBmcm9tIHRoZSBPcGVuQVBJIGRvY3VtZW50LCBzZXBhcmF0aW5nIG1vZGVscyBkZWZpbmVkIGFzIGNvbXBvbmVudHMgaW4gdGhlIGRvY3MgZnJvbSBtb2RlbHMgZGVmaW5lZCBpbiBsaW5lIHdpdGggb3BlcmF0aW9ucy4KKiBCYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBpbiB0aGUgT3BlbkFQSSBkb2N1bWVudCwgU3BlYWtlYXN5IGFubm90YXRlcyB0eXBlcyB1c2luZyByZWZsZWN0aW9uIG1ldGFkYXRhIHRvIGRldGVybWluZSBob3cgdG8gc2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSB0aGVtLgoqIFRvIGdldCBTREtzIHRvIHlvdXIgZW5kIHVzZXJzIHF1aWNrbHksIFNwZWFrZWFzeSBnZW5lcmF0ZXMgZnVsbCBwYWNrYWdlcyBmb3IgZWFjaCBsYW5ndWFnZSB0aGF0IHlvdSBzaG91bGQgYmUgYWJsZSB0byBwdWJsaXNoIHRvIGEgcGFja2FnZSByZWdpc3RyeSB3aXRoIGxpdHRsZSBhZGRpdGlvbmFsIHdvcmsuIElmIHlvdSdyZSBpbnRlcmVzdGVkIGluIGhhdmluZyBhIG1hbmFnZWQgcGlwZWxpbmUgdG8geW91ciBwYWNrYWdlIG1hbmFnZXIsIGNoZWNrIG91dCB0aGUgU3BlYWtlYXN5IEdlbmVyYXRpb24gR2l0SHViIEFjdGlvbi4KCldhbnQgdG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgU3BlYWtlYXN5IG1ldGhvZG9sb2d5PyBUYWtlIGEgbG9vayBhdCBbaG93IHRoZSBTcGVha2Vhc3kgU0RLIGdlbmVyYXRvciBjb21wYXJlcyB0byBPU1Mgb3B0aW9uc10oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9wb3N0L2NsaWVudC1zZGtzLWFzLWEtc2VydmljZSkuIAoKSWYgeW91J3JlIGludGVyZXN0ZWQgaW4gZ2VuZXJhdGluZyBtYW5hZ2VkIEdpdEh1YiByZXBvcyBmb3IgeW91ciBTREtzIG9yIGVudGVycHJpc2Ugc3VwcG9ydCwgW3JlYWNoIG91dCB0byB1c10oaHR0cHM6Ly93d3cuc3BlYWtlYXN5LmNvbS9yZXF1ZXN0LWFjY2Vzcykgb3IgW3NjaGVkdWxlIGEgY2hhdF0oaHR0cHM6Ly9jYWxlbmRseS5jb20vZC9kcnctdDk4LXJwcS9zaW1vbi1zYWdhci1zcGVha2Vhc3kpLiBXZSdkIGxvdmUgdG8gaGVscCB5b3UgYnVpbGQgb3V0IEFQSSBEZXZFeC4KCklmIHlvdSdyZSBpbnRlcmVzdGVkIGluIGhhdmluZyBtYW5hZ2VkIEdpdEh1YiByZXBvcyBnZW5lcmF0ZWQgZm9yIHlvdXIgU0RLcyBvciBlbnRlcnByaXNlIHN1cHBvcnQsIFtyZWFjaCBvdXQgdG8gdXNdKGh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vcmVxdWVzdC1hY2Nlc3MpIG9yIFtzY2hlZHVsZSBhIGNoYXRdKGh0dHBzOi8vY2FsZW5kbHkuY29tL2QvZHJ3LXQ5OC1ycHEvc2ltb24tc2FnYXItc3BlYWtlYXN5KS4gV2UnZCBsb3ZlIHRvIGhlbHAgeW91IGJ1aWxkIG91dCBBUEkgRGV2RXguCgo+IFNwZWFrZWFzeSBtYXkgY2FwdHVyZSBtZXRhZGF0YSBvbiB1c2FnZSBvZiB0aGUgU3BlYWtlYXN5IENMSSB0byBiZXR0ZXIgdW5kZXJzdGFuZCBPcGVuQVBJIGZlYXR1cmVzIHNvIHRoYXQgd2UgY2FuIGJ1aWxkIGJldHRlciBjb2RlIGdlbmVyYXRvcnMgYW5kIG90aGVyIHRvb2xzIG92ZXIgdGltZS4KCiMjIEluc3RhbGxhdGlvbgoKIyMjIEhvbWVicmV3IChtYWNPUyBhbmQgTGludXgpCgpgYGBiYXNoCmJyZXcgaW5zdGFsbCBzcGVha2Vhc3ktYXBpL2hvbWVicmV3LXRhcC9zcGVha2Vhc3kKYGBgCgojIyMgU2NyaXB0IChtYWNPUyBhbmQgTGludXgpCgpgYGBiYXNoCmN1cmwgLWZzU0wgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NwZWFrZWFzeS1hcGkvc3BlYWtlYXN5L21haW4vaW5zdGFsbC5zaCB8IHNoCmBgYAoKIyMjIENob2NvbGF0ZXkgKFdpbmRvd3MpCgpgYGBjbWQKY2hvY28gaW5zdGFsbCBzcGVha2Vhc3kKYGBgCgojIyMgTWFudWFsIEluc3RhbGxhdGlvbgoKRG93bmxvYWQgdGhlIGxhdGVzdCByZWxlYXNlIGZvciB5b3VyIHBsYXRmb3JtIGZyb20gdGhlIFtyZWxlYXNlcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vc3BlYWtlYXN5LWFwaS9zcGVha2Vhc3kvcmVsZWFzZXMpLCBleHRyYWN0LCBhbmQgYWRkIHRoZSBiaW5hcnkgdG8geW91ciBwYXRoLgoKIyMjIEtlZXBpbmcgVXAgdG8gRGF0ZQoKVGhlIENMSSB3aWxsIHdhcm4geW91IGlmIHlvdSdyZSBydW5uaW5nIGFuIG91dGRhdGVkIHZlcnNpb24uIFRvIHVwZGF0ZSB0aGUgQ0xJIHJ1bjoKCmBgYGJhc2gKc3BlYWtlYXN5IHVwZGF0ZQpgYGAKCkFsdGVybmF0aXZlbHksIGluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIHZpYSB5b3VyIHBhY2thZ2UgbWFuYWdlci4KCiMjIEdldHRpbmcgU3RhcnRlZCBXaXRoIHRoZSBTcGVha2Vhc3kgQ0xJCgpPbmNlIHlvdSBoYXZlIGluc3RhbGxlZCB0aGUgU3BlYWtlYXN5IENMSSwgeW91IGNhbiB2ZXJpZnkgaXQncyB3b3JraW5nIGJ5IHJ1bm5pbmc6CgpgYGBiYXNoCnNwZWFrZWFzeSAtLWhlbHAKYGBgCgpTZWUgdGhlIFNwZWFrZWFzeSBkb2NzIGZvciBbaG93IHRvIGdldCBzdGFydGVkIHdpdGggdGhlIFNwZWFrZWFzeSBDTEldKGh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vZG9jcy9zcGVha2Vhc3ktY2xpL2dldHRpbmctc3RhcnRlZCkuCgojIyMgQXV0aGVudGljYXRpbmcgdGhlIFNwZWFrZWFzeSBDTEkKClRoZSBTcGVha2Vhc3kgQ0xJIGRlcGVuZHMgb24gU3BlYWtlYXN5IFBsYXRmb3JtIEFQSXMuIENvbm5lY3QgeW91ciBTcGVha2Vhc3kgQ0xJIHdpdGggdGhlIFNwZWFrZWFzeSBQbGF0Zm9ybSBieSBydW5uaW5nOgoKYGBgYmFzaApzcGVha2Vhc3kgYXV0aCBsb2dpbgpgYGAKWW91J2xsIGJlIHJlZGlyZWN0ZWQgdG8gYSBsb2dpbiBVUkwgdG8gc2VsZWN0IGFuIGV4aXN0aW5nIHdvcmtzcGFjZSBvciBjcmVhdGUgYSBuZXcgd29ya3NwYWNlIG9uIHRoZSBwbGF0Zm9ybS4gSWYgeW91ciBsb2NhbCBuZXR3b3JrIHByZXZlbnRzIHlvdSBmcm9tIGFjY2Vzc2luZyB0aGUgbG9naW4gcGFnZSBwcm9tcHRlZCBieSB0aGUgQ0xJLCB5b3UgY2FuIGxvZyBpbiBtYW51YWxseSBhdCBbYXBwLnNwZWFrZWFzeS5jb21dKGh0dHBzOi8vYXBwLnNwZWFrZWFzeS5jb20pLCByZXRyaWV2ZSBhbiBBUEkga2V5LCBhbmQgcG9wdWxhdGUgYSBsb2NhbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lZCBgU1BFQUtFQVNZX0FQSV9LRVlgIHdpdGggdGhlIGtleS4KCjxpbWcgd2lkdGg9IjEyNjgiIGFsdD0iU2NyZWVuc2hvdCAyMDIzLTAxLTI5IGF0IDIzIDEyIDA1IiBzcmM9Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzY4MDE2MzUxLzIxNTQxMDk4My1iNDFkYWI4Yy0xMmIxLTQ3MmMtYTJmYi0zMzI1Yjg4MWZmOGUucG5nIj4KCiMjIyBTREsgR2VuZXJhdGlvbgoKKipDb21tYW5kKio6CgpgYGBiYXNoCnNwZWFrZWFzeSBnZW5lcmF0ZSBzZGsgW2ZsYWdzXQpgYGAKCioqT3B0aW9ucyoqOgoKYGBgYmFzaAogIC1iLCAtLWJhc2V1cmwgc3RyaW5nICAgYmFzZSBVUkwgZm9yIHRoZSBBUEkgKG9ubHkgcmVxdWlyZWQgaWYgT3BlbkFQSSBzcGVjIGRvZXNuJ3Qgc3BlY2lmeSByb290IHNlcnZlciBVUkxzKQogIC1kLCAtLWRlYnVnICAgICAgICAgICAgZW5hYmxlIHdyaXRpbmcgZGVidWcgZmlsZXMgd2l0aCBicm9rZW4gY29kZQogIC1oLCAtLWhlbHAgICAgICAgICAgICAgaGVscCBmb3IgU0RLCiAgLWwsIC0tbGFuZyBzdHJpbmcgICAgICBsYW5ndWFnZSB0byBnZW5lcmF0ZSBTREsgZm9yLCBkZWZhdWx0cyB0byBnbyAoYXZhaWxhYmxlIG9wdGlvbnM6IGdvLCBweXRob24sIHR5cGVzY3JpcHQsIGphdmEpCiAgLW8sIC0tb3V0IHN0cmluZyAgICAgICBwYXRoIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5CiAgLXMsIC0tc2NoZW1hIHN0cmluZyAgICBwYXRoIHRvIHRoZSBPcGVuQVBJIHNjaGVtYQogIC15LCAtLWF1dG8teWVzIHN0cmluZyAgYXV0byBhbnN3ZXIgeWVzIHRvIGFsbCBwcm9tcHRzCmBgYAoKVGFrZSBhIGxvb2sgYXQgdGhlIFNwZWFrZWFzeSBbZ2V0dGluZyBzdGFydGVkXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tL2RvY3Mvc3BlYWtlYXN5LWNsaS9nZXR0aW5nLXN0YXJ0ZWQpIHBhZ2UgZm9yIGluLWRlcHRoIGluZm9ybWF0aW9uLgoKIyMgU2NoZW1hIFZhbGlkYXRpb24KCk5vdGUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBiZSBsb2dnZWQgaW4gdG8gdGhlIFNwZWFrZWFzeSBwbGF0Zm9ybSB0byB2YWxpZGF0ZSB5b3VyIEFQSSBzY2hlbWEuCgoqKkNvbW1hbmQqKjoKCmBgYGJhc2gKc3BlYWtlYXN5IHZhbGlkYXRlIG9wZW5hcGkgW2ZsYWdzXQpgYGAKCioqT3B0aW9ucyoqOgoKYGBgYmFzaAogIC1oLCAtLWhlbHAgICAgICAgICAgICBoZWxwIGZvciBPcGVuQVBJCiAgLXMsIC0tc2NoZW1hIHN0cmluZyAgIHBhdGggdG8gdGhlIE9wZW5BUEkgc2NoZW1hCmBgYAoKIyMgT3BlbkFQSSBVc2FnZQoKTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIGJlIGxvZ2dlZCBpbiB0byB0aGUgU3BlYWtlYXN5IHBsYXRmb3JtIHRvIHZpZXcgT3BlbkFQSSB1c2FnZSBpbmZvcm1hdGlvbi4KCioqQ29tbWFuZCoqOgoKVXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byByZXR1cm4gdXNhZ2UgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gT3BlbkFQSSBzY2hlbWEgdG8gYSBDU1YuIFVzYWdlIGluZm9ybWF0aW9uIGluY2x1ZGVzIGNvdW50cyBvZiBPcGVuQVBJIGZlYXR1cmVzLgoKYGBgYmFzaApzcGVha2Vhc3kgdXNhZ2UgW2ZsYWdzXQpgYGAKCioqT3B0aW9ucyoqOgoKYGBgYmFzaAogIC1kLCAtLWRlYnVnICAgICAgICAgZW5hYmxlIHdyaXRpbmcgZGVidWcgZmlsZXMgd2l0aCBicm9rZW4gY29kZQogIC1mLCAtLWZpbGUgc3RyaW5nICAgcGF0aCB0byBmaWxlIHRvIGdlbmVyYXRlIHVzYWdlIGluZm9ybWF0aW9uIGZvcgogIC1oLCAtLWhlbHAgICAgICAgICAgaGVscCBmb3IgdXNhZ2UKICAtbywgLS1vdXQgc3RyaW5nICAgIHBhdGggdG8gb3V0cHV0IGZpbGUKYGBgCgojIyBPcGVuQVBJIFN1cHBvcnQKClRoZSB0YWJsZXMgYmVsb3cgZ2l2ZSBhbiBvdmVydmlldyBvZiB3aGF0IHdlIHN1cHBvcnQgZnJvbSBPcGVuQVBJLgoKIyMjIOKchSBTZXJ2ZXIgQ29uZmlndXJhdGlvbiAKCnwgTmFtZSB8IE5vdGVzIHwgU3dhZ2dlciBMaW5rIHxTdXBwb3J0IHwKfC0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tfAp8IFNlcnZlclVSTCBjb25maWcgfCBHbG9iYWwgYW5kIHBlci1tZXRob2QgKGluY2x1ZGUgYmFzZSBVUkwgYW5kIHRlbXBsYXRpbmcpIHwgW2FwaS1ob3N0LWFuZC1iYXNlLXBhdGhdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vYXBpLWhvc3QtYW5kLWJhc2UtcGF0aC8pIHzinIUgfAp8IEF1dGhlbnRpY2F0aW9uIGFuZCBzZWN1cml0eSB8IEdsb2JhbCBhbmQgcGVyLW1ldGhvZCB8IFthdXRoZW50aWNhdGlvbl0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9hdXRoZW50aWNhdGlvbi8pIHzinIUgfAp8IE1ldGhvZCBnZW5lcmF0aW9uIHwgIHwgICB84pyFIHwKfCBNb2RlbCBnZW5lcmF0aW9uIHwgIFJlcXVlc3QgYW5kIHJlc3BvbnNlIHwgICB84pyFIHwKCiMjIyDimqDvuI8gUGF0aCBQYXJhbWV0ZXJzIFNlcmlhbGl6YXRpb24gKFtwYXRoLXBhcmFtZXRlcnNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vZGVzY3JpYmluZy1wYXJhbWV0ZXJzLyNwYXRoLXBhcmFtZXRlcnMpKQoKfCBOYW1lIHwgTm90ZXMgfCBTd2FnZ2VyIExpbmsgfCBTdXBwb3J0IHwKfC0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwKfCBEZWZhdWx0IHwgYChzdHlsZSA9IHNpbXBsZSwgZXhwbG9kZSA9IGZhbHNlKWAgfCBbc2VyaWFsaXphdGlvbi8jcGF0aF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9zZXJpYWxpemF0aW9uLyNwYXRoLykgfCDinIUgfAp8IEJhc2ljIHR5cGVzIHwgfCB8IOKchSB8CnwgU2ltcGxlIG9iamVjdHMgfCB8IHwg4pyFIHwKfCBgbGFiZWxgIHwgfCB8IOKdjCB8CnwgYG1hdHJpeGAgfCB8IHwg4p2MIHwKCiMjIyDimqDvuI8gUXVlcnkgUGFyYW1ldGVycyBTZXJpYWxpemF0aW9uIChbcXVlcnktcGFyYW1ldGVyc10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXBhcmFtZXRlcnMvI3F1ZXJ5LXBhcmFtZXRlcnMpICYgW3F1ZXJ5XShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2Rlc2NyaWJpbmctcGFyYW1ldGVycy8jcXVlcnkpKQoKfCBOYW1lIHwgTm90ZXMgfCBTd2FnZ2VyIExpbmsgfCBTdXBwb3J0IHwKfC0tLS0tLXwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwKfCBganNvbmAgfCB8IHwg4pyFIHwKfCBgZm9ybWAgfCB8IHwg4pyFIHwKfCBgc3BhY2VEZWxpbWl0ZWRgIHwgfCB8IOKchSB8CnwgYHBpcGVEZWxpbWl0ZWRgIHwgfCB8IOKchSB8CnwgYGRlZXBPYmplY3RgIHwgfCB8IOKchSB8CnwgQmFzaWMgdHlwZXMgfCB8IHwg4pyFIHwKfCBTaW1wbGUgb2JqZWN0cyB8IHwgfCDinIUgfAoKIyMjIOKchSAgUmVxdWVzdCBIZWFkZXJzIChbaGVhZGVyXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL3NlcmlhbGl6YXRpb24vI2hlYWRlcikpCgp8IE5hbWUgfCBOb3RlcyB8IFN3YWdnZXIgTGluayB8IFN1cHBvcnQgfAp8LS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfAp8IFNpbXBsZSAoZXhwbG9kZSA9IHRydWUpfCB8IHwg4pyFIHwKfCBTaW1wbGUgKGV4cGxvZGUgPSBmYWxzZSl8IHwgfCDinIUgfAoKIyMjIOKaoO+4jyAgUmVxdWVzdCBCb2R5IFNlcmlhbGl6YXRpb24KCnwgTmFtZSB8IE5vdGVzIHwgU3dhZ2dlciBMaW5rIHwgU3VwcG9ydCB8CnwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18CnwgTXVsdGlwYXJ0IGVuY29kaW5nIHwgfCBbbXVsdGktcGFydCByZXF1ZXN0c10oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXJlcXVlc3QtYm9keS9tdWx0aXBhcnQtcmVxdWVzdHMvKXwg4pyFIHwKfCBCaW5hcnl8IHwgfCDinIUgfAp8IEZvcm0gZGF0YSB8IHwgfCDinIUgfAp8IEpTT04gfCBCb3RoIGBhcHBsaWNhdGlvbi9qc29uYCBhbmQgYHRleHQvanNvbmB8IHwg4pyFIHwKfCBgeC13d3ctZm9ybS11cmxlbmNvZGVkYCB8ICBJbmNsdWRpbmcgZW5jb2RpbmcsIGJ1dCBub3Qgbm9uLW9iamVjdCB0eXBlcyB8IFtkZXNjcmliaW5nLXJlcXVlc3QtYm9keV0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kZXNjcmliaW5nLXJlcXVlc3QtYm9keSl8IOKaoO+4jyB8CnwgUGxhaW4gdGV4dCB8IHwgfCDinIUgfAp8IFJhdyBieXRlIHwgfCB8IOKchSB8CnwgSGFuZGxpbmcgYHJlcXVpcmVkYCBib2R5IHwgfCB8IOKchSB8CnwgWE1MIHwgfCB8IOKdjCB8CnwgT3RoZXIgbWVkaWEgdHlwZXN8IHwgfCDinYwgfAoKIyMjIOKaoO+4jyAgUmVzcG9uc2UgQm9keSBEZXNlcmlhbGl6YXRpb24KCnwgTmFtZSB8IE5vdGVzIHwgU3dhZ2dlciBMaW5rIHwgU3VwcG9ydCB8CnwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18CnwgUmV0dXJuIFN0YXR1c0NvZGUgYW5kIENvbnRlbnQtVHlwZSB8IHwgfCDinIUgfAp8IEpTT04gfCB8IHwg4pyFIHwKfCBQbGFpbiB0ZXh0IHwgfCB8IOKchSB8CnwgUmF3IGJ5dGUgfCB8IHwg4pyFIHwKfCBKU09OIHwgfCB8IOKchSB8CnwgT3RoZXIgbWVkaWEgdHlwZXN8IHwgfCDinYwgfAoKIyMjIOKchSBNZWRpYS1UeXBlIFBhdHRlcm5zIChbbWVkaWEtdHlwZXNdKGh0dHBzOi8vc3dhZ2dlci5pby9kb2NzL3NwZWNpZmljYXRpb24vbWVkaWEtdHlwZXMpKQoKIyMjIOKchSBEYXRhdHlwZXMKCnwgTmFtZSB8IE5vdGVzIHwgU3dhZ2dlciBMaW5rIHwgU3VwcG9ydCB8CnwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18CnwgQmFzaWMgdHlwZXMgfCB8IFtkYXRhLW1vZGVscy9kYXRhLXR5cGVzXShodHRwczovL3N3YWdnZXIuaW8vZG9jcy9zcGVjaWZpY2F0aW9uL2RhdGEtbW9kZWxzL2RhdGEtdHlwZXMvKXwg4pyFIHwKfCBFbnVtcyB8IHwgfCDinIUgfAp8IE51bWJlciBmb3JtYXRzIHwgZmxvYXQsIGRvdWJsZSwgaW50MzIsIGludDY0IHwgfCDinIUgfAp8IERhdGUtdGltZSB8IHwgfCDinIUgfAp8IEJpbmFyeSB8IHwgfCDinIUgfAp8IEFycmF5cyB8IHwgfCDinIUgfAp8IE9iamVjdHMgfCB8IHwg4pyFIHwKfCBPcHRpb25hbCB8IHwgfCDinIUgfAp8IE1hcHMgfCB8IHwg4pyFIHwKfCBBbnkgdHlwZSB8IHwgfCDinIUgfAp8IE9uZU9mL0FueU9mL0FsbE9mIHwgYW55T2YgdHJlYXRlZCBhcyBvbmVPZiB8W29uZW9mLWFueW9mLWFsbG9mLW5vdF0oaHR0cHM6Ly9zd2FnZ2VyLmlvL2RvY3Mvc3BlY2lmaWNhdGlvbi9kYXRhLW1vZGVscy9vbmVvZi1hbnlvZi1hbGxvZi1ub3QvKXwg4pyFIHwKCiMjIyDinIUgIE1pc2NlbGxhbmVvdXMKCnwgTmFtZSB8IE5vdGVzIHwgU3dhZ2dlciBMaW5rIHwgU3VwcG9ydCB8CnwtLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18CnwgQXV4aWxpYXJ5IGZpbGVzKiB8IHwgfCDinIUgfAp8IGB4LXNwZWFrZWFzeS1zZXJ2ZXItaWRgIGdlbmVyYXRpb24gfCB8IHwg4pyFIHwKfCBTbmlwcGV0IGdlbmVyYXRpb24gfCB8IHwg4pyFIHwKfCBSRUFETUUgZ2VuZXJhdGlvbiB8IHwgfCDinIUgfAp8IERvY3VtZW50YXRpb24gZ2VuZXJhdGlvbiB8IHwgfCDinIUgfAoKXCogVXRpbGl0eSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdG8gaGVscCB3aXRoIHNlcmlhbGl6YXRpb24gYW5kIGRlc2VyaWFsaXphdGlvbi4KClwqIEZpbGVzIG5lZWRlZCBmb3IgY3JlYXRpbmcgYSBmdWxseSBjb21waWxhYmxlIHBhY2thZ2UgdGhhdCBjYW4gYmUgcHVibGlzaGVkIHRvIHRoZSByZWxldmFudCBwYWNrYWdlIG1hbmFnZXIgd2l0aG91dCBmdXJ0aGVyIGNoYW5nZXMuCgoKIyMgQWR2YW5jZWQgR2VuZXJhdGlvbiBGZWF0dXJlcwoKKiBbU0RLIEdlbiBDb25maWd1cmF0aW9uXShodHRwczovL3NwZWFrZWFzeS5jb20vZG9jcy91c2luZy1zcGVha2Vhc3kvY3JlYXRlLWNsaWVudC1zZGtzL2N1c3RvbWl6ZS1zZGtzL2ludHJvLykgLSBMZWFybiBob3cgdG8gY29uZmlndXJlIHRoZSBTREsgZ2VuZXJhdG9yIHRvIHlvdXIgbmVlZHMuCiogW0dlbmVyYXRlZCBDb21tZW50c10oaHR0cHM6Ly9zcGVha2Vhc3kuY29tL2RvY3MvdXNpbmctc3BlYWtlYXN5L2NyZWF0ZS1jbGllbnQtc2Rrcy9zZGstZG9jcy8jY29tbWVudHMpIC0gTGVhcm4gaG93IGNvbW1lbnRzIGFyZSBnZW5lcmF0ZWQgZnJvbSB5b3VyIE9wZW5BUEkgZG9jdW1lbnQgYW5kIGhvdyB0byBjdXN0b21pemUgdGhlbS4KKiBbQ29uZmlndXJpbmcgdGhlIFNESyB3aXRoIFNlcnZlciBVUkxzXShodHRwczovL3NwZWFrZWFzeS5jb20vZG9jcy91c2luZy1zcGVha2Vhc3kvY3JlYXRlLWNsaWVudC1zZGtzL2N1c3RvbWl6ZS1zZGtzL3NlcnZlcnMvKSAtIExlYXJuIGhvdyB0byBjb25maWd1cmUgdGhlIFNESyB0byB1c2UgZGlmZmVyZW50IHNlcnZlciBVUkxzIGZvciBkaWZmZXJlbnQgZW52aXJvbm1lbnRzLgoqIFtSZWFkbWUgR2VuZXJhdGlvbl0oaHR0cHM6Ly9zcGVha2Vhc3kuY29tL2RvY3MvdXNpbmctc3BlYWtlYXN5L2NyZWF0ZS1jbGllbnQtc2Rrcy9zZGstZG9jcy8pIC0gTGVhcm4gaG93IHRoZSBTREsgZ2VuZXJhdGVzIFJFQURNRS5tZCBmaWxlcyBhbmQgaG93IHRvIGNvbnRyb2wgdGhpcy4KKiBbVXNpbmcgQ3VzdG9tIEhUVFAgQ2xpZW50cyBXaXRoIHRoZSBTREtdKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL3VzaW5nLXNwZWFrZWFzeS9jcmVhdGUtY2xpZW50LXNka3MvY3VzdG9taXplLXNka3MvY3VzdG9tLWh0dHAtY2xpZW50LykgLSBMZWFybiBob3cgdG8gcHJvdmlkZSBhIGN1c3RvbSBIVFRQIENsaWVudCB0byB0aGUgU0RLcyBhdCBydW50aW1lLgoqIFtDYXB0dXJpbmcgVGVsZW1ldHJ5IG9uIFNESyBVc2FnZV0oaHR0cHM6Ly9zcGVha2Vhc3kuY29tL2RvY3MvdXNpbmctc3BlYWtlYXN5L2NyZWF0ZS1jbGllbnQtc2Rrcy9zZGstdGVsZW1ldHJ5LykgLSBMZWFybiBob3cgeW91IGNhbiBjYXB0dXJlIHRlbGVtZXRyeSB0byBnZXQgYW4gdW5kZXJzdGFuZGluZyBvZiBob3cgeW91ciBTREtzIGFyZSBiZWluZyB1c2VkLgoqIFtBdXRvbWF0ZWQgU0RLIEdlbmVyYXRpb25dKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL3VzaW5nLXNwZWFrZWFzeS9jcmVhdGUtY2xpZW50LXNka3MvZ2l0aHViLXNldHVwLykgLSBVc2Ugb3VyIEdpdEh1YiBBY3Rpb24gYW5kIFdvcmtmbG93cyB0byBzZXQgdXAgQ0kvQ0QgZm9yIGdlbmVyYXRpbmcgYW5kIHB1Ymxpc2hpbmcgeW91ciBTREtzLgoqIFtPdmVycmlkZSBHZW5lcmF0ZWQgTmFtZXNdKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL3VzaW5nLXNwZWFrZWFzeS9jcmVhdGUtY2xpZW50LXNka3MvY3VzdG9taXplLXNka3MvbWV0aG9kcy8pIC0gU3BlYWtlYXN5IHVzZXMgeW91ciBPcGVuQVBJIHNjaGVtYSB0byBpbmZlciBuYW1lcyBmb3IgY2xhc3MgdHlwZXMsIG1ldGhvZHMsIGFuZCBwYXJhbWV0ZXJzLiBIb3dldmVyLCB5b3UgY2FuIG92ZXJyaWRlIHRoZXNlIG5hbWVzIHRvIHRhaWxvciB0aGUgZ2VuZXJhdGVkIFNESyB0byB5b3VyIHByZWZlcmVuY2VzLgoqIFtBZGQgUmV0cmllcyB0byBZb3VyIFNES3NdKGh0dHBzOi8vc3BlYWtlYXN5LmNvbS9kb2NzL3VzaW5nLXNwZWFrZWFzeS9jcmVhdGUtY2xpZW50LXNka3MvY3VzdG9taXplLXNka3MvcmV0cmllcy8pIC0gVGhlIGdlbmVyYXRvciBzdXBwb3J0cyB0aGUgYWJpbGl0eSB0byBnZW5lcmF0ZSBTREtzIHRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5IHJldHJ5IHJlcXVlc3RzIHRoYXQgZmFpbCBkdWUgdG8gbmV0d29yayBlcnJvcnMgb3IgYW55IGNvbmZpZ3VyZWQgSFRUUCBzdGF0dXMgY29kZS4KCiMjIEdldHRpbmcgU3VwcG9ydAoKSWYgeW91IG5lZWQgc3VwcG9ydCB1c2luZyB0aGUgU3BlYWtlYXN5IENMSSwgcGxlYXNlIGNvbnRhY3QgdXMgdmlhIFtlbWFpbF0oaW5mb0BzcGVha2Vhc3kuY29tKSwgb24gW1NsYWNrXShodHRwczovL2pvaW4uc2xhY2suY29tL3Qvc3BlYWtlYXN5LWRldi9zaGFyZWRfaW52aXRlL3p0LTFkZjBsYWxrNS1IQ0FscGNRaXFQdzh2R3VrUVdoZXh3KSwgb3IgZmlsZSBhIEdpdEh1YiBpc3N1ZSBhbmQgd2UnbGwgcmVzcG9uZCBBU0FQIQoKPCEtLSBXQVJOSU5HOiBUaGUgYmVsb3cgY29udGVudCBpcyByZXBsYWNlZCBieSBydW5uaW5nIGBnbyBydW4gY21kL2RvY3MvbWFpbi5nb2AgcGxlYXNlIGRvbid0IG1hbnVhbGx5IGVkaXQgYW55dGhpbmcgYmVsb3cgdGhpcyBsaW5lIC0tPgoKIyMjIFVzYWdlCgpgYGBiYXNoCnNwZWFrZWFzeSBbZmxhZ3NdCmBgYAoKIyMjIyBPcHRpb25zCgpgYGBiYXNoCiAgLWgsIC0taGVscCAgIGhlbHAgZm9yIHNwZWFrZWFzeQpgYGAKCiMjIyMgU3ViIENvbW1hbmRzCgoqIFtzcGVha2Vhc3kgYXBpXShkb2NzL2FwaS9SRUFETUUubWQpICAtIEFjY2VzcyB0aGUgU3BlYWtlYXN5IEFQSSB2aWEgdGhlIENMSQoqIFtzcGVha2Vhc3kgYXV0aF0oZG9jcy9hdXRoL1JFQURNRS5tZCkgIC0gQXV0aGVudGljYXRlIHRoZSBDTEkKKiBbc3BlYWtlYXN5IGdlbmVyYXRlXShkb2NzL2dlbmVyYXRlL1JFQURNRS5tZCkgIC0gR2VuZXJhdGUgQ2xpZW50IFNES3MgYW5kIFRlcnJhZm9ybSBQcm92aWRlcnMKKiBbc3BlYWtlYXN5IHZhbGlkYXRlXShkb2NzL3ZhbGlkYXRlL1JFQURNRS5tZCkgIC0gVmFsaWRhdGUgT3BlbkFQSSBkb2N1bWVudHMKCiMjIENMSSAgCmBzcGVha2Vhc3lgICAKCgpUaGUgU3BlYWtlYXN5IENMSSB0b29sIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU3BlYWtlYXN5LmNvbSBwbGF0Zm9ybSAgCgojIyMgRGV0YWlscwoKIyBTcGVha2Vhc3kgCgpBIENMSSB0b29sIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBbU3BlYWtlYXN5IHBsYXRmb3JtXShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tLykgYW5kIGl0cyBBUElzLgoKVXNlIHRoaXMgQ0xJIHRvOgotIExpbnQgYW5kIHZhbGlkYXRlIE9wZW5BUEkgc3BlY3MKLSBDcmVhdGUsIG1hbmFnZSwgYW5kIHJ1biBTcGVha2Vhc3kgd29ya2Zsb3dzCi0gQ29uZmlndXJlIEdpdEh1YiBBY3Rpb25zIGZvciBTcGVha2Vhc3kgd29ya2Zsb3dzCi0gU3VnZ2VzdCBpbXByb3ZlbWVudHMgdG8gT3BlbkFQSSBzcGVjcwoKR2VuZXJhdGUgZnJvbSBPcGVuQVBJIFNwZWNzOgotIENsaWVudCBhbmQgU2VydmVyIFNES3MgaW4gR08sIFB5dGhvbiwgVHlwZVNjcmlwdCwgSmF2YSwgUEhQLCBDIywgU3dpZnQsIFJ1YnkKLSBQb3N0bWFuIGNvbGxlY3Rpb25zCi0gVGVycmFmb3JtIHByb3ZpZGVycwoKW1F1aWNrc3RhcnQgZ3VpZGVdKGh0dHBzOi8vd3d3LnNwZWFrZWFzeS5jb20vZG9jcy9jcmVhdGUtY2xpZW50LXNka3MpCgpWaXNpdCBbU3BlYWtlYXN5XShodHRwczovL3d3dy5zcGVha2Vhc3kuY29tLykgZm9yIG1vcmUgaW5mb3JtYXRpb24KCgojIyMgVXNhZ2UKCmBgYApzcGVha2Vhc3kgW2ZsYWdzXQpgYGAKCiMjIyMgT3B0aW9ucwoKYGBgCiAgLWgsIC0taGVscCAgICAgICAgICAgICAgaGVscCBmb3Igc3BlYWtlYXN5CiAgICAgIC0tbG9nTGV2ZWwgc3RyaW5nICAgdGhlIGxvZyBsZXZlbCAoYXZhaWxhYmxlIG9wdGlvbnM6IFtpbmZvLCB3YXJuLCBlcnJvcl0pIChkZWZhdWx0ICJpbmZvIikKYGBgCgojIyMjIFN1YiBDb21tYW5kcwoKKiBbc3BlYWtlYXN5IGFza10oZG9jcy9hc2subWQpCSAtIFN0YXJ0cyBhIGNvbnZlcnNhdGlvbiB3aXRoIFNwZWFrZWFzeSB0cmFpbmVkIEFJCiogW3NwZWFrZWFzeSBhdXRoXShkb2NzL2F1dGgvUkVBRE1FLm1kKQkgLSBBdXRoZW50aWNhdGUgdGhlIENMSQoqIFtzcGVha2Vhc3kgYnVtcF0oZG9jcy9idW1wLm1kKQkgLSBCdW1wcyB0aGUgdmVyc2lvbiBvZiBhIFNwZWFrZWFzeSBHZW5lcmF0aW9uIFRhcmdldAoqIFtzcGVha2Vhc3kgY2xlYW5dKGRvY3MvY2xlYW4ubWQpCSAtIFNwZWFrZWFzeSBjbGVhbiBjYW4gYmUgdXNlZCB0byBjbGVhbiB1cCBjYWNoZSwgc3RhbGUgdGVtcCBmb2xkZXJzLCBhbmQgb2xkIENMSSBiaW5hcmllcy4KKiBbc3BlYWtlYXN5IGNvbmZpZ3VyZV0oZG9jcy9jb25maWd1cmUvUkVBRE1FLm1kKQkgLSBDb25maWd1cmUgeW91ciBTcGVha2Vhc3kgU0RLIFNldHVwLgoqIFtzcGVha2Vhc3kgZ2VuZXJhdGVdKGRvY3MvZ2VuZXJhdGUvUkVBRE1FLm1kKQkgLSBPbmUgb2ZmIEdlbmVyYXRpb25zIGZvciBjbGllbnQgU0RLcyBhbmQgbW9yZQoqIFtzcGVha2Vhc3kgbGludF0oZG9jcy9saW50L1JFQURNRS5tZCkJIC0gTGludC9WYWxpZGF0ZSBPcGVuQVBJIGRvY3VtZW50cyBhbmQgU3BlYWtlYXN5IGNvbmZpZ3VyYXRpb24gZmlsZXMKKiBbc3BlYWtlYXN5IG1lcmdlXShkb2NzL21lcmdlLm1kKQkgLSBNZXJnZSBtdWx0aXBsZSBPcGVuQVBJIGRvY3VtZW50cyBpbnRvIGEgc2luZ2xlIGRvY3VtZW50CiogW3NwZWFrZWFzeSBvcGVuYXBpXShkb2NzL29wZW5hcGkvUkVBRE1FLm1kKQkgLSBVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBPcGVuQVBJIGRvY3VtZW50cwoqIFtzcGVha2Vhc3kgb3ZlcmxheV0oZG9jcy9vdmVybGF5L1JFQURNRS5tZCkJIC0gV29yayB3aXRoIE9wZW5BUEkgT3ZlcmxheXMKKiBbc3BlYWtlYXN5IHF1aWNrc3RhcnRdKGRvY3MvcXVpY2tzdGFydC5tZCkJIC0gR3VpZGVkIHNldHVwIHRvIGhlbHAgeW91IGNyZWF0ZSBhIG5ldyBTREsgaW4gbWludXRlcy4KKiBbc3BlYWtlYXN5IHJ1bl0oZG9jcy9ydW4ubWQpCSAtIFJ1biBhbGwgdGhlIHdvcmtmbG93cyBkZWZpbmVkIGluIHlvdXIgd29ya2Zsb3cueWFtbCBmaWxlLiBUaGlzIGNhbiBpbmNsdWRlIG11bHRpcGxlIFNESyBnZW5lcmF0aW9ucyBmcm9tIGRpZmZlcmVudCBPcGVuQVBJIHNvdXJjZXMKKiBbc3BlYWtlYXN5IHN0YXR1c10oZG9jcy9zdGF0dXMubWQpCSAtIFJldmlldyBzdGF0dXMgb2YgY3VycmVudCB3b3Jrc3BhY2UKKiBbc3BlYWtlYXN5IHN1Z2dlc3RdKGRvY3Mvc3VnZ2VzdC9SRUFETUUubWQpCSAtIEF1dG9tYXRpY2FsbHkgaW1wcm92ZSB5b3VyIE9wZW5BUEkgZG9jdW1lbnQgd2l0aCBhbiBMTE0KKiBbc3BlYWtlYXN5IHRhZ10oZG9jcy90YWcvUkVBRE1FLm1kKQkgLSBBZGQgdGFncyB0byBhIGdpdmVuIHJldmlzaW9uIG9mIHlvdXIgQVBJLiBTcGVjaWZpYyB0byBhIHJlZ2lzdHJ5IG5hbWVzcGFjZQoqIFtzcGVha2Vhc3kgdXBkYXRlXShkb2NzL3VwZGF0ZS5tZCkJIC0gVXBkYXRlIHRoZSBTcGVha2Vhc3kgQ0xJIHRvIHRoZSBsYXRlc3QgdmVyc2lvbgo=
+ readmeEtag: '"e8e76f84b34d229e5461d5b4338c07d4100326d4"'
+ readmeLastModified: Fri, 27 Sep 2024 18:25:57 GMT
repositoryId: 543052826
description: Speakeasy CLI - Enterprise developer experience for your API
created: '2022-09-29T10:13:15Z'
- updated: '2024-09-26T18:18:05Z'
+ updated: '2024-09-27T18:26:01Z'
language: JavaScript
archived: false
stars: 181
@@ -9994,8 +9994,8 @@
owner: speakeasy-api
logo: https://avatars.githubusercontent.com/u/91446104?v=4
license: NOASSERTION
- repoEtag: '"32614f6648e9d3a4289826bb7bac7794756ad1d364820f414dc8911de966af1c"'
- repoLastModified: Thu, 26 Sep 2024 18:18:05 GMT
+ repoEtag: '"f9e785aa6191fa0c9d2c00bcf8aaf9b4784122a9a06bcba88f0b25ba27ba220f"'
+ repoLastModified: Fri, 27 Sep 2024 18:26:01 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -10031,15 +10031,15 @@
id: 30d6812808d99b1b58b61c10028cb8de
repositoryMetadata:
base64Readme: >-
- WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2diMmRvZTN0Z3dqdDQ3Y24vYnJhbmNoL21hc3Rlcj9zdmc9dHJ1ZSldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9icmFuY2gvbWFzdGVyKQohW0NMSSBUb29sXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi93b3JrZmxvd3MvQ0xJJTIwVG9vbC9iYWRnZS5zdmcpCiFbVlNJWF0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTSVgvYmFkZ2Uuc3ZnKQohW1ZTIE1hY10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTJTIwTWFjL2JhZGdlLnN2ZykKIVtTbW9rZSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1Ntb2tlJTIwVGVzdHMvYmFkZ2Uuc3ZnKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQoKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3YvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMj9sYWJlbD1NYXJrZXRwbGFjZSldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3I/bGFiZWw9VlMlMjAyMDE5KV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyP2xhYmVsPVZTJTIwMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKQpbIVtOdUdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC9kdC9yYXBpY2dlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnVnZXQpXShodHRwOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikKClshW2J1eW1lYWNvZmZlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9idXklMjBtZSUyMGElMjBjb2ZmZWUtZG9uYXRlLXllbGxvdy5zdmcpXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQpbIVtKb2luIHRoZSBjaGF0IGF0IGh0dHBzOi8vZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5XShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHkuc3ZnKV0oaHR0cHM6Ly9naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHk/dXRtX3NvdXJjZT1iYWRnZSZ1dG1fbWVkaXVtPWJhZGdlJnV0bV9jYW1wYWlnbj1wci1iYWRnZSZ1dG1fY29udGVudD1iYWRnZSkKCiMgUkVTVCBBUEkgQ2xpZW50IENvZGUgR2VuZXJhdG9yCgpBIGNvbGxlY3Rpb24gb2YgVmlzdWFsIFN0dWRpbyBDIyBjdXN0b20gdG9vbCBjb2RlIGdlbmVyYXRvcnMgZm9yIFN3YWdnZXIgLyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMKCiMjIERvd25sb2FkCgotICoqW1Zpc3VhbCBTdHVkaW8gMjAyMl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTddKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IyMDE3KSoqCi0gKipbVmlzdWFsIFN0dWRpbyBmb3IgTWFjXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9yZWxlYXNlcy9sYXRlc3QpKiouIEZvbGxvdyAqKlt0aGVzZSBpbnN0cnVjdGlvbnNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpKiogZm9yIHVwZGF0ZSBjb252ZW5pZW5jZSBvbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKCiMjIEZlYXR1cmVzCgotIFN1cHBvcnRzIFZpc3VhbCBTdHVkaW8gMjAxNywgMjAxOSwgMjAyMiwgYW5kIFtWaXN1YWwgU3R1ZGlvIGZvciBNYWNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpCi0gQWRkIE5ldyBSRVNUIEFQSSBDbGllbnQgdG8gYSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIFVSTCAoZS5nIDxodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uPikgdXNpbmcgdGhlIGZvbGxvd2luZyBjb2RlIGdlbmVyYXRvcnM6CiAgLSBbTlN3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcpCiAgLSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbU3dhZ2dlciBDb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKQogIC0gW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpCiAgLSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKQogIC0gW0F1dG9SZXN0XShodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXV0b3Jlc3QpCi0gRGVmaW5lIGN1c3RvbSBuYW1lc3BhY2UgZm9yIHRoZSBnZW5lcmF0ZWQgZmlsZQotIEF1dG8tdXBkYXRpbmcgb2YgZ2VuZXJhdGVkIGNvZGUgZmlsZSB3aGVuIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBKU09OIG9yIFlBTUwgZmlsZQotIEdlbmVyYXRlIGNvZGUgdXNpbmcgYSBjb25maWd1cmF0aW9uIGZpbGVzIHVzaW5nIHRoZSBmb2xsb3dpbmc6CiAgLSBgLm5zd2FnYCBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gW05Td2FnU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pIGJ5IGluY2x1ZGluZyBpdCBpbiB0aGUgcHJvamVjdCBhbmQgdXNpbmcgdGhlICoqR2VuZXJhdGUgTlN3YWcgU3R1ZGlvIG91dHB1dCoqIGNvbnRleHQgbWVudQogIC0gYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZXMgZnJvbSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYnkgaW5jbHVkaW5nIGl0IGluIHRoZSBwcm9qZWN0IGFuZCB1c2luZyB0aGUgKipHZW5lcmF0ZSBSZWZpdHRlciBvdXRwdXQqKiBjb250ZXh0IG1lbnUKICAtIGBraW90YS1sb2NrLmpzb25gIGNvbmZpZ3VyYXRpb24gZmlsZXMgZnJvbSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKSBieSBpbmNsdWRpbmcgaXQgaW4gdGhlIHByb2plY3QgYW5kIHVzaW5nIHRoZSAqKkdlbmVyYXRlIEtpb3RhIG91dHB1dCoqIGNvbnRleHQgbWVudQoKIyMjIEN1c3RvbSBUb29scwoKQ3VzdG9tIHRvb2xzIGxldCB5b3UgYXNzb2NpYXRlIGEgdG9vbCB3aXRoIGFuIGl0ZW0gaW4gYSBwcm9qZWN0IGFuZCBydW4gdGhhdCB0b29sIHdoZW5ldmVyIHRoZSBmaWxlIGlzIHNhdmVkCgotICoqKk5Td2FnQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKSAqKnYxNC4xLjAqKgoKLSAqKipPcGVuQXBpQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKltPcGVuQVBJIEdlbmVyYXRvciB2Ny44LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y3LjguMCkqKi4KVGhlIG91dHB1dCBmaWxlIGlzIHRoZSByZXN1bHQgb2YgbWVyZ2luZyBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZCB1c2luZyB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWcgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYC4gSXQgaXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcyB3aGljaCB3aWxsIGJlIHBsYWNlZCBhdCB0aGUgc2FtZSBwYXRoIGFzIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGRvY3VtZW50IHRoYXQgd2FzIHVzZWQgdG8gZ2VuZXJhdGUgY29kZSwgdGhpcyBpcyBkb25lIHVuZGVyIFRvb2xzIC0+IFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvciAtPiBPcGVuQVBJIEdlbmVyYXRvciBhbmQgc2V0dGluZyAqKkdlbmVyYXRlIE11bHRpcGxlIEZpbGVzKiogdG8gKip0cnVlKioKCi0gKioqS2lvdGFDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBNaWNyb3NvZnQgcHJvamVjdCAqKltLaW90YSB2MS4xOC4wXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvb3BlbmFwaS9raW90YS8pKiogZ2VuZXJhdG9yLiBUaGUgb3V0cHV0IGZpbGUgaXMgdGhlIHJlc3VsdCBvZiBtZXJnaW5nIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBLaW90YSBkb3RuZXQgdG9vbCB3aXRoOiBgZ2VuZXJhdGUgLWwgQ1NoYXJwIC1kIFtzd2FnZ2VyIGZpbGVdIC1vIFtvdXRwdXQgZmlsZV0gLW4gW2RlZmF1bHQgbmFtZXNwYWNlXWAuIEl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgZmlsZXMgd2hpY2ggd2lsbCBiZSBwbGFjZWQgYXQgdGhlIHNhbWUgcGF0aCBhcyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudCB0aGF0IHdhcyB1c2VkIHRvIGdlbmVyYXRlIGNvZGUsIHRoaXMgaXMgZG9uZSB1bmRlciBUb29scyAtPiBSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IgLT4gS2lvdGEgYW5kIHNldHRpbmcgKipHZW5lcmF0ZSBNdWx0aXBsZSBGaWxlcyoqIHRvICoqdHJ1ZSoqCgotICoqKlN3YWdnZXJDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nICoqU3dhZ2dlciBDb2RlZ2VuIENMSSB2My4wLjM0KiouClRoZSBvdXRwdXQgZmlsZSBpcyB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYWxsIHRoZSBmaWxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIFN3YWdnZXIgQ29kZWdlbiBDTEkgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWwgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYAoKLSAqKipBdXRvUmVzdENvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgdXNpbmcgKipBdXRvUmVzdCB2My4wLjAtYmV0YS4yMDIxMDUwNC4yKiogZm9yIE9wZW5BUEkgdjMgYW5kICoqQXV0b1Jlc3QgdjIuMC40NDE3KiogZm9yIE9wZW5BUEkgdjIuIFRoZSByZXN1bHRpbmcgZmlsZSBpcyB0aGUgZXF1aXZhbGVudCBvZiB1c2luZyB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgd2l0aDoKIGAtLWNzaGFycCAtLWlucHV0LWZpbGU9W3N3YWdnZXIgZmlsZV0gLS1vdXRwdXQtZmlsZT1bb3V0cHV0IGZpbGVdIC0tbmFtZXNwYWNlPVtkZWZhdWx0IG5hbWVzcGFjZV0gLS1hZGQtY3JlZGVudGlhbHNgCgotICoqKlJlZml0dGVyQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCBpbnRlZmFjZSBmb3IgW1JlZml0XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdCkgdXNpbmcgW1JlZml0dGVyLkNvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZWZpdHRlci5Db3JlLykgKip2MS4zLjAqKi4KVGhlIG91dHB1dCBmaWxlIGNvbnRhaW5zIGEgUmVmaXQgaW50ZXJmYWNlIGdlbmVyYXRlZCBieSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYW5kIGNvbnRyYWN0cyBnZW5lcmF0ZWQgdXNpbmcgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKQoKIyMjIERlcGVuZGVuY2llcwoKVGhlIGN1c3RvbSB0b29sIGNvZGUgZ2VuZXJhdG9ycyBwaWdneSBiYWNrIG9uIHRvcCBvZiB3ZWxsIGtub3duIE9wZW4gQVBJIGNsaWVudCBjb2RlIGdlbmVyYXRvcnMgbGlrZSAqKkF1dG9SZXN0KiosICoqTlN3YWcqKiwgKipPcGVuQVBJIEdlbmVyYXRvcioqLCAqKk1pY3Jvc29mdCBLaW90YSoqLCAqKlJlZml0dGVyKiosIGFuZCAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKi4gVGhlc2UgdG9vbHMgcmVxdWlyZSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYW5kIHRoZSBbSmF2YSBSdW50aW1lIEVudmlyb25tZW50XShodHRwczovL2phdmEuY29tL2VuL2Rvd25sb2FkL21hbnVhbC5qc3ApIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgZGV2ZWxvcGVycyBtYWNoaW5lLiBBbHRlcm5hdGl2ZSBKYXZhIFNESyBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyB0aGUgW09wZW5KREtdKGh0dHBzOi8vYWRvcHRvcGVuamRrLm5ldCkgd29ya3MgZmluZSB3aXRoIHRoaXMgZXh0ZW5zaW9uLiBCeSBkZWZhdWx0LCB0aGUgcGF0aCB0byAqKmphdmEuZXhlKiogaXMgcmVhZCBmcm9tIHRoZSAqKkpBVkFfSE9NRSoqIGVudmlyb25tZW50IHZhcmlhYmxlLCBidXQgaXMgYWxzbyBjb25maWd1cmFibGUgaW4gdGhlIFNldHRpbmdzIHNjcmVlbi4gRnV0dXJlIHZlcnNpb25zIG9mIHRoZSBleHRlbnNpb24gd2lsbCBpbmNsdWRlIHRoZSBbT3BlbkpES10oaHR0cHM6Ly9hZG9wdG9wZW5qZGsubmV0KSBpbiB0aGUgVlNJWCBwYWNrYWdlCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogYW5kICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBhcmUgZGlzdHJpYnV0ZWQgYXMgSkFSIGZpbGVzIGFuZCBhcmUgZG93bmxvYWRlZCBvbiBkZW1hbmQgYnV0IHJlcXVpcmVzIHRoZSBKYXZhIFNESyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIG1hY2hpbmUuICoqQXV0b1Jlc3QqKiBpcyBpbnN0YWxsZWQgb24tZGVtYW5kIHZpYSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYXMgYSBnbG9iYWwgdG9vbCBhbmQgdXNlcyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uLiAqKk1pY3Jvc29mdCBLaW90YSoqIGlzIGluc3RhbGxlZCBvbi1kZW1hbmQgYXMgYSAuTkVUIFRvb2wgYW5kIHJlcXVpcmVzIC5ORVQgNy4wLiBUaGlzIG1lYW5zIHRoYXQgdXNpbmcgdGhlc2UgY3VzdG9tIHRvb2xzIGhhdmUgYW4gaW5pdGlhbCBkZWxheSB1cG9uIGZpcnN0IHRpbWUgdXNlLiAKCioqTlN3YWdTdHVkaW8qKiBpcyBzdGFuZCBhbG9uZSBVSSB0b29sIGZvciBlZGl0aW5nIGEgKioubnN3YWcqKiBzcGVjaWZpY2F0aW9uIGZpbGUgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyB0b29sIGlzIG9wdGlvbmFsIHRvIGluc3RhbGwgYW5kIG9mZmljaWFsIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgW05Td2FnIFdpa2kgb24gR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pLiBJZiAqKk5Td2FnU3R1ZGlvKiogaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgbWFjaGluZSB0aGVuIHRoZSBWaXN1YWwgU3R1ZGlvIEV4dGVuc2lvbiB3aWxsIGluc3RhbGwgdGhlICoqTlN3YWcgQ0xJKiogdmlhIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhcyBhIGdsb2JhbCB0b29sIHVzaW5nIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24uIAoKVGhlICoqTlN3YWcqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2UKClRoZSAqKlJlZml0dGVyKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZWZpdF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0LzcuMC4wKSBOdUdldCBwYWNrYWdlCgpUaGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXM6CgotIFtSZXN0U2hhcnBdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZXN0U2hhcnAvMTEyLjAuMCkKLSBbSnNvblN1YlR5cGVzXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvSnNvblN1YlR5cGVzLzIuMC4xKQotIFtQb2xseV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1BvbGx5LzguNC4xKQotIFtOZXd0b25zb2Z0Lkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OZXd0b25zb2Z0Lkpzb24vMTMuMC4zKQoKVGhlIHByb2plY3QgKipLaW90YSoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXMKCi0gW01pY3Jvc29mdC5LaW90YS5BYnN0cmFjdGlvbnNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zKQotIFtNaWNyb3NvZnQuS2lvdGEuSHR0cC5IdHRwQ2xpZW50TGlicmFyeV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5IdHRwLkh0dHBDbGllbnRMaWJyYXJ5KQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Gb3JtXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uRm9ybSkKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uVGV4dF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHQpCi0gW01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Kc29uKQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnQpCi0gW01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZSkKLSBbQXp1cmUuSWRlbnRpdHldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9BenVyZS5JZGVudGl0eSkKClRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW1Jlc3RTaGFycF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1Jlc3RTaGFycC8xMDUuMS4wKSBhbmQgW0pzb25TdWJUeXBlc10oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0pzb25TdWJUeXBlcy8xLjkuMCkgTnVHZXQgcGFja2FnZXMKClRoZSAqKkF1dG9SZXN0KiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtNaWNyb3NvZnQuUmVzdC5DbGllbnRSdW50aW1lXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0LlJlc3QuQ2xpZW50UnVudGltZS8yLjMuMjQpIGFuZCBbTmV3dG9uc29mdC5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV3dG9uc29mdC5Kc29uLzEzLjAuMykgTnVHZXQgcGFja2FnZXMKClRoaXMgVmlzdWFsIFN0dWRpbyBFeHRlbnNpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcmVxdWlyZWQgTnVHZXQgcGFja2FnZXMgdGhhdCB0aGUgZ2VuZXJhdGVkIGNvZGUgZGVwZW5kcyBvbgoKIyMgU2NyZWVuc2hvdHMKCiFbQWRkIC0gQVBJIENsaWVudCBmcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL2FkZC1uZXctbWVudS5wbmcpCgohW0VudGVyIFVSTCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy9hZGQtbmV3LWRpYWxvZy5wbmcpCgohW1NvbHV0aW9uIEV4cGxvcmVyIENvbnRleHQgTWVudXNdKGltYWdlcy9zb2x1dGlvbi1leHBsb3Jlci1jb250ZXh0LW1lbnUuanBnKQoKIVtOU3dhZyBTdHVkaW8gQ29udGV4dCBNZW51XShpbWFnZXMvbnN3YWdzdHVkaW8tY29udGV4dC1tZW51LmpwZykKCiFbUmVmaXR0ZXIgQ29udGV4dCBNZW51XShpbWFnZXMvcmVmaXR0ZXItY29tbWFuZC5wbmcpCgohW0tpb3RhIENvbnRleHQgTWVudV0oaW1hZ2VzL2dlbmVyYXRlLWtpb3RhLW91dHB1dC5wbmcpCgojIyMgU2V0dGluZ3MKClRoaXMgZXh0ZW5zaW9uIHdpbGwgYnkgZGVmYXVsdCBtYWtlIHNvbWUgYXNzdW1wdGlvbnMgb24gdGhlIGluc3RhbGxhdGlvbiBwYXRocyBmb3IgKipKYXZhKiosICoqTlN3YWcqKiBhbmQgKipOUE0qKiBidXQgYWxzbyBwcm92aWRlcyBvcHRpb24gcGFnZXMgZm9yIGNvbmZpZ3VyaW5nIHRoaXMuIFRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBhbmQgdGhlICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBKQVIgZmlsZXMgYXJlIGJ5IGRlZmF1bHQgZG93bmxvYWRlZCB0byB0aGUgdXNlciBURU1QIGZvbGRlciBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRvIHVzZSBleGlzdGluZyBKQVIgZmlsZXMKCiFbT3B0aW9ucyAtIEdlbmVyYWxdKGltYWdlcy9vcHRpb25zLWdlbmVyYWwucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IEF1dG9SZXN0IGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIHRoZSBDIyBnZW5lcmF0b3Igc2V0dGluZ3MgdGhhdCB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgcHJvdmlkZXMKCiFbT3B0aW9ucyAtIEF1dG9SZXN0XShpbWFnZXMvb3B0aW9ucy1hdXRvcmVzdC5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgTlN3YWcgZ2VuZXJhdGVzIGNvZGUgdXNpbmcgdGhlIHByb3BlcnRpZXMgZXhwb3NlZCBieSB0aGUgTlN3YWcgTnVHZXQgcGFja2FnZQoKIVtPcHRpb25zIC0gTlN3YWddKGltYWdlcy9vcHRpb25zLW5zd2FnLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyB0aGUgKioubnN3YWcqKiBmaWxlIGlzIGdlbmVyYXRlZCB1c2luZyBhIHN1YnNldCBvZiB0aGUgb3B0aW9ucyBhdmFpbGFibGUgaW4gTlN3YWcgU3R1ZGlvCgohW09wdGlvbnMgLSBOU3dhZyBTdHVkaW9dKGltYWdlcy9vcHRpb25zLW5zd2Fnc3R1ZGlvLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBPcGVuQVBJIEdlbmVyYXRvciBnZW5lcmF0ZXMgY29kZSB1c2luZyB0aGUgYWRkaXRpb25hbCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIENMSSB0b29sIHByb3ZpZGVzCgohW09wdGlvbnMgLSBPcGVuQVBJIEdlbmVyYXRvcl0oaW1hZ2VzL29wdGlvbnMtb3BlbmFwaWdlbmVyYXRvci5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgUmVmaXR0ZXIgZ2VuZXJhdGVzIHRoZSBSZWZpdCBpbnRlcmZhY2UuIFRoaXMgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgd2hldGhlciB0byByZXR1cm4gdGhlIHR5cGUgZGlyZWN0bHkgb3Igd3JhcCBpdCBpbnNpZGUgYW4gYElBcGlSZXNwb25zZTxUPmAuIFlvdSBjYW4gYWxzbyBkaXNhYmxlIGdlbmVyYXRpbmcgY29udHJhY3RzIG9yIFhNTCBkb2Mgc3R5bGUgY29tbWVudHMKCiFbT3B0aW9ucyAtIFJlZml0dGVyXShpbWFnZXMvcmVmaXR0ZXItb3B0aW9ucy5wbmcpCgpTdXBwb3J0cyBhbGxvd2luZyBLaW90YSB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcwoKIVtPcHRpb25zIC0gS2lvdGFdKGltYWdlcy9vcHRpb25zLWtpb3RhLnBuZykKClRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGVycm9ycyBhbmQgdHJhY2tzIGZlYXR1cmUgdXNhZ2VzIHRvIGEgc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20pIGFuZCBbQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9hcHAtaW5zaWdodHMtb3ZlcnZpZXc/V1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpLiBUaGlzIGlzIGRvbmUgYW5vbnltb3VzbHkgdXNpbmcgYSBzdXBwb3J0IGtleSBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggb2YgdXNlcm5hbWVAaG9zdAoKIVtPcHRpb25zIC0gQW5hbHl0aWNzXShpbWFnZXMvc3VwcG9ydC1rZXkucG5nKQoKIyMjIE1hY09TCgohW0FkZCAtIEFQSSBDbGllbnQgZnJvbSBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy92c21hYy1hZGQtbmV3LW1lbnUucG5nKQoKIVtFbnRlciBVUkwgdG8gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShpbWFnZXMvdnNtYWMtYWRkLW5ldy1kaWFsb2cucG5nKQoKIVtTb2x1dGlvbiBFeHBsb3JlciBDb250ZXh0IE1lbnVzXShpbWFnZXMvdnNtYWMtZ2VuZXJhdGUtY29kZS5wbmcpCgohW05Td2FnIFN0dWRpbyBDb250ZXh0IE1lbnVdKGltYWdlcy92c21hYy1uc3dhZy1zdHVkaW8ucG5nKQoKIyBJbnN0YWxsYXRpb24KClRoZSBWaXN1YWwgU3R1ZGlvIGV4dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gVmlzdWFsIFN0dWRpbyAyMDE5IGFuZCAyMDIyIHZpYSB0aGUgKipFeHRlbnNpb25zIERpYWxvZyBCb3gqKi4gVGhlIHByb2Nlc3MgaXMgYmVzdCBkZXNjcmliZWQgaW4gdGhlIG9mZmljaWFsIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGZvciBbTWFuYWdpbmcgZXh0ZW5zaW9ucyBmb3IgVmlzdWFsIFN0dWRpb10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdmlzdWFsc3R1ZGlvL2lkZS9maW5kaW5nLWFuZC11c2luZy12aXN1YWwtc3R1ZGlvLWV4dGVuc2lvbnM/dmlldz12cy0yMDE5JldULm1jX2lkPURULU1WUC01MDA0ODIyKQoKIyMgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgpUaGlzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGZvciAqKlZpc3VhbCBTdHVkaW8gZm9yIE1hYyoqIGlzIGN1cnJlbnRseSBhIGJpdCB0cm91Ymxlc29tZSBhcyB0aGUgTW9ub0RldmVsb3AgQWRkaW4gUmVwb3NpdG9yeSBpcyBjdXJyZW50bHkgbm90IGFjY2VwdGluZyBuZXcgdXNlcnMgc28gSSBjYW4ndCByZWFsbHkgcmVnaXN0ZXIgYW5kIHNldHVwIG15IGV4dGVuc2lvbi4KClRoZXJlIGFyZSAyIHdheXMgb2YgaW5zdGFsbGluZyBteSBleHRlbnNpb24gb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjOiBBZGRpbmcgYSBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkgb3IgSW5zdGFsbGluZyB0aGUgKioubXBhY2sqKiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIEV4dGVuc2lvbnMgTWFuYWdlcgoKIyMjIEFkZGluZyBhIG5ldyBleHRlbnNpb24gcmVwb3NpdG9yeQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86CgotIE9wZW4gdGhlIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyAqKkV4dGVuc2lvbiBNYW5hZ2VyKioKLSBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIFNlbGVjdCB0aGUgKipHYWxsZXJ5KiogVGFiCi0gRXhwYW5kIHRoZSBSZXBvc2l0b3J5IGRyb3AgZG93biBib3ggYW5kIHNlbGVjdCAqKk1hbmFnZSBSZXBvc2l0b3JpZXMqKgoKIVtNYW5hZ2UgUmVwb3NpdG9yaWVzXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tYW5hZ2UtcmVwb3NpdG9yaWVzLnBuZykKCi0gUHJlc3Mgb24gdGhlICoqQWRkKiogYnV0dG9uIHRvIGFkZCBhIG5ldyBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkKCiFbTWFuYWdlIFJlcG9zaXRvcmllc10oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtcmVwb3NpdG9yaWVzLnBuZykKCi0gUmVnaXN0ZXIgYW4gb25saW5lIHJlcG9zaXRvcnkgYXQgKipodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbS92c21hYy9tYWluLm1yZXAqKgotIENsaWNrICoqT0sqKgoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtYWRkLXJlcG9zaXRvcnkucG5nKQoKLSBOb3cgbXkgZXh0ZW5zaW9uIHJlcG9zaXRvcnkgaXMgYWRkZWQgdG8gdGhlIGxpc3QKLSBNYWtlIHN1cmUgdGhhdCB0aGlzIGlzIGVuYWJsZWQgKGluZGljYXRlZCBieSBhIGNoZWNrIGJveCkKCiFbQWRkIFJlcG9zaXRvcnkgRGlhbG9nXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1hZGRlZC1yZXBvc2l0b3J5LnBuZykKCi0gWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBzZWUgbXkgZXh0ZW5zaW9ucyBmcm9tIHRoZSAqKkdhbGxlcnkqKiB0YWIKCiFbQWRkZWQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtZ2FsbGVyeS5wbmcpCgotIEJ5IGFkZGluZyBteSBleHRlbnNpb24gcmVwb3NpdG9yeSB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNvbnZlbmllbnRseSB1cGRhdGUgbXkgZXh0ZW5zaW9uIHVzaW5nIHRoZSBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgRXh0ZW5zaW9uIE1hbmFnZXIKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGVzLnBuZykKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGUtaW5zdGFsbC5wbmcpCgohW0FkZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtdXBkYXRlLWluc3RhbGwtcHJvZ3Jlc3MucG5nKQoKIyMjIEluc3RhbGxpbmcgdGhlICoqLm1wYWNrKiogZmlsZSBkaXJlY3RseQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0gRG93bmxvYWQgdGhlIGxhdGVzdCAqKi5tcGFjayBmaWxlKiogZnJvbSB0aGUgW0xhdGVzdCBHaXRodWIgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vcmVsZWFzZXMvbGF0ZXN0KQotIE5vdyBmcm9tIHdpdGhpbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgeW91IG5lZWQgdG8gbGF1bmNoIHRoZSAqKkV4dGVuc2lvbnMgRGlhbG9nIEJveCoqLiBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIENsaWNrIG9uIHRoZSAqKkluc3RhbGwgZnJvbSBGaWxlKiogYnV0dG9uCgohW01hbnVhbGx5IGluc3RhbGwgLm1wYWNrIGZpbGVdKGltYWdlcy92c21hYy1leHRlbnNpb25zLWluc3RhbGwucG5nKQoKLSBCcm93c2UgdG8gdGhlIC5tcGFjayBmaWxlIGFuZCBzZWxlY3QgaXQuIFlvdSB3aWxsIGJlIHByb21wdGVkIHdpdGggYSBjb25maXJtYXRpb24gZGlhbG9nCgohW0NvbmZpcm0gLm1wYWNrIGZpbGUgaW5zdGFsbF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtaW5zdGFsbC1jb25maXJtLnBuZykKCi0gQ2xpY2sgKipJbnN0YWxsKiogYW5kIHJlc3RhcnQgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCi0gVG8gVmVyaWZ5IHRoYXQgdGhlIEFkZC1pbiB3YXMgaW5zdGFsbGVkIHlvdSBjYW4gcmUtb3BlbiB0aGUgRXh0ZW5zaW9ucyBEaWFsb2cgQm94LCBzZWxlY3QgdGhlICoqSW5zdGFsbGVkKiogdGFiIGFuZCBleHBhbmQgdGhlICoqSURFIEV4dGVuc2lvbnMqKi4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aGUgKipSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IqKi4KCi0gVW5pbnN0YWxsaW5nIHRoZSBBZGQtaW4gaXMgZG9uZSBpbiB0aGlzIHNhbWUgZGlhbG9nIGJveCBieSBjbGlja2luZyB0aGUgKipVbmluc3RhbGwqKiBidXR0b24KCiFbTWFudWFsbHkgdW5pbnN0YWxsIEFkZC1pbl0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtdW5pbnN0YWxsLnBuZykKCgojIENyb3NzIFBsYXRmb3JtIENvbW1hbmQgTGluZSBUb29sCkFsbCBjdXN0b20gdG9vbHMgbWVudGlvbmVkIGFib3ZlIGFyZSBhbHNvIGltcGxlbWVudGVkIGluIGEgY3Jvc3MgcGxhdGZvcm0gY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uCgojIyMjIFJlcXVpcmVtZW50cwotIC5ORVQgNi4wIHJ1bnRpbWUKLSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQKLSBOUE0KCiMjIyBJbnN0YWxsYXRpb24KVGhlIHRvb2wgY2FuIGJlIGluc3RhbGxlZCBhcyBhIC5ORVQgQ29yZSBnbG9iYWwgdG9vbCB0aGF0IHlvdSBjYW4gY2FsbCBmcm9tIHRoZSBzaGVsbCAvIGNvbW1hbmQgbGluZQpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKb3IgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgW2hlcmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdG9vbAoKIyMjIFVzYWdlClNpbmNlIHRoZSB0b29sIGlzIHB1Ymxpc2hlZCBhcyBhIC5ORVQgQ29yZSBUb29sLCBpdCBjYW4gYmUgbGF1bmNoZWQgZnJvbSBhbnl3aGVyZSB1c2luZyBhbnkgY29tbWFuZCBsaW5lIGludGVyZmFjZSBieSBjYWxsaW5nICoqcmFwaWNnZW4qKi4KVGhlIGhlbHAgaW5mb3JtYXRpb24gaXMgZGlzcGxheWVkIHdoZW4gbm90IHNwZWNpZnlpbmcgYW55IGFyZ3VtZW50cyB0byAqKnJhcGljZ2VuKioKCmBgYApVc2FnZTogcmFwaWNnZW4gW2NvbW1hbmRdIFtvcHRpb25zXQoKT3B0aW9uczoKICAtdnwtLXZlcmJvc2UgICAgICAgU2hvdyB2ZXJib3NlIG91dHB1dAogIC0/fC1ofC0taGVscCAgICAgICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBjc2hhcnAgICAgICAgICAgICAgR2VuZXJhdGUgQyMgQVBJIGNsaWVudHMKICBqbWV0ZXIgICAgICAgICAgICAgR2VuZXJhdGUgQXBhY2hlIEpNZXRlciB0ZXN0IHBsYW5zCiAgb3BlbmFwaS1nZW5lcmF0b3IgIEdlbmVyYXRlIGNvZGUgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjguMCkuCiAgICAgICAgICAgICAgICAgICAgIFNlZSBzdXBwb3J0ZWQgZ2VuZXJhdG9ycyBhdCBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzLwogIHR5cGVzY3JpcHQgICAgICAgICBHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnRzCgpSdW4gJ3JhcGljZ2VuIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KYGBgCgpTb21lIGhlbHAgaW5mb3JtYXRpb24gaXMgYWxzbyBwcm92aWRlZCBwZXIgY29tbWFuZCBhbmQgY2FuIGJlIGxhdW5jaGVkIGJ5IAoKYGBgCnJhcGljZ2VuIFtjb21tYW5kIG5hbWVdIC0/CmBgYAoKb3IKCmBgYApyYXBpY2dlbiBbY29tbWFuZCBuYW1lXSBbc3ViIGNvbW1hbmQgbmFtZV0gLT8KYGBgCgpGb3IgZXhhbXBsZToKCmBgYApyYXBpY2dlbiBjc2hhcnAgLT8KYGBgIAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBDIyBBUEkgY2xpZW50cwoKVXNhZ2U6IHJhcGljZ2VuIGNzaGFycCBbY29tbWFuZF0gW29wdGlvbnNdCgpPcHRpb25zOgogIC0/fC1ofC0taGVscCAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgoKQ29tbWFuZHM6CiAgYXV0b3Jlc3QgICAgICBBdXRvUmVzdCAodjMuMC4wLWJldGEuMjAyMTA1MDQuMikKICBraW90YSAgICAgICAgIE1pY3Jvc29mdCBLaW90YSAodjEuMTguMCkKICBuc3dhZyAgICAgICAgIE5Td2FnICh2MTQuMS4wKQogIG9wZW5hcGkgICAgICAgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjguMCkKICByZWZpdHRlciAgICAgIFJlZml0dGVyICh2MS4zLjApCiAgc3dhZ2dlciAgICAgICBTd2FnZ2VyIENvZGVnZW4gQ0xJICh2My4wLjM0KQoKUnVuICdjc2hhcnAgW2NvbW1hbmRdIC0/fC1ofC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLgoKYGBgCgphbmQKCmBgYApyYXBpY2dlbiBjc2hhcnAgYXV0b3Jlc3QgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFN3YWdnZXIgLyBPcGVuIEFQSSBjbGllbnQgdXNpbmcgQXV0b1Jlc3QKClVzYWdlOiBydW4gYXV0b3Jlc3QgW29wdGlvbnNdIDxzd2FnZ2VyRmlsZT4gPG5hbWVzcGFjZT4gPG91dHB1dEZpbGU+CgpBcmd1bWVudHM6CiAgc3dhZ2dlckZpbGUgICBQYXRoIHRvIHRoZSBTd2FnZ2VyIC8gT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmaWxlCiAgbmFtZXNwYWNlICAgICBEZWZhdWx0IG5hbWVzcGFjZSB0byBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUKICBvdXRwdXRGaWxlICAgIE91dHB1dCBmaWxlbmFtZSB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8uIERlZmF1bHQgaXMgdGhlIHN3YWdnZXJGaWxlIC5jcwoKT3B0aW9uczoKICAtP3wtaHwtLWhlbHAgIFNob3cgaGVscCBpbmZvcm1hdGlvbgpgYGAKCm9yIAoKYGBgCnJhcGljZ2VuIHR5cGVzY3JpcHQgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFR5cGVTY3JpcHQgQVBJIGNsaWVudAoKVXNhZ2U6IHJhcGljZ2VuIHR5cGVzY3JpcHQgW29wdGlvbnNdIDxnZW5lcmF0b3I+IDxzd2FnZ2VyRmlsZT4gPG91dHB1dFBhdGg+CgpBcmd1bWVudHM6CiAgZ2VuZXJhdG9yICAgICAgICAgVGhlIHRlY2ggc3RhY2sgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGNsaWVudCBsaWJyYXJ5CiAgICAgICAgICAgICAgICAgICAgQWxsb3dlZCB2YWx1ZXMgYXJlOiBBbmd1bGFyLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgSlF1ZXJ5LCBOZXN0SlMsIE5vZGUsIFJlZHV4UXVlcnksCiAgICAgICAgICAgICAgICAgICAgUnhqcy4KICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlIGlzOiBBbmd1bGFyLgogIHN3YWdnZXJGaWxlICAgICAgIFBhdGggdG8gdGhlIFN3YWdnZXIgLyBPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIGZpbGUKICBvdXRwdXRQYXRoICAgICAgICBPdXRwdXQgZm9sZGVyIHRvIHdyaXRlIHRoZSBnZW5lcmF0ZWQgY29kZSB0bwogICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWUgaXM6IHR5cGVzY3JpcHQtZ2VuZXJhdGVkLWNvZGUuCgpPcHRpb25zOgogIC1ubHwtLW5vLWxvZ2dpbmcgIERpc2FibGVzIEFuYWx5dGljcyBhbmQgRXJyb3IgUmVwb3J0aW5nCiAgLT98LWh8LS1oZWxwICAgICAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgpgYGAKCiMjIFVzYWdlIEV4YW1wbGVzOgoKTGV0J3Mgc2F5IHdlIGhhdmUgYSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIGRvY3VtZW50IGNhbGxlZCAqKlN3YWdnZXIuanNvbioqCgpGb3Igc3RhcnRlcnMsIHdlIGNhbiB1c2UgdGhlIFN3YWdnZXIgUGV0c3RvcmUgc3BlYy4gSGVyZSdzIGFuIGV4YW1wbGUgcG93ZXJzaGVsbCBzY3JpcHQgZm9yIGRvd25sb2FkaW5nIGl0CgpgYGAKSW52b2tlLVdlYlJlcXVlc3QgLVVyaSBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjMvc3dhZ2dlci5qc29uIC1PdXRGaWxlIFN3YWdnZXIuanNvbgpgYGAKCkluIGNhc2UgeW91IGRvbid0IGhhdmUgdGhlIENMSSB0b29sIGluc3RhbGxlZCB5b3UgY2FuIGluc3RhbGwgaXQgYnkKCmBgYApkb3RuZXQgdG9vbCBpbnN0YWxsIC0tZ2xvYmFsIHJhcGljZ2VuCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipBdXRvUmVzdCoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGF1dG9yZXN0IFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vQXV0b1Jlc3RPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKktpb3RhKioKCmBgYApyYXBpY2dlbiBjc2hhcnAga2lvdGEgU3dhZ2dlci5qc29uIEdlbmVyYXRlZENvZGUgLi9PcGVuQXBpT3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipOU3dhZyoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIG5zd2FnIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vTlN3YWdPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBzd2FnZ2VyIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vU3dhZ2dlck91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqT3BlbkFQSSBHZW5lcmF0b3IqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBvcGVuYXBpIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vT3BlbkFwaU91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlICoqSk1ldGVyKiogdGVzdCBwbGFucwoKYGBgCnJhcGljZ2VuIGptZXRlciBTd2FnZ2VyLmpzb24KYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSBmb3IgKipUeXBlU2NyaXB0KioKCmBgYApyYXBpY2dlbiB0eXBlc2NyaXB0IEFuZ3VsYXIgU3dhZ2dlci5qc29uCmBgYAoKIwoKRm9yIHRpcHMgYW5kIHRyaWNrcyBvbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IFtteSBibG9nXShodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbSkKCklmIHlvdSBmaW5kIHRoaXMgdXNlZnVsIGFuZCBmZWVsIGEgYml0IGdlbmVyb3VzIHRoZW4gZmVlbCBmcmVlIHRvIFtidXkgbWUgYSBjb2ZmZWUg4piVXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQoK
- readmeEtag: '"1a6028b4494f49627c6846dd8c00da56e7d2274b"'
- readmeLastModified: Sat, 21 Sep 2024 15:09:48 GMT
+ WyFbQnVpbGQgc3RhdHVzXShodHRwczovL2NpLmFwcHZleW9yLmNvbS9hcGkvcHJvamVjdHMvc3RhdHVzL2diMmRvZTN0Z3dqdDQ3Y24vYnJhbmNoL21hc3Rlcj9zdmc9dHJ1ZSldKGh0dHBzOi8vY2kuYXBwdmV5b3IuY29tL3Byb2plY3QvY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9icmFuY2gvbWFzdGVyKQohW0NMSSBUb29sXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi93b3JrZmxvd3MvQ0xJJTIwVG9vbC9iYWRnZS5zdmcpCiFbVlNJWF0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTSVgvYmFkZ2Uuc3ZnKQohW1ZTIE1hY10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1ZTJTIwTWFjL2JhZGdlLnN2ZykKIVtTbW9rZSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vd29ya2Zsb3dzL1Ntb2tlJTIwVGVzdHMvYmFkZ2Uuc3ZnKQoKWyFbTWFpbnRhaW5hYmlsaXR5IFJhdGluZ10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9c3FhbGVfcmF0aW5nKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtSZWxpYWJpbGl0eSBSYXRpbmddKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPXJlbGlhYmlsaXR5X3JhdGluZyldKGh0dHBzOi8vc29uYXJjbG91ZC5pby9kYXNoYm9hcmQ/aWQ9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbikKWyFbU2VjdXJpdHkgUmF0aW5nXShodHRwczovL3NvbmFyY2xvdWQuaW8vYXBpL3Byb2plY3RfYmFkZ2VzL21lYXN1cmU/cHJvamVjdD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuJm1ldHJpYz1zZWN1cml0eV9yYXRpbmcpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW0J1Z3NdKGh0dHBzOi8vc29uYXJjbG91ZC5pby9hcGkvcHJvamVjdF9iYWRnZXMvbWVhc3VyZT9wcm9qZWN0PWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4mbWV0cmljPWJ1Z3MpXShodHRwczovL3NvbmFyY2xvdWQuaW8vZGFzaGJvYXJkP2lkPWNocmlzdGlhbmhlbGxlX2FwaWNsaWVudGNvZGVnZW4pClshW1Z1bG5lcmFiaWxpdGllc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9dnVsbmVyYWJpbGl0aWVzKV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2Rhc2hib2FyZD9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb2RlIFNtZWxsc10oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y29kZV9zbWVsbHMpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQpbIVtDb3ZlcmFnZV0oaHR0cHM6Ly9zb25hcmNsb3VkLmlvL2FwaS9wcm9qZWN0X2JhZGdlcy9tZWFzdXJlP3Byb2plY3Q9Y2hyaXN0aWFuaGVsbGVfYXBpY2xpZW50Y29kZWdlbiZtZXRyaWM9Y292ZXJhZ2UpXShodHRwczovL3NvbmFyY2xvdWQuaW8vc3VtbWFyeS9uZXdfY29kZT9pZD1jaHJpc3RpYW5oZWxsZV9hcGljbGllbnRjb2RlZ2VuKQoKWyFbVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby92aXN1YWwtc3R1ZGlvLW1hcmtldHBsYWNlL3YvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMj9sYWJlbD1NYXJrZXRwbGFjZSldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3I/bGFiZWw9VlMlMjAyMDE5KV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yKV0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQVBJQ2xpZW50Q29kZUdlbmVyYXRvcikKWyFbRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2UvZC9DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyP2xhYmVsPVZTJTIwMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKSAKWyFbUmF0aW5nXShodHRwczovL2ltZy5zaGllbGRzLmlvL3Zpc3VhbC1zdHVkaW8tbWFya2V0cGxhY2Uvc3RhcnMvQ2hyaXN0aWFuUmVzbWFIZWxsZS5BcGlDbGllbnRDb2RlR2VuZXJhdG9yMjAyMildKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFQSUNsaWVudENvZGVHZW5lcmF0b3IyMDIyKQpbIVtOdUdldF0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9udWdldC9kdC9yYXBpY2dlbi5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUmbGFiZWw9bnVnZXQpXShodHRwOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikKClshW2J1eW1lYWNvZmZlZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9idXklMjBtZSUyMGElMjBjb2ZmZWUtZG9uYXRlLXllbGxvdy5zdmcpXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQpbIVtKb2luIHRoZSBjaGF0IGF0IGh0dHBzOi8vZ2l0dGVyLmltL2FwaWNsaWVudGNvZGVnZW4vY29tbXVuaXR5XShodHRwczovL2JhZGdlcy5naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHkuc3ZnKV0oaHR0cHM6Ly9naXR0ZXIuaW0vYXBpY2xpZW50Y29kZWdlbi9jb21tdW5pdHk/dXRtX3NvdXJjZT1iYWRnZSZ1dG1fbWVkaXVtPWJhZGdlJnV0bV9jYW1wYWlnbj1wci1iYWRnZSZ1dG1fY29udGVudD1iYWRnZSkKCiMgUkVTVCBBUEkgQ2xpZW50IENvZGUgR2VuZXJhdG9yCgpBIGNvbGxlY3Rpb24gb2YgVmlzdWFsIFN0dWRpbyBDIyBjdXN0b20gdG9vbCBjb2RlIGdlbmVyYXRvcnMgZm9yIFN3YWdnZXIgLyBPcGVuQVBJIHNwZWNpZmljYXRpb24gZmlsZXMKCiMjIERvd25sb2FkCgotICoqW1Zpc3VhbCBTdHVkaW8gMjAyMl0oaHR0cHM6Ly9tYXJrZXRwbGFjZS52aXN1YWxzdHVkaW8uY29tL2l0ZW1zP2l0ZW1OYW1lPUNocmlzdGlhblJlc21hSGVsbGUuQXBpQ2xpZW50Q29kZUdlbmVyYXRvcjIwMjIpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTldKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IpKioKLSAqKltWaXN1YWwgU3R1ZGlvIDIwMTddKGh0dHBzOi8vbWFya2V0cGxhY2UudmlzdWFsc3R1ZGlvLmNvbS9pdGVtcz9pdGVtTmFtZT1DaHJpc3RpYW5SZXNtYUhlbGxlLkFwaUNsaWVudENvZGVHZW5lcmF0b3IyMDE3KSoqCi0gKipbVmlzdWFsIFN0dWRpbyBmb3IgTWFjXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvYXBpY2xpZW50Y29kZWdlbi9yZWxlYXNlcy9sYXRlc3QpKiouIEZvbGxvdyAqKlt0aGVzZSBpbnN0cnVjdGlvbnNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpKiogZm9yIHVwZGF0ZSBjb252ZW5pZW5jZSBvbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMKCiMjIEZlYXR1cmVzCgotIFN1cHBvcnRzIFZpc3VhbCBTdHVkaW8gMjAxNywgMjAxOSwgMjAyMiwgYW5kIFtWaXN1YWwgU3R1ZGlvIGZvciBNYWNdKCN2aXN1YWwtc3R1ZGlvLWZvci1tYWMpCi0gQWRkIE5ldyBSRVNUIEFQSSBDbGllbnQgdG8gYSBwcm9qZWN0IGZyb20gYW4gT3BlbkFQSSBzcGVjaWZpY2F0aW9uIFVSTCAoZS5nIDxodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjIvc3dhZ2dlci5qc29uPikgdXNpbmcgdGhlIGZvbGxvd2luZyBjb2RlIGdlbmVyYXRvcnM6CiAgLSBbTlN3YWddKGh0dHBzOi8vZ2l0aHViLmNvbS9SaWNvU3V0ZXIvTlN3YWcpCiAgLSBbT3BlbkFQSSBHZW5lcmF0b3JdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IpCiAgLSBbU3dhZ2dlciBDb2RlZ2VuXShodHRwczovL2dpdGh1Yi5jb20vc3dhZ2dlci1hcGkvc3dhZ2dlci1jb2RlZ2VuKQogIC0gW1JlZml0dGVyXShodHRwczovL2dpdGh1Yi5jb20vY2hyaXN0aWFuaGVsbGUvcmVmaXR0ZXIpCiAgLSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKQogIC0gW0F1dG9SZXN0XShodHRwczovL2dpdGh1Yi5jb20vQXp1cmUvYXV0b3Jlc3QpCi0gRGVmaW5lIGN1c3RvbSBuYW1lc3BhY2UgZm9yIHRoZSBnZW5lcmF0ZWQgZmlsZQotIEF1dG8tdXBkYXRpbmcgb2YgZ2VuZXJhdGVkIGNvZGUgZmlsZSB3aGVuIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIE9wZW5BUEkgc3BlY2lmaWNhdGlvbiBKU09OIG9yIFlBTUwgZmlsZQotIEdlbmVyYXRlIGNvZGUgdXNpbmcgYSBjb25maWd1cmF0aW9uIGZpbGVzIHVzaW5nIHRoZSBmb2xsb3dpbmc6CiAgLSBgLm5zd2FnYCBjb25maWd1cmF0aW9uIGZpbGVzIGZyb20gW05Td2FnU3R1ZGlvXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pIGJ5IGluY2x1ZGluZyBpdCBpbiB0aGUgcHJvamVjdCBhbmQgdXNpbmcgdGhlICoqR2VuZXJhdGUgTlN3YWcgU3R1ZGlvIG91dHB1dCoqIGNvbnRleHQgbWVudQogIC0gYC5yZWZpdHRlcmAgc2V0dGluZ3MgZmlsZXMgZnJvbSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYnkgaW5jbHVkaW5nIGl0IGluIHRoZSBwcm9qZWN0IGFuZCB1c2luZyB0aGUgKipHZW5lcmF0ZSBSZWZpdHRlciBvdXRwdXQqKiBjb250ZXh0IG1lbnUKICAtIGBraW90YS1sb2NrLmpzb25gIGNvbmZpZ3VyYXRpb24gZmlsZXMgZnJvbSBbTWljcm9zb2Z0IEtpb3RhXShodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L2tpb3RhKSBieSBpbmNsdWRpbmcgaXQgaW4gdGhlIHByb2plY3QgYW5kIHVzaW5nIHRoZSAqKkdlbmVyYXRlIEtpb3RhIG91dHB1dCoqIGNvbnRleHQgbWVudQoKIyMjIEN1c3RvbSBUb29scwoKQ3VzdG9tIHRvb2xzIGxldCB5b3UgYXNzb2NpYXRlIGEgdG9vbCB3aXRoIGFuIGl0ZW0gaW4gYSBwcm9qZWN0IGFuZCBydW4gdGhhdCB0b29sIHdoZW5ldmVyIHRoZSBmaWxlIGlzIHNhdmVkCgotICoqKk5Td2FnQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyB0aGUgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKSAqKnYxNC4xLjAqKgoKLSAqKipPcGVuQXBpQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCB1c2luZyAqKltPcGVuQVBJIEdlbmVyYXRvciB2Ny44LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuQVBJVG9vbHMvb3BlbmFwaS1nZW5lcmF0b3IvcmVsZWFzZXMvdGFnL3Y3LjguMCkqKi4KVGhlIG91dHB1dCBmaWxlIGlzIHRoZSByZXN1bHQgb2YgbWVyZ2luZyBhbGwgdGhlIGZpbGVzIGdlbmVyYXRlZCB1c2luZyB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWcgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYC4gSXQgaXMgcG9zc2libGUgdG8gY29uZmlndXJlIHRoZSBPcGVuQVBJIEdlbmVyYXRvciB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcyB3aGljaCB3aWxsIGJlIHBsYWNlZCBhdCB0aGUgc2FtZSBwYXRoIGFzIHRoZSBPcGVuQVBJIHNwZWNpZmljYXRpb25zIGRvY3VtZW50IHRoYXQgd2FzIHVzZWQgdG8gZ2VuZXJhdGUgY29kZSwgdGhpcyBpcyBkb25lIHVuZGVyIFRvb2xzIC0+IFJFU1QgQVBJIENsaWVudCBDb2RlIEdlbmVyYXRvciAtPiBPcGVuQVBJIEdlbmVyYXRvciBhbmQgc2V0dGluZyAqKkdlbmVyYXRlIE11bHRpcGxlIEZpbGVzKiogdG8gKip0cnVlKioKCi0gKioqS2lvdGFDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nIHRoZSBNaWNyb3NvZnQgcHJvamVjdCAqKltLaW90YSB2MS4xOC4wXShodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvb3BlbmFwaS9raW90YS8pKiogZ2VuZXJhdG9yLiBUaGUgb3V0cHV0IGZpbGUgaXMgdGhlIHJlc3VsdCBvZiBtZXJnaW5nIGFsbCB0aGUgZmlsZXMgZ2VuZXJhdGVkIHVzaW5nIHRoZSBLaW90YSBkb3RuZXQgdG9vbCB3aXRoOiBgZ2VuZXJhdGUgLWwgQ1NoYXJwIC1kIFtzd2FnZ2VyIGZpbGVdIC1vIFtvdXRwdXQgZmlsZV0gLW4gW2RlZmF1bHQgbmFtZXNwYWNlXWAuIEl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgT3BlbkFQSSBHZW5lcmF0b3IgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgZmlsZXMgd2hpY2ggd2lsbCBiZSBwbGFjZWQgYXQgdGhlIHNhbWUgcGF0aCBhcyB0aGUgT3BlbkFQSSBzcGVjaWZpY2F0aW9ucyBkb2N1bWVudCB0aGF0IHdhcyB1c2VkIHRvIGdlbmVyYXRlIGNvZGUsIHRoaXMgaXMgZG9uZSB1bmRlciBUb29scyAtPiBSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IgLT4gS2lvdGEgYW5kIHNldHRpbmcgKipHZW5lcmF0ZSBNdWx0aXBsZSBGaWxlcyoqIHRvICoqdHJ1ZSoqCgotICoqKlN3YWdnZXJDb2RlR2VuZXJhdG9yKioqIC0gR2VuZXJhdGVzIGEgc2luZ2xlIGZpbGUgQyMgUkVTVCBBUEkgQ2xpZW50IHVzaW5nICoqU3dhZ2dlciBDb2RlZ2VuIENMSSB2My4wLjM0KiouClRoZSBvdXRwdXQgZmlsZSBpcyB0aGUgcmVzdWx0IG9mIG1lcmdpbmcgYWxsIHRoZSBmaWxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhlIFN3YWdnZXIgQ29kZWdlbiBDTEkgdG9vbCB3aXRoOgpgZ2VuZXJhdGUgLWwgY3NoYXJwIC0taW5wdXQtc3BlYyBbc3dhZ2dlciBmaWxlXSAtLW91dHB1dCBbb3V0cHV0IGZpbGVdIC1EYXBpVGVzdHM9ZmFsc2UgLURtb2RlbFRlc3RzPWZhbHNlIC1EcGFja2FnZU5hbWU9W2RlZmF1bHQgbmFtZXNwYWNlXSAtLXNraXAtb3ZlcndyaXRlYAoKLSAqKipBdXRvUmVzdENvZGVHZW5lcmF0b3IqKiogLSBHZW5lcmF0ZXMgYSBzaW5nbGUgZmlsZSBDIyBSRVNUIEFQSSBDbGllbnQgdXNpbmcgKipBdXRvUmVzdCB2My4wLjAtYmV0YS4yMDIxMDUwNC4yKiogZm9yIE9wZW5BUEkgdjMgYW5kICoqQXV0b1Jlc3QgdjIuMC40NDE3KiogZm9yIE9wZW5BUEkgdjIuIFRoZSByZXN1bHRpbmcgZmlsZSBpcyB0aGUgZXF1aXZhbGVudCBvZiB1c2luZyB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgd2l0aDoKIGAtLWNzaGFycCAtLWlucHV0LWZpbGU9W3N3YWdnZXIgZmlsZV0gLS1vdXRwdXQtZmlsZT1bb3V0cHV0IGZpbGVdIC0tbmFtZXNwYWNlPVtkZWZhdWx0IG5hbWVzcGFjZV0gLS1hZGQtY3JlZGVudGlhbHNgCgotICoqKlJlZml0dGVyQ29kZUdlbmVyYXRvcioqKiAtIEdlbmVyYXRlcyBhIHNpbmdsZSBmaWxlIEMjIFJFU1QgQVBJIENsaWVudCBpbnRlZmFjZSBmb3IgW1JlZml0XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RpdmV1aS9yZWZpdCkgdXNpbmcgW1JlZml0dGVyLkNvcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZWZpdHRlci5Db3JlLykgKip2MS4zLjAqKi4KVGhlIG91dHB1dCBmaWxlIGNvbnRhaW5zIGEgUmVmaXQgaW50ZXJmYWNlIGdlbmVyYXRlZCBieSBbUmVmaXR0ZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3RpYW5oZWxsZS9yZWZpdHRlcikgYW5kIGNvbnRyYWN0cyBnZW5lcmF0ZWQgdXNpbmcgW05Td2FnLkNvZGVHZW5lcmF0aW9uLkNTaGFycF0oaHR0cHM6Ly9naXRodWIuY29tL1JTdXRlci9OU3dhZy93aWtpL0NTaGFycENsaWVudEdlbmVyYXRvcikgW251Z2V0IHBhY2thZ2VdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OU3dhZy5Db2RlR2VuZXJhdGlvbi5DU2hhcnAvKQoKIyMjIERlcGVuZGVuY2llcwoKVGhlIGN1c3RvbSB0b29sIGNvZGUgZ2VuZXJhdG9ycyBwaWdneSBiYWNrIG9uIHRvcCBvZiB3ZWxsIGtub3duIE9wZW4gQVBJIGNsaWVudCBjb2RlIGdlbmVyYXRvcnMgbGlrZSAqKkF1dG9SZXN0KiosICoqTlN3YWcqKiwgKipPcGVuQVBJIEdlbmVyYXRvcioqLCAqKk1pY3Jvc29mdCBLaW90YSoqLCAqKlJlZml0dGVyKiosIGFuZCAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKi4gVGhlc2UgdG9vbHMgcmVxdWlyZSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYW5kIHRoZSBbSmF2YSBSdW50aW1lIEVudmlyb25tZW50XShodHRwczovL2phdmEuY29tL2VuL2Rvd25sb2FkL21hbnVhbC5qc3ApIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgZGV2ZWxvcGVycyBtYWNoaW5lLiBBbHRlcm5hdGl2ZSBKYXZhIFNESyBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyB0aGUgW09wZW5KREtdKGh0dHBzOi8vYWRvcHRvcGVuamRrLm5ldCkgd29ya3MgZmluZSB3aXRoIHRoaXMgZXh0ZW5zaW9uLiBCeSBkZWZhdWx0LCB0aGUgcGF0aCB0byAqKmphdmEuZXhlKiogaXMgcmVhZCBmcm9tIHRoZSAqKkpBVkFfSE9NRSoqIGVudmlyb25tZW50IHZhcmlhYmxlLCBidXQgaXMgYWxzbyBjb25maWd1cmFibGUgaW4gdGhlIFNldHRpbmdzIHNjcmVlbi4gRnV0dXJlIHZlcnNpb25zIG9mIHRoZSBleHRlbnNpb24gd2lsbCBpbmNsdWRlIHRoZSBbT3BlbkpES10oaHR0cHM6Ly9hZG9wdG9wZW5qZGsubmV0KSBpbiB0aGUgVlNJWCBwYWNrYWdlCgpUaGUgKipTd2FnZ2VyIENvZGVnZW4gQ0xJKiogYW5kICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBhcmUgZGlzdHJpYnV0ZWQgYXMgSkFSIGZpbGVzIGFuZCBhcmUgZG93bmxvYWRlZCBvbiBkZW1hbmQgYnV0IHJlcXVpcmVzIHRoZSBKYXZhIFNESyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIG1hY2hpbmUuICoqQXV0b1Jlc3QqKiBpcyBpbnN0YWxsZWQgb24tZGVtYW5kIHZpYSBbTlBNXShodHRwczovL3d3dy5ucG1qcy5jb20vZ2V0LW5wbSkgYXMgYSBnbG9iYWwgdG9vbCBhbmQgdXNlcyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uLiAqKk1pY3Jvc29mdCBLaW90YSoqIGlzIGluc3RhbGxlZCBvbi1kZW1hbmQgYXMgYSAuTkVUIFRvb2wgYW5kIHJlcXVpcmVzIC5ORVQgNy4wLiBUaGlzIG1lYW5zIHRoYXQgdXNpbmcgdGhlc2UgY3VzdG9tIHRvb2xzIGhhdmUgYW4gaW5pdGlhbCBkZWxheSB1cG9uIGZpcnN0IHRpbWUgdXNlLiAKCioqTlN3YWdTdHVkaW8qKiBpcyBzdGFuZCBhbG9uZSBVSSB0b29sIGZvciBlZGl0aW5nIGEgKioubnN3YWcqKiBzcGVjaWZpY2F0aW9uIGZpbGUgZm9yIGdlbmVyYXRpbmcgY29kZS4gVGhpcyB0b29sIGlzIG9wdGlvbmFsIHRvIGluc3RhbGwgYW5kIG9mZmljaWFsIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgW05Td2FnIFdpa2kgb24gR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vUmljb1N1dGVyL05Td2FnL3dpa2kvTlN3YWdTdHVkaW8pLiBJZiAqKk5Td2FnU3R1ZGlvKiogaXMgbm90IGluc3RhbGxlZCBvbiB0aGUgbWFjaGluZSB0aGVuIHRoZSBWaXN1YWwgU3R1ZGlvIEV4dGVuc2lvbiB3aWxsIGluc3RhbGwgdGhlICoqTlN3YWcgQ0xJKiogdmlhIFtOUE1dKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9nZXQtbnBtKSBhcyBhIGdsb2JhbCB0b29sIHVzaW5nIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHZlcnNpb24uIAoKVGhlICoqTlN3YWcqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW05ld3RvbnNvZnQuSnNvbl0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL05ld3RvbnNvZnQuSnNvbi8xMy4wLjMpIE51R2V0IHBhY2thZ2UKClRoZSAqKlJlZml0dGVyKiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtSZWZpdF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1JlZml0LzcuMC4wKSBOdUdldCBwYWNrYWdlCgpUaGUgKipPcGVuQVBJIEdlbmVyYXRvcioqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXM6CgotIFtSZXN0U2hhcnBdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9SZXN0U2hhcnAvMTEyLjAuMCkKLSBbSnNvblN1YlR5cGVzXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvSnNvblN1YlR5cGVzLzIuMC4xKQotIFtQb2xseV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1BvbGx5LzguNC4yKQotIFtOZXd0b25zb2Z0Lkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9OZXd0b25zb2Z0Lkpzb24vMTMuMC4zKQoKVGhlIHByb2plY3QgKipLaW90YSoqIGNvZGUgZ2VuZXJhdG9yIHByb2R1Y2VzIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgTnVHZXQgcGFja2FnZXMKCi0gW01pY3Jvc29mdC5LaW90YS5BYnN0cmFjdGlvbnNdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuQWJzdHJhY3Rpb25zKQotIFtNaWNyb3NvZnQuS2lvdGEuSHR0cC5IdHRwQ2xpZW50TGlicmFyeV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5IdHRwLkh0dHBDbGllbnRMaWJyYXJ5KQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Gb3JtXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uRm9ybSkKLSBbTWljcm9zb2Z0Lktpb3RhLlNlcmlhbGl6YXRpb24uVGV4dF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLlRleHQpCi0gW01pY3Jvc29mdC5LaW90YS5TZXJpYWxpemF0aW9uLkpzb25dKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5Kc29uKQotIFtNaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnRdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9NaWNyb3NvZnQuS2lvdGEuU2VyaWFsaXphdGlvbi5NdWx0aXBhcnQpCi0gW01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZV0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL01pY3Jvc29mdC5LaW90YS5BdXRoZW50aWNhdGlvbi5BenVyZSkKLSBbQXp1cmUuSWRlbnRpdHldKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9BenVyZS5JZGVudGl0eSkKClRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBjb2RlIGdlbmVyYXRvciBwcm9kdWNlcyBjb2RlIHRoYXQgZGVwZW5kcyBvbiB0aGUgW1Jlc3RTaGFycF0oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL1Jlc3RTaGFycC8xMDUuMS4wKSBhbmQgW0pzb25TdWJUeXBlc10oaHR0cHM6Ly93d3cubnVnZXQub3JnL3BhY2thZ2VzL0pzb25TdWJUeXBlcy8xLjkuMCkgTnVHZXQgcGFja2FnZXMKClRoZSAqKkF1dG9SZXN0KiogY29kZSBnZW5lcmF0b3IgcHJvZHVjZXMgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhlIFtNaWNyb3NvZnQuUmVzdC5DbGllbnRSdW50aW1lXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTWljcm9zb2Z0LlJlc3QuQ2xpZW50UnVudGltZS8yLjMuMjQpIGFuZCBbTmV3dG9uc29mdC5Kc29uXShodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvTmV3dG9uc29mdC5Kc29uLzEzLjAuMykgTnVHZXQgcGFja2FnZXMKClRoaXMgVmlzdWFsIFN0dWRpbyBFeHRlbnNpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgcmVxdWlyZWQgTnVHZXQgcGFja2FnZXMgdGhhdCB0aGUgZ2VuZXJhdGVkIGNvZGUgZGVwZW5kcyBvbgoKIyMgU2NyZWVuc2hvdHMKCiFbQWRkIC0gQVBJIENsaWVudCBmcm9tIE9wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaW1hZ2VzL2FkZC1uZXctbWVudS5wbmcpCgohW0VudGVyIFVSTCB0byBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy9hZGQtbmV3LWRpYWxvZy5wbmcpCgohW1NvbHV0aW9uIEV4cGxvcmVyIENvbnRleHQgTWVudXNdKGltYWdlcy9zb2x1dGlvbi1leHBsb3Jlci1jb250ZXh0LW1lbnUuanBnKQoKIVtOU3dhZyBTdHVkaW8gQ29udGV4dCBNZW51XShpbWFnZXMvbnN3YWdzdHVkaW8tY29udGV4dC1tZW51LmpwZykKCiFbUmVmaXR0ZXIgQ29udGV4dCBNZW51XShpbWFnZXMvcmVmaXR0ZXItY29tbWFuZC5wbmcpCgohW0tpb3RhIENvbnRleHQgTWVudV0oaW1hZ2VzL2dlbmVyYXRlLWtpb3RhLW91dHB1dC5wbmcpCgojIyMgU2V0dGluZ3MKClRoaXMgZXh0ZW5zaW9uIHdpbGwgYnkgZGVmYXVsdCBtYWtlIHNvbWUgYXNzdW1wdGlvbnMgb24gdGhlIGluc3RhbGxhdGlvbiBwYXRocyBmb3IgKipKYXZhKiosICoqTlN3YWcqKiBhbmQgKipOUE0qKiBidXQgYWxzbyBwcm92aWRlcyBvcHRpb24gcGFnZXMgZm9yIGNvbmZpZ3VyaW5nIHRoaXMuIFRoZSAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKiBhbmQgdGhlICoqT3BlbkFQSSBHZW5lcmF0b3IqKiBKQVIgZmlsZXMgYXJlIGJ5IGRlZmF1bHQgZG93bmxvYWRlZCB0byB0aGUgdXNlciBURU1QIGZvbGRlciBidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRvIHVzZSBleGlzdGluZyBKQVIgZmlsZXMKCiFbT3B0aW9ucyAtIEdlbmVyYWxdKGltYWdlcy9vcHRpb25zLWdlbmVyYWwucG5nKQoKU3VwcG9ydHMgY3VzdG9taXNpbmcgaG93IEF1dG9SZXN0IGdlbmVyYXRlcyBjb2RlIGJhc2VkIG9uIHRoZSBDIyBnZW5lcmF0b3Igc2V0dGluZ3MgdGhhdCB0aGUgQXV0b1Jlc3QgQ0xJIHRvb2wgcHJvdmlkZXMKCiFbT3B0aW9ucyAtIEF1dG9SZXN0XShpbWFnZXMvb3B0aW9ucy1hdXRvcmVzdC5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgTlN3YWcgZ2VuZXJhdGVzIGNvZGUgdXNpbmcgdGhlIHByb3BlcnRpZXMgZXhwb3NlZCBieSB0aGUgTlN3YWcgTnVHZXQgcGFja2FnZQoKIVtPcHRpb25zIC0gTlN3YWddKGltYWdlcy9vcHRpb25zLW5zd2FnLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyB0aGUgKioubnN3YWcqKiBmaWxlIGlzIGdlbmVyYXRlZCB1c2luZyBhIHN1YnNldCBvZiB0aGUgb3B0aW9ucyBhdmFpbGFibGUgaW4gTlN3YWcgU3R1ZGlvCgohW09wdGlvbnMgLSBOU3dhZyBTdHVkaW9dKGltYWdlcy9vcHRpb25zLW5zd2Fnc3R1ZGlvLnBuZykKClN1cHBvcnRzIGN1c3RvbWlzaW5nIGhvdyBPcGVuQVBJIEdlbmVyYXRvciBnZW5lcmF0ZXMgY29kZSB1c2luZyB0aGUgYWRkaXRpb25hbCBvcHRpb25hbCBwcm9wZXJ0aWVzIHRoYXQgdGhlIE9wZW5BUEkgR2VuZXJhdG9yIENMSSB0b29sIHByb3ZpZGVzCgohW09wdGlvbnMgLSBPcGVuQVBJIEdlbmVyYXRvcl0oaW1hZ2VzL29wdGlvbnMtb3BlbmFwaWdlbmVyYXRvci5wbmcpCgpTdXBwb3J0cyBjdXN0b21pc2luZyBob3cgUmVmaXR0ZXIgZ2VuZXJhdGVzIHRoZSBSZWZpdCBpbnRlcmZhY2UuIFRoaXMgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgd2hldGhlciB0byByZXR1cm4gdGhlIHR5cGUgZGlyZWN0bHkgb3Igd3JhcCBpdCBpbnNpZGUgYW4gYElBcGlSZXNwb25zZTxUPmAuIFlvdSBjYW4gYWxzbyBkaXNhYmxlIGdlbmVyYXRpbmcgY29udHJhY3RzIG9yIFhNTCBkb2Mgc3R5bGUgY29tbWVudHMKCiFbT3B0aW9ucyAtIFJlZml0dGVyXShpbWFnZXMvcmVmaXR0ZXItb3B0aW9ucy5wbmcpCgpTdXBwb3J0cyBhbGxvd2luZyBLaW90YSB0byBnZW5lcmF0ZSBtdWx0aXBsZSBmaWxlcwoKIVtPcHRpb25zIC0gS2lvdGFdKGltYWdlcy9vcHRpb25zLWtpb3RhLnBuZykKClRoaXMgZXh0ZW5zaW9uIGNvbGxlY3RzIGVycm9ycyBhbmQgdHJhY2tzIGZlYXR1cmUgdXNhZ2VzIHRvIGEgc2VydmljZSBjYWxsZWQgW0V4Y2VwdGlvbmxlc3NdKGh0dHBzOi8vZXhjZXB0aW9ubGVzcy5jb20pIGFuZCBbQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHNdKGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy9henVyZS9henVyZS1tb25pdG9yL2FwcC9hcHAtaW5zaWdodHMtb3ZlcnZpZXc/V1QubWNfaWQ9RFQtTVZQLTUwMDQ4MjIpLiBUaGlzIGlzIGRvbmUgYW5vbnltb3VzbHkgdXNpbmcgYSBzdXBwb3J0IGtleSBhbmQgYSBnZW5lcmF0ZWQgYW5vbnltb3VzIGlkZW50aXR5IGJhc2VkIG9uIGEgc2VjdXJlIGhhc2ggb2YgdXNlcm5hbWVAaG9zdAoKIVtPcHRpb25zIC0gQW5hbHl0aWNzXShpbWFnZXMvc3VwcG9ydC1rZXkucG5nKQoKIyMjIE1hY09TCgohW0FkZCAtIEFQSSBDbGllbnQgZnJvbSBPcGVuQVBJIFNwZWNpZmljYXRpb25dKGltYWdlcy92c21hYy1hZGQtbmV3LW1lbnUucG5nKQoKIVtFbnRlciBVUkwgdG8gT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShpbWFnZXMvdnNtYWMtYWRkLW5ldy1kaWFsb2cucG5nKQoKIVtTb2x1dGlvbiBFeHBsb3JlciBDb250ZXh0IE1lbnVzXShpbWFnZXMvdnNtYWMtZ2VuZXJhdGUtY29kZS5wbmcpCgohW05Td2FnIFN0dWRpbyBDb250ZXh0IE1lbnVdKGltYWdlcy92c21hYy1uc3dhZy1zdHVkaW8ucG5nKQoKIyBJbnN0YWxsYXRpb24KClRoZSBWaXN1YWwgU3R1ZGlvIGV4dGVuc2lvbiBjYW4gYmUgaW5zdGFsbGVkIGRpcmVjdGx5IGZyb20gVmlzdWFsIFN0dWRpbyAyMDE5IGFuZCAyMDIyIHZpYSB0aGUgKipFeHRlbnNpb25zIERpYWxvZyBCb3gqKi4gVGhlIHByb2Nlc3MgaXMgYmVzdCBkZXNjcmliZWQgaW4gdGhlIG9mZmljaWFsIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGZvciBbTWFuYWdpbmcgZXh0ZW5zaW9ucyBmb3IgVmlzdWFsIFN0dWRpb10oaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvdmlzdWFsc3R1ZGlvL2lkZS9maW5kaW5nLWFuZC11c2luZy12aXN1YWwtc3R1ZGlvLWV4dGVuc2lvbnM/dmlldz12cy0yMDE5JldULm1jX2lkPURULU1WUC01MDA0ODIyKQoKIyMgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCgpUaGlzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGZvciAqKlZpc3VhbCBTdHVkaW8gZm9yIE1hYyoqIGlzIGN1cnJlbnRseSBhIGJpdCB0cm91Ymxlc29tZSBhcyB0aGUgTW9ub0RldmVsb3AgQWRkaW4gUmVwb3NpdG9yeSBpcyBjdXJyZW50bHkgbm90IGFjY2VwdGluZyBuZXcgdXNlcnMgc28gSSBjYW4ndCByZWFsbHkgcmVnaXN0ZXIgYW5kIHNldHVwIG15IGV4dGVuc2lvbi4KClRoZXJlIGFyZSAyIHdheXMgb2YgaW5zdGFsbGluZyBteSBleHRlbnNpb24gb24gVmlzdWFsIFN0dWRpbyBmb3IgTWFjOiBBZGRpbmcgYSBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkgb3IgSW5zdGFsbGluZyB0aGUgKioubXBhY2sqKiBmaWxlIGRpcmVjdGx5IGZyb20gdGhlIEV4dGVuc2lvbnMgTWFuYWdlcgoKIyMjIEFkZGluZyBhIG5ldyBleHRlbnNpb24gcmVwb3NpdG9yeQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86CgotIE9wZW4gdGhlIFZpc3VhbCBTdHVkaW8gZm9yIE1hYyAqKkV4dGVuc2lvbiBNYW5hZ2VyKioKLSBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIFNlbGVjdCB0aGUgKipHYWxsZXJ5KiogVGFiCi0gRXhwYW5kIHRoZSBSZXBvc2l0b3J5IGRyb3AgZG93biBib3ggYW5kIHNlbGVjdCAqKk1hbmFnZSBSZXBvc2l0b3JpZXMqKgoKIVtNYW5hZ2UgUmVwb3NpdG9yaWVzXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1tYW5hZ2UtcmVwb3NpdG9yaWVzLnBuZykKCi0gUHJlc3Mgb24gdGhlICoqQWRkKiogYnV0dG9uIHRvIGFkZCBhIG5ldyBjdXN0b20gZXh0ZW5zaW9uIHJlcG9zaXRvcnkKCiFbTWFuYWdlIFJlcG9zaXRvcmllc10oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtcmVwb3NpdG9yaWVzLnBuZykKCi0gUmVnaXN0ZXIgYW4gb25saW5lIHJlcG9zaXRvcnkgYXQgKipodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbS92c21hYy9tYWluLm1yZXAqKgotIENsaWNrICoqT0sqKgoKIVtBZGQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtYWRkLXJlcG9zaXRvcnkucG5nKQoKLSBOb3cgbXkgZXh0ZW5zaW9uIHJlcG9zaXRvcnkgaXMgYWRkZWQgdG8gdGhlIGxpc3QKLSBNYWtlIHN1cmUgdGhhdCB0aGlzIGlzIGVuYWJsZWQgKGluZGljYXRlZCBieSBhIGNoZWNrIGJveCkKCiFbQWRkIFJlcG9zaXRvcnkgRGlhbG9nXShpbWFnZXMvdnNtYWMtZXh0ZW5zaW9ucy1hZGRlZC1yZXBvc2l0b3J5LnBuZykKCi0gWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBzZWUgbXkgZXh0ZW5zaW9ucyBmcm9tIHRoZSAqKkdhbGxlcnkqKiB0YWIKCiFbQWRkZWQgUmVwb3NpdG9yeV0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtZ2FsbGVyeS5wbmcpCgotIEJ5IGFkZGluZyBteSBleHRlbnNpb24gcmVwb3NpdG9yeSB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNvbnZlbmllbnRseSB1cGRhdGUgbXkgZXh0ZW5zaW9uIHVzaW5nIHRoZSBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgRXh0ZW5zaW9uIE1hbmFnZXIKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGVzLnBuZykKCiFbQWRkIFJlcG9zaXRvcnldKGltYWdlcy92c21hYy11cGRhdGUtaW5zdGFsbC5wbmcpCgohW0FkZCBSZXBvc2l0b3J5XShpbWFnZXMvdnNtYWMtdXBkYXRlLWluc3RhbGwtcHJvZ3Jlc3MucG5nKQoKIyMjIEluc3RhbGxpbmcgdGhlICoqLm1wYWNrKiogZmlsZSBkaXJlY3RseQoKSGVyZSdzIHdoYXQgeW91IG5lZWQgdG8gZG86Ci0gRG93bmxvYWQgdGhlIGxhdGVzdCAqKi5tcGFjayBmaWxlKiogZnJvbSB0aGUgW0xhdGVzdCBHaXRodWIgUmVsZWFzZV0oaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdGlhbmhlbGxlL2FwaWNsaWVudGNvZGVnZW4vcmVsZWFzZXMvbGF0ZXN0KQotIE5vdyBmcm9tIHdpdGhpbiBWaXN1YWwgU3R1ZGlvIGZvciBNYWMgeW91IG5lZWQgdG8gbGF1bmNoIHRoZSAqKkV4dGVuc2lvbnMgRGlhbG9nIEJveCoqLiBZb3UgY2FuIGRvIHRoaXMgZnJvbSB0aGUgbWVudSAqKlZpc3VhbCBTdHVkaW8qKiAtPiAqKkV4dGVudGlvbnMqKgoKIVtPcGVuIEV4dGVuc2lvbnMgRGlhbG9nIEJveF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtbWVudS5wbmcpCgotIENsaWNrIG9uIHRoZSAqKkluc3RhbGwgZnJvbSBGaWxlKiogYnV0dG9uCgohW01hbnVhbGx5IGluc3RhbGwgLm1wYWNrIGZpbGVdKGltYWdlcy92c21hYy1leHRlbnNpb25zLWluc3RhbGwucG5nKQoKLSBCcm93c2UgdG8gdGhlIC5tcGFjayBmaWxlIGFuZCBzZWxlY3QgaXQuIFlvdSB3aWxsIGJlIHByb21wdGVkIHdpdGggYSBjb25maXJtYXRpb24gZGlhbG9nCgohW0NvbmZpcm0gLm1wYWNrIGZpbGUgaW5zdGFsbF0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtaW5zdGFsbC1jb25maXJtLnBuZykKCi0gQ2xpY2sgKipJbnN0YWxsKiogYW5kIHJlc3RhcnQgVmlzdWFsIFN0dWRpbyBmb3IgTWFjCi0gVG8gVmVyaWZ5IHRoYXQgdGhlIEFkZC1pbiB3YXMgaW5zdGFsbGVkIHlvdSBjYW4gcmUtb3BlbiB0aGUgRXh0ZW5zaW9ucyBEaWFsb2cgQm94LCBzZWxlY3QgdGhlICoqSW5zdGFsbGVkKiogdGFiIGFuZCBleHBhbmQgdGhlICoqSURFIEV4dGVuc2lvbnMqKi4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHNlZSB0aGUgKipSRVNUIEFQSSBDbGllbnQgQ29kZSBHZW5lcmF0b3IqKi4KCi0gVW5pbnN0YWxsaW5nIHRoZSBBZGQtaW4gaXMgZG9uZSBpbiB0aGlzIHNhbWUgZGlhbG9nIGJveCBieSBjbGlja2luZyB0aGUgKipVbmluc3RhbGwqKiBidXR0b24KCiFbTWFudWFsbHkgdW5pbnN0YWxsIEFkZC1pbl0oaW1hZ2VzL3ZzbWFjLWV4dGVuc2lvbnMtdW5pbnN0YWxsLnBuZykKCgojIENyb3NzIFBsYXRmb3JtIENvbW1hbmQgTGluZSBUb29sCkFsbCBjdXN0b20gdG9vbHMgbWVudGlvbmVkIGFib3ZlIGFyZSBhbHNvIGltcGxlbWVudGVkIGluIGEgY3Jvc3MgcGxhdGZvcm0gY29tbWFuZCBsaW5lIGFwcGxpY2F0aW9uCgojIyMjIFJlcXVpcmVtZW50cwotIC5ORVQgNi4wIHJ1bnRpbWUKLSBKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQKLSBOUE0KCiMjIyBJbnN0YWxsYXRpb24KVGhlIHRvb2wgY2FuIGJlIGluc3RhbGxlZCBhcyBhIC5ORVQgQ29yZSBnbG9iYWwgdG9vbCB0aGF0IHlvdSBjYW4gY2FsbCBmcm9tIHRoZSBzaGVsbCAvIGNvbW1hbmQgbGluZQpgYGAKZG90bmV0IHRvb2wgaW5zdGFsbCAtLWdsb2JhbCByYXBpY2dlbgpgYGAKb3IgYnkgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgW2hlcmVdKGh0dHBzOi8vd3d3Lm51Z2V0Lm9yZy9wYWNrYWdlcy9yYXBpY2dlbikgdG8gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdG9vbAoKIyMjIFVzYWdlClNpbmNlIHRoZSB0b29sIGlzIHB1Ymxpc2hlZCBhcyBhIC5ORVQgQ29yZSBUb29sLCBpdCBjYW4gYmUgbGF1bmNoZWQgZnJvbSBhbnl3aGVyZSB1c2luZyBhbnkgY29tbWFuZCBsaW5lIGludGVyZmFjZSBieSBjYWxsaW5nICoqcmFwaWNnZW4qKi4KVGhlIGhlbHAgaW5mb3JtYXRpb24gaXMgZGlzcGxheWVkIHdoZW4gbm90IHNwZWNpZnlpbmcgYW55IGFyZ3VtZW50cyB0byAqKnJhcGljZ2VuKioKCmBgYApVc2FnZTogcmFwaWNnZW4gW2NvbW1hbmRdIFtvcHRpb25zXQoKT3B0aW9uczoKICAtdnwtLXZlcmJvc2UgICAgICAgU2hvdyB2ZXJib3NlIG91dHB1dAogIC0/fC1ofC0taGVscCAgICAgICBTaG93IGhlbHAgaW5mb3JtYXRpb24uCgpDb21tYW5kczoKICBjc2hhcnAgICAgICAgICAgICAgR2VuZXJhdGUgQyMgQVBJIGNsaWVudHMKICBqbWV0ZXIgICAgICAgICAgICAgR2VuZXJhdGUgQXBhY2hlIEpNZXRlciB0ZXN0IHBsYW5zCiAgb3BlbmFwaS1nZW5lcmF0b3IgIEdlbmVyYXRlIGNvZGUgdXNpbmcgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjguMCkuCiAgICAgICAgICAgICAgICAgICAgIFNlZSBzdXBwb3J0ZWQgZ2VuZXJhdG9ycyBhdCBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gvZG9jcy9nZW5lcmF0b3JzLwogIHR5cGVzY3JpcHQgICAgICAgICBHZW5lcmF0ZSBUeXBlU2NyaXB0IEFQSSBjbGllbnRzCgpSdW4gJ3JhcGljZ2VuIFtjb21tYW5kXSAtP3wtaHwtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC4KYGBgCgpTb21lIGhlbHAgaW5mb3JtYXRpb24gaXMgYWxzbyBwcm92aWRlZCBwZXIgY29tbWFuZCBhbmQgY2FuIGJlIGxhdW5jaGVkIGJ5IAoKYGBgCnJhcGljZ2VuIFtjb21tYW5kIG5hbWVdIC0/CmBgYAoKb3IKCmBgYApyYXBpY2dlbiBbY29tbWFuZCBuYW1lXSBbc3ViIGNvbW1hbmQgbmFtZV0gLT8KYGBgCgpGb3IgZXhhbXBsZToKCmBgYApyYXBpY2dlbiBjc2hhcnAgLT8KYGBgIAoKd2lsbCBvdXRwdXQgdGhpczoKCmBgYApHZW5lcmF0ZSBDIyBBUEkgY2xpZW50cwoKVXNhZ2U6IHJhcGljZ2VuIGNzaGFycCBbY29tbWFuZF0gW29wdGlvbnNdCgpPcHRpb25zOgogIC0/fC1ofC0taGVscCAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgoKQ29tbWFuZHM6CiAgYXV0b3Jlc3QgICAgICBBdXRvUmVzdCAodjMuMC4wLWJldGEuMjAyMTA1MDQuMikKICBraW90YSAgICAgICAgIE1pY3Jvc29mdCBLaW90YSAodjEuMTguMCkKICBuc3dhZyAgICAgICAgIE5Td2FnICh2MTQuMS4wKQogIG9wZW5hcGkgICAgICAgT3BlbkFQSSBHZW5lcmF0b3IgKHY3LjguMCkKICByZWZpdHRlciAgICAgIFJlZml0dGVyICh2MS4zLjApCiAgc3dhZ2dlciAgICAgICBTd2FnZ2VyIENvZGVnZW4gQ0xJICh2My4wLjM0KQoKUnVuICdjc2hhcnAgW2NvbW1hbmRdIC0/fC1ofC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLgoKYGBgCgphbmQKCmBgYApyYXBpY2dlbiBjc2hhcnAgYXV0b3Jlc3QgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFN3YWdnZXIgLyBPcGVuIEFQSSBjbGllbnQgdXNpbmcgQXV0b1Jlc3QKClVzYWdlOiBydW4gYXV0b3Jlc3QgW29wdGlvbnNdIDxzd2FnZ2VyRmlsZT4gPG5hbWVzcGFjZT4gPG91dHB1dEZpbGU+CgpBcmd1bWVudHM6CiAgc3dhZ2dlckZpbGUgICBQYXRoIHRvIHRoZSBTd2FnZ2VyIC8gT3BlbiBBUEkgc3BlY2lmaWNhdGlvbiBmaWxlCiAgbmFtZXNwYWNlICAgICBEZWZhdWx0IG5hbWVzcGFjZSB0byBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUKICBvdXRwdXRGaWxlICAgIE91dHB1dCBmaWxlbmFtZSB0byB3cml0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgdG8uIERlZmF1bHQgaXMgdGhlIHN3YWdnZXJGaWxlIC5jcwoKT3B0aW9uczoKICAtP3wtaHwtLWhlbHAgIFNob3cgaGVscCBpbmZvcm1hdGlvbgpgYGAKCm9yIAoKYGBgCnJhcGljZ2VuIHR5cGVzY3JpcHQgLT8KYGBgCgp3aWxsIG91dHB1dCB0aGlzOgoKYGBgCkdlbmVyYXRlIFR5cGVTY3JpcHQgQVBJIGNsaWVudAoKVXNhZ2U6IHJhcGljZ2VuIHR5cGVzY3JpcHQgW29wdGlvbnNdIDxnZW5lcmF0b3I+IDxzd2FnZ2VyRmlsZT4gPG91dHB1dFBhdGg+CgpBcmd1bWVudHM6CiAgZ2VuZXJhdG9yICAgICAgICAgVGhlIHRlY2ggc3RhY2sgdG8gdXNlIGZvciB0aGUgZ2VuZXJhdGVkIGNsaWVudCBsaWJyYXJ5CiAgICAgICAgICAgICAgICAgICAgQWxsb3dlZCB2YWx1ZXMgYXJlOiBBbmd1bGFyLCBBdXJlbGlhLCBBeGlvcywgRmV0Y2gsIEludmVyc2lmeSwgSlF1ZXJ5LCBOZXN0SlMsIE5vZGUsIFJlZHV4UXVlcnksCiAgICAgICAgICAgICAgICAgICAgUnhqcy4KICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHZhbHVlIGlzOiBBbmd1bGFyLgogIHN3YWdnZXJGaWxlICAgICAgIFBhdGggdG8gdGhlIFN3YWdnZXIgLyBPcGVuIEFQSSBzcGVjaWZpY2F0aW9uIGZpbGUKICBvdXRwdXRQYXRoICAgICAgICBPdXRwdXQgZm9sZGVyIHRvIHdyaXRlIHRoZSBnZW5lcmF0ZWQgY29kZSB0bwogICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWUgaXM6IHR5cGVzY3JpcHQtZ2VuZXJhdGVkLWNvZGUuCgpPcHRpb25zOgogIC1ubHwtLW5vLWxvZ2dpbmcgIERpc2FibGVzIEFuYWx5dGljcyBhbmQgRXJyb3IgUmVwb3J0aW5nCiAgLT98LWh8LS1oZWxwICAgICAgU2hvdyBoZWxwIGluZm9ybWF0aW9uLgpgYGAKCiMjIFVzYWdlIEV4YW1wbGVzOgoKTGV0J3Mgc2F5IHdlIGhhdmUgYSBPcGVuQVBJIFNwZWNpZmljYXRpb25zIGRvY3VtZW50IGNhbGxlZCAqKlN3YWdnZXIuanNvbioqCgpGb3Igc3RhcnRlcnMsIHdlIGNhbiB1c2UgdGhlIFN3YWdnZXIgUGV0c3RvcmUgc3BlYy4gSGVyZSdzIGFuIGV4YW1wbGUgcG93ZXJzaGVsbCBzY3JpcHQgZm9yIGRvd25sb2FkaW5nIGl0CgpgYGAKSW52b2tlLVdlYlJlcXVlc3QgLVVyaSBodHRwczovL3BldHN0b3JlLnN3YWdnZXIuaW8vdjMvc3dhZ2dlci5qc29uIC1PdXRGaWxlIFN3YWdnZXIuanNvbgpgYGAKCkluIGNhc2UgeW91IGRvbid0IGhhdmUgdGhlIENMSSB0b29sIGluc3RhbGxlZCB5b3UgY2FuIGluc3RhbGwgaXQgYnkKCmBgYApkb3RuZXQgdG9vbCBpbnN0YWxsIC0tZ2xvYmFsIHJhcGljZ2VuCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipBdXRvUmVzdCoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIGF1dG9yZXN0IFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vQXV0b1Jlc3RPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKktpb3RhKioKCmBgYApyYXBpY2dlbiBjc2hhcnAga2lvdGEgU3dhZ2dlci5qc29uIEdlbmVyYXRlZENvZGUgLi9PcGVuQXBpT3V0cHV0LmNzCmBgYAoKSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdlbmVyYXRlIGNvZGUgdXNpbmcgKipOU3dhZyoqCgpgYGAKcmFwaWNnZW4gY3NoYXJwIG5zd2FnIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vTlN3YWdPdXRwdXQuY3MKYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSB1c2luZyAqKlN3YWdnZXIgQ29kZWdlbiBDTEkqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBzd2FnZ2VyIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vU3dhZ2dlck91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlIHVzaW5nICoqT3BlbkFQSSBHZW5lcmF0b3IqKgoKYGBgCnJhcGljZ2VuIGNzaGFycCBvcGVuYXBpIFN3YWdnZXIuanNvbiBHZW5lcmF0ZWRDb2RlIC4vT3BlbkFwaU91dHB1dC5jcwpgYGAKCkhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBnZW5lcmF0ZSBjb2RlICoqSk1ldGVyKiogdGVzdCBwbGFucwoKYGBgCnJhcGljZ2VuIGptZXRlciBTd2FnZ2VyLmpzb24KYGBgCgpIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gZ2VuZXJhdGUgY29kZSBmb3IgKipUeXBlU2NyaXB0KioKCmBgYApyYXBpY2dlbiB0eXBlc2NyaXB0IEFuZ3VsYXIgU3dhZ2dlci5qc29uCmBgYAoKIwoKRm9yIHRpcHMgYW5kIHRyaWNrcyBvbiBzb2Z0d2FyZSBkZXZlbG9wbWVudCwgY2hlY2sgb3V0IFtteSBibG9nXShodHRwczovL2NocmlzdGlhbmhlbGxlLmNvbSkKCklmIHlvdSBmaW5kIHRoaXMgdXNlZnVsIGFuZCBmZWVsIGEgYml0IGdlbmVyb3VzIHRoZW4gZmVlbCBmcmVlIHRvIFtidXkgbWUgYSBjb2ZmZWUg4piVXShodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2NocmlzdGlhbmhlbGxlKQoK
+ readmeEtag: '"7063ee8fed38c171ebe5aa7f81f4075c8179d249"'
+ readmeLastModified: Fri, 27 Sep 2024 10:41:02 GMT
repositoryId: 166226127
description: >-
A collection of Visual Studio custom tool code generators for Swagger /
OpenAPI specification files
created: '2019-01-17T12:58:50Z'
- updated: '2024-09-26T08:27:43Z'
+ updated: '2024-09-27T10:41:06Z'
language: C#
archived: false
stars: 177
@@ -10048,8 +10048,8 @@
owner: christianhelle
logo: https://avatars.githubusercontent.com/u/710400?v=4
license: GPL-3.0
- repoEtag: '"3ac20645daa19651705998c167b6dd5d18642887e63ee5f05e9a38a5e08aee2e"'
- repoLastModified: Thu, 26 Sep 2024 08:27:43 GMT
+ repoEtag: '"59c32090199af92e2b3a0c6f7394c2cbe6c92535c60b7eb8b07cda8f8cafd956"'
+ repoLastModified: Fri, 27 Sep 2024 10:41:06 GMT
category: SDK
foundInMaster: true
- source: openapi3 tags
@@ -10307,11 +10307,11 @@
archived: true
stars: 131
watchers: 10
- forks: 21
+ forks: 22
owner: cebe
logo: https://avatars.githubusercontent.com/u/189796?v=4
license: MIT
- repoEtag: '"bf1d95a7414beac0e9e933ac41ab632f61255b247b841d3f3e6294fe68a7404e"'
+ repoEtag: '"f6c8cbbb4fd977a9702306015325d746cc7e0a724dc04429f66c3b4657fb49d1"'
repoLastModified: Tue, 16 Jul 2024 20:11:58 GMT
foundInMaster: true
category: Parsers
@@ -10328,17 +10328,17 @@
repositoryId: 691100358
description: Actix-web wrapper for automatic OpenAPI 3.0 documentation generation.
created: '2023-09-13T13:54:51Z'
- updated: '2024-09-25T06:29:12Z'
+ updated: '2024-09-27T19:28:26Z'
language: Rust
archived: false
- stars: 127
+ stars: 128
watchers: 5
forks: 5
owner: netwo-io
logo: https://avatars.githubusercontent.com/u/64151169?v=4
license: MIT
- repoEtag: '"ad2a4228db68923b20fe71f59c56dc9a88481d0afbbd7cb1e4bc4ee5efab6481"'
- repoLastModified: Wed, 25 Sep 2024 06:29:12 GMT
+ repoEtag: '"08f6b35da9990bc097506ad733451f29d166cf2d07d8bd82344fa4194ede3a9b"'
+ repoLastModified: Fri, 27 Sep 2024 19:28:26 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -10383,17 +10383,17 @@
A curated list of awesome JSON Schema resources, tutorials, tools, and
more
created: '2021-09-09T11:39:06Z'
- updated: '2024-09-26T20:18:18Z'
+ updated: '2024-09-27T05:04:20Z'
language: Handlebars
archived: false
- stars: 118
+ stars: 119
watchers: 11
forks: 4
owner: sourcemeta
logo: https://avatars.githubusercontent.com/u/74150453?v=4
license: CC0-1.0
- repoEtag: '"4b8211c54a3a80fc6b3205b442d40941eb7a2ad5aace90ce0f04fec938620daf"'
- repoLastModified: Thu, 26 Sep 2024 20:18:18 GMT
+ repoEtag: '"9fe2e9848f898c58f3b08bbde5d4b4146bccbf038b95539470a9ab48540b1813"'
+ repoLastModified: Fri, 27 Sep 2024 05:04:20 GMT
foundInMaster: true
category: Converters
id: 40df0f4f4e0e95da0b9f4aeb27567a36
@@ -10660,7 +10660,7 @@
repositoryId: 264196717
description: The OpenAPI v3 specification for DigitalOcean's public API.
created: '2020-05-15T13:10:36Z'
- updated: '2024-09-26T17:37:03Z'
+ updated: '2024-09-27T18:55:55Z'
language: JavaScript
archived: false
stars: 107
@@ -10669,8 +10669,8 @@
owner: digitalocean
logo: https://avatars.githubusercontent.com/u/4650108?v=4
license: Apache-2.0
- repoEtag: '"9a9ed27ad58c738803aa61fa1c901f096b42d98430c68a15a073fa84b447519b"'
- repoLastModified: Thu, 26 Sep 2024 17:37:03 GMT
+ repoEtag: '"1f7bfc87775422711e7173616c76ab21a36350fc5911ed77e30e6911b500b6cc"'
+ repoLastModified: Fri, 27 Sep 2024 18:55:55 GMT
foundInMaster: true
category:
- Testing
@@ -10859,7 +10859,7 @@
A collection of open-source and commercial tools for creating your APIs
with OpenAPI - Sourced from and published for the community
created: '2022-01-14T19:24:14Z'
- updated: '2024-09-26T03:33:49Z'
+ updated: '2024-09-27T03:38:15Z'
language: JavaScript
archived: false
stars: 97
@@ -10867,8 +10867,8 @@
forks: 26
owner: OAI
logo: https://avatars.githubusercontent.com/u/16343502?v=4
- repoEtag: '"a01dbbec7547985cee2d1289e7a11a4d2b809afa8f536ec7530bffbdda0cf3b6"'
- repoLastModified: Thu, 26 Sep 2024 03:33:49 GMT
+ repoEtag: '"9b07acb3da09aee1299ac06e2bcd42912a1ae1767ce76e9806cc0435cacd6c5a"'
+ repoLastModified: Fri, 27 Sep 2024 03:38:15 GMT
category: Server Implementations
foundInMaster: true
oldLocations:
@@ -10886,7 +10886,7 @@
Converts OpenAPI 3.0 definitions to Plant UML text for visualisation of
your API.
created: '2021-02-17T03:47:43Z'
- updated: '2024-09-24T17:24:56Z'
+ updated: '2024-09-27T17:16:49Z'
language: Java
archived: false
stars: 95
@@ -10895,8 +10895,8 @@
owner: davidmoten
logo: https://avatars.githubusercontent.com/u/318187?v=4
license: Apache-2.0
- repoEtag: '"836e4aaaed84038cd4fad86e303c070b5cdc0219ee4c50a8607dc3c7ccda9beb"'
- repoLastModified: Tue, 24 Sep 2024 17:24:56 GMT
+ repoEtag: '"f34040f9926f27653ca0eab938d7c052a1cfffc736365bdf1f2a60414008a646"'
+ repoLastModified: Fri, 27 Sep 2024 17:16:49 GMT
foundInMaster: true
category: SDK
id: d4f9d833f5a48b843c52f5ec6f582976
@@ -11046,17 +11046,17 @@
repositoryId: 162836730
description: Kotlin SDK for Jellyfin, supporting Android and JVM targets
created: '2018-12-22T19:14:06Z'
- updated: '2024-09-24T06:46:11Z'
+ updated: '2024-09-27T08:11:15Z'
language: Kotlin
archived: false
- stars: 88
- watchers: 10
+ stars: 87
+ watchers: 9
forks: 42
owner: jellyfin
logo: https://avatars.githubusercontent.com/u/45698031?v=4
license: LGPL-3.0
- repoEtag: '"f4065de6b866aed29ef91f4829fd3d236446d63561d4ab31dd3b35e817cdfae7"'
- repoLastModified: Tue, 24 Sep 2024 06:46:11 GMT
+ repoEtag: '"adca4b774db05c4c2ac10a18edec8f4e3155b08a90bf40e8c0bf59780d46486f"'
+ repoLastModified: Fri, 27 Sep 2024 08:11:15 GMT
foundInMaster: true
category: Testing
id: f51a5c8eb1a78ed2479cabdb83d894d5
@@ -11072,17 +11072,17 @@
repositoryId: 601809698
description: GoAPI - A Fast and Easy-to-use Web Framework for Building APIs in Go
created: '2023-02-14T21:41:22Z'
- updated: '2024-09-26T02:46:58Z'
+ updated: '2024-09-27T03:53:47Z'
language: Go
archived: false
- stars: 83
+ stars: 84
watchers: 2
forks: 4
owner: hvuhsg
logo: https://avatars.githubusercontent.com/u/34660046?v=4
license: MIT
- repoEtag: '"017414692c6539c3c818561dcca3e0da4161a4192fad98132c453e3a61393573"'
- repoLastModified: Thu, 26 Sep 2024 02:46:58 GMT
+ repoEtag: '"de05abe9f0525c094a5c8456965800da623dd643001109b302775b41e6beb90f"'
+ repoLastModified: Fri, 27 Sep 2024 03:53:47 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -11205,17 +11205,17 @@
repositoryId: 714590129
description: Generate .http files from OpenAPI (Swagger) specifications
created: '2023-11-05T10:19:39Z'
- updated: '2024-09-26T08:27:42Z'
+ updated: '2024-09-27T09:13:20Z'
language: C#
archived: false
- stars: 76
+ stars: 77
watchers: 2
forks: 6
owner: christianhelle
logo: https://avatars.githubusercontent.com/u/710400?v=4
license: MIT
- repoEtag: '"fcee1b195e3f9be0d7e6f68a4ffe6426d37b586a5e2e2b57a521e22cab9ee873"'
- repoLastModified: Thu, 26 Sep 2024 08:27:42 GMT
+ repoEtag: '"f035f85768ca5ec2d742d930ec703b127d5eadb7883eb45a49d38037c863c0e2"'
+ repoLastModified: Fri, 27 Sep 2024 09:13:20 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -11314,7 +11314,7 @@
repositoryId: 249737066
description: Semantic parser for API specifications
created: '2020-03-24T14:55:51Z'
- updated: '2024-09-24T04:35:55Z'
+ updated: '2024-09-28T00:08:25Z'
language: TypeScript
archived: false
stars: 68
@@ -11322,8 +11322,8 @@
forks: 17
owner: swagger-api
logo: https://avatars.githubusercontent.com/u/7658037?v=4
- repoEtag: '"cb9a7d2e8379ab9fe38d2aa1071ded18bf20adbb000728b0f7d542742ab0e7cf"'
- repoLastModified: Tue, 24 Sep 2024 04:35:55 GMT
+ repoEtag: '"503f3e71d0ba8661d36c7c297ae057af50865e5ee1d1c121b45fcae04d48f783"'
+ repoLastModified: Sat, 28 Sep 2024 00:08:25 GMT
category: Parsers
foundInMaster: true
- source:
@@ -11530,10 +11530,10 @@
archived: false
stars: 58
watchers: 5
- forks: 91
+ forks: 92
owner: eazybytes
logo: https://avatars.githubusercontent.com/u/79041235?v=4
- repoEtag: '"8e3476e6cde85e51cf8c2478448bdcf40c816b39461a6c9d222cc77ed1694ac9"'
+ repoEtag: '"89bad4bfd61e612fb4cc28d017c7ba09db6dfa5230a60a352b550bcf01acb9db"'
repoLastModified: Sun, 08 Sep 2024 18:26:11 GMT
category: Parsers
foundInMaster: true
@@ -12038,11 +12038,11 @@
archived: false
stars: 46
watchers: 5
- forks: 11
+ forks: 12
owner: swaggerexpert
logo: https://avatars.githubusercontent.com/u/172408630?v=4
license: BSD-3-Clause
- repoEtag: '"95a2a8a0f7c23f1f6caf328ff8e104bcbec4d73e45f1bc089a525514890bf1f6"'
+ repoEtag: '"dd557ec86477613f76f96b7399a9a71386c694f0c7150d318d7f34fcfc15e91a"'
repoLastModified: Thu, 26 Sep 2024 04:09:26 GMT
category: Server Implementations
foundInMaster: true
@@ -12058,17 +12058,17 @@
repositoryId: 599199253
description: Generate OpenAPI 3.0 specifications from Go code.
created: '2023-02-08T16:53:48Z'
- updated: '2024-09-26T19:24:49Z'
+ updated: '2024-09-27T16:35:36Z'
language: Go
archived: false
- stars: 47
+ stars: 48
watchers: 3
forks: 17
owner: a-h
logo: https://avatars.githubusercontent.com/u/1029947?v=4
license: MIT
- repoEtag: '"b7ca72c2a9c8830d2d687944838a1eb4af1c08c8206047b689cc20862a12e8c2"'
- repoLastModified: Thu, 26 Sep 2024 19:24:49 GMT
+ repoEtag: '"7f9091dde382053b6bb93583cb0cd0beda7df4a00df1e8ac4259f7df5ac3e378"'
+ repoLastModified: Fri, 27 Sep 2024 16:35:36 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -12256,7 +12256,7 @@
owner: atlassian
logo: https://avatars.githubusercontent.com/u/168166?v=4
license: NOASSERTION
- repoEtag: '"0e5d936f044c9a974565c4905f263e377b9f7f8fa5ae6cb57505c95a83b48929"'
+ repoEtag: '"4c0f3355defb90bfd7e6a67bd276dc3c2eeb500f07473a387f4a8555917c5543"'
repoLastModified: Tue, 03 Sep 2024 03:54:42 GMT
foundInMaster: true
id: 70270b46839e1466d6a425a8da6ded65
@@ -12298,7 +12298,7 @@
repositoryId: 241074287
description: Backbase Open Api Tools (boat) helps manage large OpenAPI projects
created: '2020-02-17T10:00:41Z'
- updated: '2024-09-23T08:01:06Z'
+ updated: '2024-09-27T15:04:37Z'
language: Mustache
archived: false
stars: 41
@@ -12307,8 +12307,8 @@
owner: Backbase
logo: https://avatars.githubusercontent.com/u/1914334?v=4
license: NOASSERTION
- repoEtag: '"eaa48699268cd472c87734032e1a2da0d346fbc3e9beaab5bf0e433ce69df5ef"'
- repoLastModified: Mon, 23 Sep 2024 08:01:06 GMT
+ repoEtag: '"032a24619b9f25504f46298cb051996f223a6c1d4a26fb57817e4ce889d67e4d"'
+ repoLastModified: Fri, 27 Sep 2024 15:04:37 GMT
foundInMaster: true
category: SDK
id: fd5b893e6ddf5af8821536a61ecb1d4e
@@ -12871,7 +12871,7 @@
open-source solution for your open and private data needs. French only for
the time being, internationalization coming soon.
created: '2017-11-24T22:19:00Z'
- updated: '2024-09-25T14:47:20Z'
+ updated: '2024-09-27T12:13:17Z'
language: JavaScript
archived: false
stars: 33
@@ -12880,8 +12880,8 @@
owner: data-fair
logo: https://avatars.githubusercontent.com/u/83776320?v=4
license: AGPL-3.0
- repoEtag: '"6f71d464d5fee4c816c078cda81f66f4a4f81bd4467b6ed63d85933dacc78f89"'
- repoLastModified: Wed, 25 Sep 2024 14:47:20 GMT
+ repoEtag: '"d7ac51cb2d85ac4b6d501a219d2942895a229e2d79ca09495276718340cc33a8"'
+ repoLastModified: Fri, 27 Sep 2024 12:13:17 GMT
foundInMaster: true
category:
- Documentation
@@ -13186,7 +13186,7 @@
repositoryId: 393620909
description: RESTful API for managing a school
created: '2021-08-07T08:06:01Z'
- updated: '2024-09-26T12:00:10Z'
+ updated: '2024-09-27T13:31:53Z'
language: Java
archived: false
stars: 28
@@ -13195,8 +13195,8 @@
owner: hei-school
logo: https://avatars.githubusercontent.com/u/88576095?v=4
license: MIT
- repoEtag: '"4ee5b4ad730e0b689b04a584f443fa1cb368faaec1529cf0dc53f127642c5cf6"'
- repoLastModified: Thu, 26 Sep 2024 12:00:10 GMT
+ repoEtag: '"b6b40de5103386029d40dea2349bfcbf233e7434f2c167e51a0224bbab2f79b2"'
+ repoLastModified: Fri, 27 Sep 2024 13:31:53 GMT
foundInMaster: true
category: Code Generators
id: bf98240ea893afa32efc180fb73dd5b6
@@ -13805,7 +13805,7 @@
forks: 3
owner: stackql
logo: https://avatars.githubusercontent.com/u/95105302?v=4
- repoEtag: '"2d13c45099e6f0b50c0a9c87e61dc71ff433740d8fa402a04c0f5af47c36b011"'
+ repoEtag: '"7de1c515f95c1fc63c112ae6cf988ef653a47826a80e92f9e8cb65d2ed95e291"'
repoLastModified: Tue, 24 Sep 2024 02:32:14 GMT
category: Server Implementations
foundInMaster: true
@@ -14277,7 +14277,7 @@
owner: mockoon
logo: https://avatars.githubusercontent.com/u/49429147?v=4
license: NOASSERTION
- repoEtag: '"5eea2a33b719af5101e916b1414c907dbb7cf51ff6714daabac4304b0f9f1d38"'
+ repoEtag: '"21a929d33c5e20514162aeeddc112fb9bcf4522847ddb915566a7f240089f8af"'
repoLastModified: Wed, 25 Sep 2024 08:42:06 GMT
foundInMaster: true
category: Testing
@@ -15178,7 +15178,7 @@
owner: commonism
logo: https://avatars.githubusercontent.com/u/164513?v=4
license: BSD-3-Clause
- repoEtag: '"ae4142119064a9d77b84b466b0767b170ec6719f8e4d690b66eda608b646e470"'
+ repoEtag: '"34a42d2e3db35d47b9b5dad87134a6d747bec072e5a8b3ec1c1b7d9883aa9f65"'
repoLastModified: Fri, 13 Sep 2024 23:35:57 GMT
foundInMaster: true
id: f7fe65d08545a563279e1526fe797380
@@ -15748,7 +15748,7 @@
Delightful API development: Focused on developer experience and
performance.
created: '2021-12-16T16:23:45Z'
- updated: '2024-09-26T01:13:56Z'
+ updated: '2024-09-27T22:56:25Z'
language: TypeScript
archived: false
stars: 12
@@ -15757,8 +15757,8 @@
owner: Jnig
logo: https://avatars.githubusercontent.com/u/3729585?v=4
license: MIT
- repoEtag: '"aadd6d9f55da9bbe108fe05e768621ee04bc9bf7ee938eba7994d1286cf7804d"'
- repoLastModified: Thu, 26 Sep 2024 01:13:56 GMT
+ repoEtag: '"81d553279e227bd1306edb07966630ec3d7f323071d68924ac8d278856f52066"'
+ repoLastModified: Fri, 27 Sep 2024 22:56:25 GMT
category:
- Data Validators
- Parsers
@@ -16429,7 +16429,7 @@
OpenAPI description for MDS data feeds, managed by the Open Mobility
Foundation.
created: '2023-02-03T18:55:31Z'
- updated: '2024-08-06T14:59:46Z'
+ updated: '2024-09-27T15:56:52Z'
language: Python
archived: false
stars: 10
@@ -16438,8 +16438,8 @@
owner: openmobilityfoundation
logo: https://avatars.githubusercontent.com/u/52187191?v=4
license: NOASSERTION
- repoEtag: '"0f62f33e1ea5090079c2e2368ed6259d2d97e7f40c93d32f4e941e77ba52c355"'
- repoLastModified: Tue, 06 Aug 2024 14:59:46 GMT
+ repoEtag: '"e626e8a02221fa55f0693731668ec40b2aa3acfb755b5d55f58363f5e3f9348c"'
+ repoLastModified: Fri, 27 Sep 2024 15:56:52 GMT
category:
- Parsers
- Server Implementations
@@ -17390,7 +17390,7 @@
repositoryId: 740729887
description: The easiest way to share OpenAPI files
created: '2024-01-09T00:11:59Z'
- updated: '2024-09-26T15:17:59Z'
+ updated: '2024-09-27T15:10:22Z'
language: Vue
archived: false
stars: 8
@@ -17398,8 +17398,8 @@
forks: 4
owner: scalar
logo: https://avatars.githubusercontent.com/u/301879?v=4
- repoEtag: '"a21cdbb8dcc14eb743cd63db635b975e0541f68d40c45fc9287b27f60465d8a4"'
- repoLastModified: Thu, 26 Sep 2024 15:17:59 GMT
+ repoEtag: '"e874e962fe8c995c97e8526d046a4b9df4161cd1c54b61745284626ac5da7549"'
+ repoLastModified: Fri, 27 Sep 2024 15:10:22 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -17678,17 +17678,17 @@
repositoryId: 630692437
description: Dependency injection for AioHTTP
created: '2023-04-21T00:08:54Z'
- updated: '2023-09-17T09:07:21Z'
+ updated: '2024-09-27T10:41:54Z'
language: Python
archived: false
- stars: 7
+ stars: 9
watchers: 1
forks: 0
owner: taskiq-python
logo: https://avatars.githubusercontent.com/u/109470701?v=4
license: MIT
- repoEtag: '"24d2346a605856fb7e93c6f4e22c16626c8c02dfc08f4a086f0e26d771f45fb8"'
- repoLastModified: Sun, 17 Sep 2023 09:07:21 GMT
+ repoEtag: '"b5cd03241f3ff481dcdf257bab776b77b4a622f0c159f411c9dd1959977d3fd2"'
+ repoLastModified: Fri, 27 Sep 2024 10:41:54 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -18052,7 +18052,7 @@
owner: meabed
logo: https://avatars.githubusercontent.com/u/45731?v=4
license: MIT
- repoEtag: '"2072c041fa6f57d09fd6a888f5b73ef7628d1b6ee3c22529e289603913ebefbc"'
+ repoEtag: '"7d8aeee7a2bbb0320bb5abe7610dc8cb7b6742b1c3f5b443e1c51dccbcc4bb4d"'
repoLastModified: Fri, 12 Jan 2024 18:23:08 GMT
foundInMaster: true
category:
@@ -18683,7 +18683,7 @@
service from a set of OpenAPI specifications sourced from Azure REST API
specs
created: '2022-08-08T08:41:58Z'
- updated: '2024-09-26T23:07:56Z'
+ updated: '2024-09-27T07:33:41Z'
language: JavaScript
archived: false
stars: 6
@@ -18691,8 +18691,8 @@
forks: 0
owner: stackql
logo: https://avatars.githubusercontent.com/u/95105302?v=4
- repoEtag: '"4947ee8c5388f5e355592c99ad441da880a2ab848f727872f422443223089330"'
- repoLastModified: Thu, 26 Sep 2024 23:07:56 GMT
+ repoEtag: '"c8a9baa9f9e0301f77c8e71883baf742fe5f4b882ed52882af35448b7b047b6f"'
+ repoLastModified: Fri, 27 Sep 2024 07:33:41 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -22003,7 +22003,7 @@
owner: hiroyoshii
logo: https://avatars.githubusercontent.com/u/40140638?v=4
license: Apache-2.0
- repoEtag: '"b31dacd0077694567015e06d41ba98b33426ffbf8b512d80ad9636a52c5e0f80"'
+ repoEtag: '"cb9a4007fd46a5178c0e8e03a55ff8050f3a3ac3db5cf672931fa21a76006b2c"'
repoLastModified: Mon, 09 Sep 2024 14:21:56 GMT
category: Server Implementations
foundInMaster: true
@@ -22254,7 +22254,7 @@
repositoryId: 771891137
description: 物联网平台 物联网应用 物联网 智慧平台
created: '2024-03-14T06:23:53Z'
- updated: '2024-09-23T08:19:41Z'
+ updated: '2024-09-27T16:17:41Z'
language: Java
archived: false
stars: 3
@@ -22263,8 +22263,8 @@
owner: itzlyg
logo: https://avatars.githubusercontent.com/u/17636877?v=4
license: GPL-3.0
- repoEtag: '"5062dc623b4cf18091447f6fa7e5f186781abcd49ad37b6067a6baf4f1f60d9a"'
- repoLastModified: Mon, 23 Sep 2024 08:19:41 GMT
+ repoEtag: '"c7a6a4445e44c29bdc0bd13716ca1669a28ca2e314dbd96ece62f15793e29176"'
+ repoLastModified: Fri, 27 Sep 2024 16:17:41 GMT
category: Code Generators
foundInMaster: true
- source: openapi3 tags
@@ -23918,13 +23918,13 @@
id: cca0fb34e191210e1afb499f6117f02b
repositoryMetadata:
base64Readme: >-
- IyBKYXZhIFNwcmluZyBFeGFtcGxlCgpMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBmaWxlIFtMSUNFTlNFXSguL0xJQ0VOU0UpLgoKSmF2YSBbU3ByaW5nXShodHRwczovL3NwcmluZy5pby8pIGV4YW1wbGUuIEV4YW1wbGUgaW5jbHVkZXMgY29kZSB3cml0dGVuIGluIEphdmEuCgpbIVtDb2RlUUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9tbmVpZmVyYmFnL2phdmEtc3ByaW5nLWJvb3QvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLXNwcmluZy1ib290L2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpcy55bWwpClshW0phdmEgQ0kgd2l0aCBHcmFkbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tbmVpZmVyYmFnL2phdmEtc3ByaW5nLWJvb3QvYWN0aW9ucy93b3JrZmxvd3MvZ3JhZGxlLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLXNwcmluZy1ib290L2FjdGlvbnMvd29ya2Zsb3dzL2dyYWRsZS55bWwpCgojIyBTcHJpbmcgQm9vdAoKVGhlIFN3YWdnZXIgVUkgcGFnZSBpcyBhdmFpbGFibGUgYXQKCltodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sXShodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sKQoKYW5kIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uIGlzIGF2YWlsYWJsZSBhdAoKW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92My9hcGktZG9jc10oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YzL2FwaS1kb2NzKQoKIyMgR3JhZGxlCgpSdW4gYGdyYWRsZSB3cmFwcGVyIC0tZ3JhZGxlLXZlcnNpb24gNy40LjJgIHRvIHVwZGF0ZSB0aGUgcHJvamVjdCB0byA3LjQuMi4KCiMjIExpbmtzCgoqIE9wZW5BUEkKICAqIFtPcGVuQVBJIDMgTGlicmFyeSBmb3IgU3ByaW5nIEJvb3RdKGh0dHBzOi8vc3ByaW5nZG9jLm9yZy8pCiAgKiBbT3BlbkFQSSBJbml0aWF0aXZlIChPQUkpXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKQogICogW09wZW5BUEkgU3BlYyAzLjAuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4xKQogICogW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikKICAqIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cDovL2VkaXRvci5zd2FnZ2VyLmlvLykKICAqIFtTd2FnZ2VyIFZhbGlkYXRvcl0oaHR0cHM6Ly92YWxpZGF0b3Iuc3dhZ2dlci5pby8pCiogVGVzdGluZwogICogW0Nvcm51dHVtL3RjYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL0Nvcm51dHVtL3RjYXNlcykgLSBBIG1vZGVsLWJhc2VkIHRlc3QgY2FzZSBnZW5lcmF0b3IKICAqIFtSRVNUIEFzc3VyZWRdKGh0dHA6Ly9yZXN0LWFzc3VyZWQuaW8vKSAtIFRlc3RpbmcgYW5kIHZhbGlkYXRpbmcgUkVTVCBzZXJ2aWNlcyBpbiBKYXZhCiAgKiBbVGVzdGluZyB0aGUgV2ViIExheWVyXShodHRwczovL3NwcmluZy5pby9ndWlkZXMvZ3MvdGVzdGluZy13ZWIvKSAtIFNwcmluZyBHdWlkZQoqIEdlbmVyYWwKICAqIFtHaXRIdWIgQWN0aW9uIFNldHVwIEphdmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rpb25zL3NldHVwLWphdmEpIGZvciB1c2Ugd2l0aCBHaXRIdWIgQ29kZVFMCiAgKiBbR3JhZGxlIEJ1aWxkIFRvb2xdKGh0dHBzOi8vZ3JhZGxlLm9yZy8pCiAgKiBbR3JldHR5XShodHRwczovL2dyZXR0eS1ncmFkbGUtcGx1Z2luLmdpdGh1Yi5pby9ncmV0dHktZG9jL2Fib3V0Lmh0bWwpIC0gYSBmZWF0dXJlLXJpY2ggZ3JhZGxlIHBsdWdpbiBmb3IgcnVubmluZyB3ZWItYXBwcyBvbiBlbWJlZGRlZCBzZXJ2bGV0IGNvbnRhaW5lcnMKICAqIFtKYXZhIERldmVsb3BtZW50IEV4YW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLWV4YW1wbGVzKQoKIyMgVGFza3MKCi0gQWRkIEpldHR5IGV4ZWN1dGlvbiBpbiBjaGVjayB0YXNrIGJlZm9yZSBpbnRlZ3JhdGlvbiB0ZXN0cyBhcmUgcnVuCi0gQ29tcGFyZSBnZW5lcmF0ZWQgb3BlbmFwaS55YW1sIGFuZCBhcGlfdjMueWFtbAotIEdyYWRsZSBpbnRlZ3JhdGlvbiB0ZXN0cwogIC0gaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvY3VycmVudC91c2VyZ3VpZGUvbWlncmF0aW5nX2Zyb21fbWF2ZW4uaHRtbCNtaWdtdm46YnVpbGRfbGlmZWN5Y2xlCiAgLSBodHRwczovL2RvY3MuZ3JhZGxlLm9yZy9jdXJyZW50L3VzZXJndWlkZS9taWdyYXRpbmdfZnJvbV9tYXZlbi5odG1sI21pZ212bjppbnRlZ3JhdGlvbl90ZXN0cwogIC0gaHR0cHM6Ly9kb2NzLmdyYWRsZS5vcmcvY3VycmVudC91c2VyZ3VpZGUvamF2YV90ZXN0aW5nLmh0bWwjc2VjOmNvbmZpZ3VyaW5nX2phdmFfaW50ZWdyYXRpb25fdGVzdHMgCg==
- readmeEtag: '"b556bbadceb978d841e8c4d16f36f05f5849b719"'
- readmeLastModified: Thu, 08 Aug 2024 11:34:37 GMT
+ IyBKYXZhIFNwcmluZyBFeGFtcGxlCgpMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBmaWxlIFtMSUNFTlNFXSguL0xJQ0VOU0UpLgoKSmF2YSBbU3ByaW5nXShodHRwczovL3NwcmluZy5pby8pIGV4YW1wbGUuIEV4YW1wbGUgaW5jbHVkZXMgY29kZSB3cml0dGVuIGluIEphdmEuCgpbIVtDb2RlUUxdKGh0dHBzOi8vZ2l0aHViLmNvbS9tbmVpZmVyYmFnL2phdmEtc3ByaW5nLWJvb3QvYWN0aW9ucy93b3JrZmxvd3MvY29kZXFsLWFuYWx5c2lzLnltbC9iYWRnZS5zdmc/YnJhbmNoPW1haW4pXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLXNwcmluZy1ib290L2FjdGlvbnMvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpcy55bWwpClshW0phdmEgQ0kgd2l0aCBHcmFkbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tbmVpZmVyYmFnL2phdmEtc3ByaW5nLWJvb3QvYWN0aW9ucy93b3JrZmxvd3MvZ3JhZGxlLnltbC9iYWRnZS5zdmcpXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLXNwcmluZy1ib290L2FjdGlvbnMvd29ya2Zsb3dzL2dyYWRsZS55bWwpCgojIyBTcHJpbmcgQm9vdAoKVGhlIFN3YWdnZXIgVUkgcGFnZSBpcyBhdmFpbGFibGUgYXQKCltodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sXShodHRwOi8vbG9jYWxob3N0OjgwODAvc3dhZ2dlci11aS5odG1sKQoKYW5kIHRoZSBPcGVuQVBJIGRlc2NyaXB0aW9uIGlzIGF2YWlsYWJsZSBhdAoKW2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC92My9hcGktZG9jc10oaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YzL2FwaS1kb2NzKQoKIyMgR3JhZGxlCgpSdW4gYGdyYWRsZSB3cmFwcGVyIC0tZ3JhZGxlLXZlcnNpb24gNy40LjJgIHRvIHVwZGF0ZSB0aGUgcHJvamVjdCB0byA3LjQuMi4KCiMjIExpbmtzCgoqIE9wZW5BUEkKICAqIFtPcGVuQVBJIDMgTGlicmFyeSBmb3IgU3ByaW5nIEJvb3RdKGh0dHBzOi8vc3ByaW5nZG9jLm9yZy8pCiAgKiBbT3BlbkFQSSBJbml0aWF0aXZlIChPQUkpXShodHRwczovL3d3dy5vcGVuYXBpcy5vcmcvKQogICogW09wZW5BUEkgU3BlYyAzLjAuMV0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvdjMuMC4xKQogICogW1N3YWdnZXIgQ29kZWdlbl0oaHR0cHM6Ly9naXRodWIuY29tL3N3YWdnZXItYXBpL3N3YWdnZXItY29kZWdlbikKICAqIFtTd2FnZ2VyIEVkaXRvcl0oaHR0cDovL2VkaXRvci5zd2FnZ2VyLmlvLykKICAqIFtTd2FnZ2VyIFZhbGlkYXRvcl0oaHR0cHM6Ly92YWxpZGF0b3Iuc3dhZ2dlci5pby8pCiogVGVzdGluZwogICogW0Nvcm51dHVtL3RjYXNlc10oaHR0cHM6Ly9naXRodWIuY29tL0Nvcm51dHVtL3RjYXNlcykgLSBBIG1vZGVsLWJhc2VkIHRlc3QgY2FzZSBnZW5lcmF0b3IKICAqIFtSRVNUIEFzc3VyZWRdKGh0dHA6Ly9yZXN0LWFzc3VyZWQuaW8vKSAtIFRlc3RpbmcgYW5kIHZhbGlkYXRpbmcgUkVTVCBzZXJ2aWNlcyBpbiBKYXZhCiAgKiBbVGVzdGluZyB0aGUgV2ViIExheWVyXShodHRwczovL3NwcmluZy5pby9ndWlkZXMvZ3MvdGVzdGluZy13ZWIvKSAtIFNwcmluZyBHdWlkZQoqIEdlbmVyYWwKICAqIFtHaXRIdWIgQWN0aW9uIFNldHVwIEphdmFdKGh0dHBzOi8vZ2l0aHViLmNvbS9hY3Rpb25zL3NldHVwLWphdmEpIGZvciB1c2Ugd2l0aCBHaXRIdWIgQ29kZVFMCiAgKiBbR3JhZGxlIEJ1aWxkIFRvb2xdKGh0dHBzOi8vZ3JhZGxlLm9yZy8pCiAgKiBbR3JldHR5XShodHRwczovL2dyZXR0eS1ncmFkbGUtcGx1Z2luLmdpdGh1Yi5pby9ncmV0dHktZG9jL2Fib3V0Lmh0bWwpIC0gYSBmZWF0dXJlLXJpY2ggZ3JhZGxlIHBsdWdpbiBmb3IgcnVubmluZyB3ZWItYXBwcyBvbiBlbWJlZGRlZCBzZXJ2bGV0IGNvbnRhaW5lcnMKICAqIFtKYXZhIERldmVsb3BtZW50IEV4YW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vbW5laWZlcmJhZy9qYXZhLWV4YW1wbGVzKQoKIyMgVGFza3MKCi0gWyBdIFVwZ3JhZGUgdG8gbGF0ZXN0IHZlcnNpb25zIG9mIEphdmEsIFNwcmluZyBCb290LCBHcmFkbGUsIHNlZSBbVXBncmFkZSBHdWlkZV0oLi9kb2MvdXBncmFkZV9ndWlkZS5hZG9jKQotIFsgXSBBZGQgSmV0dHkgZXhlY3V0aW9uIGluIGNoZWNrIHRhc2sgYmVmb3JlIGludGVncmF0aW9uIHRlc3RzIGFyZSBydW4KLSBbIF0gQ29tcGFyZSBnZW5lcmF0ZWQgb3BlbmFwaS55YW1sIGFuZCBhcGlfdjMueWFtbAotIFsgXSBBZGQgR3JhZGxlIGludGVncmF0aW9uIHRlc3RzCiAgLSBodHRwczovL2RvY3MuZ3JhZGxlLm9yZy9jdXJyZW50L3VzZXJndWlkZS9taWdyYXRpbmdfZnJvbV9tYXZlbi5odG1sI21pZ212bjpidWlsZF9saWZlY3ljbGUKICAtIGh0dHBzOi8vZG9jcy5ncmFkbGUub3JnL2N1cnJlbnQvdXNlcmd1aWRlL21pZ3JhdGluZ19mcm9tX21hdmVuLmh0bWwjbWlnbXZuOmludGVncmF0aW9uX3Rlc3RzCiAgLSBodHRwczovL2RvY3MuZ3JhZGxlLm9yZy9jdXJyZW50L3VzZXJndWlkZS9qYXZhX3Rlc3RpbmcuaHRtbCNzZWM6Y29uZmlndXJpbmdfamF2YV9pbnRlZ3JhdGlvbl90ZXN0cyAK
+ readmeEtag: '"959bf735d183dc450d571f2ee4fc1e3d2a5ad329"'
+ readmeLastModified: Fri, 27 Sep 2024 08:57:51 GMT
repositoryId: 359082805
description: Java Spring development example.
created: '2021-04-18T08:09:17Z'
- updated: '2024-08-08T11:34:42Z'
+ updated: '2024-09-27T08:57:55Z'
language: Java
archived: false
stars: 2
@@ -23933,8 +23933,8 @@
owner: mneiferbag
logo: https://avatars.githubusercontent.com/u/16717541?v=4
license: MIT
- repoEtag: '"2f9275e5fa5458fb0581d86b3b1799eba22974a98bb440467062598555eb0c1d"'
- repoLastModified: Thu, 08 Aug 2024 11:34:42 GMT
+ repoEtag: '"e68bcaedbdbd2c13cc1ab51c5e4e8eac49c9e35a8cefc2012150672b62a9ee6e"'
+ repoLastModified: Fri, 27 Sep 2024 08:57:55 GMT
category:
- SDK
- Server Implementations
@@ -24056,12 +24056,12 @@
language: JavaScript
archived: false
stars: 2
- watchers: 23
+ watchers: 22
forks: 0
owner: nuxeo-sandbox
logo: https://avatars.githubusercontent.com/u/10600635?v=4
license: Apache-2.0
- repoEtag: '"8c73976933a3f5ca9b804fd1ef7778262734af13ee84fcaef19c8fda6c7b7bac"'
+ repoEtag: '"108be35d7a630a83a3bd81bb6ff887abf2b09906dabac99ba7c45a96622496bb"'
repoLastModified: Wed, 04 May 2022 09:45:21 GMT
foundInMaster: true
category: Parsers
@@ -25382,7 +25382,7 @@
repositoryId: 819191357
description: Go's API server can generate open API documents Go的API服务器可以生成开放的API文档
created: '2024-06-24T02:43:37Z'
- updated: '2024-09-26T08:34:52Z'
+ updated: '2024-09-27T08:35:18Z'
language: Go
archived: false
stars: 1
@@ -25391,8 +25391,8 @@
owner: goodluckxu-go
logo: https://avatars.githubusercontent.com/u/110141236?v=4
license: MIT
- repoEtag: '"e80699da935d143d7a2f7d9e117f2be1c7c70ca04f7d79855aabe719c18f894d"'
- repoLastModified: Thu, 26 Sep 2024 08:34:52 GMT
+ repoEtag: '"70e37eb72cb9569a35eee2b14e04c2042a7b5db7a5ecc5864bf5f5571bc7d7f0"'
+ repoLastModified: Fri, 27 Sep 2024 08:35:18 GMT
category: Parsers
foundInMaster: true
v3_1: true
@@ -25418,7 +25418,7 @@
owner: smartrecruiters
logo: https://avatars.githubusercontent.com/u/1618540?v=4
license: MIT
- repoEtag: '"3ab294712ad6501c505b1b5b5542ebd37131ceaeca9d6228773445ccdd539140"'
+ repoEtag: '"12762b711243ec75ce28c231dd34a18823c0c917269358b318152dd1a97e6406"'
repoLastModified: Tue, 22 Nov 2022 08:21:22 GMT
foundInMaster: true
category:
@@ -26052,7 +26052,7 @@
repositoryId: 853046067
description: Generate Java Records from OpenAPI Specifications
created: '2024-09-05T22:21:02Z'
- updated: '2024-09-26T21:52:38Z'
+ updated: '2024-09-27T20:52:48Z'
language: Java
archived: false
stars: 1
@@ -26061,8 +26061,8 @@
owner: Chrimle
logo: https://avatars.githubusercontent.com/u/28791817?v=4
license: MIT
- repoEtag: '"9232d383a4725006e4e431419e7b7d4424f4283c8d795a1a5b880f1228293d37"'
- repoLastModified: Thu, 26 Sep 2024 21:52:38 GMT
+ repoEtag: '"f517cca0277c0ca8d740e3baee6c051ccc5926726b1883a30588f1eaac47e56e"'
+ repoLastModified: Fri, 27 Sep 2024 20:52:48 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -26523,7 +26523,7 @@
owner: API-Flows
logo: https://avatars.githubusercontent.com/u/153562650?v=4
license: Apache-2.0
- repoEtag: '"9dadfb5ef461b944f7ce0a55f313a8fb1e5b2a7bd386b076e359483cd0767ef0"'
+ repoEtag: '"21a4014d10de2714fbd1dd4cca6b0c31a40d38a10e9256eadd9bee850302e9e3"'
repoLastModified: Wed, 25 Sep 2024 20:11:37 GMT
category: Parsers
foundInMaster: true
@@ -27410,7 +27410,7 @@
repositoryId: 471110771
description: Documentation tool for yaml (openapi)
created: '2022-03-17T19:11:05Z'
- updated: '2024-06-02T13:37:03Z'
+ updated: '2024-09-27T23:45:16Z'
language: Java
archived: false
stars: 1
@@ -27419,8 +27419,8 @@
owner: fugerit-org
logo: https://avatars.githubusercontent.com/u/37816284?v=4
license: Apache-2.0
- repoEtag: '"3e3179ba3e966282abcf0713eda63739bc71b2139d2739ec2364ba1a4f7616a0"'
- repoLastModified: Sun, 02 Jun 2024 13:37:03 GMT
+ repoEtag: '"656aab9e2089df17abbac3eb6b46f1ad9a14e6f31f4e8a50c3ced3122882760b"'
+ repoLastModified: Fri, 27 Sep 2024 23:45:16 GMT
category: Parsers
foundInMaster: true
- source: openapi3 tags
@@ -29521,7 +29521,7 @@
owner: API-Flows
logo: https://avatars.githubusercontent.com/u/153562650?v=4
license: Apache-2.0
- repoEtag: '"98f13ac0022dfce2d8b93d7250f541794ceffdbe2a208fc4e1c788049d5dd6b0"'
+ repoEtag: '"cd14a77cd5fe5415ff706ab97741f39c58583fcd448a8a9848f779bad5e785bc"'
repoLastModified: Sat, 06 Jul 2024 15:10:22 GMT
category: Server Implementations
foundInMaster: true
@@ -29957,7 +29957,7 @@
repositoryId: 335312873
description: Traefik Hub Tutorials
created: '2021-02-02T14:18:58Z'
- updated: '2024-09-20T13:16:08Z'
+ updated: '2024-09-27T10:01:01Z'
language: Go
archived: false
stars: 1
@@ -29966,8 +29966,8 @@
owner: traefik
logo: https://avatars.githubusercontent.com/u/14280338?v=4
license: Apache-2.0
- repoEtag: '"2f0deda210c61bd23f804097ff912ecef25c59342037715923e35f3aa4384d4f"'
- repoLastModified: Fri, 20 Sep 2024 13:16:08 GMT
+ repoEtag: '"89f56dc5366f433e237aa8709b5624f0008ecc9566a7a8bf32380fa9f2b59d50"'
+ repoLastModified: Fri, 27 Sep 2024 10:01:01 GMT
category: Server Implementations
foundInMaster: true
- source: openapi3 tags
@@ -29991,7 +29991,7 @@
owner: justedlev
logo: https://avatars.githubusercontent.com/u/59051661?v=4
license: Apache-2.0
- repoEtag: '"2779d9bc7c89e7875fb6a543655b46669f256609d659c9135fd953ff2611363b"'
+ repoEtag: '"b880983d08d7b30ced674d102880442912838fbb53c949a44d46c4a73268f5f9"'
repoLastModified: Mon, 23 Sep 2024 16:44:31 GMT
category: Server Implementations
foundInMaster: true
@@ -31952,17 +31952,17 @@
Simple, Fast, Code first and Compile time generated OpenAPI documentation
for Rust
created: '2021-09-30T22:00:31Z'
- updated: '2024-09-27T00:04:35Z'
+ updated: '2024-09-28T00:40:13Z'
language: Rust
archived: false
- stars: 2228
+ stars: 2231
watchers: 9
forks: 173
owner: juhaku
logo: https://avatars.githubusercontent.com/u/26358664?v=4
license: Apache-2.0
- repoEtag: '"c6b33dd0d18800181d4ac6b489b87200bc212bedb3ce490114f662149c28f791"'
- repoLastModified: Fri, 27 Sep 2024 00:04:35 GMT
+ repoEtag: '"8ea47219687d461882ff07c6b7dfe8d216c686a05dd98b2941fbd2bdd1c9bb46"'
+ repoLastModified: Sat, 28 Sep 2024 00:40:13 GMT
foundInMaster: true
category: Parsers
id: 14269a89115b3be71493769fca4d995e
@@ -31973,23 +31973,23 @@
id: 4f2556a5a26e04f5a4be6c77a48b61ac
repositoryMetadata:
base64Readme: >-
- IVtHZW0gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9nZW0vdi9vYXNfcmFpbHM/Y29sb3I9RTk1NzNGKQohW0dpdEh1YiBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2EtY2hhY29uL29hc19yYWlscz9jb2xvcj1ibHVlKQohW0dpdEh1YiBBY3Rpb25zIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvYS1jaGFjb24vb2FzX3JhaWxzLy5naXRodWIlMkZ3b3JrZmxvd3MlMkZydWJ5b25yYWlscy55bWwpCiFbR2VtIFRvdGFsIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9nZW0vZHQvb2FzX3JhaWxzKQohW1N0YXRpYyBCYWRnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9SYWlscy0lM0UlM0Q3LjAuMC0lMjNFOTU3M0YpCiFbU3RhdGljIEJhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1J1YnktJTNFJTNEMy4xLjAtJTIzRTk1NzNGKQoKIyDwn5ODT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiBGb3IgUmFpbHMKCk9hc1JhaWxzIGlzIGEgUmFpbHMgZW5naW5lIGZvciBnZW5lcmF0aW5nICoqYXV0b21hdGljIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgUmFpbHMgQVBJcyoqLiBJdCBnZW5lcmF0ZXMgYW4gKipPQVMgMy4xKiogZG9jdW1lbnQgYW5kIGRpc3BsYXlzIGl0IHVzaW5nICoqW1JhcGlEb2NdKGh0dHBzOi8vcmFwaWRvY3dlYi5jb20pKiouCgohW1NjcmVlbnNob3RdKGh0dHBzOi8vYS1jaGFjb24uY29tL2Fzc2V0cy9pbWFnZXMvb2FzX3JhaWxzX3VpLnBuZykKCiMjIFJlbGF0ZWQgUHJvamVjdHMKCi0gKipbQXBpUGllXShodHRwczovL2dpdGh1Yi5jb20vQXBpcGllL2FwaXBpZS1yYWlscykqKjogRG9lc24ndCBzdXBwb3J0IE9BUyAzLjEsIHJlcXVpcmVzIGxlYXJuaW5nIGEgRFNMLCBsYWNrcyBhIG5pY2UgVUkKLSAqKltzd2FnZ2VyX3lhcmQtcmFpbHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9saXZpbmdzb2NpYWwvc3dhZ2dlcl95YXJkLXJhaWxzKSoqOiBTZWVtcyBhYmFuZG9uZWQsIGJ1dCBzZXJ2ZXMgYXMgaW5zcGlyYXRpb24KLSAqKltSc3dhZ10oaHR0cHM6Ly9naXRodWIuY29tL3Jzd2FnL3Jzd2FnKSoqOiBOb3QgYXV0b21hdGljLCBkZXBlbmRzIG9uIFJTcGVjOyBNYW55IGRldmVsb3BlcnMgbm93IHVzZSBNaW5pdGVzdCBhcyBpdCdzIHRoZSBkZWZhdWx0IHRlc3QgZnJhbWV3b3JrCi0gKipbZ3JhcGUtc3dhZ2dlcl0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnktZ3JhcGUvZ3JhcGUtc3dhZ2dlcikqKjogUmVxdWlyZXMgR3JhcGUKLSAqKltyc3BlY19hcGlfZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9naXRodWIuY29tL3ppcG1hcmsvcnNwZWNfYXBpX2RvY3VtZW50YXRpb24pKio6IFJlcXVpcmVzIFJTcGVjIGFuZCBhIGNvbW1hbmQgdG8gZ2VuZXJhdGUgdGhlIGRvY3MKCiMjIFdoYXQgU2V0cyBPYXNSYWlscyBBcGFydD8KCi0gKipEeW5hbWljKio6IE5vIGNvbW1hbmQgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgZG9jcwotICoqU2ltcGxlKio6IENvbXBsZW1lbnQgZGVmYXVsdCBkb2N1bWVudGF0aW9uIHdpdGggYSBmZXcgY29tbWVudHM7IG5vIG5lZWQgdG8gbGVhcm4gYSBjb21wbGV4IERTTAotICoqUHVyZSBSdWJ5IG9uIFJhaWxzIEFQSXMqKjogTm8gYWRkaXRpb25hbCBmcmFtZXdvcmtzIG5lZWRlZCAoZS5nLiwgR3JhcGUsIFJTcGVjKQoKIyMg8J+Tve+4jyBNb3RpdmF0aW9uCgpBZnRlciBleHBlcmllbmNpbmcgdGhlIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24gaW4gUHl0aG9uJ3MgZmFzdC1hcGkgZnJhbWV3b3JrLCBJIHNvdWdodCBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaW4gUnVieSBvbiBSYWlscy4gVW5hYmxlIHRvIGZpbmQgYSBzdWl0YWJsZSBzb2x1dGlvbiwgSSBbYXNrZWQgb24gU3RhY2sgT3ZlcmZsb3ddKGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzcxOTQ3MDE4L2lzLXRoZXJlLWEtd2F5LXRvLWdlbmVyYXRlLWFuLWludGVyYWN0aXZlLWRvY3VtZW50YXRpb24tZm9yLXJhaWxzLWFwaXMpIHllYXJzIGFnby4gTm93LCB3aXRoIHNvbWUgZnJlZSB0aW1lIHdoaWxlIGZyZWVsYW5jaW5nIGFzIGFuIEFQSSBkZXZlbG9wZXIsIEkgZGVjaWRlZCB0byBidWlsZCBteSBvd24gdG9vbC4KCioqTm90ZTogVGhpcyBpcyBub3QgeWV0IGEgcHJvZHVjdGlvbi1yZWFkeSBzb2x1dGlvbi4gVGhlIGNvZGUgbWF5IGJlIHJvdWdoIGFuZCBiZWhhdmUgdW5leHBlY3RlZGx5LCBidXQgSSBhbSBhY3RpdmVseSB3b3JraW5nIG9uIGltcHJvdmluZyBpdC4gSWYgeW91IGxpa2UgdGhlIGlkZWEsIHBsZWFzZSBjb25zaWRlciBjb250cmlidXRpbmcgdG8gaXRzIGRldmVsb3BtZW50LioqCgpUaGUgZ29hbCBpcyB0byBtaW5pbWl6ZSB0aGUgZWZmb3J0IHJlcXVpcmVkIHRvIGNyZWF0ZSBjb21wcmVoZW5zaXZlIGRvY3VtZW50YXRpb24uIEJ5IGZvbGxvd2luZyBSRVNUIHByaW5jaXBsZXMgaW4gUmFpbHMsIHdlIGJlbGlldmUgdGhpcyBpcyBhY2hpZXZhYmxlLiBZb3UgY2FuIGVuaGFuY2UgdGhlIGRvY3VtZW50YXRpb24gdXNpbmcgW1lhcmRdKGh0dHBzOi8veWFyZG9jLm9yZy8pIHRhZ3MuCgojIyDwn5OLIFRhYmxlIG9mIENvbnRlbnRzCgotIFtJbnN0YWxsYXRpb25dKCNpbnN0YWxsYXRpb24pCi0gW0NvbmZpZ3VyYXRpb25dKCNjb25maWd1cmF0aW9uKQogIC0gW0Jhc2ljIEluZm9ybWF0aW9uIGFib3V0IHRoZSBBUEldKCNiYXNpYy1pbmZvcm1hdGlvbi1hYm91dC10aGUtYXBpKQogIC0gW1NlcnZlcnMgSW5mb3JtYXRpb25dKCNzZXJ2ZXJzLWluZm9ybWF0aW9uKQogIC0gW1RhZyBJbmZvcm1hdGlvbl0oI3RhZy1pbmZvcm1hdGlvbikKICAtIFtPcHRpb25hbCBTZXR0aW5nc10oI29wdGlvbmFsLXNldHRpbmdzKQogIC0gW0F1dGhlbnRpY2F0aW9uIFNldHRpbmdzXSgjYXV0aGVudGljYXRpb24tc2V0dGluZ3MpCiAgLSBbRGVmYXVsdCBSZXNwb25zZXMgKEVycm9ycyldKCNkZWZhdWx0LXJlc3BvbnNlcykKLSBbVXNhZ2VdKCN1c2FnZSkKICAtIFtEb2N1bWVudGluZyBZb3VyIEVuZHBvaW50c10oI2RvY3VtZW50aW5nLXlvdXItZW5kcG9pbnRzKQogIC0gW0V4YW1wbGVdKCNleGFtcGxlLW9mLWRvY3VtZW50ZWQtZW5kcG9pbnRzKQotIFtTZWN1cmluZyB0aGUgT2FzUmFpbHMgRW5naW5lXSgjc2VjdXJpbmctdGhlLW9hc3JhaWxzLWVuZ2luZSkKLSBbQ3VzdG9taXppbmcgdGhlIFZpZXddKCNjdXN0b21pemluZy10aGUtdmlldykKLSBbQ29udHJpYnV0aW5nXSgjY29udHJpYnV0aW5nKQogIC0gW1JvYWRtYXAgYW5kIElkZWFzIGZvciBJbXByb3ZlbWVudF0oI3JvYWRtYXAtYW5kLWlkZWFzLWZvci1pbXByb3ZlbWVudCkKLSBbTGljZW5zZV0oI2xpY2Vuc2UpCgojIyBJbnN0YWxsYXRpb24KCjEuIEFkZCB0aGlzIGxpbmUgdG8geW91ciBSYWlscyBhcHBsaWNhdGlvbidzIEdlbWZpbGU6CgogICBgYGBydWJ5CiAgIGdlbSAib2FzX3JhaWxzImAKICAgYGBgCgoyLiBFeGVjdXRlOgoKICAgYGBgYmFzaAogICBidW5kbGUKICAgYGBgCgozLiBNb3VudCB0aGUgZW5naW5lIGluIHlvdXIgY29uZmlnL3JvdXRlcy5yYiBmaWxlCgogICBgYGBydWJ5CiAgIG1vdW50IE9hc1JhaWxzOjpFbmdpbmUgPT4gJy9kb2NzJwogICBgYGAKCllvdSdsbCBub3cgaGF2ZSAqKmJhc2ljIGRvY3VtZW50YXRpb24qKiBiYXNlZCBvbiB5b3VyIHJvdXRlcyBhbmQgYXV0b21hdGljYWxseSBnYXRoZXJlZCBpbmZvcm1hdGlvbiBhdCBgbG9jYWxob3N0OjMwMDAvZG9jc2AuIFRvIGVuaGFuY2UgaXQsIGNyZWF0ZSBhbiBpbml0aWFsaXplciBmaWxlIGFuZCBhZGQgW1lhcmRdKGh0dHBzOi8veWFyZG9jLm9yZy8pIHRhZ3MgdG8geW91ciBjb250cm9sbGVyIG1ldGhvZHMuCgojIyDimpnvuI8gQ29uZmlndXJhdGlvbgoKVG8gY29uZmlndXJlIE9hc1JhaWxzLCB5b3UgTVVTVCBjcmVhdGUgYW4gaW5pdGlhbGl6ZXIgZmlsZSBpbmNsdWRpbmcgYWxsIHlvdXIgc2V0dGluZ3MuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGNyZWF0ZSB5b3VyIGluaXRpYWxpemVyIGZpbGUsIHdoaWNoIHlvdSBjYW4gZWFzaWx5IGRvIHdpdGg6CgpgYGBiYXNoCnJhaWxzIGdlbmVyYXRlIG9hc19yYWlsczpjb25maWcKYGBgCgpUaGVuIGZpbGwgaXQgd2l0aCB5b3VyIGRhdGEuIEJlbG93IGFyZSB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczoKCiMjIyBCYXNpYyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgQVBJCgotIGBjb25maWcuaW5mby50aXRsZWA6IFRoZSB0aXRsZSBvZiB5b3VyIEFQSSBkb2N1bWVudGF0aW9uLgotIGBjb25maWcuaW5mby5zdW1tYXJ5YDogQSBicmllZiBzdW1tYXJ5IG9mIHlvdXIgQVBJLgotIGBjb25maWcuaW5mby5kZXNjcmlwdGlvbmA6IEEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgeW91ciBBUEkuIFRoaXMgY2FuIGluY2x1ZGUgbWFya2Rvd24gZm9ybWF0dGluZyBhbmQgd2lsbCBiZSBkaXNwbGF5ZWQgcHJvbWluZW50bHkgaW4geW91ciBkb2N1bWVudGF0aW9uLgotIGBjb25maWcuaW5mby5jb250YWN0Lm5hbWVgOiBUaGUgbmFtZSBvZiB0aGUgY29udGFjdCBwZXJzb24gb3Igb3JnYW5pemF0aW9uLgotIGBjb25maWcuaW5mby5jb250YWN0LmVtYWlsYDogVGhlIGNvbnRhY3QgZW1haWwgYWRkcmVzcy4KLSBgY29uZmlnLmluZm8uY29udGFjdC51cmxgOiBUaGUgVVJMIGZvciBtb3JlIGluZm9ybWF0aW9uIG9yIHN1cHBvcnQuCgojIyMgU2VydmVycyBJbmZvcm1hdGlvbgoKLSBgY29uZmlnLnNlcnZlcnNgOiBBbiBhcnJheSBvZiBzZXJ2ZXIgb2JqZWN0cywgZWFjaCBjb250YWluaW5nIGB1cmxgIGFuZCBgZGVzY3JpcHRpb25gIGtleXMuIEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIHRoZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCNzZXJ2ZXItb2JqZWN0KS4KCiMjIyBUYWcgSW5mb3JtYXRpb24KCi0gYGNvbmZpZy50YWdzYDogQW4gYXJyYXkgb2YgdGFnIG9iamVjdHMsIGVhY2ggY29udGFpbmluZyBgbmFtZWAgYW5kIGBkZXNjcmlwdGlvbmAga2V5cy4gRm9yIG1vcmUgZGV0YWlscywgcmVmZXIgdG8gdGhlIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdC5odG1sI3RhZy1vYmplY3QpLgoKIyMjIE9wdGlvbmFsIFNldHRpbmdzCgotIGBjb25maWcuZGVmYXVsdF90YWdzX2Zyb21gOiBEZXRlcm1pbmVzIHRoZSBzb3VyY2Ugb2YgZGVmYXVsdCB0YWdzIGZvciBvcGVyYXRpb25zLiBDYW4gYmUgc2V0IHRvIGA6bmFtZXNwYWNlYCBvciBgOmNvbnRyb2xsZXJgLgotIGBjb25maWcuYXV0b2Rpc2NvdmVyX3JlcXVlc3RfYm9keWA6IEF1dG9tYXRpY2FsbHkgZGV0ZWN0cyByZXF1ZXN0IGJvZGllcyBmb3IgY3JlYXRlL3VwZGF0ZSBtZXRob2RzLiBEZWZhdWx0IGlzIGB0cnVlYC4KLSBgY29uZmlnLmF1dG9kaXNjb3Zlcl9yZXNwb25zZXNgOiBBdXRvbWF0aWNhbGx5IGRldGVjdHMgcmVzcG9uc2VzIGZyb20gY29udHJvbGxlciByZW5kZXJzLiBEZWZhdWx0IGlzIGB0cnVlYC4KLSBgY29uZmlnLmFwaV9wYXRoYDogU2V0cyB0aGUgQVBJIHBhdGggaWYgeW91ciBBUEkgaXMgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZXNwYWNlLgotIGBjb25maWcuaWdub3JlZF9hY3Rpb25zYDogU2V0cyBhbiBhcnJheSB3aXRoIHRoZSBjb250cm9sbGVyIG9yIGNvbnRyb2xsZXIjYWN0aW9uLiBObyBuZWNlc3NhcnkgdG8gYWRkIGFwaV9wYXRoIGJlZm9yZS4KCiMjIyBBdXRoZW50aWNhdGlvbiBTZXR0aW5ncwoKLSBgY29uZmlnLmF1dGhlbnRpY2F0ZV9hbGxfcm91dGVzX2J5X2RlZmF1bHRgOiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gYXV0aGVudGljYXRlIGFsbCByb3V0ZXMgYnkgZGVmYXVsdC4gRGVmYXVsdCBpcyBgdHJ1ZWAuCi0gYGNvbmZpZy5zZWN1cml0eV9zY2hlbWFgOiBUaGUgZGVmYXVsdCBzZWN1cml0eSBzY2hlbWEgdXNlZCBmb3IgYXV0aGVudGljYXRpb24uIENob29zZSBhIHByZWRlZmluZWQgc2VjdXJpdHkgc2NoZW1hIGZyb20gYFs6YXBpX2tleV9jb29raWUsIDphcGlfa2V5X2hlYWRlciwgOmFwaV9rZXlfcXVlcnksIDpiYXNpYywgOmJlYXJlciwgOmJlYXJlcl9qd3QsIDptdXR1YWxfdGxzXWAuCi0gYGNvbmZpZy5zZWN1cml0eV9zY2hlbWFzYDogQ3VzdG9tIHNlY3VyaXR5IHNjaGVtYXMuIEZvbGxvdyB0aGUgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0Lmh0bWwjc2VjdXJpdHktc2NoZW1lLW9iamVjdCkgZm9yIGRlZmluaW5nIHRoZXNlIHNjaGVtYXMuCgojIyMgRGVmYXVsdCBFcnJvcnMKCi0gYGNvbmZpZy5zZXRfZGVmYXVsdF9yZXNwb25zZXNgOiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gYWRkIGRlZmF1bHQgZXJyb3JzIHJlc3BvbnNlcyB0byBlbmRwb2ludC4gRGVmYXVsdCBpcyBgdHJ1ZWAuCgotIGBjb25maWcucG9zc2libGVfZGVmYXVsdF9yZXNwb25zZXNgOiBBcnJheSB3aXRoIHBvc3NpYmxlIGRlZmF1bHQgZXJyb3JzLihTb21lIHdpbGwgYmUgYWRkZWQgZGVwZW5kaW5nIG9uIHRoZSBlbmRwb2ludCwgZXhhbXBsZTogbm90X2ZvdW5kIG9ubHkgd29ya3Mgd2l0aCBzaG93L3VwZGF0ZS9kZWxldGUpLiBEZWZhdWx0OiBbOm5vdF9mb3VuZCwgOnVuYXV0aG9yaXplZCwgOmZvcmJpZGRlbl0uIEl0IHNob3VsZCBiZSBIVFRQIHN0YXR1cyBjb2RlIHN5bWJvbHMgZnJvbSB0aGUgbGlzdDogYFs6bm90X2ZvdW5kLCA6dW5hdXRob3JpemVkLCA6Zm9yYmlkZGVuLCA6aW50ZXJuYWxfc2VydmVyX2Vycm9yLCA6dW5wcm9jZXNzYWJsZV9lbnRpdHldYAoKLSBgY29uZmlnLnJlc3BvbnNlX2JvZHlfb2ZfZGVmYXVsdGA6IGJvZHkgZm9yIHVzZSBpbiBkZWZhdWx0IHJlc3BvbnNlcy4gSXQgbXVzdCBiZSBhIFN0cmluZyBoYXNoIGxpa2UgdGhlIHVzZWQgaW4gcmVxdWVzdCBib2R5IHRhZ3MuIERlZmF1bHQ6ICJ7IG1lc3NhZ2U6IFN0cmluZyB9IgoKIyMg8J+TkyBVc2FnZQoKSW4gYWRkaXRpb24gdG8gdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGluIHRoZSBpbml0aWFsaXplciBmaWxlIGFuZCB0aGUgZGF0YSB0aGF0IGNhbiBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgcm91dGVzIGFuZCBtZXRob2RzIGF1dG9tYXRpY2FsbHksIGl0IGlzIGVzc2VudGlhbCB0byBkb2N1bWVudCB5b3VyIEFQSSBpbiB0aGUgZm9sbG93aW5nIHdheS4gVGhlIGRvY3VtZW50YXRpb24gaXMgY3JlYXRlZCAqKndpdGggdGhlIGhlbHAgb2YgWUFSRCoqLCBzbyB0aGUgbWV0aG9kcyBhcmUgZG9jdW1lbnRlZCB3aXRoICoqY29tbWVudCB0YWdzKiouCgojIyMgRG9jdW1lbnRpbmcgWW91ciBFbmRwb2ludHMKCkFsbW9zdCBldmVyeSBkZXNjcmlwdGlvbiBpbiBhbiBPQVMgZmlsZSBzdXBwb3J0cyBzaW1wbGUgbWFya2Rvd24uIFRoZSBmb2xsb3dpbmcgdGFncyBhcmUgYXZhaWxhYmxlIGZvciBkb2N1bWVudGluZyB5b3VyIGVuZHBvaW50czoKCjxkZXRhaWxzPgo8c3VtbWFyeSBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMS4yZW07Ij5Ac3VtbWFyeTwvc3VtbWFyeT4KCioqU3RydWN0dXJlKio6IGBAc3VtbWFyeSB0ZXh0YAoKVXNlZCB0byBhZGQgYSBzdW1tYXJ5IHRvIHRoZSBlbmRwb2ludC4gSXQgcmVwbGFjZXMgdGhlIGRlZmF1bHQgc3VtbWFyeS90aXRsZSBvZiB0aGUgZW5kcG9pbnQuCgoqKkV4YW1wbGUqKjoKYCMgQHN1bW1hcnkgVGhpcyBlbmRwb2ludCBjcmVhdGVzIGEgVXNlcmAKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeSBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMS4yZW07Ij5AcGFyYW1ldGVyPC9zdW1tYXJ5PgoKKipTdHJ1Y3R1cmUqKjogYEBwYXJhbWV0ZXIgbmFtZShwb3NpdGlvbikgW3R5cGVdIHRleHRgCgpSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGZvciB0aGUgZW5kcG9pbnQuIFRoZSBwb3NpdGlvbiBjYW4gYmU6IGBoZWFkZXJgLCBgcGF0aGAsIGBjb29raWVgLCBvciBgcXVlcnlgLiBUaGUgdHlwZSBzaG91bGQgYmUgYSB2YWxpZCBSdWJ5IGNsYXNzOiBgU3RyaW5nYCwgYEludGVnZXJgLCBgQXJyYXk8U3RyaW5nPmAsIGV0Yy4gQWRkIGEgYCFgIGJlZm9yZSB0aGUgY2xhc3MgdG8gaW5kaWNhdGUgYSByZXF1aXJlZCBwYXJhbWV0ZXIuCgoqKkV4YW1wbGVzKio6CmAjIEBwYXJhbWV0ZXIgcGFnZShxdWVyeSkgW0ludGVnZXJdIFRoZSBwYWdlIG51bWJlci5gCmAjIEBwYXJhbWV0ZXIgc2x1ZyhwYXRoKSBbIVN0cmluZ10gU2x1ZyBvZiB0aGUgUHJvamVjdC5gCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnkgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuMmVtOyI+QHJlcXVlc3RfYm9keTwvc3VtbWFyeT4KCioqU3RydWN0dXJlKio6IGBAcmVxdWVzdF9ib2R5IHRleHQgW3R5cGU8c3RydWN0dXJlPl1gCgpEb2N1bWVudHMgdGhlIHJlcXVlc3QgYm9keSBuZWVkZWQgYnkgdGhlIGVuZHBvaW50LiBUaGUgc3RydWN0dXJlIGlzIG9wdGlvbmFsIGlmIHlvdSBwcm92aWRlIGEgdmFsaWQgQWN0aXZlIFJlY29yZCBjbGFzcy4gVXNlIGAhYCB0byBpbmRpY2F0ZSBhIHJlcXVpcmVkIHJlcXVlc3QgYm9keS4KCioqRXhhbXBsZSoqOgoKYCMgQHJlcXVlc3RfYm9keSBUaGUgdXNlciB0byBiZSBjcmVhdGVkIFshSGFzaHt1c2VyOiBIYXNoe25hbWU6IFN0cmluZywgYWdlOiBJbnRlZ2VyLCBwYXNzd29yZDogU3RyaW5nfX1dYAoKYCMgQHJlcXVlc3RfYm9keSBUaGUgdXNlciB0byBiZSBjcmVhdGVkIFshVXNlcl1gCgpgIyBAcmVxdWVzdF9ib2R5IFRoZSB1c2VyIHRvIGJlIGNyZWF0ZWQgW1VzZXJdYAoKYCMgQHJlcXVlc3RfYm9keSBUaGUgdXNlciB0byBiZSBjcmVhdGVkIFshSGFzaHt1c2VyOiBIYXNoe25hbWU6IFN0cmluZywgYWdlOiBJbnRlZ2VyLCBwYXNzd29yZDogU3RyaW5nLCBzdXJuYW1lczogQXJyYXk8U3RyaW5nPiwgY29vcmRzOiBIYXNoe2xhdDogU3RyaW5nLCBsbmc6IFN0cmluZ319fV1gCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnkgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuMmVtOyI+QHJlcXVlc3RfYm9keV9leGFtcGxlPC9zdW1tYXJ5PgoKKipTdHJ1Y3R1cmUqKjogYEByZXF1ZXN0X2JvZHlfZXhhbXBsZSB0ZXh0IFt0eXBlXSBzdHJ1Y3R1cmVgCgpBZGRzIGV4YW1wbGVzIHRvIHRoZSBwcm92aWRlZCByZXF1ZXN0IGJvZHkuCgoqKkV4YW1wbGUqKjoKYCMgQHJlcXVlc3RfYm9keV9leGFtcGxlIEEgY29tcGxldGUgVXNlci4gW0hhc2hdIHt1c2VyOiB7bmFtZTogJ0x1aXMnLCBhZ2U6IDMwLCBwYXNzd29yZDogJ015V2Vha1Bhc3N3b3JkMTIzJ319YAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxLjJlbTsiPkByZXNwb25zZTwvc3VtbWFyeT4KCioqU3RydWN0dXJlKio6IGBAcmVzcG9uc2UgdGV4dChjb2RlKSBbdHlwZTxzdHJ1Y3R1cmU+XWAKCkRvY3VtZW50cyB0aGUgcmVzcG9uc2VzIG9mIHRoZSBlbmRwb2ludCBhbmQgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHJlc3BvbnNlcyBmb3VuZCBieSB0aGUgZW5naW5lLgoKKipFeGFtcGxlKio6CgpgIyBAcmVzcG9uc2UgVXNlciBub3QgZm91bmQgYnkgdGhlIHByb3ZpZGVkIElkKDQwNCkgW0hhc2h7c3VjY2VzczogQm9vbGVhbiwgbWVzc2FnZTogU3RyaW5nfV1gCgpgIyBAcmVzcG9uc2UgVmFsaWRhdGlvbiBlcnJvcnMoNDIyKSBbSGFzaHtzdWNjZXNzOiBCb29sZWFuLCBlcnJvcnM6IEFycmF5PEhhc2h7ZmllbGQ6IFN0cmluZywgdHlwZTogU3RyaW5nLCBkZXRhaWw6IEFycmF5PFN0cmluZz59Pn1dYAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxLjJlbTsiPkByZXNwb25zZV9leGFtcGxlPC9zdW1tYXJ5PgoKKipTdHJ1Y3R1cmUqKjogYEByZXNwb25zZV9leGFtcGxlIHRleHQoY29kZSkgW1N0cmluZyBIYXNoXWAKCkRvY3VtZW50cyByZXNwb25zZSBleGFtcGxlcyBvZiB0aGUgZW5kcG9pbnQgYXNzb2NpYXRlZCB0byBhIHJlc3BvbnNlIGNvZGUuCgoqKkV4YW1wbGUqKjoKCmAjIEByZXNwb25zZV9leGFtcGxlIEludmFsaWRhIEVtYWlsKDQyMikgW3tzdWNjZXNzOiAiZmFsc2UiLCBlcnJvcnM6IFt7ZmllbGQ6ICJlbWFpbCIsIHR5cGU6ICJlbWFpbCIsIGRldGFpbDogWyJJbnZhbGlkIGVtYWlsIl19XSB9XWAKCmAjIEByZXNwb25zZV9leGFtcGxlIElkIG5vdCBleGlzdHMgKDQwNCkgW3tzdWNjZXNzOiAiZmFsc2UiLCBtZXNzYWdlOiAiTm90aGluZyBmb3VuZCB3aXRoIHRoZSBwcm92aWRlZCBJRC4iIH1dYAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxLjJlbTsiPkB0YWc8L3N1bW1hcnk+CgoqKlN0cnVjdHVyZSoqOiBgQHRhZyB0ZXh0YAoKVGFncyB5b3VyIGVuZHBvaW50cy4gWW91IGNhbiBjb21wbGV0ZSB0aGUgdGFnIGRvY3VtZW50YXRpb24gaW4gdGhlIGluaXRpYWxpemVyIGZpbGUgYnkgZGVmaW5pbmcgdGhlc2UgdGFncyBiZWZvcmVoYW5kLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIHRoZSB0YWcgdG8gZXhpc3QgaW4geW91ciBpbml0aWFsaXplciBmaWxlIGJlZm9yZSB1c2UuCgoqKkV4YW1wbGUqKjoKYCMgQHRhZyBVc2Vyc2AKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeSBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMS4yZW07Ij5Abm9fYXV0aDwvc3VtbWFyeT4KCioqU3RydWN0dXJlKio6IGBAbm9fYXV0aGAKClRoaXMgdGFnIHdpbGwgcmVtb3ZlIGFueSBzZWN1cml0eSByZXF1aXJlbWVudCBmcm9tIHRoZSBlbmRwb2ludC4gVXNlZnVsIHdoZW4gbW9zdCBvZiB5b3VyIGVuZHBvaW50cyByZXF1aXJlIGF1dGhlbnRpY2F0aW9uIGFuZCBvbmx5IGEgZmV3IGRvIG5vdC4oRXg6IExvZ2luLCBSZWdpc3RyYXRpb24uLi4pCgoqKkV4YW1wbGUqKjoKYCMgQG5vX2F1dGhgCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnkgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuMmVtOyI+QGF1dGg8L3N1bW1hcnk+CgoqKlN0cnVjdHVyZSoqOiBgQGF1dGggW3R5cGVzXWAKClRoaXMgdGFnIHdpbGwgc2V0IHdoaWNoIHNlY3VyaXR5IG1lY2hhbmlzbXMgY2FuIGJlIHVzZWQgZm9yIHRoZSBlbmRwb2ludC4gVGhlIHNlY3VyaXR5IG1lY2hhbmlzbXMgTVVTVCBiZSBkZWZpbmVkIHByZXZpb3VzbHkgaW4gdGhlIGluaXRpYWxpemVyIGZpbGUuCgoqKkV4YW1wbGUqKjoKYCMgQGF1dGggW2JlYXJlciwgYmFzaWNdYAoKPC9kZXRhaWxzPgoKWW91IGNhbiB1c2UgdGhlc2UgdGFncyBpbiB5b3VyIGNvbnRyb2xsZXIgbWV0aG9kcyB0byBlbmhhbmNlIHRoZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLiBSZW1lbWJlciB0byB1c2UgbWFya2Rvd24gZm9ybWF0dGluZyBpbiB5b3VyIGRlc2NyaXB0aW9ucyBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5IGluIHRoZSBnZW5lcmF0ZWQgT0FTIGRvY3VtZW50LgoKIyMjIEV4YW1wbGUgb2YgZG9jdW1lbnRlZCBlbmRwb2ludHMKCmBgYHJ1YnkKY2xhc3MgVXNlcnNDb250cm9sbGVyIDwgQXBwbGljYXRpb25Db250cm9sbGVyCiAgYmVmb3JlX2FjdGlvbiA6c2V0X3VzZXIsIG9ubHk6ICVpW3Nob3cgdXBkYXRlIGRlc3Ryb3ldCgogICMgQHN1bW1hcnkgUmV0dXJucyBhIGxpc3Qgb2YgVXNlcnMuCiAgIwogICMgQHBhcmFtZXRlciBvZmZzZXQocXVlcnkpIFtJbnRlZ2VyXSAgVXNlZCBmb3IgcGFnaW5hdGlvbiBvZiByZXNwb25zZSBkYXRhIChkZWZhdWx0OiAyNSBpdGVtcyBwZXIgcmVzcG9uc2UpLiBTcGVjaWZpZXMgdGhlIG9mZnNldCBvZiB0aGUgbmV4dCBibG9jayBvZiBkYXRhIHRvIHJlY2VpdmUuCiAgIyBAcGFyYW1ldGVyIHN0YXR1cyhxdWVyeSkgW0FycmF5PFN0cmluZz5dICAgRmlsdGVyIGJ5IHN0YXR1cy4gKGUuZy4gc3RhdHVzW109aW5hY3RpdmUmc3RhdHVzW109ZGVsZXRlZCkuCiAgIyBAcGFyYW1ldGVyIFgtZnJvbnQoaGVhZGVyKSBbU3RyaW5nXSBIZWFkZXIgZm9yIGlkZW50aWZ5IHRoZSBmcm9udC4KICBkZWYgaW5kZXgKICAgIEB1c2VycyA9IFVzZXIuYWxsCiAgZW5kCgogICMgQHN1bW1hcnkgR2V0IGEgdXNlciBieSBpZC4KICAjIEBhdXRoIFtiZWFyZXJdCiAgIwogICMgVGhpcyBtZXRob2Qgc2hvdyBhIFVzZXIgYnkgSUQuIFRoZSBpZCBtdXN0IGV4aXN0IG9mIG90aGVyIHdheSBpdCB3aWxsIGJlIHJldHVybmluZyBhICoqYDQwNGAqKi4KICAjCiAgIyBAcGFyYW1ldGVyIGlkKHBhdGgpIFtJbnRlZ2VyXSBVc2VkIGZvciBpZGVudGlmeSB0aGUgdXNlci4KICAjIEByZXNwb25zZSBSZXF1ZXN0ZWQgVXNlcigyMDApIFtIYXNoe3VzZXI6IHtuYW1lOiBTdHJpbmcsIGVtYWlsOiBTdHJpbmcsIGNyZWF0ZWRfYXQ6IERhdGVUaW1lIH19XQogICMgQHJlc3BvbnNlIFVzZXIgbm90IGZvdW5kIGJ5IHRoZSBwcm92aWRlZCBJZCg0MDQpIFtIYXNoe3N1Y2Nlc3M6IEJvb2xlYW4sIG1lc3NhZ2U6IFN0cmluZ31dCiAgIyBAcmVzcG9uc2UgWW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHBlcm1pc3Npb24gZm9yIGFjY2VzcyB0byB0aGlzIHJlc291cmNlKDQwMykgW0hhc2h7c3VjY2VzczogQm9vbGVhbiwgbWVzc2FnZTogU3RyaW5nfV0KICBkZWYgc2hvdwogICAgcmVuZGVyIGpzb246IEB1c2VyCiAgZW5kCgogICMgQHN1bW1hcnkgQ3JlYXRlIGEgVXNlcgogICMgQG5vX2F1dGgKICAjCiAgIyBAcmVxdWVzdF9ib2R5IFRoZSB1c2VyIHRvIGJlIGNyZWF0ZWQuIEF0IGxlYXN0IGluY2x1ZGUgYW4gYGVtYWlsYC4gWyFVc2VyXQogICMgQHJlcXVlc3RfYm9keV9leGFtcGxlIGJhc2ljIHVzZXIgW0hhc2hdIHt1c2VyOiB7bmFtZTogIkx1aXMiLCBlbWFpbDogImx1aXNAZ21haWwub2NvbSJ9fQogIGRlZiBjcmVhdGUKICAgIEB1c2VyID0gVXNlci5uZXcodXNlcl9wYXJhbXMpCgogICAgaWYgQHVzZXIuc2F2ZQogICAgICByZW5kZXIganNvbjogQHVzZXIsIHN0YXR1czogOmNyZWF0ZWQKICAgIGVsc2UKICAgICAgcmVuZGVyIGpzb246IHsgc3VjY2VzczogZmFsc2UsIGVycm9yczogQHVzZXIuZXJyb3JzIH0sIHN0YXR1czogOnVucHJvY2Vzc2FibGVfZW50aXR5CiAgICBlbmQKICBlbmQKCiAgIyBBIGB1c2VyYCBjYW4gYmUgdXBkYXRlZCB3aXRoIHRoaXMgbWV0aG9kCiAgIyAtIFRoZXJlIGlzIG5vIG9wdGlvbgogICMgLSBJdCBtdXN0IHdvcmsKICAjIEB0YWdzIHVzZXJzLCB1cGRhdGUKICAjIEByZXF1ZXN0X2JvZHkgVXNlciB0byBiZSBjcmVhdGVkIFshSGFzaHt1c2VyOiB7IG5hbWU6IFN0cmluZywgZW1haWw6ICFTdHJpbmcsIGFnZTogSW50ZWdlciwgYXZhaWxhYmxlX2RhdGVzOiBBcnJheTxEYXRlPn19XQogICMgQHJlcXVlc3RfYm9keV9leGFtcGxlIFVwZGF0ZSB1c2VyIFtIYXNoXSB7dXNlcjoge25hbWU6ICJMdWlzIiwgZW1haWw6ICJsdWlzQGdtYWlsLmNvbSJ9fQogICMgQHJlcXVlc3RfYm9keV9leGFtcGxlIENvbXBsZXRlIFVzZXIgW0hhc2hdIHt1c2VyOiB7bmFtZTogIkx1aXMiLCBlbWFpbDogImx1aXNAZ21haWwuY29tIiwgYWdlOiAyMX19CiAgZGVmIHVwZGF0ZQogICAgaWYgQHVzZXIudXBkYXRlKHVzZXJfcGFyYW1zKQogICAgICByZW5kZXIganNvbjogQHVzZXIKICAgIGVsc2UKICAgICAgcmVuZGVyIGpzb246IEB1c2VyLmVycm9ycywgc3RhdHVzOiA6dW5wcm9jZXNzYWJsZV9lbnRpdHkKICAgIGVuZAogIGVuZAoKICAjIEBzdW1tYXJ5IERlbGV0ZSBhIFVzZXIKICAjIERlbGV0ZSBhIHVzZXIgYW5kIGhpcyBhc3NvY2lhdGVkIGRhdGEuCiAgZGVmIGRlc3Ryb3kKICAgIEB1c2VyLmRlc3Ryb3khCiAgICByZWRpcmVjdF90byB1c2Vyc191cmwsIG5vdGljZTogJ1VzZXIgd2FzIHN1Y2Nlc3NmdWxseSBkZXN0cm95ZWQuJywgc3RhdHVzOiA6c2VlX290aGVyCiAgZW5kCgogIHByaXZhdGUKCiAgIyBVc2UgY2FsbGJhY2tzIHRvIHNoYXJlIGNvbW1vbiBzZXR1cCBvciBjb25zdHJhaW50cyBiZXR3ZWVuIGFjdGlvbnMuCiAgZGVmIHNldF91c2VyCiAgICBAdXNlciA9IFVzZXIuZmluZChwYXJhbXNbOmlkXSkKICBlbmQKCiAgIyBPbmx5IGFsbG93IGEgbGlzdCBvZiB0cnVzdGVkIHBhcmFtZXRlcnMgdGhyb3VnaC4KICBkZWYgdXNlcl9wYXJhbXMKICAgIHBhcmFtcy5yZXF1aXJlKDp1c2VyKS5wZXJtaXQoOm5hbWUsIDplbWFpbCkKICBlbmQKZW5kCmBgYAoKIyMg8J+UklNlY3VyaW5nIHRoZSBPYXNSYWlscyBFbmdpbmUKClRvIHNlY3VyZSB0aGUgT2FzUmFpbHMgZW5naW5lLCB3aGljaCBleHBvc2VzIGFuIGVuZHBvaW50IGZvciBzaG93aW5nIHRoZSBPQVMgZGVmaW5pdGlvbiwgeW91IGNhbiBjb25maWd1cmUgYXV0aGVudGljYXRpb24gdG8gZW5zdXJlIHRoYXQgb25seSBhdXRob3JpemVkIHVzZXJzIGhhdmUgYWNjZXNzLiBIZXJlIGFyZSBhIGZldyBtZXRob2RzIHRvIGFjaGlldmUgdGhpczoKCiMjIyAxLiBVc2luZyBCYXNpYyBBdXRoZW50aWNhdGlvbgoKVXNlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHRvIHByb3RlY3QgdGhlIE9hc1JhaWxzIGVuZHBvaW50LiBZb3UgY2FuIHNldCB0aGlzIHVwIGluIGFuIGluaXRpYWxpemVyOgoKYGBgcnVieQojIGNvbmZpZy9pbml0aWFsaXplcnMvb2FzX3JhaWxzLnJiCk9hc1JhaWxzOjpFbmdpbmUubWlkZGxld2FyZS51c2UoUmFjazo6QXV0aDo6QmFzaWMpIGRvIHx1c2VybmFtZSwgcGFzc3dvcmR8CiAgQWN0aXZlU3VwcG9ydDo6U2VjdXJpdHlVdGlscy5zZWN1cmVfY29tcGFyZShSYWlscy5hcHBsaWNhdGlvbi5jcmVkZW50aWFscy5vYXNfcmFpbHNfdXNlcm5hbWUsIHVzZXJuYW1lKSAmCiAgICBBY3RpdmVTdXBwb3J0OjpTZWN1cml0eVV0aWxzLnNlY3VyZV9jb21wYXJlKFJhaWxzLmFwcGxpY2F0aW9uLmNyZWRlbnRpYWxzLm9hc19yYWlsc19wYXNzd29yZCwgcGFzc3dvcmQpCmVuZApgYGAKCiMjIyAyLiBVc2luZyBEZXZpc2UncyBgYXV0aGVudGljYXRlYCBIZWxwZXIKCllvdSBjYW4gdXNlIERldmlzZSdzIGBhdXRoZW50aWNhdGVgIGhlbHBlciB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIE9hc1JhaWxzIGVuZHBvaW50LiBGb3IgZXhhbXBsZSwgeW91IGNhbiBhbGxvdyBvbmx5IGFkbWluIHVzZXJzIHRvIGFjY2VzcyB0aGUgZW5kcG9pbnQ6CgpgYGBydWJ5CiMgY29uZmlnL3JvdXRlcy5yYgojIC4uLgphdXRoZW50aWNhdGUgOnVzZXIsIC0+KHVzZXIpIHsgdXNlci5hZG1pbj8gfSBkbwogIG1vdW50IE9hc1JhaWxzOjpFbmdpbmUsIGF0OiAnL2RvY3MnCmVuZApgYGAKCiMjIyAzLiBDdXN0b20gQXV0aGVudGljYXRpb24KClRvIHN1cHBvcnQgY3VzdG9tIGF1dGhlbnRpY2F0aW9uLCB5b3UgY2FuIGV4dGVuZCB0aGUgT2FzUmFpbHMnIEFwcGxpY2F0aW9uQ29udHJvbGxlciB1c2luZyBhIGhvb2suIFRoaXMgYWxsb3dzIHlvdSB0byBhZGQgY3VzdG9tIGJlZm9yZSBhY3Rpb25zIHRvIGNoZWNrIGZvciBzcGVjaWZpYyB1c2VyIHBlcm1pc3Npb25zOgoKYGBgcnVieQojIGNvbmZpZy9pbml0aWFsaXplcnMvb2FzX3JhaWxzLnJiCgpBY3RpdmVTdXBwb3J0Lm9uX2xvYWQoOm9hc19yYWlsc19hcHBsaWNhdGlvbl9jb250cm9sbGVyKSBkbwogICMgY29udGV4dCBoZXJlIGlzIE9hc1JhaWxzOjpBcHBsaWNhdGlvbkNvbnRyb2xsZXIKCiAgYmVmb3JlX2FjdGlvbiBkbwogICAgcmFpc2UgQWN0aW9uQ29udHJvbGxlcjo6Um91dGluZ0Vycm9yLm5ldygnTm90IEZvdW5kJykgdW5sZXNzIGN1cnJlbnRfdXNlciYuYWRtaW4/CiAgZW5kCgogIGRlZiBjdXJyZW50X3VzZXIKICAgICMgTG9hZCB0aGUgY3VycmVudCB1c2VyCiAgICBVc2VyLmZpbmQoc2Vzc2lvbls6dXNlcl9pZF0pICMgQWRqdXN0IGFjY29yZGluZyB0byB5b3VyIGF1dGhlbnRpY2F0aW9uIGxvZ2ljCiAgZW5kCmVuZApgYGAKCiMjIOKbj++4jyBDdXN0b21pemluZyB0aGUgVmlldwoKVGhlIE9hc1JhaWxzIGVuZ2luZSBwcm92aWRlcyBhbiBlYXN5IHdheSB0byBkaXNwbGF5IHlvdXIgT3BlbkFQSSBTcGVjaWZpY2F0aW9uIChPQVMpIHdpdGhpbiB5b3VyIFJhaWxzIGFwcGxpY2F0aW9uLiBCeSBkZWZhdWx0LCBpdCBpbmNsdWRlcyBhbiBgaW5kZXhgIHZpZXcgaW4gdGhlIGBPYXNSYWlsc0NvbnRyb2xsZXJgIHRoYXQgZGlzcGxheXMgW1JhcGlEb2NdKGh0dHBzOi8vcmFwaWRvY3dlYi5jb20vKSB0aHJvdWdoIGEgQ0ROIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9ucy4gWW91IGNhbiBlYXNpbHkgb3ZlcnJpZGUgdGhpcyB2aWV3IHRvIHJlcGxhY2UgUmFwaURvYyBlbnRpcmVseSBvciBjb25maWd1cmUgaXQgZGlmZmVyZW50bHkuCgojIyMjIE92ZXJyaWRpbmcgdGhlIGBpbmRleGAgVmlldwoKVG8gb3ZlcnJpZGUgdGhlIGBpbmRleGAgdmlldyBwcm92aWRlZCBieSB0aGUgT2FzUmFpbHMgZW5naW5lLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CgoxLiAqKkNyZWF0ZSB0aGUgT3ZlcnJpZGUgVmlldyBGaWxlKio6IEluIHlvdXIgaG9zdCBhcHBsaWNhdGlvbiwgY3JlYXRlIGEgbmV3IGZpbGUgYXQgdGhlIHBhdGggYGFwcC92aWV3cy9vYXNfcmFpbHMvb2FzX3JhaWxzL2luZGV4Lmh0bWwuZXJiYC4gSWYgdGhlIGRpcmVjdG9yaWVzIGRvIG5vdCBleGlzdCwgeW91IHdpbGwgbmVlZCB0byBjcmVhdGUgdGhlbS4KCjIuICoqQ3VzdG9taXplIHRoZSBWaWV3Kio6IE9wZW4gdGhlIG5ld2x5IGNyZWF0ZWQgYGluZGV4Lmh0bWwuZXJiYCBmaWxlIGFuZCBhZGQgeW91ciBjdXN0b20gSFRNTCBhbmQgRVJCIGNvZGUgdG8gZGlzcGxheSB0aGUgT0FTIGFzIGRlc2lyZWQuIFlvdSBjYW4gcmVmZXIgdG8gdGhlIHNvdXJjZSBjb2RlIG9mIHRoaXMgcHJvamVjdCBmb3IgZ3VpZGFuY2UuCgojIyMjIFVzaW5nIHRoZSBDdXN0b20gVmlldwoKT25jZSB0aGUgY3VzdG9tIHZpZXcgZmlsZSBpcyBpbiBwbGFjZSwgUmFpbHMgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSBpdCBpbnN0ZWFkIG9mIHRoZSB2aWV3IHByb3ZpZGVkIGJ5IHRoZSBPYXNSYWlscyBlbmdpbmUuIFRoaXMgYWxsb3dzIHlvdSB0byBmdWxseSBjdXN0b21pemUgdGhlIHByZXNlbnRhdGlvbiBvZiB0aGUgT0FTIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBlbmdpbmUncyBjb2RlLgoKIyMgQ29udHJpYnV0aW5nCgpDb250cmlidXRpb25zIGFyZSB3aGF0IG1ha2UgdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSBzdWNoIGFuIGFtYXppbmcgcGxhY2UgdG8gbGVhcm4sIGluc3BpcmUsIGFuZCBjcmVhdGUuIEFueSBjb250cmlidXRpb25zIHlvdSBtYWtlIGFyZSAqKmdyZWF0bHkgYXBwcmVjaWF0ZWQqKi4gSWYgeW91IGhhdmUgYSBzdWdnZXN0aW9uIHRoYXQgd291bGQgbWFrZSB0aGlzIGJldHRlciwgcGxlYXNlIGZvcmsgdGhlIHJlcG8gYW5kIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdC4gWW91IGNhbiBhbHNvIHNpbXBseSBvcGVuIGFuIGlzc3VlIHdpdGggdGhlIHRhZyAiZW5oYW5jZW1lbnQiLiBEb24ndCBmb3JnZXQgdG8gZ2l2ZSB0aGUgcHJvamVjdCBhIHN0YXLirZAhIFRoYW5rcyBhZ2FpbiEKCjEuIEZvcmsgdGhlIFByb2plY3QKMi4gQ3JlYXRlIHlvdXIgRmVhdHVyZSBCcmFuY2ggKGBnaXQgY2hlY2tvdXQgLWIgZmVhdHVyZS9BbWF6aW5nRmVhdHVyZWApCjMuIENvbW1pdCB5b3VyIENoYW5nZXMgKGBnaXQgY29tbWl0IC1tICdBZGQgc29tZSBBbWF6aW5nRmVhdHVyZSdgKQo0LiBQdXNoIHRvIHRoZSBCcmFuY2ggKGBnaXQgcHVzaCBvcmlnaW4gZmVhdHVyZS9BbWF6aW5nRmVhdHVyZWApCjUuIE9wZW4gYSBQdWxsIFJlcXVlc3QKCiMjIyBSb2FkbWFwIGFuZCBJZGVhcyBmb3IgSW1wcm92ZW1lbnQKCi0gQ2xlYW4sIGRvY3VtZW50IGFuZCBzdHJ1Y3R1cmUgdGhlIGNvZGUKLSBbeF0gU3VwcG9ydCBkb2N1bWVudGF0aW9uIG9mIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMKLSBEZWZpbmUgR2xvYmFsIFRhZ3MvQ29uZmlndXJhdGlvbiAoZS5nLiwgY29tbW9uIHJlc3BvbnNlcyBsaWtlIDQwNCBlcnJvcnMpCi0gUG9zdC1wcm9jZXNzIHRoZSBKU09OIGFuZCByZXBsYWNlIGNvbW1vbiBvYmplY3RzIHdpdGggcmVmZXJlbmNlcyB0byBjb21wb25lbnRzCi0gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgd2l0aCB0aGUgSlNPTiBpbiBwcm9kdWN0aW9uIG1vZGUgdG8gYXZvaWQgcmVidWlsZGluZyBpdCBvbiBldmVyeSByZXF1ZXN0Ci0gQ3JlYXRlIHRhZ3MgZm9yIHBvcHVsYXIgZ2VtcyB1c2VkIGluIEFQSXMgKGUuZy4sIGEgYEBwYWd5YCB0YWcgZm9yIGNvbW1vbiBwYWdpbmF0aW9uIHBhcmFtZXRlcnMpCi0gW3hdIEFkZCBiYXNpYyBhdXRoZW50aWNhdGlvbiB0byBPQVMgYW5kIFVJIGZvciBzZWN1cml0eSByZWFzb25zIChTb2x1dGlvbiBkb2N1bWVudGVkLCBub3QgbmVlZCB0byBiZSBtYW5hZ2VkIGJ5IHRoZSBlbmdpbmUpCi0gSW1wbGVtZW50IGFiaWxpdHkgdG8gZGVmaW5lIE9BUyBieSBuYW1lc3BhY2VzIChlLmcuLCBnZW5lcmF0ZSBPQVMgZm9yIHNwZWNpZmljIHJvdXRlcyBsaWtlIGAvYXBpYCBvciBzZXBhcmF0ZSB2ZXJzaW9ucyBWMSBhbmQgVjIpCgojIyBMaWNlbnNlCgpUaGUgZ2VtIGlzIGF2YWlsYWJsZSBhcyBvcGVuIHNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtHUEwtMy4wXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAuZW4uaHRtbCNsaWNlbnNlLXRleHQpLgo=
- readmeEtag: '"4af64793af0f5408c353d16dfec3294cbcf9095a"'
- readmeLastModified: Tue, 10 Sep 2024 19:18:20 GMT
+ IVtHZW0gVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9nZW0vdi9vYXNfcmFpbHM/Y29sb3I9RTk1NzNGKQohW0dpdEh1YiBMaWNlbnNlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2EtY2hhY29uL29hc19yYWlscz9jb2xvcj1ibHVlKQohW0dpdEh1YiBBY3Rpb25zIFdvcmtmbG93IFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvYWN0aW9ucy93b3JrZmxvdy9zdGF0dXMvYS1jaGFjb24vb2FzX3JhaWxzLy5naXRodWIlMkZ3b3JrZmxvd3MlMkZydWJ5b25yYWlscy55bWwpCiFbR2VtIFRvdGFsIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9nZW0vZHQvb2FzX3JhaWxzKQohW1N0YXRpYyBCYWRnZV0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9SYWlscy0lM0UlM0Q3LjAuMC0lMjNFOTU3M0YpCiFbU3RhdGljIEJhZGdlXShodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL1J1YnktJTNFJTNEMy4xLjAtJTIzRTk1NzNGKQoKIyDwn5ODT3BlbiBBUEkgU3BlY2lmaWNhdGlvbiBGb3IgUmFpbHMKCk9hc1JhaWxzIGlzIGEgUmFpbHMgZW5naW5lIGZvciBnZW5lcmF0aW5nICoqYXV0b21hdGljIGludGVyYWN0aXZlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgUmFpbHMgQVBJcyoqLiBJdCBnZW5lcmF0ZXMgYW4gKipPQVMgMy4xKiogZG9jdW1lbnQgYW5kIGRpc3BsYXlzIGl0IHVzaW5nICoqW1JhcGlEb2NdKGh0dHBzOi8vcmFwaWRvY3dlYi5jb20pKiouCgrwn46sIEEgRGVtbyBWaWRlbyBIZXJlOgpodHRwczovL3ZpbWVvLmNvbS8xMDEzNjg3MzMyCvCfjqwKCiFbU2NyZWVuc2hvdF0oaHR0cHM6Ly9hLWNoYWNvbi5jb20vYXNzZXRzL2ltYWdlcy9vYXNfcmFpbHNfdWkucG5nKQoKIyMgUmVsYXRlZCBQcm9qZWN0cwoKLSAqKltBcGlQaWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9BcGlwaWUvYXBpcGllLXJhaWxzKSoqOiBEb2Vzbid0IHN1cHBvcnQgT0FTIDMuMSwgcmVxdWlyZXMgbGVhcm5pbmcgYSBEU0wsIGxhY2tzIGEgbmljZSBVSQotICoqW3N3YWdnZXJfeWFyZC1yYWlsc10oaHR0cHM6Ly9naXRodWIuY29tL2xpdmluZ3NvY2lhbC9zd2FnZ2VyX3lhcmQtcmFpbHMpKio6IFNlZW1zIGFiYW5kb25lZCwgYnV0IHNlcnZlcyBhcyBpbnNwaXJhdGlvbgotICoqW1Jzd2FnXShodHRwczovL2dpdGh1Yi5jb20vcnN3YWcvcnN3YWcpKio6IE5vdCBhdXRvbWF0aWMsIGRlcGVuZHMgb24gUlNwZWM7IE1hbnkgZGV2ZWxvcGVycyBub3cgdXNlIE1pbml0ZXN0IGFzIGl0J3MgdGhlIGRlZmF1bHQgdGVzdCBmcmFtZXdvcmsKLSAqKltncmFwZS1zd2FnZ2VyXShodHRwczovL2dpdGh1Yi5jb20vcnVieS1ncmFwZS9ncmFwZS1zd2FnZ2VyKSoqOiBSZXF1aXJlcyBHcmFwZQotICoqW3JzcGVjX2FwaV9kb2N1bWVudGF0aW9uXShodHRwczovL2dpdGh1Yi5jb20vemlwbWFyay9yc3BlY19hcGlfZG9jdW1lbnRhdGlvbikqKjogUmVxdWlyZXMgUlNwZWMgYW5kIGEgY29tbWFuZCB0byBnZW5lcmF0ZSB0aGUgZG9jcwoKIyMgV2hhdCBTZXRzIE9hc1JhaWxzIEFwYXJ0PwoKLSAqKkR5bmFtaWMqKjogTm8gY29tbWFuZCByZXF1aXJlZCB0byBnZW5lcmF0ZSBkb2NzCi0gKipTaW1wbGUqKjogQ29tcGxlbWVudCBkZWZhdWx0IGRvY3VtZW50YXRpb24gd2l0aCBhIGZldyBjb21tZW50czsgbm8gbmVlZCB0byBsZWFybiBhIGNvbXBsZXggRFNMCi0gKipQdXJlIFJ1Ynkgb24gUmFpbHMgQVBJcyoqOiBObyBhZGRpdGlvbmFsIGZyYW1ld29ya3MgbmVlZGVkIChlLmcuLCBHcmFwZSwgUlNwZWMpCgojIyDwn5O977iPIE1vdGl2YXRpb24KCkFmdGVyIGV4cGVyaWVuY2luZyB0aGUgaW50ZXJhY3RpdmUgZG9jdW1lbnRhdGlvbiBpbiBQeXRob24ncyBmYXN0LWFwaSBmcmFtZXdvcmssIEkgc291Z2h0IHNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpbiBSdWJ5IG9uIFJhaWxzLiBVbmFibGUgdG8gZmluZCBhIHN1aXRhYmxlIHNvbHV0aW9uLCBJIFthc2tlZCBvbiBTdGFjayBPdmVyZmxvd10oaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzE5NDcwMTgvaXMtdGhlcmUtYS13YXktdG8tZ2VuZXJhdGUtYW4taW50ZXJhY3RpdmUtZG9jdW1lbnRhdGlvbi1mb3ItcmFpbHMtYXBpcykgeWVhcnMgYWdvLiBOb3csIHdpdGggc29tZSBmcmVlIHRpbWUgd2hpbGUgZnJlZWxhbmNpbmcgYXMgYW4gQVBJIGRldmVsb3BlciwgSSBkZWNpZGVkIHRvIGJ1aWxkIG15IG93biB0b29sLgoKKipOb3RlOiBUaGlzIGlzIG5vdCB5ZXQgYSBwcm9kdWN0aW9uLXJlYWR5IHNvbHV0aW9uLiBUaGUgY29kZSBtYXkgYmUgcm91Z2ggYW5kIGJlaGF2ZSB1bmV4cGVjdGVkbHksIGJ1dCBJIGFtIGFjdGl2ZWx5IHdvcmtpbmcgb24gaW1wcm92aW5nIGl0LiBJZiB5b3UgbGlrZSB0aGUgaWRlYSwgcGxlYXNlIGNvbnNpZGVyIGNvbnRyaWJ1dGluZyB0byBpdHMgZGV2ZWxvcG1lbnQuKioKClRoZSBnb2FsIGlzIHRvIG1pbmltaXplIHRoZSBlZmZvcnQgcmVxdWlyZWQgdG8gY3JlYXRlIGNvbXByZWhlbnNpdmUgZG9jdW1lbnRhdGlvbi4gQnkgZm9sbG93aW5nIFJFU1QgcHJpbmNpcGxlcyBpbiBSYWlscywgd2UgYmVsaWV2ZSB0aGlzIGlzIGFjaGlldmFibGUuIFlvdSBjYW4gZW5oYW5jZSB0aGUgZG9jdW1lbnRhdGlvbiB1c2luZyBbWWFyZF0oaHR0cHM6Ly95YXJkb2Mub3JnLykgdGFncy4KCiMjIPCfk4sgVGFibGUgb2YgQ29udGVudHMKCi0gW0luc3RhbGxhdGlvbl0oI2luc3RhbGxhdGlvbikKLSBbQ29uZmlndXJhdGlvbl0oI2NvbmZpZ3VyYXRpb24pCiAgLSBbQmFzaWMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIEFQSV0oI2Jhc2ljLWluZm9ybWF0aW9uLWFib3V0LXRoZS1hcGkpCiAgLSBbU2VydmVycyBJbmZvcm1hdGlvbl0oI3NlcnZlcnMtaW5mb3JtYXRpb24pCiAgLSBbVGFnIEluZm9ybWF0aW9uXSgjdGFnLWluZm9ybWF0aW9uKQogIC0gW09wdGlvbmFsIFNldHRpbmdzXSgjb3B0aW9uYWwtc2V0dGluZ3MpCiAgLSBbQXV0aGVudGljYXRpb24gU2V0dGluZ3NdKCNhdXRoZW50aWNhdGlvbi1zZXR0aW5ncykKICAtIFtEZWZhdWx0IFJlc3BvbnNlcyAoRXJyb3JzKV0oI2RlZmF1bHQtcmVzcG9uc2VzKQotIFtVc2FnZV0oI3VzYWdlKQogIC0gW0RvY3VtZW50aW5nIFlvdXIgRW5kcG9pbnRzXSgjZG9jdW1lbnRpbmcteW91ci1lbmRwb2ludHMpCiAgLSBbRXhhbXBsZV0oI2V4YW1wbGUtb2YtZG9jdW1lbnRlZC1lbmRwb2ludHMpCi0gW1NlY3VyaW5nIHRoZSBPYXNSYWlscyBFbmdpbmVdKCNzZWN1cmluZy10aGUtb2FzcmFpbHMtZW5naW5lKQotIFtDdXN0b21pemluZyB0aGUgVmlld10oI2N1c3RvbWl6aW5nLXRoZS12aWV3KQotIFtDb250cmlidXRpbmddKCNjb250cmlidXRpbmcpCiAgLSBbUm9hZG1hcCBhbmQgSWRlYXMgZm9yIEltcHJvdmVtZW50XSgjcm9hZG1hcC1hbmQtaWRlYXMtZm9yLWltcHJvdmVtZW50KQotIFtMaWNlbnNlXSgjbGljZW5zZSkKCiMjIEluc3RhbGxhdGlvbgoKMS4gQWRkIHRoaXMgbGluZSB0byB5b3VyIFJhaWxzIGFwcGxpY2F0aW9uJ3MgR2VtZmlsZToKCiAgIGBgYHJ1YnkKICAgZ2VtICJvYXNfcmFpbHMiYAogICBgYGAKCjIuIEV4ZWN1dGU6CgogICBgYGBiYXNoCiAgIGJ1bmRsZQogICBgYGAKCjMuIE1vdW50IHRoZSBlbmdpbmUgaW4geW91ciBjb25maWcvcm91dGVzLnJiIGZpbGUKCiAgIGBgYHJ1YnkKICAgbW91bnQgT2FzUmFpbHM6OkVuZ2luZSA9PiAnL2RvY3MnCiAgIGBgYAoKWW91J2xsIG5vdyBoYXZlICoqYmFzaWMgZG9jdW1lbnRhdGlvbioqIGJhc2VkIG9uIHlvdXIgcm91dGVzIGFuZCBhdXRvbWF0aWNhbGx5IGdhdGhlcmVkIGluZm9ybWF0aW9uIGF0IGBsb2NhbGhvc3Q6MzAwMC9kb2NzYC4gVG8gZW5oYW5jZSBpdCwgY3JlYXRlIGFuIGluaXRpYWxpemVyIGZpbGUgYW5kIGFkZCBbWWFyZF0oaHR0cHM6Ly95YXJkb2Mub3JnLykgdGFncyB0byB5b3VyIGNvbnRyb2xsZXIgbWV0aG9kcy4KCiMjIOKame+4jyBDb25maWd1cmF0aW9uCgpUbyBjb25maWd1cmUgT2FzUmFpbHMsIHlvdSBNVVNUIGNyZWF0ZSBhbiBpbml0aWFsaXplciBmaWxlIGluY2x1ZGluZyBhbGwgeW91ciBzZXR0aW5ncy4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gY3JlYXRlIHlvdXIgaW5pdGlhbGl6ZXIgZmlsZSwgd2hpY2ggeW91IGNhbiBlYXNpbHkgZG8gd2l0aDoKCmBgYGJhc2gKcmFpbHMgZ2VuZXJhdGUgb2FzX3JhaWxzOmNvbmZpZwpgYGAKClRoZW4gZmlsbCBpdCB3aXRoIHlvdXIgZGF0YS4gQmVsb3cgYXJlIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBvcHRpb25zOgoKIyMjIEJhc2ljIEluZm9ybWF0aW9uIGFib3V0IHRoZSBBUEkKCi0gYGNvbmZpZy5pbmZvLnRpdGxlYDogVGhlIHRpdGxlIG9mIHlvdXIgQVBJIGRvY3VtZW50YXRpb24uCi0gYGNvbmZpZy5pbmZvLnN1bW1hcnlgOiBBIGJyaWVmIHN1bW1hcnkgb2YgeW91ciBBUEkuCi0gYGNvbmZpZy5pbmZvLmRlc2NyaXB0aW9uYDogQSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB5b3VyIEFQSS4gVGhpcyBjYW4gaW5jbHVkZSBtYXJrZG93biBmb3JtYXR0aW5nIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBwcm9taW5lbnRseSBpbiB5b3VyIGRvY3VtZW50YXRpb24uCi0gYGNvbmZpZy5pbmZvLmNvbnRhY3QubmFtZWA6IFRoZSBuYW1lIG9mIHRoZSBjb250YWN0IHBlcnNvbiBvciBvcmdhbml6YXRpb24uCi0gYGNvbmZpZy5pbmZvLmNvbnRhY3QuZW1haWxgOiBUaGUgY29udGFjdCBlbWFpbCBhZGRyZXNzLgotIGBjb25maWcuaW5mby5jb250YWN0LnVybGA6IFRoZSBVUkwgZm9yIG1vcmUgaW5mb3JtYXRpb24gb3Igc3VwcG9ydC4KCiMjIyBTZXJ2ZXJzIEluZm9ybWF0aW9uCgotIGBjb25maWcuc2VydmVyc2A6IEFuIGFycmF5IG9mIHNlcnZlciBvYmplY3RzLCBlYWNoIGNvbnRhaW5pbmcgYHVybGAgYW5kIGBkZXNjcmlwdGlvbmAga2V5cy4gRm9yIG1vcmUgZGV0YWlscywgcmVmZXIgdG8gdGhlIFtPcGVuQVBJIFNwZWNpZmljYXRpb25dKGh0dHBzOi8vc3BlYy5vcGVuYXBpcy5vcmcvb2FzL2xhdGVzdC5odG1sI3NlcnZlci1vYmplY3QpLgoKIyMjIFRhZyBJbmZvcm1hdGlvbgoKLSBgY29uZmlnLnRhZ3NgOiBBbiBhcnJheSBvZiB0YWcgb2JqZWN0cywgZWFjaCBjb250YWluaW5nIGBuYW1lYCBhbmQgYGRlc2NyaXB0aW9uYCBrZXlzLiBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0byB0aGUgW09wZW5BUEkgU3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9zcGVjLm9wZW5hcGlzLm9yZy9vYXMvbGF0ZXN0Lmh0bWwjdGFnLW9iamVjdCkuCgojIyMgT3B0aW9uYWwgU2V0dGluZ3MKCi0gYGNvbmZpZy5kZWZhdWx0X3RhZ3NfZnJvbWA6IERldGVybWluZXMgdGhlIHNvdXJjZSBvZiBkZWZhdWx0IHRhZ3MgZm9yIG9wZXJhdGlvbnMuIENhbiBiZSBzZXQgdG8gYDpuYW1lc3BhY2VgIG9yIGA6Y29udHJvbGxlcmAuCi0gYGNvbmZpZy5hdXRvZGlzY292ZXJfcmVxdWVzdF9ib2R5YDogQXV0b21hdGljYWxseSBkZXRlY3RzIHJlcXVlc3QgYm9kaWVzIGZvciBjcmVhdGUvdXBkYXRlIG1ldGhvZHMuIERlZmF1bHQgaXMgYHRydWVgLgotIGBjb25maWcuYXV0b2Rpc2NvdmVyX3Jlc3BvbnNlc2A6IEF1dG9tYXRpY2FsbHkgZGV0ZWN0cyByZXNwb25zZXMgZnJvbSBjb250cm9sbGVyIHJlbmRlcnMuIERlZmF1bHQgaXMgYHRydWVgLgotIGBjb25maWcuYXBpX3BhdGhgOiBTZXRzIHRoZSBBUEkgcGF0aCBpZiB5b3VyIEFQSSBpcyB1bmRlciBhIGRpZmZlcmVudCBuYW1lc3BhY2UuCi0gYGNvbmZpZy5pZ25vcmVkX2FjdGlvbnNgOiBTZXRzIGFuIGFycmF5IHdpdGggdGhlIGNvbnRyb2xsZXIgb3IgY29udHJvbGxlciNhY3Rpb24uIE5vIG5lY2Vzc2FyeSB0byBhZGQgYXBpX3BhdGggYmVmb3JlLgoKIyMjIEF1dGhlbnRpY2F0aW9uIFNldHRpbmdzCgotIGBjb25maWcuYXV0aGVudGljYXRlX2FsbF9yb3V0ZXNfYnlfZGVmYXVsdGA6IERldGVybWluZXMgd2hldGhlciB0byBhdXRoZW50aWNhdGUgYWxsIHJvdXRlcyBieSBkZWZhdWx0LiBEZWZhdWx0IGlzIGB0cnVlYC4KLSBgY29uZmlnLnNlY3VyaXR5X3NjaGVtYWA6IFRoZSBkZWZhdWx0IHNlY3VyaXR5IHNjaGVtYSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbi4gQ2hvb3NlIGEgcHJlZGVmaW5lZCBzZWN1cml0eSBzY2hlbWEgZnJvbSBgWzphcGlfa2V5X2Nvb2tpZSwgOmFwaV9rZXlfaGVhZGVyLCA6YXBpX2tleV9xdWVyeSwgOmJhc2ljLCA6YmVhcmVyLCA6YmVhcmVyX2p3dCwgOm11dHVhbF90bHNdYC4KLSBgY29uZmlnLnNlY3VyaXR5X3NjaGVtYXNgOiBDdXN0b20gc2VjdXJpdHkgc2NoZW1hcy4gRm9sbG93IHRoZSBbT3BlbkFQSSBTcGVjaWZpY2F0aW9uXShodHRwczovL3NwZWMub3BlbmFwaXMub3JnL29hcy9sYXRlc3QuaHRtbCNzZWN1cml0eS1zY2hlbWUtb2JqZWN0KSBmb3IgZGVmaW5pbmcgdGhlc2Ugc2NoZW1hcy4KCiMjIyBEZWZhdWx0IEVycm9ycwoKLSBgY29uZmlnLnNldF9kZWZhdWx0X3Jlc3BvbnNlc2A6IERldGVybWluZXMgd2hldGhlciB0byBhZGQgZGVmYXVsdCBlcnJvcnMgcmVzcG9uc2VzIHRvIGVuZHBvaW50LiBEZWZhdWx0IGlzIGB0cnVlYC4KCi0gYGNvbmZpZy5wb3NzaWJsZV9kZWZhdWx0X3Jlc3BvbnNlc2A6IEFycmF5IHdpdGggcG9zc2libGUgZGVmYXVsdCBlcnJvcnMuKFNvbWUgd2lsbCBiZSBhZGRlZCBkZXBlbmRpbmcgb24gdGhlIGVuZHBvaW50LCBleGFtcGxlOiBub3RfZm91bmQgb25seSB3b3JrcyB3aXRoIHNob3cvdXBkYXRlL2RlbGV0ZSkuIERlZmF1bHQ6IFs6bm90X2ZvdW5kLCA6dW5hdXRob3JpemVkLCA6Zm9yYmlkZGVuXS4gSXQgc2hvdWxkIGJlIEhUVFAgc3RhdHVzIGNvZGUgc3ltYm9scyBmcm9tIHRoZSBsaXN0OiBgWzpub3RfZm91bmQsIDp1bmF1dGhvcml6ZWQsIDpmb3JiaWRkZW4sIDppbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIDp1bnByb2Nlc3NhYmxlX2VudGl0eV1gCgotIGBjb25maWcucmVzcG9uc2VfYm9keV9vZl9kZWZhdWx0YDogYm9keSBmb3IgdXNlIGluIGRlZmF1bHQgcmVzcG9uc2VzLiBJdCBtdXN0IGJlIGEgU3RyaW5nIGhhc2ggbGlrZSB0aGUgdXNlZCBpbiByZXF1ZXN0IGJvZHkgdGFncy4gRGVmYXVsdDogInsgbWVzc2FnZTogU3RyaW5nIH0iCgojIyDwn5OTIFVzYWdlCgpJbiBhZGRpdGlvbiB0byB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgaW4gdGhlIGluaXRpYWxpemVyIGZpbGUgYW5kIHRoZSBkYXRhIHRoYXQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSByb3V0ZXMgYW5kIG1ldGhvZHMgYXV0b21hdGljYWxseSwgaXQgaXMgZXNzZW50aWFsIHRvIGRvY3VtZW50IHlvdXIgQVBJIGluIHRoZSBmb2xsb3dpbmcgd2F5LiBUaGUgZG9jdW1lbnRhdGlvbiBpcyBjcmVhdGVkICoqd2l0aCB0aGUgaGVscCBvZiBZQVJEKiosIHNvIHRoZSBtZXRob2RzIGFyZSBkb2N1bWVudGVkIHdpdGggKipjb21tZW50IHRhZ3MqKi4KCiMjIyBEb2N1bWVudGluZyBZb3VyIEVuZHBvaW50cwoKQWxtb3N0IGV2ZXJ5IGRlc2NyaXB0aW9uIGluIGFuIE9BUyBmaWxlIHN1cHBvcnRzIHNpbXBsZSBtYXJrZG93bi4gVGhlIGZvbGxvd2luZyB0YWdzIGFyZSBhdmFpbGFibGUgZm9yIGRvY3VtZW50aW5nIHlvdXIgZW5kcG9pbnRzOgoKPGRldGFpbHM+CjxzdW1tYXJ5IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxLjJlbTsiPkBzdW1tYXJ5PC9zdW1tYXJ5PgoKKipTdHJ1Y3R1cmUqKjogYEBzdW1tYXJ5IHRleHRgCgpVc2VkIHRvIGFkZCBhIHN1bW1hcnkgdG8gdGhlIGVuZHBvaW50LiBJdCByZXBsYWNlcyB0aGUgZGVmYXVsdCBzdW1tYXJ5L3RpdGxlIG9mIHRoZSBlbmRwb2ludC4KCioqRXhhbXBsZSoqOgpgIyBAc3VtbWFyeSBUaGlzIGVuZHBvaW50IGNyZWF0ZXMgYSBVc2VyYAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxLjJlbTsiPkBwYXJhbWV0ZXI8L3N1bW1hcnk+CgoqKlN0cnVjdHVyZSoqOiBgQHBhcmFtZXRlciBuYW1lKHBvc2l0aW9uKSBbdHlwZV0gdGV4dGAKClJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgZm9yIHRoZSBlbmRwb2ludC4gVGhlIHBvc2l0aW9uIGNhbiBiZTogYGhlYWRlcmAsIGBwYXRoYCwgYGNvb2tpZWAsIG9yIGBxdWVyeWAuIFRoZSB0eXBlIHNob3VsZCBiZSBhIHZhbGlkIFJ1YnkgY2xhc3M6IGBTdHJpbmdgLCBgSW50ZWdlcmAsIGBBcnJheTxTdHJpbmc+YCwgZXRjLiBBZGQgYSBgIWAgYmVmb3JlIHRoZSBjbGFzcyB0byBpbmRpY2F0ZSBhIHJlcXVpcmVkIHBhcmFtZXRlci4KCioqRXhhbXBsZXMqKjoKYCMgQHBhcmFtZXRlciBwYWdlKHF1ZXJ5KSBbSW50ZWdlcl0gVGhlIHBhZ2UgbnVtYmVyLmAKYCMgQHBhcmFtZXRlciBzbHVnKHBhdGgpIFshU3RyaW5nXSBTbHVnIG9mIHRoZSBQcm9qZWN0LmAKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeSBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMS4yZW07Ij5AcmVxdWVzdF9ib2R5PC9zdW1tYXJ5PgoKKipTdHJ1Y3R1cmUqKjogYEByZXF1ZXN0X2JvZHkgdGV4dCBbdHlwZTxzdHJ1Y3R1cmU+XWAKCkRvY3VtZW50cyB0aGUgcmVxdWVzdCBib2R5IG5lZWRlZCBieSB0aGUgZW5kcG9pbnQuIFRoZSBzdHJ1Y3R1cmUgaXMgb3B0aW9uYWwgaWYgeW91IHByb3ZpZGUgYSB2YWxpZCBBY3RpdmUgUmVjb3JkIGNsYXNzLiBVc2UgYCFgIHRvIGluZGljYXRlIGEgcmVxdWlyZWQgcmVxdWVzdCBib2R5LgoKKipFeGFtcGxlKio6CgpgIyBAcmVxdWVzdF9ib2R5IFRoZSB1c2VyIHRvIGJlIGNyZWF0ZWQgWyFIYXNoe3VzZXI6IEhhc2h7bmFtZTogU3RyaW5nLCBhZ2U6IEludGVnZXIsIHBhc3N3b3JkOiBTdHJpbmd9fV1gCgpgIyBAcmVxdWVzdF9ib2R5IFRoZSB1c2VyIHRvIGJlIGNyZWF0ZWQgWyFVc2VyXWAKCmAjIEByZXF1ZXN0X2JvZHkgVGhlIHVzZXIgdG8gYmUgY3JlYXRlZCBbVXNlcl1gCgpgIyBAcmVxdWVzdF9ib2R5IFRoZSB1c2VyIHRvIGJlIGNyZWF0ZWQgWyFIYXNoe3VzZXI6IEhhc2h7bmFtZTogU3RyaW5nLCBhZ2U6IEludGVnZXIsIHBhc3N3b3JkOiBTdHJpbmcsIHN1cm5hbWVzOiBBcnJheTxTdHJpbmc+LCBjb29yZHM6IEhhc2h7bGF0OiBTdHJpbmcsIGxuZzogU3RyaW5nfX19XWAKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeSBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMS4yZW07Ij5AcmVxdWVzdF9ib2R5X2V4YW1wbGU8L3N1bW1hcnk+CgoqKlN0cnVjdHVyZSoqOiBgQHJlcXVlc3RfYm9keV9leGFtcGxlIHRleHQgW3R5cGVdIHN0cnVjdHVyZWAKCkFkZHMgZXhhbXBsZXMgdG8gdGhlIHByb3ZpZGVkIHJlcXVlc3QgYm9keS4KCioqRXhhbXBsZSoqOgpgIyBAcmVxdWVzdF9ib2R5X2V4YW1wbGUgQSBjb21wbGV0ZSBVc2VyLiBbSGFzaF0ge3VzZXI6IHtuYW1lOiAnTHVpcycsIGFnZTogMzAsIHBhc3N3b3JkOiAnTXlXZWFrUGFzc3dvcmQxMjMnfX1gCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnkgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuMmVtOyI+QHJlc3BvbnNlPC9zdW1tYXJ5PgoKKipTdHJ1Y3R1cmUqKjogYEByZXNwb25zZSB0ZXh0KGNvZGUpIFt0eXBlPHN0cnVjdHVyZT5dYAoKRG9jdW1lbnRzIHRoZSByZXNwb25zZXMgb2YgdGhlIGVuZHBvaW50IGFuZCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgcmVzcG9uc2VzIGZvdW5kIGJ5IHRoZSBlbmdpbmUuCgoqKkV4YW1wbGUqKjoKCmAjIEByZXNwb25zZSBVc2VyIG5vdCBmb3VuZCBieSB0aGUgcHJvdmlkZWQgSWQoNDA0KSBbSGFzaHtzdWNjZXNzOiBCb29sZWFuLCBtZXNzYWdlOiBTdHJpbmd9XWAKCmAjIEByZXNwb25zZSBWYWxpZGF0aW9uIGVycm9ycyg0MjIpIFtIYXNoe3N1Y2Nlc3M6IEJvb2xlYW4sIGVycm9yczogQXJyYXk8SGFzaHtmaWVsZDogU3RyaW5nLCB0eXBlOiBTdHJpbmcsIGRldGFpbDogQXJyYXk8U3RyaW5nPn0+fV1gCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnkgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuMmVtOyI+QHJlc3BvbnNlX2V4YW1wbGU8L3N1bW1hcnk+CgoqKlN0cnVjdHVyZSoqOiBgQHJlc3BvbnNlX2V4YW1wbGUgdGV4dChjb2RlKSBbU3RyaW5nIEhhc2hdYAoKRG9jdW1lbnRzIHJlc3BvbnNlIGV4YW1wbGVzIG9mIHRoZSBlbmRwb2ludCBhc3NvY2lhdGVkIHRvIGEgcmVzcG9uc2UgY29kZS4KCioqRXhhbXBsZSoqOgoKYCMgQHJlc3BvbnNlX2V4YW1wbGUgSW52YWxpZGEgRW1haWwoNDIyKSBbe3N1Y2Nlc3M6ICJmYWxzZSIsIGVycm9yczogW3tmaWVsZDogImVtYWlsIiwgdHlwZTogImVtYWlsIiwgZGV0YWlsOiBbIkludmFsaWQgZW1haWwiXX1dIH1dYAoKYCMgQHJlc3BvbnNlX2V4YW1wbGUgSWQgbm90IGV4aXN0cyAoNDA0KSBbe3N1Y2Nlc3M6ICJmYWxzZSIsIG1lc3NhZ2U6ICJOb3RoaW5nIGZvdW5kIHdpdGggdGhlIHByb3ZpZGVkIElELiIgfV1gCgo8L2RldGFpbHM+Cgo8ZGV0YWlscz4KPHN1bW1hcnkgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuMmVtOyI+QHRhZzwvc3VtbWFyeT4KCioqU3RydWN0dXJlKio6IGBAdGFnIHRleHRgCgpUYWdzIHlvdXIgZW5kcG9pbnRzLiBZb3UgY2FuIGNvbXBsZXRlIHRoZSB0YWcgZG9jdW1lbnRhdGlvbiBpbiB0aGUgaW5pdGlhbGl6ZXIgZmlsZSBieSBkZWZpbmluZyB0aGVzZSB0YWdzIGJlZm9yZWhhbmQuIEl0J3Mgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIHRhZyB0byBleGlzdCBpbiB5b3VyIGluaXRpYWxpemVyIGZpbGUgYmVmb3JlIHVzZS4KCioqRXhhbXBsZSoqOgpgIyBAdGFnIFVzZXJzYAoKPC9kZXRhaWxzPgoKPGRldGFpbHM+CjxzdW1tYXJ5IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxLjJlbTsiPkBub19hdXRoPC9zdW1tYXJ5PgoKKipTdHJ1Y3R1cmUqKjogYEBub19hdXRoYAoKVGhpcyB0YWcgd2lsbCByZW1vdmUgYW55IHNlY3VyaXR5IHJlcXVpcmVtZW50IGZyb20gdGhlIGVuZHBvaW50LiBVc2VmdWwgd2hlbiBtb3N0IG9mIHlvdXIgZW5kcG9pbnRzIHJlcXVpcmUgYXV0aGVudGljYXRpb24gYW5kIG9ubHkgYSBmZXcgZG8gbm90LihFeDogTG9naW4sIFJlZ2lzdHJhdGlvbi4uLikKCioqRXhhbXBsZSoqOgpgIyBAbm9fYXV0aGAKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeSBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMS4yZW07Ij5AYXV0aDwvc3VtbWFyeT4KCioqU3RydWN0dXJlKio6IGBAYXV0aCBbdHlwZXNdYAoKVGhpcyB0YWcgd2lsbCBzZXQgd2hpY2ggc2VjdXJpdHkgbWVjaGFuaXNtcyBjYW4gYmUgdXNlZCBmb3IgdGhlIGVuZHBvaW50LiBUaGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBNVVNUIGJlIGRlZmluZWQgcHJldmlvdXNseSBpbiB0aGUgaW5pdGlhbGl6ZXIgZmlsZS4KCioqRXhhbXBsZSoqOgpgIyBAYXV0aCBbYmVhcmVyLCBiYXNpY11gCgo8L2RldGFpbHM+CgpZb3UgY2FuIHVzZSB0aGVzZSB0YWdzIGluIHlvdXIgY29udHJvbGxlciBtZXRob2RzIHRvIGVuaGFuY2UgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24uIFJlbWVtYmVyIHRvIHVzZSBtYXJrZG93biBmb3JtYXR0aW5nIGluIHlvdXIgZGVzY3JpcHRpb25zIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkgaW4gdGhlIGdlbmVyYXRlZCBPQVMgZG9jdW1lbnQuCgojIyMgRXhhbXBsZSBvZiBkb2N1bWVudGVkIGVuZHBvaW50cwoKYGBgcnVieQpjbGFzcyBVc2Vyc0NvbnRyb2xsZXIgPCBBcHBsaWNhdGlvbkNvbnRyb2xsZXIKICBiZWZvcmVfYWN0aW9uIDpzZXRfdXNlciwgb25seTogJWlbc2hvdyB1cGRhdGUgZGVzdHJveV0KCiAgIyBAc3VtbWFyeSBSZXR1cm5zIGEgbGlzdCBvZiBVc2Vycy4KICAjCiAgIyBAcGFyYW1ldGVyIG9mZnNldChxdWVyeSkgW0ludGVnZXJdICBVc2VkIGZvciBwYWdpbmF0aW9uIG9mIHJlc3BvbnNlIGRhdGEgKGRlZmF1bHQ6IDI1IGl0ZW1zIHBlciByZXNwb25zZSkuIFNwZWNpZmllcyB0aGUgb2Zmc2V0IG9mIHRoZSBuZXh0IGJsb2NrIG9mIGRhdGEgdG8gcmVjZWl2ZS4KICAjIEBwYXJhbWV0ZXIgc3RhdHVzKHF1ZXJ5KSBbQXJyYXk8U3RyaW5nPl0gICBGaWx0ZXIgYnkgc3RhdHVzLiAoZS5nLiBzdGF0dXNbXT1pbmFjdGl2ZSZzdGF0dXNbXT1kZWxldGVkKS4KICAjIEBwYXJhbWV0ZXIgWC1mcm9udChoZWFkZXIpIFtTdHJpbmddIEhlYWRlciBmb3IgaWRlbnRpZnkgdGhlIGZyb250LgogIGRlZiBpbmRleAogICAgQHVzZXJzID0gVXNlci5hbGwKICBlbmQKCiAgIyBAc3VtbWFyeSBHZXQgYSB1c2VyIGJ5IGlkLgogICMgQGF1dGggW2JlYXJlcl0KICAjCiAgIyBUaGlzIG1ldGhvZCBzaG93IGEgVXNlciBieSBJRC4gVGhlIGlkIG11c3QgZXhpc3Qgb2Ygb3RoZXIgd2F5IGl0IHdpbGwgYmUgcmV0dXJuaW5nIGEgKipgNDA0YCoqLgogICMKICAjIEBwYXJhbWV0ZXIgaWQocGF0aCkgW0ludGVnZXJdIFVzZWQgZm9yIGlkZW50aWZ5IHRoZSB1c2VyLgogICMgQHJlc3BvbnNlIFJlcXVlc3RlZCBVc2VyKDIwMCkgW0hhc2h7dXNlcjoge25hbWU6IFN0cmluZywgZW1haWw6IFN0cmluZywgY3JlYXRlZF9hdDogRGF0ZVRpbWUgfX1dCiAgIyBAcmVzcG9uc2UgVXNlciBub3QgZm91bmQgYnkgdGhlIHByb3ZpZGVkIElkKDQwNCkgW0hhc2h7c3VjY2VzczogQm9vbGVhbiwgbWVzc2FnZTogU3RyaW5nfV0KICAjIEByZXNwb25zZSBZb3UgZG9uJ3QgaGF2ZSB0aGUgcmlnaHQgcGVybWlzc2lvbiBmb3IgYWNjZXNzIHRvIHRoaXMgcmVzb3VyY2UoNDAzKSBbSGFzaHtzdWNjZXNzOiBCb29sZWFuLCBtZXNzYWdlOiBTdHJpbmd9XQogIGRlZiBzaG93CiAgICByZW5kZXIganNvbjogQHVzZXIKICBlbmQKCiAgIyBAc3VtbWFyeSBDcmVhdGUgYSBVc2VyCiAgIyBAbm9fYXV0aAogICMKICAjIEByZXF1ZXN0X2JvZHkgVGhlIHVzZXIgdG8gYmUgY3JlYXRlZC4gQXQgbGVhc3QgaW5jbHVkZSBhbiBgZW1haWxgLiBbIVVzZXJdCiAgIyBAcmVxdWVzdF9ib2R5X2V4YW1wbGUgYmFzaWMgdXNlciBbSGFzaF0ge3VzZXI6IHtuYW1lOiAiTHVpcyIsIGVtYWlsOiAibHVpc0BnbWFpbC5vY29tIn19CiAgZGVmIGNyZWF0ZQogICAgQHVzZXIgPSBVc2VyLm5ldyh1c2VyX3BhcmFtcykKCiAgICBpZiBAdXNlci5zYXZlCiAgICAgIHJlbmRlciBqc29uOiBAdXNlciwgc3RhdHVzOiA6Y3JlYXRlZAogICAgZWxzZQogICAgICByZW5kZXIganNvbjogeyBzdWNjZXNzOiBmYWxzZSwgZXJyb3JzOiBAdXNlci5lcnJvcnMgfSwgc3RhdHVzOiA6dW5wcm9jZXNzYWJsZV9lbnRpdHkKICAgIGVuZAogIGVuZAoKICAjIEEgYHVzZXJgIGNhbiBiZSB1cGRhdGVkIHdpdGggdGhpcyBtZXRob2QKICAjIC0gVGhlcmUgaXMgbm8gb3B0aW9uCiAgIyAtIEl0IG11c3Qgd29yawogICMgQHRhZ3MgdXNlcnMsIHVwZGF0ZQogICMgQHJlcXVlc3RfYm9keSBVc2VyIHRvIGJlIGNyZWF0ZWQgWyFIYXNoe3VzZXI6IHsgbmFtZTogU3RyaW5nLCBlbWFpbDogIVN0cmluZywgYWdlOiBJbnRlZ2VyLCBhdmFpbGFibGVfZGF0ZXM6IEFycmF5PERhdGU+fX1dCiAgIyBAcmVxdWVzdF9ib2R5X2V4YW1wbGUgVXBkYXRlIHVzZXIgW0hhc2hdIHt1c2VyOiB7bmFtZTogIkx1aXMiLCBlbWFpbDogImx1aXNAZ21haWwuY29tIn19CiAgIyBAcmVxdWVzdF9ib2R5X2V4YW1wbGUgQ29tcGxldGUgVXNlciBbSGFzaF0ge3VzZXI6IHtuYW1lOiAiTHVpcyIsIGVtYWlsOiAibHVpc0BnbWFpbC5jb20iLCBhZ2U6IDIxfX0KICBkZWYgdXBkYXRlCiAgICBpZiBAdXNlci51cGRhdGUodXNlcl9wYXJhbXMpCiAgICAgIHJlbmRlciBqc29uOiBAdXNlcgogICAgZWxzZQogICAgICByZW5kZXIganNvbjogQHVzZXIuZXJyb3JzLCBzdGF0dXM6IDp1bnByb2Nlc3NhYmxlX2VudGl0eQogICAgZW5kCiAgZW5kCgogICMgQHN1bW1hcnkgRGVsZXRlIGEgVXNlcgogICMgRGVsZXRlIGEgdXNlciBhbmQgaGlzIGFzc29jaWF0ZWQgZGF0YS4KICBkZWYgZGVzdHJveQogICAgQHVzZXIuZGVzdHJveSEKICAgIHJlZGlyZWN0X3RvIHVzZXJzX3VybCwgbm90aWNlOiAnVXNlciB3YXMgc3VjY2Vzc2Z1bGx5IGRlc3Ryb3llZC4nLCBzdGF0dXM6IDpzZWVfb3RoZXIKICBlbmQKCiAgcHJpdmF0ZQoKICAjIFVzZSBjYWxsYmFja3MgdG8gc2hhcmUgY29tbW9uIHNldHVwIG9yIGNvbnN0cmFpbnRzIGJldHdlZW4gYWN0aW9ucy4KICBkZWYgc2V0X3VzZXIKICAgIEB1c2VyID0gVXNlci5maW5kKHBhcmFtc1s6aWRdKQogIGVuZAoKICAjIE9ubHkgYWxsb3cgYSBsaXN0IG9mIHRydXN0ZWQgcGFyYW1ldGVycyB0aHJvdWdoLgogIGRlZiB1c2VyX3BhcmFtcwogICAgcGFyYW1zLnJlcXVpcmUoOnVzZXIpLnBlcm1pdCg6bmFtZSwgOmVtYWlsKQogIGVuZAplbmQKYGBgCgojIyDwn5SSU2VjdXJpbmcgdGhlIE9hc1JhaWxzIEVuZ2luZQoKVG8gc2VjdXJlIHRoZSBPYXNSYWlscyBlbmdpbmUsIHdoaWNoIGV4cG9zZXMgYW4gZW5kcG9pbnQgZm9yIHNob3dpbmcgdGhlIE9BUyBkZWZpbml0aW9uLCB5b3UgY2FuIGNvbmZpZ3VyZSBhdXRoZW50aWNhdGlvbiB0byBlbnN1cmUgdGhhdCBvbmx5IGF1dGhvcml6ZWQgdXNlcnMgaGF2ZSBhY2Nlc3MuIEhlcmUgYXJlIGEgZmV3IG1ldGhvZHMgdG8gYWNoaWV2ZSB0aGlzOgoKIyMjIDEuIFVzaW5nIEJhc2ljIEF1dGhlbnRpY2F0aW9uCgpVc2UgYmFzaWMgYXV0aGVudGljYXRpb24gdG8gcHJvdGVjdCB0aGUgT2FzUmFpbHMgZW5kcG9pbnQuIFlvdSBjYW4gc2V0IHRoaXMgdXAgaW4gYW4gaW5pdGlhbGl6ZXI6CgpgYGBydWJ5CiMgY29uZmlnL2luaXRpYWxpemVycy9vYXNfcmFpbHMucmIKT2FzUmFpbHM6OkVuZ2luZS5taWRkbGV3YXJlLnVzZShSYWNrOjpBdXRoOjpCYXNpYykgZG8gfHVzZXJuYW1lLCBwYXNzd29yZHwKICBBY3RpdmVTdXBwb3J0OjpTZWN1cml0eVV0aWxzLnNlY3VyZV9jb21wYXJlKFJhaWxzLmFwcGxpY2F0aW9uLmNyZWRlbnRpYWxzLm9hc19yYWlsc191c2VybmFtZSwgdXNlcm5hbWUpICYKICAgIEFjdGl2ZVN1cHBvcnQ6OlNlY3VyaXR5VXRpbHMuc2VjdXJlX2NvbXBhcmUoUmFpbHMuYXBwbGljYXRpb24uY3JlZGVudGlhbHMub2FzX3JhaWxzX3Bhc3N3b3JkLCBwYXNzd29yZCkKZW5kCmBgYAoKIyMjIDIuIFVzaW5nIERldmlzZSdzIGBhdXRoZW50aWNhdGVgIEhlbHBlcgoKWW91IGNhbiB1c2UgRGV2aXNlJ3MgYGF1dGhlbnRpY2F0ZWAgaGVscGVyIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgT2FzUmFpbHMgZW5kcG9pbnQuIEZvciBleGFtcGxlLCB5b3UgY2FuIGFsbG93IG9ubHkgYWRtaW4gdXNlcnMgdG8gYWNjZXNzIHRoZSBlbmRwb2ludDoKCmBgYHJ1YnkKIyBjb25maWcvcm91dGVzLnJiCiMgLi4uCmF1dGhlbnRpY2F0ZSA6dXNlciwgLT4odXNlcikgeyB1c2VyLmFkbWluPyB9IGRvCiAgbW91bnQgT2FzUmFpbHM6OkVuZ2luZSwgYXQ6ICcvZG9jcycKZW5kCmBgYAoKIyMjIDMuIEN1c3RvbSBBdXRoZW50aWNhdGlvbgoKVG8gc3VwcG9ydCBjdXN0b20gYXV0aGVudGljYXRpb24sIHlvdSBjYW4gZXh0ZW5kIHRoZSBPYXNSYWlscycgQXBwbGljYXRpb25Db250cm9sbGVyIHVzaW5nIGEgaG9vay4gVGhpcyBhbGxvd3MgeW91IHRvIGFkZCBjdXN0b20gYmVmb3JlIGFjdGlvbnMgdG8gY2hlY2sgZm9yIHNwZWNpZmljIHVzZXIgcGVybWlzc2lvbnM6CgpgYGBydWJ5CiMgY29uZmlnL2luaXRpYWxpemVycy9vYXNfcmFpbHMucmIKCkFjdGl2ZVN1cHBvcnQub25fbG9hZCg6b2FzX3JhaWxzX2FwcGxpY2F0aW9uX2NvbnRyb2xsZXIpIGRvCiAgIyBjb250ZXh0IGhlcmUgaXMgT2FzUmFpbHM6OkFwcGxpY2F0aW9uQ29udHJvbGxlcgoKICBiZWZvcmVfYWN0aW9uIGRvCiAgICByYWlzZSBBY3Rpb25Db250cm9sbGVyOjpSb3V0aW5nRXJyb3IubmV3KCdOb3QgRm91bmQnKSB1bmxlc3MgY3VycmVudF91c2VyJi5hZG1pbj8KICBlbmQKCiAgZGVmIGN1cnJlbnRfdXNlcgogICAgIyBMb2FkIHRoZSBjdXJyZW50IHVzZXIKICAgIFVzZXIuZmluZChzZXNzaW9uWzp1c2VyX2lkXSkgIyBBZGp1c3QgYWNjb3JkaW5nIHRvIHlvdXIgYXV0aGVudGljYXRpb24gbG9naWMKICBlbmQKZW5kCmBgYAoKIyMg4puP77iPIEN1c3RvbWl6aW5nIHRoZSBWaWV3CgpUaGUgT2FzUmFpbHMgZW5naW5lIHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGRpc3BsYXkgeW91ciBPcGVuQVBJIFNwZWNpZmljYXRpb24gKE9BUykgd2l0aGluIHlvdXIgUmFpbHMgYXBwbGljYXRpb24uIEJ5IGRlZmF1bHQsIGl0IGluY2x1ZGVzIGFuIGBpbmRleGAgdmlldyBpbiB0aGUgYE9hc1JhaWxzQ29udHJvbGxlcmAgdGhhdCBkaXNwbGF5cyBbUmFwaURvY10oaHR0cHM6Ly9yYXBpZG9jd2ViLmNvbS8pIHRocm91Z2ggYSBDRE4gd2l0aCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zLiBZb3UgY2FuIGVhc2lseSBvdmVycmlkZSB0aGlzIHZpZXcgdG8gcmVwbGFjZSBSYXBpRG9jIGVudGlyZWx5IG9yIGNvbmZpZ3VyZSBpdCBkaWZmZXJlbnRseS4KCiMjIyMgT3ZlcnJpZGluZyB0aGUgYGluZGV4YCBWaWV3CgpUbyBvdmVycmlkZSB0aGUgYGluZGV4YCB2aWV3IHByb3ZpZGVkIGJ5IHRoZSBPYXNSYWlscyBlbmdpbmUsIGZvbGxvdyB0aGVzZSBzdGVwczoKCjEuICoqQ3JlYXRlIHRoZSBPdmVycmlkZSBWaWV3IEZpbGUqKjogSW4geW91ciBob3N0IGFwcGxpY2F0aW9uLCBjcmVhdGUgYSBuZXcgZmlsZSBhdCB0aGUgcGF0aCBgYXBwL3ZpZXdzL29hc19yYWlscy9vYXNfcmFpbHMvaW5kZXguaHRtbC5lcmJgLiBJZiB0aGUgZGlyZWN0b3JpZXMgZG8gbm90IGV4aXN0LCB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZSB0aGVtLgoKMi4gKipDdXN0b21pemUgdGhlIFZpZXcqKjogT3BlbiB0aGUgbmV3bHkgY3JlYXRlZCBgaW5kZXguaHRtbC5lcmJgIGZpbGUgYW5kIGFkZCB5b3VyIGN1c3RvbSBIVE1MIGFuZCBFUkIgY29kZSB0byBkaXNwbGF5IHRoZSBPQVMgYXMgZGVzaXJlZC4gWW91IGNhbiByZWZlciB0byB0aGUgc291cmNlIGNvZGUgb2YgdGhpcyBwcm9qZWN0IGZvciBndWlkYW5jZS4KCiMjIyMgVXNpbmcgdGhlIEN1c3RvbSBWaWV3CgpPbmNlIHRoZSBjdXN0b20gdmlldyBmaWxlIGlzIGluIHBsYWNlLCBSYWlscyB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIGl0IGluc3RlYWQgb2YgdGhlIHZpZXcgcHJvdmlkZWQgYnkgdGhlIE9hc1JhaWxzIGVuZ2luZS4gVGhpcyBhbGxvd3MgeW91IHRvIGZ1bGx5IGN1c3RvbWl6ZSB0aGUgcHJlc2VudGF0aW9uIG9mIHRoZSBPQVMgd2l0aG91dCBtb2RpZnlpbmcgdGhlIGVuZ2luZSdzIGNvZGUuCgojIyBDb250cmlidXRpbmcKCkNvbnRyaWJ1dGlvbnMgYXJlIHdoYXQgbWFrZSB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHN1Y2ggYW4gYW1hemluZyBwbGFjZSB0byBsZWFybiwgaW5zcGlyZSwgYW5kIGNyZWF0ZS4gQW55IGNvbnRyaWJ1dGlvbnMgeW91IG1ha2UgYXJlICoqZ3JlYXRseSBhcHByZWNpYXRlZCoqLiBJZiB5b3UgaGF2ZSBhIHN1Z2dlc3Rpb24gdGhhdCB3b3VsZCBtYWtlIHRoaXMgYmV0dGVyLCBwbGVhc2UgZm9yayB0aGUgcmVwbyBhbmQgY3JlYXRlIGEgcHVsbCByZXF1ZXN0LiBZb3UgY2FuIGFsc28gc2ltcGx5IG9wZW4gYW4gaXNzdWUgd2l0aCB0aGUgdGFnICJlbmhhbmNlbWVudCIuIERvbid0IGZvcmdldCB0byBnaXZlIHRoZSBwcm9qZWN0IGEgc3RhcuKtkCEgVGhhbmtzIGFnYWluIQoKMS4gRm9yayB0aGUgUHJvamVjdAoyLiBDcmVhdGUgeW91ciBGZWF0dXJlIEJyYW5jaCAoYGdpdCBjaGVja291dCAtYiBmZWF0dXJlL0FtYXppbmdGZWF0dXJlYCkKMy4gQ29tbWl0IHlvdXIgQ2hhbmdlcyAoYGdpdCBjb21taXQgLW0gJ0FkZCBzb21lIEFtYXppbmdGZWF0dXJlJ2ApCjQuIFB1c2ggdG8gdGhlIEJyYW5jaCAoYGdpdCBwdXNoIG9yaWdpbiBmZWF0dXJlL0FtYXppbmdGZWF0dXJlYCkKNS4gT3BlbiBhIFB1bGwgUmVxdWVzdAoKIyMjIFJvYWRtYXAgYW5kIElkZWFzIGZvciBJbXByb3ZlbWVudAoKLSBDbGVhbiwgZG9jdW1lbnQgYW5kIHN0cnVjdHVyZSB0aGUgY29kZQotIFt4XSBTdXBwb3J0IGRvY3VtZW50YXRpb24gb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcwotIERlZmluZSBHbG9iYWwgVGFncy9Db25maWd1cmF0aW9uIChlLmcuLCBjb21tb24gcmVzcG9uc2VzIGxpa2UgNDA0IGVycm9ycykKLSBQb3N0LXByb2Nlc3MgdGhlIEpTT04gYW5kIHJlcGxhY2UgY29tbW9uIG9iamVjdHMgd2l0aCByZWZlcmVuY2VzIHRvIGNvbXBvbmVudHMKLSBDcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSB3aXRoIHRoZSBKU09OIGluIHByb2R1Y3Rpb24gbW9kZSB0byBhdm9pZCByZWJ1aWxkaW5nIGl0IG9uIGV2ZXJ5IHJlcXVlc3QKLSBDcmVhdGUgdGFncyBmb3IgcG9wdWxhciBnZW1zIHVzZWQgaW4gQVBJcyAoZS5nLiwgYSBgQHBhZ3lgIHRhZyBmb3IgY29tbW9uIHBhZ2luYXRpb24gcGFyYW1ldGVycykKLSBbeF0gQWRkIGJhc2ljIGF1dGhlbnRpY2F0aW9uIHRvIE9BUyBhbmQgVUkgZm9yIHNlY3VyaXR5IHJlYXNvbnMgKFNvbHV0aW9uIGRvY3VtZW50ZWQsIG5vdCBuZWVkIHRvIGJlIG1hbmFnZWQgYnkgdGhlIGVuZ2luZSkKLSBJbXBsZW1lbnQgYWJpbGl0eSB0byBkZWZpbmUgT0FTIGJ5IG5hbWVzcGFjZXMgKGUuZy4sIGdlbmVyYXRlIE9BUyBmb3Igc3BlY2lmaWMgcm91dGVzIGxpa2UgYC9hcGlgIG9yIHNlcGFyYXRlIHZlcnNpb25zIFYxIGFuZCBWMikKCiMjIExpY2Vuc2UKClRoZSBnZW0gaXMgYXZhaWxhYmxlIGFzIG9wZW4gc291cmNlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgW0dQTC0zLjBdKGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5lbi5odG1sI2xpY2Vuc2UtdGV4dCkuCg==
+ readmeEtag: '"1210829dd2dce4f53aef476b7c003786374dc22a"'
+ readmeLastModified: Fri, 27 Sep 2024 22:02:49 GMT
repositoryId: 831796203
description: Generate Automatic Interactive Documentation for Your Rails API
created: '2024-07-21T16:44:36Z'
- updated: '2024-09-21T08:05:20Z'
+ updated: '2024-09-27T22:02:53Z'
language: Ruby
archived: false
- stars: 54
+ stars: 55
watchers: 3
forks: 2
owner: a-chacon
logo: https://avatars.githubusercontent.com/u/39093711?v=4
license: GPL-3.0
- repoEtag: '"0bb8afe742a63a6f52ba724c2f8846190fb45cc7a4d271c0af2bd7ef21a70959"'
- repoLastModified: Sat, 21 Sep 2024 08:05:20 GMT
+ repoEtag: '"ccd9ab4f135553f356600d31cb6cfbeca981125bae6f8439432b71bc50918900"'
+ repoLastModified: Fri, 27 Sep 2024 22:02:53 GMT
category: Parsers
foundInMaster: true
- source: openapi31 tags
@@ -32447,7 +32447,7 @@
owner: jalgos
logo: https://avatars.githubusercontent.com/u/8981259?v=4
license: MIT
- repoEtag: '"7f22b92b602354310c9fcb1008c4bb439f3fbd20365244a27956038a9668478b"'
+ repoEtag: '"870dc94490dc42b329b32d66f66ec11ba77fb901cca6db46d827e9718fb3990c"'
repoLastModified: Wed, 18 Sep 2024 11:00:22 GMT
foundInMaster: true
category:
@@ -32618,17 +32618,17 @@
(TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either
in yaml or json formats. 🍺
created: '2020-02-05T08:31:50Z'
- updated: '2024-09-27T02:09:45Z'
+ updated: '2024-09-28T03:25:38Z'
language: TypeScript
archived: false
- stars: 2867
+ stars: 2868
watchers: 12
forks: 320
owner: orval-labs
logo: https://avatars.githubusercontent.com/u/176128704?v=4
license: MIT
- repoEtag: '"60ec966d71ab58339ae1a4a9ab31af560e0877cfab5ee5be72d737b9fa9d030b"'
- repoLastModified: Fri, 27 Sep 2024 02:09:45 GMT
+ repoEtag: '"7b83d04d4f5ceeed41840fdbb702d6bfbfba9d1a043fbef19651798f02c12a99"'
+ repoLastModified: Sat, 28 Sep 2024 03:25:38 GMT
foundInMaster: true
oldLocations:
- https://github.com/anymaniax/orval
@@ -33349,9 +33349,9 @@
v3: true
repositoryMetadata:
base64Readme: >-
- IyBFdm9NYXN0ZXI6IEEgVG9vbCBGb3IgQXV0b21hdGljYWxseSBHZW5lcmF0aW5nIFN5c3RlbS1MZXZlbCBUZXN0IENhc2VzCgoKIVtdKGRvY3MvaW1nL2NhcmwtY2Vyc3RyYW5kLTEzNjgxMF9jb21wcmVzc2VkLmpwZyAgIlBob3RvIGJ5IENhcmwgQ2Vyc3RyYW5kIG9uIFVuc3BsYXNoIikKClshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9vcmcuZXZvbWFzdGVyL2V2b21hc3Rlci1jbGllbnQtamF2YS9iYWRnZS5zdmcpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvb3JnLmV2b21hc3Rlci9ldm9tYXN0ZXItY2xpZW50LWphdmEpClshW2phdmFkb2NdKGh0dHBzOi8vamF2YWRvYy5pby9iYWRnZTIvb3JnLmV2b21hc3Rlci9ldm9tYXN0ZXItY2xpZW50LWphdmEtY29udHJvbGxlci9qYXZhZG9jLnN2ZyldKGh0dHBzOi8vamF2YWRvYy5pby9kb2Mvb3JnLmV2b21hc3Rlci9ldm9tYXN0ZXItY2xpZW50LWphdmEtY29udHJvbGxlcikKIVtDSV0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL3dvcmtmbG93cy9DSS9iYWRnZS5zdmcpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9XZWJGdXp6aW5nL0V2b01hc3Rlci9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9XZWJGdXp6aW5nL0V2b01hc3RlcikKWyFbRE9JXShodHRwczovL3plbm9kby5vcmcvYmFkZ2UvOTIzODU5MzMuc3ZnKV0oaHR0cHM6Ly96ZW5vZG8ub3JnL2JhZGdlL2xhdGVzdGRvaS85MjM4NTkzMykKWyFbTGljZW5zZTogTEdQTCB2M10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUxHUExfdjMtYmx1ZS5zdmcpXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wKQpbIVtHaXRodWIgQWxsIFJlbGVhc2VzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9kb3dubG9hZHMvV2ViRnV6emluZy9ldm9tYXN0ZXIvdG90YWwuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL3JlbGVhc2VzKQoKCiMjIyBTdW1tYXJ5CgpfRXZvTWFzdGVyXyAoW3d3dy5ldm9tYXN0ZXIub3JnXShodHRwOi8vZXZvbWFzdGVyLm9yZykpIGlzIHRoZSBmaXJzdCAoMjAxNikgb3Blbi1zb3VyY2UgQUktZHJpdmVuIHRvb2wKdGhhdCBhdXRvbWF0aWNhbGx5ICpnZW5lcmF0ZXMqIHN5c3RlbS1sZXZlbCB0ZXN0IGNhc2VzCmZvciB3ZWIvZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMuClRoaXMgaXMgcmVsYXRlZCB0byBbRnV6emluZ10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnV6emluZykuCk5vdCBvbmx5IF9Fdm9NYXN0ZXJfIGNhbiBnZW5lcmF0ZSBpbnB1dHMgdGhhdCBmaW5kIHByb2dyYW0gY3Jhc2hlcywgYnV0IGFsc28gaXQgZ2VuZXJhdGVzIHNtYWxsIGVmZmVjdGl2ZSB0ZXN0IHN1aXRlcyAoZS5nLiwgaW4gSlVuaXQgZm9ybWF0KSB0aGF0IGNhbiBiZSB1c2VkIGZvciBfcmVncmVzc2lvbiB0ZXN0aW5nXy4KCl9Fdm9NYXN0ZXJfIGlzIGFuIEFJIGRyaXZlbiB0b29sLgpJbiBwYXJ0aWN1bGFyLCBpbnRlcm5hbGx5IGl0IHVzZXMgYW4gW0V2b2x1dGlvbmFyeSBBbGdvcml0aG1dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9hbGdvcml0aG0pCmFuZCBbRHluYW1pYyBQcm9ncmFtIEFuYWx5c2lzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EeW5hbWljX3Byb2dyYW1fYW5hbHlzaXMpICB0byBiZQphYmxlIHRvIGdlbmVyYXRlIGVmZmVjdGl2ZSB0ZXN0IGNhc2VzLgpUaGUgYXBwcm9hY2ggaXMgdG8gKmV2b2x2ZSogdGVzdCBjYXNlcyBmcm9tIGFuIGluaXRpYWwgcG9wdWxhdGlvbiBvZgpyYW5kb20gb25lcywgdHJ5aW5nIHRvIG1heGltaXplIG1lYXN1cmVzIGxpa2UgY29kZSBjb3ZlcmFnZSBhbmQgZmF1bHQgZGV0ZWN0aW9uLgpfRXZvTWFzdGVyXyB1c2VzIHNldmVyYWwga2luZHMgb2YgQUkgaGV1cmlzdGljcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGV2ZW4gZnVydGhlciwKYnVpbGRpbmcgb24gZGVjYWRlcyBvZiByZXNlYXJjaCBpbiB0aGUgZmllbGQgb2YgW1NlYXJjaC1CYXNlZCBTb2Z0d2FyZSBUZXN0aW5nXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZWFyY2gtYmFzZWRfc29mdHdhcmVfZW5naW5lZXJpbmcpLgoKCl9fS2V5IGZlYXR1cmVzX186CgoqIF9XZWIgQVBJc186IEF0IHRoZSBtb21lbnQsIF9Fdm9NYXN0ZXJfIGNhbiBnZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciBfX1JFU1RfXywgX19HcmFwaFFMX18gYW5kIF9fUlBDX18gKGUuZy4sIF9fZ1JQQ19fIGFuZCBfX1RocmlmdF9fKSBBUElzLgoKKiBfQmxhY2stQm94XyB0ZXN0aW5nIG1vZGU6IGNhbiBydW4gb24gYW55IEFQSSAocmVnYXJkbGVzcyBvZiBpdHMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIGUuZy4sIFB5dGhvbiBhbmQgR28pLgogIEhvd2V2ZXIsIHJlc3VsdHMgZm9yIGJsYWNrLWJveCB0ZXN0aW5nIHdpbGwgYmUgd29yc2UgdGhhbiB3aGl0ZS1ib3ggdGVzdGluZyAoZS5nLiwgZHVlIHRvIGxhY2sgb2YgY29kZSBhbmFseXNpcykuCiAgRGVmYXVsdCB0ZXN0IGNhc2Ugb3V0cHV0IGlzIGluIFB5dGhvbiwgYnV0IG90aGVyIGZvcm1hdHMgYXJlIGF2YWlsYWJsZSBhcyB3ZWxsLiAKCiogX1doaXRlLUJveF8gdGVzdGluZyBtb2RlOiBjYW4gYmUgdXNlZCBmb3IgQVBJcyBjb21waWxlZCB0bwogIEpWTSAoZS5nLiwgSmF2YSBhbmQgS290bGluKS4gX0V2b01hc3Rlcl8gYW5hbHlzZXMgdGhlIGJ5dGVjb2RlIG9mIHRoZSB0ZXN0ZWQgYXBwbGljYXRpb25zLCBhbmQgdXNlcwogIHNldmVyYWwgaGV1cmlzdGljcyBzdWNoIGFzIF90ZXN0YWJpbGl0eSB0cmFuc2Zvcm1hdGlvbnNfIGFuZCBfdGFpbnQgYW5hbHlzaXNfIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUKICBtb3JlIGVmZmVjdGl2ZSB0ZXN0IGNhc2VzLiBXZSBzdXBwb3J0IEpESyBfXzhfXyBhbmQgdGhlIG1ham9yIExUUyB2ZXJzaW9ucyBhZnRlciB0aGF0IChjdXJyZW50bHkgSkRLIF9fMjFfXykuIE1pZ2h0IHdvcmsgb24gb3RoZXIgSlZNIHZlcnNpb25zLCBidXQgd2UgcHJvdmlkZSBfX05PX18gc3VwcG9ydCBmb3IgaXQuCiAgTm90ZTogdGhlcmUgd2FzIGluaXRpYWwgc3VwcG9ydCBmb3Igb3RoZXIgbGFuZ3VhZ2VzIGFzIHdlbGwsIGxpa2UgZm9yIGV4YW1wbGUgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IGFuZCBDIywgYnV0IHRoZXkgd2VyZSBub3QgaW4gYSBzdGFibGUsIGZlYXR1cmUtY29tcGxldGUgc3RhdGUuIFRoZSBzdXBwb3J0IGZvciB0aG9zZSBsYW5ndWFnZXMgZm9yIHdoaXRlLWJveCB0ZXN0aW5nIGhhcyBiZWVuIGRyb3BwZWQsIGF0IGxlYXN0IGZvciB0aGUgdGltZSBiZWluZy4gCgoqIF9JbnN0YWxsYXRpb25fOiB3ZSBwcm92aWRlIGluc3RhbGxlcnMgZm9yIHRoZSBtYWluIG9wZXJhdGluZyBzeXN0ZW1zOiBfV2luZG93c18gKGAubXNpYCksCiAgX09TWF8gKGAuZG1nYCkgYW5kIF9MaW51eF8gKGAuZGViYCkuIFdlIGFsc28gcHJvdmlkZSBhbiB1YmVyLWZhdCBKQVIgZmlsZS4KICBUbyBkb3dubG9hZCB0aGVtLCBzZWUgdGhlIFtSZWxlYXNlIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL0V2b01hc3Rlci9yZWxlYXNlcykuCiAgUmVsZWFzZSBub3RlcyBhcmUgcHJlc2VudCBpbiB0aGUgZmlsZSBbcmVsZWFzZV9ub3Rlcy5tZF0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL2Jsb2IvbWFzdGVyL3JlbGVhc2Vfbm90ZXMubWQpLgogIElmIHlvdSBhcmUgdXNpbmcgdGhlIHViZXItZmF0IEpBUiwgaXQgc2hvdWxkIHdvcmsgd2l0aCBhbnkgbWFqb3IgTFRTIHZlcnNpb24gKGZyb20gSkRLIDggb24pLgogICBXaGVyZWFzIGZvciB0aGUgY2xpZW50IGxpYnJhcnksIG5lZWRlZCBmb3Igd2hpdGUtYm94IHRlc3RpbmcsIHdlIHdpbGwgc3VwcG9ydCBKREsgOCBsaWtlbHkgZm9yIGEgbG9uZywgbG9uZyB3aGlsZSwgYmUgd2FybmVkIHRoYXQgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBleGVjdXRhYmxlIEpBUiBtaWdodCBzdGFydCB0byByZXF1aXJlIGhpZ2hlciB2ZXJzaW9ucyBvZiB0aGUgSkRLIGluIGEgbm9uLXNvLWRpc3RhbnQgZnV0dXJlLgogICBJZiB0aGF0IGlzIGdvaW5nIHRvIGJlIGhpZ2hlciB0aGFuIHlvdXIgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBKVk0sIGlmIHlvdSBjYW5ub3QgdXBncmFkZSBvciBoYXZlIDIgZGlmZmVyZW50IEpES3Mgb24geW91ciBtYWNoaW5lLCB0aGVuIHlvdSBzaG91bGQgbm90IHVzZSB0aGUgdWJlci1qYXIgYnV0IHJhdGhlciBvbmUgb2YgdGhlIGluc3RhbGxlcnMuIAogICBXaGVuIHlvdSB1c2Ugb25lIG9mIHRoZSBpbnN0YWxsZXJzLCBrZWVwIGluIG1pbmQgdGhhdCBjdXJyZW50bHkgdGhleSBkbyBub3QgdXBkYXRlIHRoZSBgUEFUSGAgdmFyaWFibGUuIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBtYW51YWxseSwgW3NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2Rvd25sb2FkLm1kKS4gCgoqIF9TdGF0ZS1vZi10aGUtYXJ0XzogYW4gW2luZGVwZW5kZW50IHN0dWR5ICgyMDIyKV0oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDQuMDgzNDgpLCBjb21wYXJpbmcgMTAgZnV6emVycyBvbiAyMCBSRVNUZnVsIEFQSXMsIHNob3dzIHRoYXQgX0V2b01hc3Rlcl8gZ2l2ZXMgdGhlIGJlc3QgcmVzdWx0cy4KCiogX1NjaGVtYV86IFJFU1QgQVBJcyBtdXN0IHByb3ZpZGUgYSBzY2hlbWEgaW4gW09wZW5BUEkvU3dhZ2dlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvKQogIGZvcm1hdCAoZWl0aGVyIF92Ml8gb3IgX3YzXykuCgoqIF9PdXRwdXRfOiB0aGUgdG9vbCBnZW5lcmF0ZXMgX0pVbml0XyAodmVyc2lvbiA0IG9yIDUpIHRlc3RzLCB3cml0dGVuIGluIGVpdGhlciBKYXZhIG9yIEtvdGxpbiwgYXMgd2VsbCBhcyB0ZXN0IHN1aXRlcyBpbiBQeXRob24gYW5kIEphdmFTY3JpcHQuIEZvciBhIGNvbXBsZXRlIGxpc3QsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIENMSSBwYXJhbWV0ZXIgWy0tb3V0cHV0Rm9ybWF0XShkb2NzL29wdGlvbnMubWQpLiAKICBTb21lIGV4YW1wbGVzIGFyZTogUFlUSE9OX1VOSVRURVNULCBLT1RMSU5fSlVOSVRfNSwgSkFWQV9KVU5JVF80IGFuZCBKU19KRVNULgogIE5vdGUgdGhhdCB0aGUgZ2VuZXJhdGVkIHRlc3RzIHJlbHkgb24gdGhpcmQtcGFydHkgbGlicmFyaWVzIChlLmcuLCB0byBtYWtlIEhUVFAgY2FsbHMpLiAKICBUaGVzZSB3aWxsIG5lZWQgdG8gYmUgc2V0dXAgaW4geW91ciBwcm9qZWN0cywgW3NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2xpYnJhcnlfZGVwZW5kZW5jaWVzLm1kKS4KCiogX0ZhdWx0IGRldGVjdGlvbl86IF9Fdm9NYXN0ZXJfIGNhbiBnZW5lcmF0ZSB0ZXN0cyBjYXNlcyB0aGF0IHJldmVhbCBmYXVsdHMvYnVncyBpbiB0aGUgdGVzdGVkIGFwcGxpY2F0aW9ucy4KICBEaWZmZXJlbnQgaGV1cmlzdGljcyBhcmUgZW1wbG95ZWQsIGxpa2UgY2hlY2tpbmcgZm9yIDUwMCBzdGF0dXMgY29kZXMgYW5kIG1pc21hdGNoZXMgZnJvbSB0aGUgQVBJIHNjaGVtYXMuCgoqIF9TZWxmLWNvbnRhaW5lZCB0ZXN0c186IGZvciB3aGl0ZS1ib3ggdGVzdGluZywgdGhlIGdlbmVyYXRlZCB0ZXN0cyBkbyBzdGFydC9zdG9wIHRoZSBhcHBsaWNhdGlvbiwgYmluZGluZyB0byBhbiBlcGhlbWVyYWwgcG9ydC4KICBUaGlzIG1lYW5zIHRoYXQgdGhlIGdlbmVyYXRlZCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgX3JlZ3Jlc3Npb24gdGVzdGluZ18gKGUuZy4sIGFkZGVkIHRvIHRoZSBHaXQgcmVwb3NpdG9yeQogIG9mIHRoZSBhcHBsaWNhdGlvbiwgYW5kIHJ1biB3aXRoIGFueSBidWlsZCB0b29sIHN1Y2ggYXMgTWF2ZW4gYW5kIEdyYWRsZSkuCiAgRm9yIGJsYWNrLWJveCB0ZXN0aW5nLCB5b3Ugd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYXBwbGljYXRpb24gaXMgdXAgYW5kIHJ1bm5pbmcgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdHMuIAoKCiogX1NRTCBoYW5kbGluZ186IGZvciB3aGl0ZS1ib3ggdGVzdGluZywgX0V2b01hc3Rlcl8gY2FuIGludGVyY2VwdCBhbmQgYW5hbHlzZSBhbGwgY29tbXVuaWNhdGlvbnMgZG9uZSB3aXRoIFNRTCBkYXRhYmFzZXMsIGFuZCB1c2UKICBzdWNoIGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGhpZ2hlciBjb2RlIGNvdmVyYWdlIHRlc3QgY2FzZXMuIEZ1cnRoZXJtb3JlLCBpdCBjYW4gZ2VuZXJhdGUgZGF0YSBkaXJlY3RseQogIGludG8gdGhlIGRhdGFiYXNlcywgYW5kIGhhdmUgc3VjaCBpbml0aWFsaXphdGlvbiBhdXRvbWF0aWNhbGx5IGFkZGVkIGluIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCiAgQXQgdGhlIG1vbWVudCwgX0V2b01hc3Rlcl8gc3VwcG9ydHMgX1Bvc3RncmVzXywgX015U1FMXyBhbmQgX0gyXyAgZGF0YWJhc2VzLgoKCiogX0F1dGhlbnRpY2F0aW9uXzogd2Ugc3VwcG9ydCBhdXRoIGJhc2VkIG9uIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgYW5kIGNvb2tpZXMuCiAgQmVzaWRlcyB1c2luZyBmaXhlZCBIVFRQIGhlYWRlcnMsIAogIGl0IGlzIGFsc28gcG9zc2libGUgdG8gZGVjbGFyYXRpdmVseSBzcGVjaWZ5IHdoaWNoIGxvZ2luIGVuZHBvaW50IHNob3VsZCBiZSB1c2VkIHRvIGR5bmFtaWNhbGx5IG9idGFpbiBhdXRoZW50aWNhdGlvbiBpbmZvIChlLmcuLCBhdXRoIHRva2VucyBvciBjb29raWVzKSBmb3IgZWFjaCB0ZXN0IGV4ZWN1dGlvbi4gW1NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2F1dGgubWQpLgoKX19Lbm93biBsaW1pdGF0aW9uc19fOgoKKiBfRHJpdmVyXzogdG8gYmUgdXNlZCBmb3IgX3doaXRlLWJveF8gdGVzdGluZywgdXNlcnMgbmVlZCB0byB3cml0ZSBhIFtkcml2ZXIgbWFudWFsbHldKGRvY3Mvd3JpdGVfZHJpdmVyLm1kKS4KICBXZSByZWNvbW1lbmQgdG8gdHJ5IF9ibGFjay1ib3hfIG1vZGUgZmlyc3QgKHNob3VsZCBqdXN0IG5lZWQgYSBmZXcgbWludXRlcyB0byBnZXQgaXQgdXAgYW5kIHJ1bm5pbmcpIHRvIGdldAogIGFuIGlkZWEgb2Ygd2hhdCBfRXZvTWFzdGVyXyBjYW4gZG8gZm9yIHlvdS4KCiogX0pESyA5K186IHdoaXRlLWJveCB0ZXN0aW5nIHJlcXVpcmVzIGJ5dGVjb2RlIG1hbmlwdWxhdGlvbi4gCiAgICAgICAgICAgIEVhY2ggbmV3IHJlbGVhc2Ugb2YgdGhlIEpESyBtYWtlcyBkb2luZyB0aGlzIGhhcmRlciBhbmQgaGFyZGVyLiAKICAgICAgICAgICAgRGVhbGluZyB3aXRoIEpES3MgYWJvdmUgX184X18gaXMgZG9hYmxlLCBidXQgaXQgcmVxdWlyZXMgc29tZSBzZXR0aW5ncy4KICAgICAgICAgICAgW1NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2pka3MubWQpLgoKKiBfRXhlY3V0aW9uIHRpbWVfOiB0byBnZXQgZ29vZCByZXN1bHRzLCB5b3UgbWlnaHQgbmVlZCB0byBydW4gdGhlIHNlYXJjaCBmb3Igc2V2ZXJhbCBob3Vycy4KICBXZSByZWNvbW1lbmQgdG8gZmlyc3QgdHJ5IHRoZSBzZWFyY2ggZm9yIDEwIG1pbnV0ZXMsIGp1c3QgdG8gZ2V0IGFuIGlkZWEgb2Ygd2hhdCB0eXBlIG9mIHRlc3RzIGNhbiBiZSBnZW5lcmF0ZWQuCiAgQnV0LCB0aGVuLCB5b3Ugc2hvdWxkIHJ1biBfRXZvTWFzdGVyXyBmb3Igc29tZXRoaW5nIGxpa2UgYmV0d2VlbiAxIGFuZCAyNCBob3VycyAodGhlIGxvbmdlciB0aGUgYmV0dGVyLCBidXQKICBpdCBpcyB1bmxpa2VseSB0byBnZXQgYmV0dGVyIHJlc3VsdHMgYWZ0ZXIgMjQgaG91cnMpLgoKKiBfUlBDIEFQSXNfOiBmb3IgdGhlIG1vbWVudCwgd2UgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgUlBDIHNjaGVtYSBkZWZpbml0aW9ucy4gRnV6emluZyBSUEMgQVBJcyByZXF1aXJlcyB0byB3cml0ZSBhIGRyaXZlciwgdXNpbmcgdGhlIGNsaWVudCBsaWJyYXJ5IG9mIHRoZSBBUEkgdG8gbWFrZSB0aGUgY2FsbHMuCgoqIF9FeHRlcm5hbCBzZXJ2aWNlc186IChlLmcuLCBvdGhlciBSRVNUZnVsIEFQSXMpIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciB0aGVtIChlLmcuLCB0byBhdXRvbWF0aWNhbGx5IG1vY2sgdGhlbSkuCiAgSXQgaXMgd29yayBpbiBwcm9ncmVzcy4KCiogX05vU1FMIGRhdGFiYXNlc186IChlLmcuLCBNb25nb0RCKSBjdXJyZW50bHkgbm8gc3VwcG9ydC4gSXQgaXMgd29yayBpbiBwcm9ncmVzcy4KCiogX0ZhaWxpbmcgdGVzdHNfOiB0aGUgdGVzdHMgZ2VuZXJhdGVkIGJ5IF9Fdm9NYXN0ZXJfIHNob3VsZCBhbGwgcGFzcywgYW5kIG5vdCBmYWlsLCBldmVuIHdoZW4gdGhleSBkZXRlY3QgYSBmYXVsdC4KICBJbiB0aG9zZSBjYXNlcywgY29tbWVudHMvdGVzdC1uYW1lcyB3b3VsZCBwb2ludCBvdXQgdGhhdCBhIHRlc3QgaXMgcmV2ZWFsaW5nIGEgcG9zc2libGUgZmF1bHQsIHdoaWxlIHN0aWxsIHBhc3NpbmcuCiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyB0aGUgZ2VuZXJhdGVkIHRlc3RzIG1pZ2h0IGZhaWwuIFRoaXMgaXMgZHVlIHRvIHRoZSBzbyBjYWxsZWQgX2ZsYWt5XyB0ZXN0cywgZS5nLiwgd2hlbgogIGEgdGVzdCBoYXMgYXNzZXJ0aW9ucyBiYXNlZCBvbiB0aGUgdGltZSBjbG9jayAoZS5nLiwgZGF0ZXMgYW5kIHRpbWVzdGFtcHMpLgogIFRoZXJlIGlzIG9uZ29pbmcgZWZmb3J0IHRvIGFkZHJlc3MgdGhpcyBwcm9ibGVtLCBidXQgaXQgaXMgc3RpbGwgbm90IGZ1bGx5IHNvbHZlZC4KCjwhLS0jIyMgVmlkZW9zLS0tPiAKPCEtLSAKPGRpdj5JY29ucyBtYWRlIGJ5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS9hdXRob3JzL2ZyZWVwaWsiIHRpdGxlPSJGcmVlcGlrIj5GcmVlcGlrPC9hPiBmcm9tIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS8iIHRpdGxlPSJGbGF0aWNvbiI+d3d3LmZsYXRpY29uLmNvbTwvYT48L2Rpdj4gCi0tPgoKCiMjIyBWaWRlb3MKCiFbXShkb2NzL2ltZy92aWRlby1wbGF5ZXItZmxhdGljb24ucG5nKQoKKiBBIFtzaG9ydCB2aWRlb10oaHR0cHM6Ly95b3V0dS5iZS8zbVl4amduaExFbykgKDUgbWludXRlcykKICBzaG93cyB0aGUgdXNlIG9mIF9Fdm9NYXN0ZXJfIG9uIG9uZSBvZiB0aGUKICBjYXNlIHN0dWRpZXMgaW4gW0VNQl0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRU1CKS4KCiogVGhpcyBbMTMtbWludXRlIHZpZGVvXShodHRwczovL3lvdXR1LmJlL09SeFpvWXc3TG5NKQogIHNob3dzIGhvdyB0byB3cml0ZSBhIHdoaXRlLWJveCBkcml2ZXIgZm9yIEV2b01hc3RlciwgZm9yIHRoZQogIFtyZXN0LWFwaS1leGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vV2ViRnV6emluZy9yZXN0LWFwaS1leGFtcGxlKS4KCiogSG93IHRvIFtEb3dubG9hZCBhbmQgSW5zdGFsbCBFdm9NYXN0ZXIgb24gV2luZG93cyAxMF0oaHR0cHM6Ly95b3V0dS5iZS91aF9Yekd4d3M5byksIHVzaW5nIGl0cyBfLm1zaV8gaW5zdGFsbGVyLgoKKiBbU2hvcnQgcHJlc2VudGF0aW9uXShodHRwczovL3lvdXR1LmJlL2lRU0FscnItUFpvKSAoNSBtaW51dGVzKSBhYm91dCB2ZXJzaW9uIDIuMC4wLiAKCiMjIyBBbHRlcm5hdGl2ZXMKCkluIHRoZSBsYXN0IGZldyB5ZWFycywgc2V2ZXJhbCBmZXcgdG9vbHMgaGF2ZSBiZWVuIHByb3Bvc2VkIGluIHRoZSBhY2FkZW1pYyBsaXRlcmF0dXJlIGFuZCBpbiB0aGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5LgpZb3UgY2FuIHJlYWQgbW9yZSBkZXRhaWxzIGluIHRoaXMgWzIwMjMgc3VydmV5XShkb2NzL3B1YmxpY2F0aW9ucy8yMDIzX3Rvc2VtX3N1cnZleS5wZGYpIG9uIFJFU1QgQVBJIHRlc3RpbmcuCgpFeGlzdGluZyBvcGVuLXNvdXJjZSB0b29scyBmb3IgUkVTVCBBUEkgZnV6emluZyBhcmUgZm9yIGV4YW1wbGUgKGluIGFscGhhYmV0aWMgb3JkZXIpOgpbQ0FUU10oaHR0cHM6Ly9naXRodWIuY29tL0VuZGF2YS9jYXRzKSwKW0RyZWRkXShodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vZHJlZGQpLApbRnV6ei1saWdodHllYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ZZWxwL2Z1enotbGlnaHR5ZWFyKSwKW1Jlc1Rlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCksCltSZXN0Q1RdKGh0dHBzOi8vZ2l0aHViLmNvbS9HSVNULU5KVS9SZXN0Q1QpLApbUmVzdGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9yZXN0bGVyLWZ1enplciksCltSZXN0VGVzdEdlbl0oaHR0cHM6Ly9naXRodWIuY29tL1NlVW5pVnIvUmVzdFRlc3RHZW4pLAphbmQKW1NjaGVtYXRoZXNpc10oaHR0cHM6Ly9naXRodWIuY29tL3NjaGVtYXRoZXNpcy9zY2hlbWF0aGVzaXMpLgoKQWxsIHRoZXNlIHRvb2xzIGFyZSBfYmxhY2stYm94XywgaS5lLiwgdGhleSBkbyBub3QgYW5hbHl6ZSB0aGUgc291cmNlLWNvZGUgb2YgdGhlIHRlc3RlZCBBUElzIHRvIGdlbmVyYXRlIG1vcmUgZWZmZWN0aXZlIHRlc3QgZGF0YS4KQXMgd2UgYXJlIHRoZSBhdXRob3JzIG9mIEV2b01hc3Rlciwgd2UgYXJlIHRvbyBiaWFzZWQgdG8gY29tcGFyZSBpdCBwcm9wZXJseSB3aXRoIHRob3NlIG90aGVyIGJsYWNrLWJveCB0b29scy4KSG93ZXZlciwgYW4gW2luZGVwZW5kZW50IHN0dWR5ICgyMDIyKV0oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDQuMDgzNDgpIHNob3dzIHRoYXQgRXZvTWFzdGVyIGlzIGFtb25nIHRoZSBiZXN0IHBlcmZvcm1hbnQuCkZ1cnRoZXJtb3JlLCBpZiB5b3VyIEFQSXMgYXJlIHJ1bm5pbmcgb24gdGhlIEpWTSAoZS5nLiwgd3JpdHRlbiBpbiBKYXZhIG9yIEtvdGxpbiksIHRoZW4gRXZvTWFzdGVyIGhhcyBjbGVhcmx5IGFuIGFkdmFudGFnZSwgYXMgaXQgc3VwcG9ydHMgX3doaXRlLWJveF8gdGVzdGluZy4gCgo8IS0tLQojIyMgSGlyaW5nCgpEZXBlbmRpbmcgb24gdGhlIHllYXIsIHdlIG1pZ2h0IGhhdmUgZnVuZGluZyBmb3IgX3Bvc3Rkb2NfIGFuZCBfUGhEIHN0dWRlbnRfIHBvc2l0aW9ucyB0byB3b3JrIG9uIHRoaXMgcHJvamVjdCAoaW4gT3NsbywgTm9yd2F5KS4KCkN1cnJlbnQgb3BlbiBwb3NpdGlvbnM6IG5vbmUuCjwgIS0tLQoqIDIwMjM6IFBoRCBzdHVkZW50IHBvc2l0aW9ucy4gTm8gbmV3IGNhbGxzIHNjaGVkdWxlZCBmb3IgdGhlIG1vbWVudC4KKiAyMDIzOiBQb3N0ZG9jIHBvc2l0aW9ucy4gTm8gbmV3IGNhbGxzIHNjaGVkdWxlZCBmb3IgdGhlIG1vbWVudC4KLS0tID4KCkZvciBxdWVzdGlvbnMgb24gdGhlc2UgcG9zaXRpb25zLCBwbGVhc2UgY29udGFjdCBQcm9mLiBBbmRyZWEgQXJjdXJpLgoKPCAhLS0tCkZvciBtb3JlIGRldGFpbHMgb24gY3VycmVudCB2YWNhbmNpZXMsIHNlZSBvdXIgZ3JvdXAgcGFnZSBhdCBbQUlTRSBMYWJdKGh0dHBzOi8vZW1yZXNlYXJjaC5naXRodWIuaW8vKS4KLS0tPgoKCgojIyMgRG9jdW1lbnRhdGlvbgoKSWYgeW91IGFyZSB0cnlpbmcgdG8gdXNlIF9Fdm9NYXN0ZXJfLCBidXQgdGhlIGluc3RydWN0aW9ucyBpbiB0aGlzIGRvY3VtZW50YXRpb24gYXJlIG5vdCBlbm91Z2ggdG8gZ2V0IHlvdSBzdGFydGVkLCBvciB0aGV5IGFyZSB0b28gdW5jbGVhciwgdGhlbiBpdCBtZWFucyBpdCBpcyBhIF9idWdfIGluIHRoZSBkb2N1bWVudGF0aW9uLCB3aGljaCB0aGVuIHdvdWxkIG5lZWQgdG8gYmUgY2xhcmlmaWVkIGFuZCB1cGRhdGVkLiBJbiBzdWNoIGNhc2VzLCBwbGVhc2UgY3JlYXRlIGEgbmV3IFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL2lzc3VlcykuCgpBbHNvLCBmZWVsIGZyZWUgdG8gc3RhcnQgbmV3IGRpc2N1c3Npb24gdG9waWNzIGluIHRoZSBbRGlzY3Vzc2lvbnMgZm9ydW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL0V2b01hc3Rlci9kaXNjdXNzaW9ucykuCklmIHlvdSBoYXZlIHRpbWUsIHBsZWFzZSBjb25zaWRlciBhbnN3ZXJpbmcgdGhlIHBvbGxzIHRoZXJlLgoKCiogW0V4YW1wbGUgb2YgZ2VuZXJhdGVkIHRlc3RzXShkb2NzL2V4YW1wbGUubWQpCiogW0Rvd25sb2FkIGFuZCBJbnN0YWxsIEV2b01hc3Rlcl0oZG9jcy9kb3dubG9hZC5tZCkKKiBbQnVpbGQgRXZvTWFzdGVyIGZyb20gc291cmNlXShkb2NzL2J1aWxkLm1kKQoqIFtDb21tYW5kLUxpbmUgSW50ZXJmYWNlIChDTEkpIG9wdGlvbnNdKGRvY3Mvb3B0aW9ucy5tZCkKKiBbT3BlbkFwaS9Td2FnZ2VyIFNjaGVtYV0oZG9jcy9vcGVuYXBpLm1kKQoqIFtVc2luZyBFdm9NYXN0ZXIgZm9yIEJsYWNrLUJveCBUZXN0aW5nIChlYXNpZXIgdG8gc2V0dXAsIGJ1dCB3b3JzZSByZXN1bHRzKV0oZG9jcy9ibGFja2JveC5tZCkKKiBbVXNpbmcgRXZvTWFzdGVyIGZvciBXaGl0ZS1Cb3ggVGVzdGluZyAoaGFyZGVyIHRvIHNldHVwLCBidXQgYmV0dGVyIHJlc3VsdHMpXShkb2NzL3doaXRlYm94Lm1kKQogICogW1dyaXRlIGFuIEV2b01hc3RlciBEcml2ZXIgZm9yIFdoaXRlLUJveCBUZXN0aW5nXShkb2NzL3dyaXRlX2RyaXZlci5tZCkKICAqIFtEZWFsaW5nIHdpdGggSkRLcyBhYm92ZSB2ZXJzaW9uIDhdKGRvY3MvamRrcy5tZCkKKiBbQ29uc29sZSBvdXRwdXRdKGRvY3MvY29uc29sZV9vdXRwdXQubWQpCiogW0xpYnJhcnkgZGVwZW5kZW5jaWVzIGZvciB0aGUgZ2VuZXJhdGVkIHRlc3RzXShkb2NzL2xpYnJhcnlfZGVwZW5kZW5jaWVzLm1kKQoqIFtIb3cgdG8gY29udHJpYnV0ZV0oZG9jcy9jb250cmlidXRlLm1kKQogICogW1RlY2huaWNhbCBub3RlcyBmb3IgZGV2ZWxvcGVycyBjb250cmlidXRpbmcgdG8gRXZvTWFzdGVyXShkb2NzL2Zvcl9kZXZlbG9wZXJzLm1kKQoqIFRyb3VibGVzaG9vdGluZwogICogW1dpbmRvd3MgYW5kIG5ldHdvcmtpbmddKGRvY3MvdHJvdWJsZXNob290aW5nL3dpbmRvd3MubWQpCiogTW9yZSBJbmZvCiAgKiBbQWNhZGVtaWMgcGFwZXJzIHJlbGF0ZWQgdG8gRXZvTWFzdGVyXShkb2NzL3B1YmxpY2F0aW9ucy5tZCkKICAqIFtTbGlkZXMgb2YgcHJlc2VudGF0aW9ucy9zZW1pbmFyc10oZG9jcy9wcmVzZW50YXRpb25zLm1kKQogICogW1JlcGxpY2F0aW5nIHN0dWRpZXNdKGRvY3MvcmVwbGljYXRpbmdfc3R1ZGllcy5tZCkKCgoKCgoKIyMjIEZ1bmRpbmcKCl9Fdm9NYXN0ZXJfIGhhcyBiZWVuIGZ1bmRlZCBieToKKiAyMDIwLTIwMjU6IGEgMiBtaWxsaW9uIEV1cm8gZ3JhbnQgYnkgdGhlIEV1cm9wZWFuIFJlc2VhcmNoIENvdW5jaWwgKEVSQyksCiAgYXMgcGFydCBvZiB0aGUgKkVSQyBDb25zb2xpZGF0b3IqIHByb2plY3QKICA8aT5Vc2luZyBFdm9sdXRpb25hcnkgQWxnb3JpdGhtcyB0byBVbmRlcnN0YW5kIGFuZCBTZWN1cmUgV2ViL0VudGVycHJpc2UgU3lzdGVtczwvaT4uCiogIDIwMTgtMjAyMTogYSA3LjggbWlsbGlvbiBOb3J3ZWdpYW4gS3JvbmVyIGdyYW50ICBieSB0aGUgUmVzZWFyY2ggQ291bmNpbCBvZiBOb3J3YXkgKFJDTiksCiAgIGFzIHBhcnQgb2YgdGhlIEZyaW5hdGVrIHByb2plY3QgPGk+RXZvbHV0aW9uYXJ5IEVudGVycHJpc2UgVGVzdGluZzwvaT4uCgoKPGltZyBzcmM9Imh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL0V2b01hc3Rlci9ibG9iL21hc3Rlci9kb2NzL2ltZy9MT0dPX0VSQy1GTEFHX0VVXy5qcGc/cmF3PXRydWUiIHdpZHRoPSIyMDAiID4KCgpUaGlzIHByb2plY3QgaGFzIHJlY2VpdmVkIGZ1bmRpbmcgZnJvbSB0aGUgRXVyb3BlYW4gUmVzZWFyY2ggQ291bmNpbCAoRVJDKSB1bmRlciB0aGUgRXVyb3BlYW4gVW5pb27igJlzIEhvcml6b24gMjAyMCByZXNlYXJjaCBhbmQgaW5ub3ZhdGlvbiBwcm9ncmFtbWUgKGdyYW50IGFncmVlbWVudCBObyA4NjQ5NzIpLgoKCiMjIyBMaWNlbnNlCl9Fdm9NYXN0ZXJfJ3Mgc291cmNlIGNvZGUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIExHUEwgKHYzKSBsaWNlbnNlLgpGb3IgYSBsaXN0IG9mIHRoZSB1c2VkIHRoaXJkLXBhcnR5IGxpYnJhcmllcywgeW91IGNhbiBkaXJlY3RseSBzZWUgdGhlIHJvb3QgW3BvbS54bWxdKC4vcG9tLnhtbCkgZmlsZS4KRm9yIGEgbGlzdCBvZiBjb2RlIGRpcmVjdGx5IGltcG9ydGVkIChhbmQgdGhlbiBwb3NzaWJseSBtb2RpZmllZC91cGRhdGVkKSBmcm9tCm90aGVyIG9wZW4tc291cmNlIHByb2plY3RzLCBzZWUgW2hlcmVdKC4vZG9jcy9yZXVzZWRfY29kZS5tZCkuCgoKPCEtLQojIyMgIVtdKGh0dHBzOi8vd3d3LnlvdXJraXQuY29tL2ltYWdlcy95a2xvZ28ucG5nKQoKWW91cktpdCBzdXBwb3J0cyBvcGVuIHNvdXJjZSBwcm9qZWN0cyB3aXRoIGl0cyBmdWxsLWZlYXR1cmVkIEphdmEgUHJvZmlsZXIuCllvdXJLaXQsIExMQyBpcyB0aGUgY3JlYXRvciBvZgo8YSBocmVmPSJodHRwczovL3d3dy55b3Vya2l0LmNvbS9qYXZhL3Byb2ZpbGVyLyI+WW91cktpdCBKYXZhIFByb2ZpbGVyPC9hPgphbmQKPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91cmtpdC5jb20vLm5ldC9wcm9maWxlci8iPllvdXJLaXQgLk5FVCBQcm9maWxlcjwvYT4sCmlubm92YXRpdmUgYW5kIGludGVsbGlnZW50IHRvb2xzIGZvciBwcm9maWxpbmcgSmF2YSBhbmQgLk5FVCBhcHBsaWNhdGlvbnMuCi0tPgoK
- readmeEtag: '"12966fef8f77635f681c780d05eaebaa9e12db88"'
- readmeLastModified: Sun, 15 Sep 2024 11:23:57 GMT
+ IyBFdm9NYXN0ZXI6IEEgVG9vbCBGb3IgQXV0b21hdGljYWxseSBHZW5lcmF0aW5nIFN5c3RlbS1MZXZlbCBUZXN0IENhc2VzCgoKIVtdKGRvY3MvaW1nL2NhcmwtY2Vyc3RyYW5kLTEzNjgxMF9jb21wcmVzc2VkLmpwZyAgIlBob3RvIGJ5IENhcmwgQ2Vyc3RyYW5kIG9uIFVuc3BsYXNoIikKClshW01hdmVuIENlbnRyYWxdKGh0dHBzOi8vbWF2ZW4tYmFkZ2VzLmhlcm9rdWFwcC5jb20vbWF2ZW4tY2VudHJhbC9vcmcuZXZvbWFzdGVyL2V2b21hc3Rlci1jbGllbnQtamF2YS9iYWRnZS5zdmcpXShodHRwczovL21hdmVuLWJhZGdlcy5oZXJva3VhcHAuY29tL21hdmVuLWNlbnRyYWwvb3JnLmV2b21hc3Rlci9ldm9tYXN0ZXItY2xpZW50LWphdmEpClshW2phdmFkb2NdKGh0dHBzOi8vamF2YWRvYy5pby9iYWRnZTIvb3JnLmV2b21hc3Rlci9ldm9tYXN0ZXItY2xpZW50LWphdmEtY29udHJvbGxlci9qYXZhZG9jLnN2ZyldKGh0dHBzOi8vamF2YWRvYy5pby9kb2Mvb3JnLmV2b21hc3Rlci9ldm9tYXN0ZXItY2xpZW50LWphdmEtY29udHJvbGxlcikKIVtDSV0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL3dvcmtmbG93cy9DSS9iYWRnZS5zdmcpClshW2NvZGVjb3ZdKGh0dHBzOi8vY29kZWNvdi5pby9naC9XZWJGdXp6aW5nL0V2b01hc3Rlci9icmFuY2gvbWFzdGVyL2dyYXBoL2JhZGdlLnN2ZyldKGh0dHBzOi8vY29kZWNvdi5pby9naC9XZWJGdXp6aW5nL0V2b01hc3RlcikKWyFbRE9JXShodHRwczovL3plbm9kby5vcmcvYmFkZ2UvOTIzODU5MzMuc3ZnKV0oaHR0cHM6Ly96ZW5vZG8ub3JnL2JhZGdlL2xhdGVzdGRvaS85MjM4NTkzMykKWyFbTGljZW5zZTogTEdQTCB2M10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9MaWNlbnNlLUxHUExfdjMtYmx1ZS5zdmcpXShodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wKQpbIVtHaXRodWIgQWxsIFJlbGVhc2VzXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9kb3dubG9hZHMvV2ViRnV6emluZy9ldm9tYXN0ZXIvdG90YWwuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL3JlbGVhc2VzKQoKCiMjIyBTdW1tYXJ5CgpfRXZvTWFzdGVyXyAoW3d3dy5ldm9tYXN0ZXIub3JnXShodHRwOi8vZXZvbWFzdGVyLm9yZykpIGlzIHRoZSBmaXJzdCAoMjAxNikgb3Blbi1zb3VyY2UgQUktZHJpdmVuIHRvb2wKdGhhdCBhdXRvbWF0aWNhbGx5ICpnZW5lcmF0ZXMqIHN5c3RlbS1sZXZlbCB0ZXN0IGNhc2VzCmZvciB3ZWIvZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMuClRoaXMgaXMgcmVsYXRlZCB0byBbRnV6emluZ10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnV6emluZykuCk5vdCBvbmx5IF9Fdm9NYXN0ZXJfIGNhbiBnZW5lcmF0ZSBpbnB1dHMgdGhhdCBmaW5kIHByb2dyYW0gY3Jhc2hlcywgYnV0IGFsc28gaXQgZ2VuZXJhdGVzIHNtYWxsIGVmZmVjdGl2ZSB0ZXN0IHN1aXRlcyAoZS5nLiwgaW4gSlVuaXQgZm9ybWF0KSB0aGF0IGNhbiBiZSB1c2VkIGZvciBfcmVncmVzc2lvbiB0ZXN0aW5nXy4KCl9Fdm9NYXN0ZXJfIGlzIGFuIEFJIGRyaXZlbiB0b29sLgpJbiBwYXJ0aWN1bGFyLCBpbnRlcm5hbGx5IGl0IHVzZXMgYW4gW0V2b2x1dGlvbmFyeSBBbGdvcml0aG1dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0V2b2x1dGlvbmFyeV9hbGdvcml0aG0pCmFuZCBbRHluYW1pYyBQcm9ncmFtIEFuYWx5c2lzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EeW5hbWljX3Byb2dyYW1fYW5hbHlzaXMpICB0byBiZQphYmxlIHRvIGdlbmVyYXRlIGVmZmVjdGl2ZSB0ZXN0IGNhc2VzLgpUaGUgYXBwcm9hY2ggaXMgdG8gKmV2b2x2ZSogdGVzdCBjYXNlcyBmcm9tIGFuIGluaXRpYWwgcG9wdWxhdGlvbiBvZgpyYW5kb20gb25lcywgdHJ5aW5nIHRvIG1heGltaXplIG1lYXN1cmVzIGxpa2UgY29kZSBjb3ZlcmFnZSBhbmQgZmF1bHQgZGV0ZWN0aW9uLgpfRXZvTWFzdGVyXyB1c2VzIHNldmVyYWwga2luZHMgb2YgQUkgaGV1cmlzdGljcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGV2ZW4gZnVydGhlciwKYnVpbGRpbmcgb24gZGVjYWRlcyBvZiByZXNlYXJjaCBpbiB0aGUgZmllbGQgb2YgW1NlYXJjaC1CYXNlZCBTb2Z0d2FyZSBUZXN0aW5nXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZWFyY2gtYmFzZWRfc29mdHdhcmVfZW5naW5lZXJpbmcpLgoKCl9fS2V5IGZlYXR1cmVzX186CgoqIF9XZWIgQVBJc186IEF0IHRoZSBtb21lbnQsIF9Fdm9NYXN0ZXJfIGNhbiBnZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciBfX1JFU1RfXywgX19HcmFwaFFMX18gYW5kIF9fUlBDX18gKGUuZy4sIF9fZ1JQQ19fIGFuZCBfX1RocmlmdF9fKSBBUElzLgoKKiBfQmxhY2stQm94XyB0ZXN0aW5nIG1vZGU6IGNhbiBydW4gb24gYW55IEFQSSAocmVnYXJkbGVzcyBvZiBpdHMgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIGUuZy4sIFB5dGhvbiBhbmQgR28pLgogIEhvd2V2ZXIsIHJlc3VsdHMgZm9yIGJsYWNrLWJveCB0ZXN0aW5nIHdpbGwgYmUgd29yc2UgdGhhbiB3aGl0ZS1ib3ggdGVzdGluZyAoZS5nLiwgZHVlIHRvIGxhY2sgb2YgY29kZSBhbmFseXNpcykuCiAgRGVmYXVsdCB0ZXN0IGNhc2Ugb3V0cHV0IGlzIGluIFB5dGhvbiwgYnV0IG90aGVyIGZvcm1hdHMgYXJlIGF2YWlsYWJsZSBhcyB3ZWxsLiAKCiogX1doaXRlLUJveF8gdGVzdGluZyBtb2RlOiBjYW4gYmUgdXNlZCBmb3IgQVBJcyBjb21waWxlZCB0bwogIEpWTSAoZS5nLiwgSmF2YSBhbmQgS290bGluKS4gX0V2b01hc3Rlcl8gYW5hbHlzZXMgdGhlIGJ5dGVjb2RlIG9mIHRoZSB0ZXN0ZWQgYXBwbGljYXRpb25zLCBhbmQgdXNlcwogIHNldmVyYWwgaGV1cmlzdGljcyBzdWNoIGFzIF90ZXN0YWJpbGl0eSB0cmFuc2Zvcm1hdGlvbnNfIGFuZCBfdGFpbnQgYW5hbHlzaXNfIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUKICBtb3JlIGVmZmVjdGl2ZSB0ZXN0IGNhc2VzLiBXZSBzdXBwb3J0IEpESyBfXzhfXyBhbmQgdGhlIG1ham9yIExUUyB2ZXJzaW9ucyBhZnRlciB0aGF0IChjdXJyZW50bHkgSkRLIF9fMjFfXykuIE1pZ2h0IHdvcmsgb24gb3RoZXIgSlZNIHZlcnNpb25zLCBidXQgd2UgcHJvdmlkZSBfX05PX18gc3VwcG9ydCBmb3IgaXQuCiAgTm90ZTogdGhlcmUgd2FzIGluaXRpYWwgc3VwcG9ydCBmb3Igb3RoZXIgbGFuZ3VhZ2VzIGFzIHdlbGwsIGxpa2UgZm9yIGV4YW1wbGUgSmF2YVNjcmlwdC9UeXBlU2NyaXB0IGFuZCBDIywgYnV0IHRoZXkgd2VyZSBub3QgaW4gYSBzdGFibGUsIGZlYXR1cmUtY29tcGxldGUgc3RhdGUuIFRoZSBzdXBwb3J0IGZvciB0aG9zZSBsYW5ndWFnZXMgZm9yIHdoaXRlLWJveCB0ZXN0aW5nIGhhcyBiZWVuIGRyb3BwZWQsIGF0IGxlYXN0IGZvciB0aGUgdGltZSBiZWluZy4gCgoqIF9JbnN0YWxsYXRpb25fOiB3ZSBwcm92aWRlIGluc3RhbGxlcnMgZm9yIHRoZSBtYWluIG9wZXJhdGluZyBzeXN0ZW1zOiBfV2luZG93c18gKGAubXNpYCksCiAgX09TWF8gKGAuZG1nYCkgYW5kIF9MaW51eF8gKGAuZGViYCkuIFdlIGFsc28gcHJvdmlkZSBhbiB1YmVyLWZhdCBKQVIgZmlsZS4KICBUbyBkb3dubG9hZCB0aGVtLCBzZWUgdGhlIFtSZWxlYXNlIHBhZ2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL0V2b01hc3Rlci9yZWxlYXNlcykuCiAgUmVsZWFzZSBub3RlcyBhcmUgcHJlc2VudCBpbiB0aGUgZmlsZSBbcmVsZWFzZV9ub3Rlcy5tZF0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL2Jsb2IvbWFzdGVyL3JlbGVhc2Vfbm90ZXMubWQpLgogIElmIHlvdSBhcmUgdXNpbmcgdGhlIHViZXItZmF0IEpBUiwgaXQgc2hvdWxkIHdvcmsgd2l0aCBhbnkgbWFqb3IgTFRTIHZlcnNpb24gKGZyb20gSkRLIDggb24pLgogICBXaGVyZWFzIGZvciB0aGUgY2xpZW50IGxpYnJhcnksIG5lZWRlZCBmb3Igd2hpdGUtYm94IHRlc3RpbmcsIHdlIHdpbGwgc3VwcG9ydCBKREsgOCBsaWtlbHkgZm9yIGEgbG9uZywgbG9uZyB3aGlsZSwgYmUgd2FybmVkIHRoYXQgZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBleGVjdXRhYmxlIEpBUiBtaWdodCBzdGFydCB0byByZXF1aXJlIGhpZ2hlciB2ZXJzaW9ucyBvZiB0aGUgSkRLIGluIGEgbm9uLXNvLWRpc3RhbnQgZnV0dXJlLgogICBJZiB0aGF0IGlzIGdvaW5nIHRvIGJlIGhpZ2hlciB0aGFuIHlvdXIgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBKVk0sIGlmIHlvdSBjYW5ub3QgdXBncmFkZSBvciBoYXZlIDIgZGlmZmVyZW50IEpES3Mgb24geW91ciBtYWNoaW5lLCB0aGVuIHlvdSBzaG91bGQgbm90IHVzZSB0aGUgdWJlci1qYXIgYnV0IHJhdGhlciBvbmUgb2YgdGhlIGluc3RhbGxlcnMuIAogICBXaGVuIHlvdSB1c2Ugb25lIG9mIHRoZSBpbnN0YWxsZXJzLCBrZWVwIGluIG1pbmQgdGhhdCBjdXJyZW50bHkgdGhleSBkbyBub3QgdXBkYXRlIHRoZSBgUEFUSGAgdmFyaWFibGUuIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBtYW51YWxseSwgW3NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2Rvd25sb2FkLm1kKS4gCgoqIF9TdGF0ZS1vZi10aGUtYXJ0XzogYW4gW2luZGVwZW5kZW50IHN0dWR5ICgyMDIyKV0oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDQuMDgzNDgpLCBjb21wYXJpbmcgMTAgZnV6emVycyBvbiAyMCBSRVNUZnVsIEFQSXMsIHNob3dzIHRoYXQgX0V2b01hc3Rlcl8gZ2l2ZXMgdGhlIGJlc3QgcmVzdWx0cy4KCiogX1NjaGVtYV86IFJFU1QgQVBJcyBtdXN0IHByb3ZpZGUgYSBzY2hlbWEgaW4gW09wZW5BUEkvU3dhZ2dlcl0oaHR0cHM6Ly9zd2FnZ2VyLmlvKQogIGZvcm1hdCAoZWl0aGVyIF92Ml8gb3IgX3YzXykuCgoqIF9PdXRwdXRfOiB0aGUgdG9vbCBnZW5lcmF0ZXMgX0pVbml0XyAodmVyc2lvbiA0IG9yIDUpIHRlc3RzLCB3cml0dGVuIGluIGVpdGhlciBKYXZhIG9yIEtvdGxpbiwgYXMgd2VsbCBhcyB0ZXN0IHN1aXRlcyBpbiBQeXRob24gYW5kIEphdmFTY3JpcHQuIEZvciBhIGNvbXBsZXRlIGxpc3QsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIENMSSBwYXJhbWV0ZXIgWy0tb3V0cHV0Rm9ybWF0XShkb2NzL29wdGlvbnMubWQpLiAKICBTb21lIGV4YW1wbGVzIGFyZTogUFlUSE9OX1VOSVRURVNULCBLT1RMSU5fSlVOSVRfNSwgSkFWQV9KVU5JVF80IGFuZCBKU19KRVNULgogIE5vdGUgdGhhdCB0aGUgZ2VuZXJhdGVkIHRlc3RzIHJlbHkgb24gdGhpcmQtcGFydHkgbGlicmFyaWVzIChlLmcuLCB0byBtYWtlIEhUVFAgY2FsbHMpLiAKICBUaGVzZSB3aWxsIG5lZWQgdG8gYmUgc2V0dXAgaW4geW91ciBwcm9qZWN0cywgW3NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2xpYnJhcnlfZGVwZW5kZW5jaWVzLm1kKS4KCiogX0ZhdWx0IGRldGVjdGlvbl86IF9Fdm9NYXN0ZXJfIGNhbiBnZW5lcmF0ZSB0ZXN0cyBjYXNlcyB0aGF0IHJldmVhbCBmYXVsdHMvYnVncyBpbiB0aGUgdGVzdGVkIGFwcGxpY2F0aW9ucy4KICBEaWZmZXJlbnQgaGV1cmlzdGljcyBhcmUgZW1wbG95ZWQsIGxpa2UgY2hlY2tpbmcgZm9yIDUwMCBzdGF0dXMgY29kZXMgYW5kIG1pc21hdGNoZXMgZnJvbSB0aGUgQVBJIHNjaGVtYXMuCgoqIF9TZWxmLWNvbnRhaW5lZCB0ZXN0c186IGZvciB3aGl0ZS1ib3ggdGVzdGluZywgdGhlIGdlbmVyYXRlZCB0ZXN0cyBkbyBzdGFydC9zdG9wIHRoZSBhcHBsaWNhdGlvbiwgYmluZGluZyB0byBhbiBlcGhlbWVyYWwgcG9ydC4KICBUaGlzIG1lYW5zIHRoYXQgdGhlIGdlbmVyYXRlZCB0ZXN0cyBjYW4gYmUgdXNlZCBmb3IgX3JlZ3Jlc3Npb24gdGVzdGluZ18gKGUuZy4sIGFkZGVkIHRvIHRoZSBHaXQgcmVwb3NpdG9yeQogIG9mIHRoZSBhcHBsaWNhdGlvbiwgYW5kIHJ1biB3aXRoIGFueSBidWlsZCB0b29sIHN1Y2ggYXMgTWF2ZW4gYW5kIEdyYWRsZSkuCiAgRm9yIGJsYWNrLWJveCB0ZXN0aW5nLCB5b3Ugd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYXBwbGljYXRpb24gaXMgdXAgYW5kIHJ1bm5pbmcgYmVmb3JlIGV4ZWN1dGluZyB0aGUgdGVzdHMuIAoKCiogX1NRTCBoYW5kbGluZ186IGZvciB3aGl0ZS1ib3ggdGVzdGluZywgX0V2b01hc3Rlcl8gY2FuIGludGVyY2VwdCBhbmQgYW5hbHlzZSBhbGwgY29tbXVuaWNhdGlvbnMgZG9uZSB3aXRoIFNRTCBkYXRhYmFzZXMsIGFuZCB1c2UKICBzdWNoIGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGhpZ2hlciBjb2RlIGNvdmVyYWdlIHRlc3QgY2FzZXMuIEZ1cnRoZXJtb3JlLCBpdCBjYW4gZ2VuZXJhdGUgZGF0YSBkaXJlY3RseQogIGludG8gdGhlIGRhdGFiYXNlcywgYW5kIGhhdmUgc3VjaCBpbml0aWFsaXphdGlvbiBhdXRvbWF0aWNhbGx5IGFkZGVkIGluIHRoZSBnZW5lcmF0ZWQgdGVzdHMuCiAgQXQgdGhlIG1vbWVudCwgX0V2b01hc3Rlcl8gc3VwcG9ydHMgX1Bvc3RncmVzXywgX015U1FMXyBhbmQgX0gyXyAgZGF0YWJhc2VzLgoKCiogX0F1dGhlbnRpY2F0aW9uXzogd2Ugc3VwcG9ydCBhdXRoIGJhc2VkIG9uIGF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgYW5kIGNvb2tpZXMuCiAgQmVzaWRlcyB1c2luZyBmaXhlZCBIVFRQIGhlYWRlcnMsIAogIGl0IGlzIGFsc28gcG9zc2libGUgdG8gZGVjbGFyYXRpdmVseSBzcGVjaWZ5IHdoaWNoIGxvZ2luIGVuZHBvaW50IHNob3VsZCBiZSB1c2VkIHRvIGR5bmFtaWNhbGx5IG9idGFpbiBhdXRoZW50aWNhdGlvbiBpbmZvIChlLmcuLCBhdXRoIHRva2VucyBvciBjb29raWVzKSBmb3IgZWFjaCB0ZXN0IGV4ZWN1dGlvbi4gW1NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2F1dGgubWQpLgoKX19Lbm93biBsaW1pdGF0aW9uc19fOgoKKiBfRHJpdmVyXzogdG8gYmUgdXNlZCBmb3IgX3doaXRlLWJveF8gdGVzdGluZywgdXNlcnMgbmVlZCB0byB3cml0ZSBhIFtkcml2ZXIgbWFudWFsbHldKGRvY3Mvd3JpdGVfZHJpdmVyLm1kKS4KICBXZSByZWNvbW1lbmQgdG8gdHJ5IF9ibGFjay1ib3hfIG1vZGUgZmlyc3QgKHNob3VsZCBqdXN0IG5lZWQgYSBmZXcgbWludXRlcyB0byBnZXQgaXQgdXAgYW5kIHJ1bm5pbmcpIHRvIGdldAogIGFuIGlkZWEgb2Ygd2hhdCBfRXZvTWFzdGVyXyBjYW4gZG8gZm9yIHlvdS4KCiogX0pESyA5K186IHdoaXRlLWJveCB0ZXN0aW5nIHJlcXVpcmVzIGJ5dGVjb2RlIG1hbmlwdWxhdGlvbi4gCiAgICAgICAgICAgIEVhY2ggbmV3IHJlbGVhc2Ugb2YgdGhlIEpESyBtYWtlcyBkb2luZyB0aGlzIGhhcmRlciBhbmQgaGFyZGVyLiAKICAgICAgICAgICAgRGVhbGluZyB3aXRoIEpES3MgYWJvdmUgX184X18gaXMgZG9hYmxlLCBidXQgaXQgcmVxdWlyZXMgc29tZSBzZXR0aW5ncy4KICAgICAgICAgICAgW1NlZSBkb2N1bWVudGF0aW9uXShkb2NzL2pka3MubWQpLgoKKiBfRXhlY3V0aW9uIHRpbWVfOiB0byBnZXQgZ29vZCByZXN1bHRzLCB5b3UgbWlnaHQgbmVlZCB0byBydW4gdGhlIHNlYXJjaCBmb3Igc2V2ZXJhbCBob3Vycy4KICBXZSByZWNvbW1lbmQgdG8gZmlyc3QgdHJ5IHRoZSBzZWFyY2ggZm9yIDEwIG1pbnV0ZXMsIGp1c3QgdG8gZ2V0IGFuIGlkZWEgb2Ygd2hhdCB0eXBlIG9mIHRlc3RzIGNhbiBiZSBnZW5lcmF0ZWQuCiAgQnV0LCB0aGVuLCB5b3Ugc2hvdWxkIHJ1biBfRXZvTWFzdGVyXyBmb3Igc29tZXRoaW5nIGxpa2UgYmV0d2VlbiAxIGFuZCAyNCBob3VycyAodGhlIGxvbmdlciB0aGUgYmV0dGVyLCBidXQKICBpdCBpcyB1bmxpa2VseSB0byBnZXQgYmV0dGVyIHJlc3VsdHMgYWZ0ZXIgMjQgaG91cnMpLgoKKiBfUlBDIEFQSXNfOiBmb3IgdGhlIG1vbWVudCwgd2UgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgUlBDIHNjaGVtYSBkZWZpbml0aW9ucy4gRnV6emluZyBSUEMgQVBJcyByZXF1aXJlcyB0byB3cml0ZSBhIGRyaXZlciwgdXNpbmcgdGhlIGNsaWVudCBsaWJyYXJ5IG9mIHRoZSBBUEkgdG8gbWFrZSB0aGUgY2FsbHMuCgoqIF9FeHRlcm5hbCBzZXJ2aWNlc186IChlLmcuLCBvdGhlciBSRVNUZnVsIEFQSXMpIGN1cnJlbnRseSB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciB0aGVtIChlLmcuLCB0byBhdXRvbWF0aWNhbGx5IG1vY2sgdGhlbSkuCiAgSXQgaXMgd29yayBpbiBwcm9ncmVzcy4KCiogX05vU1FMIGRhdGFiYXNlc186IChlLmcuLCBNb25nb0RCKSBjdXJyZW50bHkgbm8gc3VwcG9ydC4gSXQgaXMgd29yayBpbiBwcm9ncmVzcy4KCiogX0ZhaWxpbmcgdGVzdHNfOiB0aGUgdGVzdHMgZ2VuZXJhdGVkIGJ5IF9Fdm9NYXN0ZXJfIHNob3VsZCBhbGwgcGFzcywgYW5kIG5vdCBmYWlsLCBldmVuIHdoZW4gdGhleSBkZXRlY3QgYSBmYXVsdC4KICBJbiB0aG9zZSBjYXNlcywgY29tbWVudHMvdGVzdC1uYW1lcyB3b3VsZCBwb2ludCBvdXQgdGhhdCBhIHRlc3QgaXMgcmV2ZWFsaW5nIGEgcG9zc2libGUgZmF1bHQsIHdoaWxlIHN0aWxsIHBhc3NpbmcuCiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyB0aGUgZ2VuZXJhdGVkIHRlc3RzIG1pZ2h0IGZhaWwuIFRoaXMgaXMgZHVlIHRvIHRoZSBzbyBjYWxsZWQgX2ZsYWt5XyB0ZXN0cywgZS5nLiwgd2hlbgogIGEgdGVzdCBoYXMgYXNzZXJ0aW9ucyBiYXNlZCBvbiB0aGUgdGltZSBjbG9jayAoZS5nLiwgZGF0ZXMgYW5kIHRpbWVzdGFtcHMpLgogIFRoZXJlIGlzIG9uZ29pbmcgZWZmb3J0IHRvIGFkZHJlc3MgdGhpcyBwcm9ibGVtLCBidXQgaXQgaXMgc3RpbGwgbm90IGZ1bGx5IHNvbHZlZC4KCjwhLS0jIyMgVmlkZW9zLS0tPiAKPCEtLSAKPGRpdj5JY29ucyBtYWRlIGJ5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS9hdXRob3JzL2ZyZWVwaWsiIHRpdGxlPSJGcmVlcGlrIj5GcmVlcGlrPC9hPiBmcm9tIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS8iIHRpdGxlPSJGbGF0aWNvbiI+d3d3LmZsYXRpY29uLmNvbTwvYT48L2Rpdj4gCi0tPgoKCiMjIyBWaWRlb3MKCiFbXShkb2NzL2ltZy92aWRlby1wbGF5ZXItZmxhdGljb24ucG5nKQoKKiBBIFtzaG9ydCB2aWRlb10oaHR0cHM6Ly95b3V0dS5iZS8zbVl4amduaExFbykgKDUgbWludXRlcykKICBzaG93cyB0aGUgdXNlIG9mIF9Fdm9NYXN0ZXJfIG9uIG9uZSBvZiB0aGUKICBjYXNlIHN0dWRpZXMgaW4gW0VNQl0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRU1CKS4KCiogVGhpcyBbMTMtbWludXRlIHZpZGVvXShodHRwczovL3lvdXR1LmJlL09SeFpvWXc3TG5NKQogIHNob3dzIGhvdyB0byB3cml0ZSBhIHdoaXRlLWJveCBkcml2ZXIgZm9yIEV2b01hc3RlciwgZm9yIHRoZQogIFtyZXN0LWFwaS1leGFtcGxlXShodHRwczovL2dpdGh1Yi5jb20vV2ViRnV6emluZy9yZXN0LWFwaS1leGFtcGxlKS4KCiogSG93IHRvIFtEb3dubG9hZCBhbmQgSW5zdGFsbCBFdm9NYXN0ZXIgb24gV2luZG93cyAxMF0oaHR0cHM6Ly95b3V0dS5iZS91aF9Yekd4d3M5byksIHVzaW5nIGl0cyBfLm1zaV8gaW5zdGFsbGVyLgoKKiBbU2hvcnQgcHJlc2VudGF0aW9uXShodHRwczovL3lvdXR1LmJlL2lRU0FscnItUFpvKSAoNSBtaW51dGVzKSBhYm91dCB2ZXJzaW9uIDIuMC4wLiAKCiMjIyBBbHRlcm5hdGl2ZXMKCkluIHRoZSBsYXN0IGZldyB5ZWFycywgc2V2ZXJhbCBmZXcgdG9vbHMgaGF2ZSBiZWVuIHByb3Bvc2VkIGluIHRoZSBhY2FkZW1pYyBsaXRlcmF0dXJlIGFuZCBpbiB0aGUgb3Blbi1zb3VyY2UgY29tbXVuaXR5LgpZb3UgY2FuIHJlYWQgbW9yZSBkZXRhaWxzIGluIHRoaXMgWzIwMjMgc3VydmV5XShkb2NzL3B1YmxpY2F0aW9ucy8yMDIzX3Rvc2VtX3N1cnZleS5wZGYpIG9uIFJFU1QgQVBJIHRlc3RpbmcuCgpFeGlzdGluZyBvcGVuLXNvdXJjZSB0b29scyBmb3IgUkVTVCBBUEkgZnV6emluZyBhcmUgZm9yIGV4YW1wbGUgKGluIGFscGhhYmV0aWMgb3JkZXIpOgpbQ0FUU10oaHR0cHM6Ly9naXRodWIuY29tL0VuZGF2YS9jYXRzKSwKW0RyZWRkXShodHRwczovL2dpdGh1Yi5jb20vYXBpYXJ5aW8vZHJlZGQpLApbRnV6ei1saWdodHllYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ZZWxwL2Z1enotbGlnaHR5ZWFyKSwKW1Jlc1Rlc3RdKGh0dHBzOi8vZ2l0aHViLmNvbS9pc2EtZ3JvdXAvUkVTVGVzdCksCltSZXN0Q1RdKGh0dHBzOi8vZ2l0aHViLmNvbS9HSVNULU5KVS9SZXN0Q1QpLApbUmVzdGxlcl0oaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9yZXN0bGVyLWZ1enplciksCltSZXN0VGVzdEdlbl0oaHR0cHM6Ly9naXRodWIuY29tL1NlVW5pVnIvUmVzdFRlc3RHZW4pLAphbmQKW1NjaGVtYXRoZXNpc10oaHR0cHM6Ly9naXRodWIuY29tL3NjaGVtYXRoZXNpcy9zY2hlbWF0aGVzaXMpLgoKQWxsIHRoZXNlIHRvb2xzIGFyZSBfYmxhY2stYm94XywgaS5lLiwgdGhleSBkbyBub3QgYW5hbHl6ZSB0aGUgc291cmNlLWNvZGUgb2YgdGhlIHRlc3RlZCBBUElzIHRvIGdlbmVyYXRlIG1vcmUgZWZmZWN0aXZlIHRlc3QgZGF0YS4KQXMgd2UgYXJlIHRoZSBhdXRob3JzIG9mIEV2b01hc3Rlciwgd2UgYXJlIHRvbyBiaWFzZWQgdG8gY29tcGFyZSBpdCBwcm9wZXJseSB3aXRoIHRob3NlIG90aGVyIGJsYWNrLWJveCB0b29scy4KSG93ZXZlciwgYW4gW2luZGVwZW5kZW50IHN0dWR5ICgyMDIyKV0oaHR0cHM6Ly9hcnhpdi5vcmcvYWJzLzIyMDQuMDgzNDgpIHNob3dzIHRoYXQgRXZvTWFzdGVyIGlzIGFtb25nIHRoZSBiZXN0IHBlcmZvcm1hbnQuCkZ1cnRoZXJtb3JlLCBpZiB5b3VyIEFQSXMgYXJlIHJ1bm5pbmcgb24gdGhlIEpWTSAoZS5nLiwgd3JpdHRlbiBpbiBKYXZhIG9yIEtvdGxpbiksIHRoZW4gRXZvTWFzdGVyIGhhcyBjbGVhcmx5IGFuIGFkdmFudGFnZSwgYXMgaXQgc3VwcG9ydHMgX3doaXRlLWJveF8gdGVzdGluZy4gCgo8IS0tLQojIyMgSGlyaW5nCgpEZXBlbmRpbmcgb24gdGhlIHllYXIsIHdlIG1pZ2h0IGhhdmUgZnVuZGluZyBmb3IgX3Bvc3Rkb2NfIGFuZCBfUGhEIHN0dWRlbnRfIHBvc2l0aW9ucyB0byB3b3JrIG9uIHRoaXMgcHJvamVjdCAoaW4gT3NsbywgTm9yd2F5KS4KCkN1cnJlbnQgb3BlbiBwb3NpdGlvbnM6IG5vbmUuCjwgIS0tLQoqIDIwMjM6IFBoRCBzdHVkZW50IHBvc2l0aW9ucy4gTm8gbmV3IGNhbGxzIHNjaGVkdWxlZCBmb3IgdGhlIG1vbWVudC4KKiAyMDIzOiBQb3N0ZG9jIHBvc2l0aW9ucy4gTm8gbmV3IGNhbGxzIHNjaGVkdWxlZCBmb3IgdGhlIG1vbWVudC4KLS0tID4KCkZvciBxdWVzdGlvbnMgb24gdGhlc2UgcG9zaXRpb25zLCBwbGVhc2UgY29udGFjdCBQcm9mLiBBbmRyZWEgQXJjdXJpLgoKPCAhLS0tCkZvciBtb3JlIGRldGFpbHMgb24gY3VycmVudCB2YWNhbmNpZXMsIHNlZSBvdXIgZ3JvdXAgcGFnZSBhdCBbQUlTRSBMYWJdKGh0dHBzOi8vZW1yZXNlYXJjaC5naXRodWIuaW8vKS4KLS0tPgoKCgojIyMgRG9jdW1lbnRhdGlvbgoKSWYgeW91IGFyZSB0cnlpbmcgdG8gdXNlIF9Fdm9NYXN0ZXJfLCBidXQgdGhlIGluc3RydWN0aW9ucyBpbiB0aGlzIGRvY3VtZW50YXRpb24gYXJlIG5vdCBlbm91Z2ggdG8gZ2V0IHlvdSBzdGFydGVkLCBvciB0aGV5IGFyZSB0b28gdW5jbGVhciwgdGhlbiBpdCBtZWFucyBpdCBpcyBhIF9idWdfIGluIHRoZSBkb2N1bWVudGF0aW9uLCB3aGljaCB0aGVuIHdvdWxkIG5lZWQgdG8gYmUgY2xhcmlmaWVkIGFuZCB1cGRhdGVkLiBJbiBzdWNoIGNhc2VzLCBwbGVhc2UgY3JlYXRlIGEgbmV3IFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL1dlYkZ1enppbmcvRXZvTWFzdGVyL2lzc3VlcykuCgpBbHNvLCBmZWVsIGZyZWUgdG8gc3RhcnQgbmV3IGRpc2N1c3Npb24gdG9waWNzIGluIHRoZSBbRGlzY3Vzc2lvbnMgZm9ydW1dKGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJGdXp6aW5nL0V2b01hc3Rlci9kaXNjdXNzaW9ucykuCklmIHlvdSBoYXZlIHRpbWUsIHBsZWFzZSBjb25zaWRlciBhbnN3ZXJpbmcgdGhlIHBvbGxzIHRoZXJlLgoKSWYgeW91IGFyZSB3b3JraW5nIG9uIGFuIG9wZW4tc291cmNlIEFQSSwgeW91IGNhbiBkcm9wIHVzIGEgbWVzc2FnZSBpZiB5b3UgaGF2ZSBwcm9ibGVtcyB1c2luZyBFdm9NYXN0ZXIgb24gaXQuIApPdGhlcndpc2UsIGlmIHlvdSBhcmUgd29ya2luZyBpbiBpbmR1c3RyeSBvbiBjbG9zZWQtc291cmNlIEFQSXMsIHdlIGhhdmUgb3B0aW9ucyBmb3IgYWNhZGVtaWEtaW5kdXN0cnkgY29sbGFib3JhdGlvbnMgKFtzZWUgbW9yZSBpbmZvIGhlcmVdKGRvY3MvY29udHJpYnV0ZS5tZCkpLiAgCgoKKiBbRXhhbXBsZSBvZiBnZW5lcmF0ZWQgdGVzdHNdKGRvY3MvZXhhbXBsZS5tZCkKKiBbRG93bmxvYWQgYW5kIEluc3RhbGwgRXZvTWFzdGVyXShkb2NzL2Rvd25sb2FkLm1kKQoqIFtCdWlsZCBFdm9NYXN0ZXIgZnJvbSBzb3VyY2VdKGRvY3MvYnVpbGQubWQpCiogW0NvbW1hbmQtTGluZSBJbnRlcmZhY2UgKENMSSkgb3B0aW9uc10oZG9jcy9vcHRpb25zLm1kKQoqIFtPcGVuQXBpL1N3YWdnZXIgU2NoZW1hXShkb2NzL29wZW5hcGkubWQpCiogW1VzaW5nIEV2b01hc3RlciBmb3IgQmxhY2stQm94IFRlc3RpbmcgKGVhc2llciB0byBzZXR1cCwgYnV0IHdvcnNlIHJlc3VsdHMpXShkb2NzL2JsYWNrYm94Lm1kKQoqIFtVc2luZyBFdm9NYXN0ZXIgZm9yIFdoaXRlLUJveCBUZXN0aW5nIChoYXJkZXIgdG8gc2V0dXAsIGJ1dCBiZXR0ZXIgcmVzdWx0cyldKGRvY3Mvd2hpdGVib3gubWQpCiAgKiBbV3JpdGUgYW4gRXZvTWFzdGVyIERyaXZlciBmb3IgV2hpdGUtQm94IFRlc3RpbmddKGRvY3Mvd3JpdGVfZHJpdmVyLm1kKQogICogW0RlYWxpbmcgd2l0aCBKREtzIGFib3ZlIHZlcnNpb24gOF0oZG9jcy9qZGtzLm1kKQoqIFtDb25maWd1cmluZyBhdXRoZW50aWNhdGlvbl0oZG9jcy9hdXRoLm1kKSAgCiogW0NvbnNvbGUgb3V0cHV0XShkb2NzL2NvbnNvbGVfb3V0cHV0Lm1kKQoqIFtMaWJyYXJ5IGRlcGVuZGVuY2llcyBmb3IgdGhlIGdlbmVyYXRlZCB0ZXN0c10oZG9jcy9saWJyYXJ5X2RlcGVuZGVuY2llcy5tZCkKKiBbSG93IHRvIGNvbnRyaWJ1dGVdKGRvY3MvY29udHJpYnV0ZS5tZCkKICAqIFtUZWNobmljYWwgbm90ZXMgZm9yIGRldmVsb3BlcnMgY29udHJpYnV0aW5nIHRvIEV2b01hc3Rlcl0oZG9jcy9mb3JfZGV2ZWxvcGVycy5tZCkKKiBUcm91Ymxlc2hvb3RpbmcKICAqIFtXaW5kb3dzIGFuZCBuZXR3b3JraW5nXShkb2NzL3Ryb3VibGVzaG9vdGluZy93aW5kb3dzLm1kKQoqIE1vcmUgSW5mbwogICogW0FjYWRlbWljIHBhcGVycyByZWxhdGVkIHRvIEV2b01hc3Rlcl0oZG9jcy9wdWJsaWNhdGlvbnMubWQpCiAgKiBbU2xpZGVzIG9mIHByZXNlbnRhdGlvbnMvc2VtaW5hcnNdKGRvY3MvcHJlc2VudGF0aW9ucy5tZCkKICAqIFtSZXBsaWNhdGluZyBzdHVkaWVzXShkb2NzL3JlcGxpY2F0aW5nX3N0dWRpZXMubWQpCgoKCgoKCiMjIyBGdW5kaW5nCgpfRXZvTWFzdGVyXyBoYXMgYmVlbiBmdW5kZWQgYnk6CiogMjAyMC0yMDI1OiBhIDIgbWlsbGlvbiBFdXJvIGdyYW50IGJ5IHRoZSBFdXJvcGVhbiBSZXNlYXJjaCBDb3VuY2lsIChFUkMpLAogIGFzIHBhcnQgb2YgdGhlICpFUkMgQ29uc29saWRhdG9yKiBwcm9qZWN0CiAgPGk+VXNpbmcgRXZvbHV0aW9uYXJ5IEFsZ29yaXRobXMgdG8gVW5kZXJzdGFuZCBhbmQgU2VjdXJlIFdlYi9FbnRlcnByaXNlIFN5c3RlbXM8L2k+LgoqICAyMDE4LTIwMjE6IGEgNy44IG1pbGxpb24gTm9yd2VnaWFuIEtyb25lciBncmFudCAgYnkgdGhlIFJlc2VhcmNoIENvdW5jaWwgb2YgTm9yd2F5IChSQ04pLAogICBhcyBwYXJ0IG9mIHRoZSBGcmluYXRlayBwcm9qZWN0IDxpPkV2b2x1dGlvbmFyeSBFbnRlcnByaXNlIFRlc3Rpbmc8L2k+LgoKCjxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5jb20vV2ViRnV6emluZy9Fdm9NYXN0ZXIvYmxvYi9tYXN0ZXIvZG9jcy9pbWcvTE9HT19FUkMtRkxBR19FVV8uanBnP3Jhdz10cnVlIiB3aWR0aD0iMjAwIiA+CgoKVGhpcyBwcm9qZWN0IGhhcyByZWNlaXZlZCBmdW5kaW5nIGZyb20gdGhlIEV1cm9wZWFuIFJlc2VhcmNoIENvdW5jaWwgKEVSQykgdW5kZXIgdGhlIEV1cm9wZWFuIFVuaW9u4oCZcyBIb3Jpem9uIDIwMjAgcmVzZWFyY2ggYW5kIGlubm92YXRpb24gcHJvZ3JhbW1lIChncmFudCBhZ3JlZW1lbnQgTm8gODY0OTcyKS4KCgojIyMgTGljZW5zZQpfRXZvTWFzdGVyXydzIHNvdXJjZSBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBMR1BMICh2MykgbGljZW5zZS4KRm9yIGEgbGlzdCBvZiB0aGUgdXNlZCB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMsIHlvdSBjYW4gZGlyZWN0bHkgc2VlIHRoZSByb290IFtwb20ueG1sXSguL3BvbS54bWwpIGZpbGUuCkZvciBhIGxpc3Qgb2YgY29kZSBkaXJlY3RseSBpbXBvcnRlZCAoYW5kIHRoZW4gcG9zc2libHkgbW9kaWZpZWQvdXBkYXRlZCkgZnJvbQpvdGhlciBvcGVuLXNvdXJjZSBwcm9qZWN0cywgc2VlIFtoZXJlXSguL2RvY3MvcmV1c2VkX2NvZGUubWQpLgoKCjwhLS0KIyMjICFbXShodHRwczovL3d3dy55b3Vya2l0LmNvbS9pbWFnZXMveWtsb2dvLnBuZykKCllvdXJLaXQgc3VwcG9ydHMgb3BlbiBzb3VyY2UgcHJvamVjdHMgd2l0aCBpdHMgZnVsbC1mZWF0dXJlZCBKYXZhIFByb2ZpbGVyLgpZb3VyS2l0LCBMTEMgaXMgdGhlIGNyZWF0b3Igb2YKPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91cmtpdC5jb20vamF2YS9wcm9maWxlci8iPllvdXJLaXQgSmF2YSBQcm9maWxlcjwvYT4KYW5kCjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXJraXQuY29tLy5uZXQvcHJvZmlsZXIvIj5Zb3VyS2l0IC5ORVQgUHJvZmlsZXI8L2E+LAppbm5vdmF0aXZlIGFuZCBpbnRlbGxpZ2VudCB0b29scyBmb3IgcHJvZmlsaW5nIEphdmEgYW5kIC5ORVQgYXBwbGljYXRpb25zLgotLT4KCg==
+ readmeEtag: '"0bdac08a37f963daf1e6bc6bf2a77838b0688002"'
+ readmeLastModified: Fri, 27 Sep 2024 11:25:25 GMT
repositoryId: 92385933
description: >-
The first open-source AI-driven tool for automatically generating
@@ -33359,7 +33359,7 @@
applications. Currently targeting whitebox and blackbox testing of Web
APIs, like REST, GraphQL and RPC (e.g., gRPC and Thrift).
created: '2017-05-25T09:11:23Z'
- updated: '2024-09-26T18:59:56Z'
+ updated: '2024-09-27T11:25:34Z'
language: Kotlin
archived: false
stars: 499
@@ -33368,8 +33368,8 @@
owner: WebFuzzing
logo: https://avatars.githubusercontent.com/u/29148026?v=4
license: LGPL-3.0
- repoEtag: '"ce89cb9c615ac22cdd9b5a8b57403454f613a1c3761f6453d31bcefb52e4c984"'
- repoLastModified: Thu, 26 Sep 2024 18:59:56 GMT
+ repoEtag: '"acb2a7077d59d9cd640bbab98ebf4fc1c7783d4f07152f62b053722b3a7980e3"'
+ repoLastModified: Fri, 27 Sep 2024 11:25:34 GMT
foundInMaster: true
id: d1d3d85149c4a9437dbdbf157cf3d7c7
oldLocations:
@@ -34687,17 +34687,17 @@
repositoryId: 586543156
description: The ultimate toolkit for working with APIs.
created: '2023-01-08T14:15:23Z'
- updated: '2024-09-26T14:54:12Z'
+ updated: '2024-09-27T22:21:08Z'
language: TypeScript
archived: false
- stars: 659
+ stars: 660
watchers: 5
- forks: 50
+ forks: 51
owner: kubb-labs
logo: https://avatars.githubusercontent.com/u/122118236?v=4
license: MIT
- repoEtag: '"0554b387007167b990c02cc1d339e9bcda8f4ba6294a2ebede24f62932bbd06c"'
- repoLastModified: Thu, 26 Sep 2024 14:54:12 GMT
+ repoEtag: '"32c6180fb8e7c829a03739f0973145f51e2fe31be816c4b169d470c6ca4cc03f"'
+ repoLastModified: Fri, 27 Sep 2024 22:21:08 GMT
foundInMaster: true
oldLocations:
- https://github.com/kubb-project/kubb
@@ -34778,7 +34778,7 @@
forks: 30
owner: apicat
logo: https://avatars.githubusercontent.com/u/64158984?v=4
- repoEtag: '"e448c8a7463d764754ec289c7a62780324044a7c9347bc077da2aea4ad351943"'
+ repoEtag: '"a586efc8805aed972624f3744b64ac2e6f3e631425ad75c426bc32c1e4f2867b"'
repoLastModified: Mon, 23 Sep 2024 20:29:51 GMT
category: Server Implementations
foundInMaster: true
@@ -34795,17 +34795,17 @@
Full stack, modern web application template. Using FastAPI, React,
SQLModel, PostgreSQL, Docker, GitHub Actions, automatic HTTPS and more.
created: '2019-02-23T15:08:34Z'
- updated: '2024-09-27T01:44:26Z'
+ updated: '2024-09-28T03:15:29Z'
language: TypeScript
archived: false
- stars: 26371
- watchers: 264
- forks: 4634
+ stars: 26464
+ watchers: 263
+ forks: 4647
owner: fastapi
logo: https://avatars.githubusercontent.com/u/156354296?v=4
license: MIT
- repoEtag: '"94a4bf06e9971d2be97244a47a74dd2ac41860dac657d2b01e3c02f082beaa11"'
- repoLastModified: Fri, 27 Sep 2024 01:44:26 GMT
+ repoEtag: '"5c73fb15daeae1eca8ab5f689351a073ff467b3ab8d06073e9dfdc228538fbc5"'
+ repoLastModified: Sat, 28 Sep 2024 03:15:29 GMT
foundInMaster: true
category: Server Implementations
id: 0354007b562b4efc3f08ce3da7f03afb
@@ -35412,7 +35412,7 @@
A spring boot starter template that includes a docker image, generate helm
chart using jkube, and GitHub action CI
created: '2023-10-22T19:25:57Z'
- updated: '2024-09-24T00:05:52Z'
+ updated: '2024-09-27T20:04:05Z'
language: Java
archived: false
stars: 0
@@ -35420,8 +35420,8 @@
forks: 0
owner: bryopsida
logo: https://avatars.githubusercontent.com/u/8363252?v=4
- repoEtag: '"566baff6fd7736db7695e62a8418db908113963016e9fdc1c15a0f17a6056216"'
- repoLastModified: Tue, 24 Sep 2024 00:05:52 GMT
+ repoEtag: '"27fe0a176b331241ad0147d2fc3ac2cb2f90ca855f3db4b35796b515382a074b"'
+ repoLastModified: Fri, 27 Sep 2024 20:04:05 GMT
category: Server Implementations
foundInMaster: true
- name: Ballerina OpenAPI tool
@@ -39617,7 +39617,7 @@
owner: apprexp
logo: https://avatars.githubusercontent.com/u/34160960?v=4
license: Apache-2.0
- repoEtag: '"fa25934a853fc026d8591bfae49ddab94f6f474e9b890fc7af5d27ea632bf759"'
+ repoEtag: '"1c07e0a2adc4cda7609e08d52fbd6faaf179a4ddb9543941e3af5b73b7e010c9"'
repoLastModified: Sun, 10 May 2020 17:19:01 GMT
foundInMaster: true
category: Server
@@ -39736,7 +39736,7 @@
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"5b6c10b4481c977fa7977af73f051bf4b19d8a2ab0ccd194f1c2dc0912e8135d"'
+ repoEtag: '"d28f7c76eda9a2e26ad9426cc4838c65dbdb0acd88642bfd2f5f4979b7c977d9"'
repoLastModified: Thu, 26 Sep 2024 15:51:13 GMT
id: f3215034d64cfcbcc28a4bdb0205a075
- source: IMPLEMENTATIONS.md
@@ -39882,17 +39882,17 @@
repositoryId: 86389954
description: 🎩 A React renderer for OpenAPI v3.
created: '2017-03-27T22:26:14Z'
- updated: '2024-08-01T09:16:04Z'
+ updated: '2024-09-27T10:55:56Z'
language: JavaScript
archived: false
- stars: 149
+ stars: 148
watchers: 11
forks: 10
owner: temando
logo: https://avatars.githubusercontent.com/u/2232135?v=4
license: MIT
- repoEtag: '"a1ce9bebde6789acbda2867c17c085da64d28bdd90cc4b57cc594f307f175067"'
- repoLastModified: Thu, 01 Aug 2024 09:16:04 GMT
+ repoEtag: '"2efc5fe7c4483798c153bcf59e00c1ac220f08affd27c8e1f0c0e49943c904a0"'
+ repoLastModified: Fri, 27 Sep 2024 10:55:56 GMT
id: 094e7e36be3a7e482c070bf15c50dd04
- source: IMPLEMENTATIONS.md
name: WebSphere Liberty
@@ -40689,17 +40689,17 @@
repositoryId: 402435051
description: "An API security tool to capture and analyze API traffic, test API endpoints, reconstruct Open API specification, and identify API security risks.\_"
created: '2021-09-02T13:41:19Z'
- updated: '2024-09-13T14:30:59Z'
+ updated: '2024-09-27T10:03:31Z'
language: Go
archived: false
- stars: 507
+ stars: 508
watchers: 21
forks: 62
owner: openclarity
logo: https://avatars.githubusercontent.com/u/89657786?v=4
license: Apache-2.0
- repoEtag: '"856aed5e0ea5086f6185cd3b1b01d4d43d24323b3c89735bb77f97029c453742"'
- repoLastModified: Fri, 13 Sep 2024 14:30:59 GMT
+ repoEtag: '"8da083040d5a58328bde830f2d3830c32d4fd994dfcbdad82114a8e509660ee1"'
+ repoLastModified: Fri, 27 Sep 2024 10:03:31 GMT
foundInMaster: true
id: 68b981acc13af75d4eb8c04143885e13
oldLocations:
@@ -40921,7 +40921,7 @@
owner: loopbackio
logo: https://avatars.githubusercontent.com/u/22173486?v=4
license: NOASSERTION
- repoEtag: '"15f9979e7597a7eef1e5aa03391fa595ed4ba39ca7e312b050da5c0e35b28ae9"'
+ repoEtag: '"422b87114536c0cfea0a184efa2038e3bfa0de7eb20ba941dfe93b12175d2bd4"'
repoLastModified: Thu, 26 Sep 2024 22:31:49 GMT
foundInMaster: true
id: 9132c25ad468bed25b9dbbe3a352abc2
@@ -40994,17 +40994,17 @@
testing cloud services through their REST APIs and finding security and
reliability bugs in these services.
created: '2020-07-24T21:40:11Z'
- updated: '2024-09-26T22:47:41Z'
+ updated: '2024-09-27T06:52:34Z'
language: Python
archived: false
- stars: 2578
+ stars: 2580
watchers: 35
forks: 296
owner: microsoft
logo: https://avatars.githubusercontent.com/u/6154722?v=4
license: MIT
- repoEtag: '"01787900f6241ff40f6265413da409598552d357e3a311f873a66b3d23e47919"'
- repoLastModified: Thu, 26 Sep 2024 22:47:41 GMT
+ repoEtag: '"a406ce39671359119b649586d23dbaae6e9c96ad6cb29113ab3064a22a944814"'
+ repoLastModified: Fri, 27 Sep 2024 06:52:34 GMT
foundInMaster: true
oldLocations:
- https://github.com/microsoft/restler
@@ -41159,7 +41159,7 @@
owner: weikangchia
logo: https://avatars.githubusercontent.com/u/2174882?v=4
license: MIT
- repoEtag: '"5fc175e59ba1e8abfe1044d00ff6f33de709106e07b8cc3218da6f1d3ab821f4"'
+ repoEtag: '"d2afc480e5ca3ae5c5e3712110e06b632d8b423c0c6ba1c422580d81ecba3140"'
repoLastModified: Sat, 20 Nov 2021 15:06:15 GMT
foundInMaster: true
category:
@@ -41676,17 +41676,17 @@
repositoryId: 26628954
description: HTTP web applications for Vert.x
created: '2014-11-14T08:15:20Z'
- updated: '2024-09-25T14:04:37Z'
+ updated: '2024-09-27T13:26:23Z'
language: Java
archived: false
- stars: 1106
+ stars: 1107
watchers: 82
forks: 531
owner: vert-x3
logo: https://avatars.githubusercontent.com/u/8124623?v=4
license: Apache-2.0
- repoEtag: '"c7483b2effc3407848cfce7d78ffc72a050c3a6038adc7db01c715e08ee58e81"'
- repoLastModified: Wed, 25 Sep 2024 14:04:37 GMT
+ repoEtag: '"e533d16948c1adecc8fd42497c6ca62d3497a8fcfc07f71a9310ba61ac05f444"'
+ repoLastModified: Fri, 27 Sep 2024 13:26:23 GMT
foundInMaster: true
v3_link: https://github.com/vert-x3/vertx-web/issues/1872
id: 649e1f8cd9ccaccf681527e6984f2785