@wppconnect/server 2.8.5 → 2.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/Dockerfile +1 -1
- package/README.md +8 -8
- package/dist/config.js +3 -1
- package/dist/controller/deviceController.js +25 -11
- package/dist/controller/groupController.js +150 -2
- package/dist/controller/messageController.js +69 -2
- package/dist/controller/sessionController.js +61 -2
- package/dist/mapper/index.js +2 -2
- package/dist/routes/index.js +19 -2
- package/dist/swagger.json +377 -3
- package/dist/util/createSessionUtil.js +12 -3
- package/dist/util/tokenStore/FileTokenStore/FileTokenStore.js +2 -2
- package/package.json +54 -49
package/dist/swagger.json
CHANGED
|
@@ -344,12 +344,31 @@
|
|
|
344
344
|
},
|
|
345
345
|
"waitQrCode": {
|
|
346
346
|
"type": "boolean"
|
|
347
|
+
},
|
|
348
|
+
"proxy": {
|
|
349
|
+
"type": "object",
|
|
350
|
+
"properties": {
|
|
351
|
+
"url": {
|
|
352
|
+
"type": "string"
|
|
353
|
+
},
|
|
354
|
+
"username": {
|
|
355
|
+
"type": "string"
|
|
356
|
+
},
|
|
357
|
+
"password": {
|
|
358
|
+
"type": "string"
|
|
359
|
+
}
|
|
360
|
+
}
|
|
347
361
|
}
|
|
348
362
|
}
|
|
349
363
|
},
|
|
350
364
|
"example": {
|
|
351
365
|
"webhook": "",
|
|
352
|
-
"waitQrCode": false
|
|
366
|
+
"waitQrCode": false,
|
|
367
|
+
"proxy": {
|
|
368
|
+
"url": "http://myproxy.com:8080",
|
|
369
|
+
"username": "myuser",
|
|
370
|
+
"password": "mypassword"
|
|
371
|
+
}
|
|
353
372
|
}
|
|
354
373
|
}
|
|
355
374
|
}
|
|
@@ -512,6 +531,55 @@
|
|
|
512
531
|
}
|
|
513
532
|
}
|
|
514
533
|
},
|
|
534
|
+
"/api/{session}/set-online-presence": {
|
|
535
|
+
"post": {
|
|
536
|
+
"tags": ["Misc"],
|
|
537
|
+
"description": "",
|
|
538
|
+
"operationId": "setOnlinePresence",
|
|
539
|
+
"parameters": [
|
|
540
|
+
{
|
|
541
|
+
"name": "session",
|
|
542
|
+
"in": "path",
|
|
543
|
+
"required": true,
|
|
544
|
+
"schema": {
|
|
545
|
+
"type": "string",
|
|
546
|
+
"example": "NERDWHATS_AMERICA"
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
],
|
|
550
|
+
"responses": {
|
|
551
|
+
"200": {
|
|
552
|
+
"description": "OK"
|
|
553
|
+
},
|
|
554
|
+
"500": {
|
|
555
|
+
"description": "Internal Server Error"
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
"security": [
|
|
559
|
+
{
|
|
560
|
+
"bearerAuth": []
|
|
561
|
+
}
|
|
562
|
+
],
|
|
563
|
+
"requestBody": {
|
|
564
|
+
"required": true,
|
|
565
|
+
"content": {
|
|
566
|
+
"application/json": {
|
|
567
|
+
"schema": {
|
|
568
|
+
"type": "object",
|
|
569
|
+
"properties": {
|
|
570
|
+
"isOnline": {
|
|
571
|
+
"type": "boolean"
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
},
|
|
575
|
+
"example": {
|
|
576
|
+
"isOnline": false
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
},
|
|
515
583
|
"/api/{session}/download-media": {
|
|
516
584
|
"post": {
|
|
517
585
|
"tags": ["Messages"],
|
|
@@ -1806,6 +1874,76 @@
|
|
|
1806
1874
|
}
|
|
1807
1875
|
}
|
|
1808
1876
|
},
|
|
1877
|
+
"/api/{session}/send-pix-key": {
|
|
1878
|
+
"post": {
|
|
1879
|
+
"tags": ["Messages"],
|
|
1880
|
+
"description": "",
|
|
1881
|
+
"parameters": [
|
|
1882
|
+
{
|
|
1883
|
+
"name": "session",
|
|
1884
|
+
"in": "path",
|
|
1885
|
+
"required": true,
|
|
1886
|
+
"schema": {
|
|
1887
|
+
"type": "string",
|
|
1888
|
+
"example": "NERDWHATS_AMERICA"
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
],
|
|
1892
|
+
"responses": {
|
|
1893
|
+
"400": {
|
|
1894
|
+
"description": "Bad Request"
|
|
1895
|
+
}
|
|
1896
|
+
},
|
|
1897
|
+
"security": [
|
|
1898
|
+
{
|
|
1899
|
+
"bearerAuth": []
|
|
1900
|
+
}
|
|
1901
|
+
],
|
|
1902
|
+
"requestBody": {
|
|
1903
|
+
"required": true,
|
|
1904
|
+
"content": {
|
|
1905
|
+
"application/json": {
|
|
1906
|
+
"schema": {
|
|
1907
|
+
"type": "object",
|
|
1908
|
+
"required": ["phone", "keyType", "name", "key"],
|
|
1909
|
+
"properties": {
|
|
1910
|
+
"phone": {
|
|
1911
|
+
"type": "string"
|
|
1912
|
+
},
|
|
1913
|
+
"keyType": {
|
|
1914
|
+
"type": "string"
|
|
1915
|
+
},
|
|
1916
|
+
"name": {
|
|
1917
|
+
"type": "string"
|
|
1918
|
+
},
|
|
1919
|
+
"key": {
|
|
1920
|
+
"type": "string"
|
|
1921
|
+
},
|
|
1922
|
+
"instructions": {
|
|
1923
|
+
"type": "string"
|
|
1924
|
+
},
|
|
1925
|
+
"options": {
|
|
1926
|
+
"type": "object"
|
|
1927
|
+
}
|
|
1928
|
+
}
|
|
1929
|
+
},
|
|
1930
|
+
"examples": {
|
|
1931
|
+
"Send PIX key to contact": {
|
|
1932
|
+
"value": {
|
|
1933
|
+
"phone": "5521999999999",
|
|
1934
|
+
"keyType": "PHONE",
|
|
1935
|
+
"name": "WPPCONNECT-TEAM",
|
|
1936
|
+
"key": "+5567123456789",
|
|
1937
|
+
"instructions": "some instructions about the pix",
|
|
1938
|
+
"options": {}
|
|
1939
|
+
}
|
|
1940
|
+
}
|
|
1941
|
+
}
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
},
|
|
1809
1947
|
"/api/{session}/all-broadcast-list": {
|
|
1810
1948
|
"get": {
|
|
1811
1949
|
"tags": ["Misc"],
|
|
@@ -1870,13 +2008,111 @@
|
|
|
1870
2008
|
],
|
|
1871
2009
|
"responses": {
|
|
1872
2010
|
"200": {
|
|
1873
|
-
"description": "
|
|
2011
|
+
"description": "Group information retrieved successfully",
|
|
2012
|
+
"content": {
|
|
2013
|
+
"application/json": {
|
|
2014
|
+
"schema": {
|
|
2015
|
+
"type": "object",
|
|
2016
|
+
"properties": {
|
|
2017
|
+
"status": {
|
|
2018
|
+
"type": "string",
|
|
2019
|
+
"example": "success"
|
|
2020
|
+
},
|
|
2021
|
+
"response": {
|
|
2022
|
+
"type": "object",
|
|
2023
|
+
"properties": {
|
|
2024
|
+
"id": {
|
|
2025
|
+
"type": "string",
|
|
2026
|
+
"example": "1234567890@g.us"
|
|
2027
|
+
},
|
|
2028
|
+
"name": {
|
|
2029
|
+
"type": "string",
|
|
2030
|
+
"example": "Group name"
|
|
2031
|
+
},
|
|
2032
|
+
"description": {
|
|
2033
|
+
"type": "string",
|
|
2034
|
+
"nullable": true,
|
|
2035
|
+
"example": "Group description"
|
|
2036
|
+
},
|
|
2037
|
+
"subject": {
|
|
2038
|
+
"type": "string",
|
|
2039
|
+
"example": "Group subject"
|
|
2040
|
+
},
|
|
2041
|
+
"subjectUpdatedAt": {
|
|
2042
|
+
"type": "string",
|
|
2043
|
+
"nullable": true,
|
|
2044
|
+
"example": "2024-11-12T08:00:00.000Z"
|
|
2045
|
+
},
|
|
2046
|
+
"subjectUpdatedBy": {
|
|
2047
|
+
"type": "string",
|
|
2048
|
+
"nullable": true,
|
|
2049
|
+
"example": "1111111111111@c.us"
|
|
2050
|
+
},
|
|
2051
|
+
"descriptionUpdatedAt": {
|
|
2052
|
+
"type": "string",
|
|
2053
|
+
"nullable": true,
|
|
2054
|
+
"example": "2024-11-13T09:00:00.000Z"
|
|
2055
|
+
},
|
|
2056
|
+
"descriptionUpdatedBy": {
|
|
2057
|
+
"type": "string",
|
|
2058
|
+
"nullable": true,
|
|
2059
|
+
"example": "2222222222222@c.us"
|
|
2060
|
+
},
|
|
2061
|
+
"createdAt": {
|
|
2062
|
+
"type": "string",
|
|
2063
|
+
"nullable": true,
|
|
2064
|
+
"example": "2024-11-10T12:34:56.000Z"
|
|
2065
|
+
},
|
|
2066
|
+
"lastActivityAt": {
|
|
2067
|
+
"type": "string",
|
|
2068
|
+
"nullable": true,
|
|
2069
|
+
"example": "2024-11-15T10:00:00.000Z"
|
|
2070
|
+
},
|
|
2071
|
+
"participants": {
|
|
2072
|
+
"type": "array",
|
|
2073
|
+
"items": {
|
|
2074
|
+
"type": "object",
|
|
2075
|
+
"properties": {
|
|
2076
|
+
"id": {
|
|
2077
|
+
"type": "string",
|
|
2078
|
+
"example": "1111111111111@c.us"
|
|
2079
|
+
},
|
|
2080
|
+
"isAdmin": {
|
|
2081
|
+
"type": "boolean",
|
|
2082
|
+
"example": true
|
|
2083
|
+
}
|
|
2084
|
+
}
|
|
2085
|
+
}
|
|
2086
|
+
}
|
|
2087
|
+
}
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
}
|
|
2092
|
+
}
|
|
1874
2093
|
},
|
|
1875
2094
|
"400": {
|
|
1876
2095
|
"description": "Bad Request"
|
|
1877
2096
|
},
|
|
1878
2097
|
"500": {
|
|
1879
|
-
"description": "Internal
|
|
2098
|
+
"description": "Internal error retrieving group info",
|
|
2099
|
+
"content": {
|
|
2100
|
+
"application/json": {
|
|
2101
|
+
"schema": {
|
|
2102
|
+
"type": "object",
|
|
2103
|
+
"properties": {
|
|
2104
|
+
"status": {
|
|
2105
|
+
"type": "string",
|
|
2106
|
+
"example": "error"
|
|
2107
|
+
},
|
|
2108
|
+
"message": {
|
|
2109
|
+
"type": "string",
|
|
2110
|
+
"example": "Error getting group info"
|
|
2111
|
+
}
|
|
2112
|
+
}
|
|
2113
|
+
}
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
1880
2116
|
}
|
|
1881
2117
|
},
|
|
1882
2118
|
"security": [
|
|
@@ -2043,6 +2279,144 @@
|
|
|
2043
2279
|
}
|
|
2044
2280
|
}
|
|
2045
2281
|
},
|
|
2282
|
+
"/api/{session}/group-info/{groupId}": {
|
|
2283
|
+
"get": {
|
|
2284
|
+
"tags": ["Group"],
|
|
2285
|
+
"summary": "Get detailed information about a group",
|
|
2286
|
+
"description": "",
|
|
2287
|
+
"parameters": [
|
|
2288
|
+
{
|
|
2289
|
+
"name": "session",
|
|
2290
|
+
"in": "path",
|
|
2291
|
+
"required": true,
|
|
2292
|
+
"schema": {
|
|
2293
|
+
"type": "string",
|
|
2294
|
+
"example": "NERDWHATS_AMERICA"
|
|
2295
|
+
}
|
|
2296
|
+
},
|
|
2297
|
+
{
|
|
2298
|
+
"name": "groupId",
|
|
2299
|
+
"in": "path",
|
|
2300
|
+
"required": true,
|
|
2301
|
+
"schema": {
|
|
2302
|
+
"type": "string",
|
|
2303
|
+
"example": "<groupId>"
|
|
2304
|
+
}
|
|
2305
|
+
}
|
|
2306
|
+
],
|
|
2307
|
+
"responses": {
|
|
2308
|
+
"200": {
|
|
2309
|
+
"description": "Group information retrieved successfully",
|
|
2310
|
+
"content": {
|
|
2311
|
+
"application/json": {
|
|
2312
|
+
"schema": {
|
|
2313
|
+
"type": "object",
|
|
2314
|
+
"properties": {
|
|
2315
|
+
"status": {
|
|
2316
|
+
"type": "string",
|
|
2317
|
+
"example": "success"
|
|
2318
|
+
},
|
|
2319
|
+
"response": {
|
|
2320
|
+
"type": "object",
|
|
2321
|
+
"properties": {
|
|
2322
|
+
"id": {
|
|
2323
|
+
"type": "string",
|
|
2324
|
+
"example": "1234567890@g.us"
|
|
2325
|
+
},
|
|
2326
|
+
"name": {
|
|
2327
|
+
"type": "string",
|
|
2328
|
+
"example": "Group name"
|
|
2329
|
+
},
|
|
2330
|
+
"description": {
|
|
2331
|
+
"type": "string",
|
|
2332
|
+
"nullable": true,
|
|
2333
|
+
"example": "Group description"
|
|
2334
|
+
},
|
|
2335
|
+
"subject": {
|
|
2336
|
+
"type": "string",
|
|
2337
|
+
"example": "Group subject"
|
|
2338
|
+
},
|
|
2339
|
+
"subjectUpdatedAt": {
|
|
2340
|
+
"type": "string",
|
|
2341
|
+
"nullable": true,
|
|
2342
|
+
"example": "2024-11-12T08:00:00.000Z"
|
|
2343
|
+
},
|
|
2344
|
+
"subjectUpdatedBy": {
|
|
2345
|
+
"type": "string",
|
|
2346
|
+
"nullable": true,
|
|
2347
|
+
"example": "1111111111111@c.us"
|
|
2348
|
+
},
|
|
2349
|
+
"descriptionUpdatedAt": {
|
|
2350
|
+
"type": "string",
|
|
2351
|
+
"nullable": true,
|
|
2352
|
+
"example": "2024-11-13T09:00:00.000Z"
|
|
2353
|
+
},
|
|
2354
|
+
"descriptionUpdatedBy": {
|
|
2355
|
+
"type": "string",
|
|
2356
|
+
"nullable": true,
|
|
2357
|
+
"example": "2222222222222@c.us"
|
|
2358
|
+
},
|
|
2359
|
+
"createdAt": {
|
|
2360
|
+
"type": "string",
|
|
2361
|
+
"nullable": true,
|
|
2362
|
+
"example": "2024-11-10T12:34:56.000Z"
|
|
2363
|
+
},
|
|
2364
|
+
"lastActivityAt": {
|
|
2365
|
+
"type": "string",
|
|
2366
|
+
"nullable": true,
|
|
2367
|
+
"example": "2024-11-15T10:00:00.000Z"
|
|
2368
|
+
},
|
|
2369
|
+
"participants": {
|
|
2370
|
+
"type": "array",
|
|
2371
|
+
"items": {
|
|
2372
|
+
"type": "object",
|
|
2373
|
+
"properties": {
|
|
2374
|
+
"id": {
|
|
2375
|
+
"type": "string",
|
|
2376
|
+
"example": "1111111111111@c.us"
|
|
2377
|
+
},
|
|
2378
|
+
"isAdmin": {
|
|
2379
|
+
"type": "boolean",
|
|
2380
|
+
"example": true
|
|
2381
|
+
}
|
|
2382
|
+
}
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2385
|
+
}
|
|
2386
|
+
}
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
}
|
|
2391
|
+
},
|
|
2392
|
+
"500": {
|
|
2393
|
+
"description": "Internal error retrieving group info",
|
|
2394
|
+
"content": {
|
|
2395
|
+
"application/json": {
|
|
2396
|
+
"schema": {
|
|
2397
|
+
"type": "object",
|
|
2398
|
+
"properties": {
|
|
2399
|
+
"status": {
|
|
2400
|
+
"type": "string",
|
|
2401
|
+
"example": "error"
|
|
2402
|
+
},
|
|
2403
|
+
"message": {
|
|
2404
|
+
"type": "string",
|
|
2405
|
+
"example": "Error getting group info"
|
|
2406
|
+
}
|
|
2407
|
+
}
|
|
2408
|
+
}
|
|
2409
|
+
}
|
|
2410
|
+
}
|
|
2411
|
+
}
|
|
2412
|
+
},
|
|
2413
|
+
"security": [
|
|
2414
|
+
{
|
|
2415
|
+
"bearerAuth": []
|
|
2416
|
+
}
|
|
2417
|
+
]
|
|
2418
|
+
}
|
|
2419
|
+
},
|
|
2046
2420
|
"/api/{session}/group-invite-link/{groupId}": {
|
|
2047
2421
|
"get": {
|
|
2048
2422
|
"tags": ["Group"],
|
|
@@ -64,6 +64,15 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
|
|
|
64
64
|
Object.assign(
|
|
65
65
|
{},
|
|
66
66
|
{ tokenStore: myTokenStore },
|
|
67
|
+
client.config.proxy ?
|
|
68
|
+
{
|
|
69
|
+
proxy: {
|
|
70
|
+
url: client.config.proxy?.url,
|
|
71
|
+
username: client.config.proxy?.username,
|
|
72
|
+
password: client.config.proxy?.password
|
|
73
|
+
}
|
|
74
|
+
} :
|
|
75
|
+
{},
|
|
67
76
|
req.serverOptions.createOptions,
|
|
68
77
|
{
|
|
69
78
|
session: session,
|
|
@@ -102,8 +111,8 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
|
|
|
102
111
|
statusFind
|
|
103
112
|
);
|
|
104
113
|
if (
|
|
105
|
-
statusFind ===
|
|
106
|
-
statusFind ===
|
|
114
|
+
statusFind === _wppconnect.StatusFind.autocloseCalled ||
|
|
115
|
+
statusFind === _wppconnect.StatusFind.disconnectedMobile)
|
|
107
116
|
{
|
|
108
117
|
client.status = 'CLOSED';
|
|
109
118
|
client.qrcode = null;
|
|
@@ -373,4 +382,4 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
|
|
|
373
382
|
return client;
|
|
374
383
|
}
|
|
375
384
|
}exports.default = CreateSessionUtil;
|
|
376
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3BwY29ubmVjdCIsInJlcXVpcmUiLCJfc2Vzc2lvbkNvbnRyb2xsZXIiLCJfY2hhdFdvb3RDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2Z1bmN0aW9ucyIsIl9zZXNzaW9uVXRpbCIsIl9mYWN0b3J5IiwiQ3JlYXRlU2Vzc2lvblV0aWwiLCJzdGFydENoYXRXb290Q2xpZW50IiwiY2xpZW50IiwiY29uZmlnIiwiY2hhdFdvb3QiLCJjaGF0V29vdENsaWVudCIsInNlc3Npb24iLCJjcmVhdGVTZXNzaW9uVXRpbCIsInJlcSIsImNsaWVudHNBcnJheSIsInJlcyIsImdldENsaWVudCIsInN0YXR1cyIsImJvZHkiLCJ0b2tlblN0b3JlIiwiRmFjdG9yeSIsIm15VG9rZW5TdG9yZSIsImNyZWF0ZVRva2VuU3RvcnkiLCJ0b2tlbkRhdGEiLCJnZXRUb2tlbiIsInNldFRva2VuIiwic2VydmVyT3B0aW9ucyIsImN1c3RvbVVzZXJEYXRhRGlyIiwiY3JlYXRlT3B0aW9ucyIsInB1cHBldGVlck9wdGlvbnMiLCJ1c2VyRGF0YURpciIsIndwcENsaWVudCIsImNyZWF0ZSIsIk9iamVjdCIsImFzc2lnbiIsInBob25lTnVtYmVyIiwicGhvbmUiLCJkZXZpY2VOYW1lIiwidW5kZWZpbmVkIiwicG93ZXJlZEJ5IiwiY2F0Y2hMaW5rQ29kZSIsImNvZGUiLCJleHBvcnRQaG9uZUNvZGUiLCJjYXRjaFFSIiwiYmFzZTY0UXIiLCJhc2NpaVFSIiwiYXR0ZW1wdCIsInVybENvZGUiLCJleHBvcnRRUiIsIm9uTG9hZGluZ1NjcmVlbiIsInBlcmNlbnQiLCJtZXNzYWdlIiwibG9nZ2VyIiwiaW5mbyIsInN0YXR1c0ZpbmQiLCJldmVudEVtaXR0ZXIiLCJlbWl0IiwicXJjb2RlIiwiY2xvc2UiLCJjYWxsV2ViSG9vayIsImVycm9yIiwic3RhcnQiLCJ3ZWJob29rIiwib25QYXJ0aWNpcGFudHNDaGFuZ2VkIiwib25SZWFjdGlvbk1lc3NhZ2UiLCJvblJldm9rZWRNZXNzYWdlIiwib25Qb2xsUmVzcG9uc2UiLCJvbkxhYmVsVXBkYXRlZCIsImUiLCJFcnJvciIsIm5hbWUiLCJvcGVuZGF0YSIsInBob25lQ29kZSIsImlvIiwiZGF0YSIsIl9oZWFkZXJTZW50IiwianNvbiIsInFyQ29kZSIsInVybGNvZGUiLCJyZXBsYWNlIiwiaW1hZ2VCdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwidG9TdHJpbmciLCJpc0Nvbm5lY3RlZCIsInN0YXJ0SGVscGVyIiwiY2hlY2tTdGF0ZVNlc3Npb24iLCJsaXN0ZW5NZXNzYWdlcyIsImxpc3RlbkFja3MiLCJvblByZXNlbmNlQ2hhbmdlZCIsIm9uU3RhdGVDaGFuZ2UiLCJzdGF0ZSIsImNvbmZsaXRzIiwiU29ja2V0U3RhdGUiLCJDT05GTElDVCIsImluY2x1ZGVzIiwidXNlSGVyZSIsIm9uTWVzc2FnZSIsInR5cGUiLCJvbkxpdmVMb2NhdGlvbiIsInNlbmRlciIsImlkIiwibG9jYXRpb24iLCJvbkFueU1lc3NhZ2UiLCJkb3dubG9hZCIsIndlYnNvY2tldCIsImF1dG9Eb3dubG9hZCIsImZyb21NZSIsInJlc3BvbnNlIiwib25TZWxmTWVzc2FnZSIsIm9uSW5jb21pbmdDYWxsIiwiY2FsbCIsIm9uQWNrIiwiYWNrIiwicHJlc2VuY2VDaGFuZ2VkRXZlbnQiLCJyZWFjdGlvbiIsIm9uVXBkYXRlTGFiZWwiLCJlbmNvZGVGdW5jdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJkZWNvZGVGdW5jdGlvbiIsInRleHQiLCJvYmplY3QiLCJwYXJzZSIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY3JlYXRlU2Vzc2lvblV0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgY3JlYXRlLCBTb2NrZXRTdGF0ZSB9IGZyb20gJ0B3cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdCc7XG5pbXBvcnQgeyBSZXF1ZXN0IH0gZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7IGRvd25sb2FkIH0gZnJvbSAnLi4vY29udHJvbGxlci9zZXNzaW9uQ29udHJvbGxlcic7XG5pbXBvcnQgeyBXaGF0c0FwcFNlcnZlciB9IGZyb20gJy4uL3R5cGVzL1doYXRzQXBwU2VydmVyJztcbmltcG9ydCBjaGF0V29vdENsaWVudCBmcm9tICcuL2NoYXRXb290Q2xpZW50JztcbmltcG9ydCB7IGF1dG9Eb3dubG9hZCwgY2FsbFdlYkhvb2ssIHN0YXJ0SGVscGVyIH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgY2xpZW50c0FycmF5LCBldmVudEVtaXR0ZXIgfSBmcm9tICcuL3Nlc3Npb25VdGlsJztcbmltcG9ydCBGYWN0b3J5IGZyb20gJy4vdG9rZW5TdG9yZS9mYWN0b3J5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3JlYXRlU2Vzc2lvblV0aWwge1xuICBzdGFydENoYXRXb290Q2xpZW50KGNsaWVudDogYW55KSB7XG4gICAgaWYgKGNsaWVudC5jb25maWcuY2hhdFdvb3QgJiYgIWNsaWVudC5fY2hhdFdvb3RDbGllbnQpXG4gICAgICBjbGllbnQuX2NoYXRXb290Q2xpZW50ID0gbmV3IGNoYXRXb290Q2xpZW50KFxuICAgICAgICBjbGllbnQuY29uZmlnLmNoYXRXb290LFxuICAgICAgICBjbGllbnQuc2Vzc2lvblxuICAgICAgKTtcbiAgICByZXR1cm4gY2xpZW50Ll9jaGF0V29vdENsaWVudDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb25VdGlsKFxuICAgIHJlcTogYW55LFxuICAgIGNsaWVudHNBcnJheTogYW55LFxuICAgIHNlc3Npb246IHN0cmluZyxcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjbGllbnQgPSB0aGlzLmdldENsaWVudChzZXNzaW9uKSBhcyBhbnk7XG4gICAgICBpZiAoY2xpZW50LnN0YXR1cyAhPSBudWxsICYmIGNsaWVudC5zdGF0dXMgIT09ICdDTE9TRUQnKSByZXR1cm47XG4gICAgICBjbGllbnQuc3RhdHVzID0gJ0lOSVRJQUxJWklORyc7XG4gICAgICBjbGllbnQuY29uZmlnID0gcmVxLmJvZHk7XG5cbiAgICAgIGNvbnN0IHRva2VuU3RvcmUgPSBuZXcgRmFjdG9yeSgpO1xuICAgICAgY29uc3QgbXlUb2tlblN0b3JlID0gdG9rZW5TdG9yZS5jcmVhdGVUb2tlblN0b3J5KGNsaWVudCk7XG4gICAgICBjb25zdCB0b2tlbkRhdGEgPSBhd2FpdCBteVRva2VuU3RvcmUuZ2V0VG9rZW4oc2Vzc2lvbik7XG5cbiAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byB1cGRhdGUgcGhvbmUgaW4gY29uZmlnIGV2ZXJ5IHRpbWUgc2Vzc2lvbiBzdGFydHMsIHNvIHdlIGNhbiBhc2sgZm9yIGNvZGUgZm9yIGl0IGFnYWluLlxuICAgICAgbXlUb2tlblN0b3JlLnNldFRva2VuKHNlc3Npb24sIHRva2VuRGF0YSA/PyB7fSk7XG5cbiAgICAgIHRoaXMuc3RhcnRDaGF0V29vdENsaWVudChjbGllbnQpO1xuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMuY3VzdG9tVXNlckRhdGFEaXIpIHtcbiAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMuY3JlYXRlT3B0aW9ucy5wdXBwZXRlZXJPcHRpb25zID0ge1xuICAgICAgICAgIHVzZXJEYXRhRGlyOiByZXEuc2VydmVyT3B0aW9ucy5jdXN0b21Vc2VyRGF0YURpciArIHNlc3Npb24sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdwcENsaWVudCA9IGF3YWl0IGNyZWF0ZShcbiAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7IHRva2VuU3RvcmU6IG15VG9rZW5TdG9yZSB9LFxuICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmNyZWF0ZU9wdGlvbnMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvbjogc2Vzc2lvbixcbiAgICAgICAgICAgIHBob25lTnVtYmVyOiBjbGllbnQuY29uZmlnLnBob25lID8/IG51bGwsXG4gICAgICAgICAgICBkZXZpY2VOYW1lOlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmRldmljZU5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICdXcHBDb25uZWN0J1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcG93ZXJlZEJ5OlxuICAgICAgICAgICAgICBjbGllbnQuY29uZmlnLnBob25lID09IHVuZGVmaW5lZCAvLyBidWcgd2hlbiB1c2luZyBwaG9uZSBjb2RlIHRoaXMgc2hvdWxkbid0IGJlIHBhc3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL3dwcGNvbm5lY3QtdGVhbS93cHBjb25uZWN0LXNlcnZlci9pc3N1ZXMvMTY4NyNpc3N1ZWNvbW1lbnQtMjA5OTM1Nzg3NClcbiAgICAgICAgICAgICAgICA/IGNsaWVudC5jb25maWc/LnBvd2VyZWRCeSB8fFxuICAgICAgICAgICAgICAgICAgcmVxLnNlcnZlck9wdGlvbnMucG93ZXJlZEJ5IHx8XG4gICAgICAgICAgICAgICAgICAnV1BQQ29ubmVjdC1TZXJ2ZXInXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRjaExpbmtDb2RlOiAoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UGhvbmVDb2RlKHJlcSwgY2xpZW50LmNvbmZpZy5waG9uZSwgY29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGNoUVI6IChcbiAgICAgICAgICAgICAgYmFzZTY0UXI6IGFueSxcbiAgICAgICAgICAgICAgYXNjaWlRUjogYW55LFxuICAgICAgICAgICAgICBhdHRlbXB0OiBhbnksXG4gICAgICAgICAgICAgIHVybENvZGU6IHN0cmluZ1xuICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0UVIocmVxLCBiYXNlNjRRciwgdXJsQ29kZSwgY2xpZW50LCByZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uTG9hZGluZ1NjcmVlbjogKHBlcmNlbnQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIHJlcS5sb2dnZXIuaW5mbyhgWyR7c2Vzc2lvbn1dICR7cGVyY2VudH0lIC0gJHttZXNzYWdlfWApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0YXR1c0ZpbmQ6IChzdGF0dXNGaW5kOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBldmVudEVtaXR0ZXIuZW1pdChcbiAgICAgICAgICAgICAgICAgIGBzdGF0dXMtJHtjbGllbnQuc2Vzc2lvbn1gLFxuICAgICAgICAgICAgICAgICAgY2xpZW50LFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZCA9PT0gJ2F1dG9jbG9zZUNhbGxlZCcgfHxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c0ZpbmQgPT09ICdkZXNjb25uZWN0ZWRNb2JpbGUnXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjbGllbnQuc3RhdHVzID0gJ0NMT1NFRCc7XG4gICAgICAgICAgICAgICAgICBjbGllbnQucXJjb2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgY2xpZW50c0FycmF5W3Nlc3Npb25dID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3N0YXR1cy1maW5kJywge1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXNGaW5kLFxuICAgICAgICAgICAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVxLmxvZ2dlci5pbmZvKHN0YXR1c0ZpbmQgKyAnXFxuXFxuJyk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXSA9IE9iamVjdC5hc3NpZ24od3BwQ2xpZW50LCBjbGllbnQpO1xuICAgICAgYXdhaXQgdGhpcy5zdGFydChyZXEsIGNsaWVudCk7XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUGFydGljaXBhbnRzQ2hhbmdlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9uUGFydGljaXBhbnRzQ2hhbmdlZChyZXEsIGNsaWVudCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUmVhY3Rpb25NZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZWFjdGlvbk1lc3NhZ2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblJldm9rZWRNZXNzYWdlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25SZXZva2VkTWVzc2FnZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUG9sbFJlc3BvbnNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25Qb2xsUmVzcG9uc2UoY2xpZW50LCByZXEpO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25MYWJlbFVwZGF0ZWQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vbkxhYmVsVXBkYXRlZChjbGllbnQsIHJlcSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5uYW1lID09ICdUaW1lb3V0RXJyb3InKSB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuZ2V0Q2xpZW50KHNlc3Npb24pIGFzIGFueTtcbiAgICAgICAgY2xpZW50LnN0YXR1cyA9ICdDTE9TRUQnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9wZW5kYXRhKHJlcTogUmVxdWVzdCwgc2Vzc2lvbjogc3RyaW5nLCByZXM/OiBhbnkpIHtcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVNlc3Npb25VdGlsKHJlcSwgY2xpZW50c0FycmF5LCBzZXNzaW9uLCByZXMpO1xuICB9XG5cbiAgZXhwb3J0UGhvbmVDb2RlKFxuICAgIHJlcTogYW55LFxuICAgIHBob25lOiBhbnksXG4gICAgcGhvbmVDb2RlOiBhbnksXG4gICAgY2xpZW50OiBXaGF0c0FwcFNlcnZlcixcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgZXZlbnRFbWl0dGVyLmVtaXQoYHBob25lQ29kZS0ke2NsaWVudC5zZXNzaW9ufWAsIHBob25lQ29kZSwgY2xpZW50KTtcblxuICAgIE9iamVjdC5hc3NpZ24oY2xpZW50LCB7XG4gICAgICBzdGF0dXM6ICdQSE9ORUNPREUnLFxuICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICBwaG9uZTogcGhvbmUsXG4gICAgfSk7XG5cbiAgICByZXEuaW8uZW1pdCgncGhvbmVDb2RlJywge1xuICAgICAgZGF0YTogcGhvbmVDb2RlLFxuICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3Bob25lQ29kZScsIHtcbiAgICAgIHBob25lQ29kZTogcGhvbmVDb2RlLFxuICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBpZiAocmVzICYmICFyZXMuX2hlYWRlclNlbnQpXG4gICAgICByZXMuc3RhdHVzKDIwMCkuanNvbih7XG4gICAgICAgIHN0YXR1czogJ3Bob25lQ29kZScsXG4gICAgICAgIHBob25lOiBwaG9uZSxcbiAgICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgICAgfSk7XG4gIH1cblxuICBleHBvcnRRUihcbiAgICByZXE6IGFueSxcbiAgICBxckNvZGU6IGFueSxcbiAgICB1cmxDb2RlOiBhbnksXG4gICAgY2xpZW50OiBXaGF0c0FwcFNlcnZlcixcbiAgICByZXM/OiBhbnlcbiAgKSB7XG4gICAgZXZlbnRFbWl0dGVyLmVtaXQoYHFyY29kZS0ke2NsaWVudC5zZXNzaW9ufWAsIHFyQ29kZSwgdXJsQ29kZSwgY2xpZW50KTtcbiAgICBPYmplY3QuYXNzaWduKGNsaWVudCwge1xuICAgICAgc3RhdHVzOiAnUVJDT0RFJyxcbiAgICAgIHFyY29kZTogcXJDb2RlLFxuICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICB9KTtcblxuICAgIHFyQ29kZSA9IHFyQ29kZS5yZXBsYWNlKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJywgJycpO1xuICAgIGNvbnN0IGltYWdlQnVmZmVyID0gQnVmZmVyLmZyb20ocXJDb2RlLCAnYmFzZTY0Jyk7XG5cbiAgICByZXEuaW8uZW1pdCgncXJDb2RlJywge1xuICAgICAgZGF0YTogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgaW1hZ2VCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG5cbiAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3FyY29kZScsIHtcbiAgICAgIHFyY29kZTogcXJDb2RlLFxuICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgIH0pO1xuICAgIGlmIChyZXMgJiYgIXJlcy5faGVhZGVyU2VudClcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAncXJjb2RlJyxcbiAgICAgICAgcXJjb2RlOiBxckNvZGUsXG4gICAgICAgIHVybGNvZGU6IHVybENvZGUsXG4gICAgICAgIHNlc3Npb246IGNsaWVudC5zZXNzaW9uLFxuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBvblBhcnRpY2lwYW50c0NoYW5nZWQocmVxOiBhbnksIGNsaWVudDogYW55KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUGFydGljaXBhbnRzQ2hhbmdlZCgobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucGFydGljaXBhbnRzY2hhbmdlZCcsIG1lc3NhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQocmVxOiBSZXF1ZXN0LCBjbGllbnQ6IFdoYXRzQXBwU2VydmVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgICAgT2JqZWN0LmFzc2lnbihjbGllbnQsIHsgc3RhdHVzOiAnQ09OTkVDVEVEJywgcXJjb2RlOiBudWxsIH0pO1xuXG4gICAgICByZXEubG9nZ2VyLmluZm8oYFN0YXJ0ZWQgU2Vzc2lvbjogJHtjbGllbnQuc2Vzc2lvbn1gKTtcbiAgICAgIC8vY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdzZXNzaW9uLWxvZ2dlZCcsIHsgc3RhdHVzOiAnQ09OTkVDVEVEJ30pO1xuICAgICAgcmVxLmlvLmVtaXQoJ3Nlc3Npb24tbG9nZ2VkJywgeyBzdGF0dXM6IHRydWUsIHNlc3Npb246IGNsaWVudC5zZXNzaW9uIH0pO1xuICAgICAgc3RhcnRIZWxwZXIoY2xpZW50LCByZXEpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXEubG9nZ2VyLmVycm9yKGVycm9yKTtcbiAgICAgIHJlcS5pby5lbWl0KCdzZXNzaW9uLWVycm9yJywgY2xpZW50LnNlc3Npb24pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0ZVNlc3Npb24oY2xpZW50LCByZXEpO1xuICAgIGF3YWl0IHRoaXMubGlzdGVuTWVzc2FnZXMoY2xpZW50LCByZXEpO1xuXG4gICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2subGlzdGVuQWNrcykge1xuICAgICAgYXdhaXQgdGhpcy5saXN0ZW5BY2tzKGNsaWVudCwgcmVxKTtcbiAgICB9XG5cbiAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblByZXNlbmNlQ2hhbmdlZCkge1xuICAgICAgYXdhaXQgdGhpcy5vblByZXNlbmNlQ2hhbmdlZChjbGllbnQsIHJlcSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tTdGF0ZVNlc3Npb24oY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uU3RhdGVDaGFuZ2UoKHN0YXRlKSA9PiB7XG4gICAgICByZXEubG9nZ2VyLmluZm8oYFN0YXRlIENoYW5nZSAke3N0YXRlfTogJHtjbGllbnQuc2Vzc2lvbn1gKTtcbiAgICAgIGNvbnN0IGNvbmZsaXRzID0gW1NvY2tldFN0YXRlLkNPTkZMSUNUXTtcblxuICAgICAgaWYgKGNvbmZsaXRzLmluY2x1ZGVzKHN0YXRlKSkge1xuICAgICAgICBjbGllbnQudXNlSGVyZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdGVuTWVzc2FnZXMoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uTWVzc2FnZShhc3luYyAobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICBldmVudEVtaXR0ZXIuZW1pdChgbWVuc2FnZW0tJHtjbGllbnQuc2Vzc2lvbn1gLCBjbGllbnQsIG1lc3NhZ2UpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbm1lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdsb2NhdGlvbicpXG4gICAgICAgIGNsaWVudC5vbkxpdmVMb2NhdGlvbihtZXNzYWdlLnNlbmRlci5pZCwgKGxvY2F0aW9uKSA9PiB7XG4gICAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdsb2NhdGlvbicsIGxvY2F0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBjbGllbnQub25BbnlNZXNzYWdlKGFzeW5jIChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgIG1lc3NhZ2Uuc2Vzc2lvbiA9IGNsaWVudC5zZXNzaW9uO1xuXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSAnc3RpY2tlcicpIHtcbiAgICAgICAgZG93bmxvYWQobWVzc2FnZSwgY2xpZW50LCByZXEubG9nZ2VyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICByZXEuc2VydmVyT3B0aW9ucz8ud2Vic29ja2V0Py5hdXRvRG93bmxvYWQgfHxcbiAgICAgICAgKHJlcS5zZXJ2ZXJPcHRpb25zPy53ZWJob29rPy5hdXRvRG93bmxvYWQgJiYgbWVzc2FnZS5mcm9tTWUgPT0gZmFsc2UpXG4gICAgICApIHtcbiAgICAgICAgYXdhaXQgYXV0b0Rvd25sb2FkKGNsaWVudCwgcmVxLCBtZXNzYWdlKTtcbiAgICAgIH1cblxuICAgICAgcmVxLmlvLmVtaXQoJ3JlY2VpdmVkLW1lc3NhZ2UnLCB7IHJlc3BvbnNlOiBtZXNzYWdlIH0pO1xuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25TZWxmTWVzc2FnZSAmJiBtZXNzYWdlLmZyb21NZSlcbiAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnNlbGZtZXNzYWdlJywgbWVzc2FnZSk7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBjbGllbnQub25JbmNvbWluZ0NhbGwoYXN5bmMgKGNhbGwpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdpbmNvbWluZ2NhbGwnLCBjYWxsKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnaW5jb21pbmdjYWxsJywgY2FsbCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0ZW5BY2tzKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5vbkFjayhhc3luYyAoYWNrKSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25hY2snLCBhY2spO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbmFjaycsIGFjayk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblByZXNlbmNlQ2hhbmdlZChjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25QcmVzZW5jZUNoYW5nZWQoYXN5bmMgKHByZXNlbmNlQ2hhbmdlZEV2ZW50KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25wcmVzZW5jZWNoYW5nZWQnLCBwcmVzZW5jZUNoYW5nZWRFdmVudCk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucHJlc2VuY2VjaGFuZ2VkJywgcHJlc2VuY2VDaGFuZ2VkRXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25SZWFjdGlvbk1lc3NhZ2UoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUmVhY3Rpb25NZXNzYWdlKGFzeW5jIChyZWFjdGlvbjogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25yZWFjdGlvbm1lc3NhZ2UnLCByZWFjdGlvbik7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucmVhY3Rpb25tZXNzYWdlJywgcmVhY3Rpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25SZXZva2VkTWVzc2FnZShjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25SZXZva2VkTWVzc2FnZShhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ29ucmV2b2tlZG1lc3NhZ2UnLCByZXNwb25zZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucmV2b2tlZG1lc3NhZ2UnLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cbiAgYXN5bmMgb25Qb2xsUmVzcG9uc2UoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uUG9sbFJlc3BvbnNlKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25wb2xscmVzcG9uc2UnLCByZXNwb25zZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ucG9sbHJlc3BvbnNlJywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG4gIGFzeW5jIG9uTGFiZWxVcGRhdGVkKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblVwZGF0ZUxhYmVsKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb251cGRhdGVsYWJlbCcsIHJlc3BvbnNlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb251cGRhdGVsYWJlbCcsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGVuY29kZUZ1bmN0aW9uKGRhdGE6IGFueSwgd2ViaG9vazogYW55KSB7XG4gICAgZGF0YS53ZWJob29rID0gd2ViaG9vaztcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIH1cblxuICBkZWNvZGVGdW5jdGlvbih0ZXh0OiBhbnksIGNsaWVudDogYW55KSB7XG4gICAgY29uc3Qgb2JqZWN0ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICBpZiAob2JqZWN0LndlYmhvb2sgJiYgIWNsaWVudC53ZWJob29rKSBjbGllbnQud2ViaG9vayA9IG9iamVjdC53ZWJob29rO1xuICAgIGRlbGV0ZSBvYmplY3Qud2ViaG9vaztcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG5cbiAgZ2V0Q2xpZW50KHNlc3Npb246IGFueSkge1xuICAgIGxldCBjbGllbnQgPSBjbGllbnRzQXJyYXlbc2Vzc2lvbl07XG5cbiAgICBpZiAoIWNsaWVudClcbiAgICAgIGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXSA9IHtcbiAgICAgICAgc3RhdHVzOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBzZXNzaW9uLFxuICAgICAgfSBhcyBhbnk7XG4gICAgcmV0dXJuIGNsaWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7OztBQUdBLElBQUFDLGtCQUFBLEdBQUFELE9BQUE7O0FBRUEsSUFBQUUsZUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssWUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBLDBCQUEyQyxDQXZCM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBV2UsTUFBTU8saUJBQWlCLENBQUMsQ0FDckNDLG1CQUFtQkEsQ0FBQ0MsTUFBVyxFQUFFLENBQy9CLElBQUlBLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLElBQUksQ0FBQ0YsTUFBTSxDQUFDUCxlQUFlLEVB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
|
|
385
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3BwY29ubmVjdCIsInJlcXVpcmUiLCJfc2Vzc2lvbkNvbnRyb2xsZXIiLCJfY2hhdFdvb3RDbGllbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2Z1bmN0aW9ucyIsIl9zZXNzaW9uVXRpbCIsIl9mYWN0b3J5IiwiQ3JlYXRlU2Vzc2lvblV0aWwiLCJzdGFydENoYXRXb290Q2xpZW50IiwiY2xpZW50IiwiY29uZmlnIiwiY2hhdFdvb3QiLCJjaGF0V29vdENsaWVudCIsInNlc3Npb24iLCJjcmVhdGVTZXNzaW9uVXRpbCIsInJlcSIsImNsaWVudHNBcnJheSIsInJlcyIsImdldENsaWVudCIsInN0YXR1cyIsImJvZHkiLCJ0b2tlblN0b3JlIiwiRmFjdG9yeSIsIm15VG9rZW5TdG9yZSIsImNyZWF0ZVRva2VuU3RvcnkiLCJ0b2tlbkRhdGEiLCJnZXRUb2tlbiIsInNldFRva2VuIiwic2VydmVyT3B0aW9ucyIsImN1c3RvbVVzZXJEYXRhRGlyIiwiY3JlYXRlT3B0aW9ucyIsInB1cHBldGVlck9wdGlvbnMiLCJ1c2VyRGF0YURpciIsIndwcENsaWVudCIsImNyZWF0ZSIsIk9iamVjdCIsImFzc2lnbiIsInByb3h5IiwidXJsIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInBob25lTnVtYmVyIiwicGhvbmUiLCJkZXZpY2VOYW1lIiwidW5kZWZpbmVkIiwicG93ZXJlZEJ5IiwiY2F0Y2hMaW5rQ29kZSIsImNvZGUiLCJleHBvcnRQaG9uZUNvZGUiLCJjYXRjaFFSIiwiYmFzZTY0UXIiLCJhc2NpaVFSIiwiYXR0ZW1wdCIsInVybENvZGUiLCJleHBvcnRRUiIsIm9uTG9hZGluZ1NjcmVlbiIsInBlcmNlbnQiLCJtZXNzYWdlIiwibG9nZ2VyIiwiaW5mbyIsInN0YXR1c0ZpbmQiLCJldmVudEVtaXR0ZXIiLCJlbWl0IiwiU3RhdHVzRmluZCIsImF1dG9jbG9zZUNhbGxlZCIsImRpc2Nvbm5lY3RlZE1vYmlsZSIsInFyY29kZSIsImNsb3NlIiwiY2FsbFdlYkhvb2siLCJlcnJvciIsInN0YXJ0Iiwid2ViaG9vayIsIm9uUGFydGljaXBhbnRzQ2hhbmdlZCIsIm9uUmVhY3Rpb25NZXNzYWdlIiwib25SZXZva2VkTWVzc2FnZSIsIm9uUG9sbFJlc3BvbnNlIiwib25MYWJlbFVwZGF0ZWQiLCJlIiwiRXJyb3IiLCJuYW1lIiwib3BlbmRhdGEiLCJwaG9uZUNvZGUiLCJpbyIsImRhdGEiLCJfaGVhZGVyU2VudCIsImpzb24iLCJxckNvZGUiLCJ1cmxjb2RlIiwicmVwbGFjZSIsImltYWdlQnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwiaXNDb25uZWN0ZWQiLCJzdGFydEhlbHBlciIsImNoZWNrU3RhdGVTZXNzaW9uIiwibGlzdGVuTWVzc2FnZXMiLCJsaXN0ZW5BY2tzIiwib25QcmVzZW5jZUNoYW5nZWQiLCJvblN0YXRlQ2hhbmdlIiwic3RhdGUiLCJjb25mbGl0cyIsIlNvY2tldFN0YXRlIiwiQ09ORkxJQ1QiLCJpbmNsdWRlcyIsInVzZUhlcmUiLCJvbk1lc3NhZ2UiLCJ0eXBlIiwib25MaXZlTG9jYXRpb24iLCJzZW5kZXIiLCJpZCIsImxvY2F0aW9uIiwib25BbnlNZXNzYWdlIiwiZG93bmxvYWQiLCJ3ZWJzb2NrZXQiLCJhdXRvRG93bmxvYWQiLCJmcm9tTWUiLCJyZXNwb25zZSIsIm9uU2VsZk1lc3NhZ2UiLCJvbkluY29taW5nQ2FsbCIsImNhbGwiLCJvbkFjayIsImFjayIsInByZXNlbmNlQ2hhbmdlZEV2ZW50IiwicmVhY3Rpb24iLCJvblVwZGF0ZUxhYmVsIiwiZW5jb2RlRnVuY3Rpb24iLCJKU09OIiwic3RyaW5naWZ5IiwiZGVjb2RlRnVuY3Rpb24iLCJ0ZXh0Iiwib2JqZWN0IiwicGFyc2UiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2NyZWF0ZVNlc3Npb25VdGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMSBXUFBDb25uZWN0IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IGNyZWF0ZSwgU29ja2V0U3RhdGUsIFN0YXR1c0ZpbmQgfSBmcm9tICdAd3BwY29ubmVjdC10ZWFtL3dwcGNvbm5lY3QnO1xuaW1wb3J0IHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuXG5pbXBvcnQgeyBkb3dubG9hZCB9IGZyb20gJy4uL2NvbnRyb2xsZXIvc2Vzc2lvbkNvbnRyb2xsZXInO1xuaW1wb3J0IHsgV2hhdHNBcHBTZXJ2ZXIgfSBmcm9tICcuLi90eXBlcy9XaGF0c0FwcFNlcnZlcic7XG5pbXBvcnQgY2hhdFdvb3RDbGllbnQgZnJvbSAnLi9jaGF0V29vdENsaWVudCc7XG5pbXBvcnQgeyBhdXRvRG93bmxvYWQsIGNhbGxXZWJIb29rLCBzdGFydEhlbHBlciB9IGZyb20gJy4vZnVuY3Rpb25zJztcbmltcG9ydCB7IGNsaWVudHNBcnJheSwgZXZlbnRFbWl0dGVyIH0gZnJvbSAnLi9zZXNzaW9uVXRpbCc7XG5pbXBvcnQgRmFjdG9yeSBmcm9tICcuL3Rva2VuU3RvcmUvZmFjdG9yeSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyZWF0ZVNlc3Npb25VdGlsIHtcbiAgc3RhcnRDaGF0V29vdENsaWVudChjbGllbnQ6IGFueSkge1xuICAgIGlmIChjbGllbnQuY29uZmlnLmNoYXRXb290ICYmICFjbGllbnQuX2NoYXRXb290Q2xpZW50KVxuICAgICAgY2xpZW50Ll9jaGF0V29vdENsaWVudCA9IG5ldyBjaGF0V29vdENsaWVudChcbiAgICAgICAgY2xpZW50LmNvbmZpZy5jaGF0V29vdCxcbiAgICAgICAgY2xpZW50LnNlc3Npb25cbiAgICAgICk7XG4gICAgcmV0dXJuIGNsaWVudC5fY2hhdFdvb3RDbGllbnQ7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uVXRpbChcbiAgICByZXE6IGFueSxcbiAgICBjbGllbnRzQXJyYXk6IGFueSxcbiAgICBzZXNzaW9uOiBzdHJpbmcsXG4gICAgcmVzPzogYW55XG4gICkge1xuICAgIHRyeSB7XG4gICAgICBsZXQgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoc2Vzc2lvbikgYXMgYW55O1xuICAgICAgaWYgKGNsaWVudC5zdGF0dXMgIT0gbnVsbCAmJiBjbGllbnQuc3RhdHVzICE9PSAnQ0xPU0VEJykgcmV0dXJuO1xuICAgICAgY2xpZW50LnN0YXR1cyA9ICdJTklUSUFMSVpJTkcnO1xuICAgICAgY2xpZW50LmNvbmZpZyA9IHJlcS5ib2R5O1xuXG4gICAgICBjb25zdCB0b2tlblN0b3JlID0gbmV3IEZhY3RvcnkoKTtcbiAgICAgIGNvbnN0IG15VG9rZW5TdG9yZSA9IHRva2VuU3RvcmUuY3JlYXRlVG9rZW5TdG9yeShjbGllbnQpO1xuICAgICAgY29uc3QgdG9rZW5EYXRhID0gYXdhaXQgbXlUb2tlblN0b3JlLmdldFRva2VuKHNlc3Npb24pO1xuXG4gICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gdXBkYXRlIHBob25lIGluIGNvbmZpZyBldmVyeSB0aW1lIHNlc3Npb24gc3RhcnRzLCBzbyB3ZSBjYW4gYXNrIGZvciBjb2RlIGZvciBpdCBhZ2Fpbi5cbiAgICAgIG15VG9rZW5TdG9yZS5zZXRUb2tlbihzZXNzaW9uLCB0b2tlbkRhdGEgPz8ge30pO1xuXG4gICAgICB0aGlzLnN0YXJ0Q2hhdFdvb3RDbGllbnQoY2xpZW50KTtcblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLmN1c3RvbVVzZXJEYXRhRGlyKSB7XG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLmNyZWF0ZU9wdGlvbnMucHVwcGV0ZWVyT3B0aW9ucyA9IHtcbiAgICAgICAgICB1c2VyRGF0YURpcjogcmVxLnNlcnZlck9wdGlvbnMuY3VzdG9tVXNlckRhdGFEaXIgKyBzZXNzaW9uLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3cHBDbGllbnQgPSBhd2FpdCBjcmVhdGUoXG4gICAgICAgIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge30sXG4gICAgICAgICAgeyB0b2tlblN0b3JlOiBteVRva2VuU3RvcmUgfSxcbiAgICAgICAgICBjbGllbnQuY29uZmlnLnByb3h5XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBwcm94eToge1xuICAgICAgICAgICAgICAgICAgdXJsOiBjbGllbnQuY29uZmlnLnByb3h5Py51cmwsXG4gICAgICAgICAgICAgICAgICB1c2VybmFtZTogY2xpZW50LmNvbmZpZy5wcm94eT8udXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgICBwYXNzd29yZDogY2xpZW50LmNvbmZpZy5wcm94eT8ucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7fSxcbiAgICAgICAgICByZXEuc2VydmVyT3B0aW9ucy5jcmVhdGVPcHRpb25zLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlc3Npb246IHNlc3Npb24sXG4gICAgICAgICAgICBwaG9uZU51bWJlcjogY2xpZW50LmNvbmZpZy5waG9uZSA/PyBudWxsLFxuICAgICAgICAgICAgZGV2aWNlTmFtZTpcbiAgICAgICAgICAgICAgY2xpZW50LmNvbmZpZy5waG9uZSA9PSB1bmRlZmluZWQgLy8gYnVnIHdoZW4gdXNpbmcgcGhvbmUgY29kZSB0aGlzIHNob3VsZG4ndCBiZSBwYXNzZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS93cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdC1zZXJ2ZXIvaXNzdWVzLzE2ODcjaXNzdWVjb21tZW50LTIwOTkzNTc4NzQpXG4gICAgICAgICAgICAgICAgPyBjbGllbnQuY29uZmlnPy5kZXZpY2VOYW1lIHx8XG4gICAgICAgICAgICAgICAgICByZXEuc2VydmVyT3B0aW9ucy5kZXZpY2VOYW1lIHx8XG4gICAgICAgICAgICAgICAgICAnV3BwQ29ubmVjdCdcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBvd2VyZWRCeTpcbiAgICAgICAgICAgICAgY2xpZW50LmNvbmZpZy5waG9uZSA9PSB1bmRlZmluZWQgLy8gYnVnIHdoZW4gdXNpbmcgcGhvbmUgY29kZSB0aGlzIHNob3VsZG4ndCBiZSBwYXNzZWQgKGh0dHBzOi8vZ2l0aHViLmNvbS93cHBjb25uZWN0LXRlYW0vd3BwY29ubmVjdC1zZXJ2ZXIvaXNzdWVzLzE2ODcjaXNzdWVjb21tZW50LTIwOTkzNTc4NzQpXG4gICAgICAgICAgICAgICAgPyBjbGllbnQuY29uZmlnPy5wb3dlcmVkQnkgfHxcbiAgICAgICAgICAgICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zLnBvd2VyZWRCeSB8fFxuICAgICAgICAgICAgICAgICAgJ1dQUENvbm5lY3QtU2VydmVyJ1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY2F0Y2hMaW5rQ29kZTogKGNvZGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmV4cG9ydFBob25lQ29kZShyZXEsIGNsaWVudC5jb25maWcucGhvbmUsIGNvZGUsIGNsaWVudCwgcmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYXRjaFFSOiAoXG4gICAgICAgICAgICAgIGJhc2U2NFFyOiBhbnksXG4gICAgICAgICAgICAgIGFzY2lpUVI6IGFueSxcbiAgICAgICAgICAgICAgYXR0ZW1wdDogYW55LFxuICAgICAgICAgICAgICB1cmxDb2RlOiBzdHJpbmdcbiAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmV4cG9ydFFSKHJlcSwgYmFzZTY0UXIsIHVybENvZGUsIGNsaWVudCwgcmVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkxvYWRpbmdTY3JlZW46IChwZXJjZW50OiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICByZXEubG9nZ2VyLmluZm8oYFske3Nlc3Npb259XSAke3BlcmNlbnR9JSAtICR7bWVzc2FnZX1gKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGF0dXNGaW5kOiAoc3RhdHVzRmluZDogU3RhdHVzRmluZCkgPT4ge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGV2ZW50RW1pdHRlci5lbWl0KFxuICAgICAgICAgICAgICAgICAgYHN0YXR1cy0ke2NsaWVudC5zZXNzaW9ufWAsXG4gICAgICAgICAgICAgICAgICBjbGllbnQsXG4gICAgICAgICAgICAgICAgICBzdGF0dXNGaW5kXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBzdGF0dXNGaW5kID09PSBTdGF0dXNGaW5kLmF1dG9jbG9zZUNhbGxlZCB8fFxuICAgICAgICAgICAgICAgICAgc3RhdHVzRmluZCA9PT0gU3RhdHVzRmluZC5kaXNjb25uZWN0ZWRNb2JpbGVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5zdGF0dXMgPSAnQ0xPU0VEJztcbiAgICAgICAgICAgICAgICAgIGNsaWVudC5xcmNvZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICBjbGllbnRzQXJyYXlbc2Vzc2lvbl0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnc3RhdHVzLWZpbmQnLCB7XG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c0ZpbmQsXG4gICAgICAgICAgICAgICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXEubG9nZ2VyLmluZm8oc3RhdHVzRmluZCArICdcXG5cXG4nKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgY2xpZW50ID0gY2xpZW50c0FycmF5W3Nlc3Npb25dID0gT2JqZWN0LmFzc2lnbih3cHBDbGllbnQsIGNsaWVudCk7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0KHJlcSwgY2xpZW50KTtcblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25QYXJ0aWNpcGFudHNDaGFuZ2VkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub25QYXJ0aWNpcGFudHNDaGFuZ2VkKHJlcSwgY2xpZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25SZWFjdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vblJlYWN0aW9uTWVzc2FnZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUmV2b2tlZE1lc3NhZ2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vblJldm9rZWRNZXNzYWdlKGNsaWVudCwgcmVxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sub25Qb2xsUmVzcG9uc2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5vblBvbGxSZXNwb25zZShjbGllbnQsIHJlcSk7XG4gICAgICB9XG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vbkxhYmVsVXBkYXRlZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9uTGFiZWxVcGRhdGVkKGNsaWVudCwgcmVxKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXEubG9nZ2VyLmVycm9yKGUpO1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLm5hbWUgPT0gJ1RpbWVvdXRFcnJvcicpIHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5nZXRDbGllbnQoc2Vzc2lvbikgYXMgYW55O1xuICAgICAgICBjbGllbnQuc3RhdHVzID0gJ0NMT1NFRCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb3BlbmRhdGEocmVxOiBSZXF1ZXN0LCBzZXNzaW9uOiBzdHJpbmcsIHJlcz86IGFueSkge1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlU2Vzc2lvblV0aWwocmVxLCBjbGllbnRzQXJyYXksIHNlc3Npb24sIHJlcyk7XG4gIH1cblxuICBleHBvcnRQaG9uZUNvZGUoXG4gICAgcmVxOiBhbnksXG4gICAgcGhvbmU6IGFueSxcbiAgICBwaG9uZUNvZGU6IGFueSxcbiAgICBjbGllbnQ6IFdoYXRzQXBwU2VydmVyLFxuICAgIHJlcz86IGFueVxuICApIHtcbiAgICBldmVudEVtaXR0ZXIuZW1pdChgcGhvbmVDb2RlLSR7Y2xpZW50LnNlc3Npb259YCwgcGhvbmVDb2RlLCBjbGllbnQpO1xuXG4gICAgT2JqZWN0LmFzc2lnbihjbGllbnQsIHtcbiAgICAgIHN0YXR1czogJ1BIT05FQ09ERScsXG4gICAgICBwaG9uZUNvZGU6IHBob25lQ29kZSxcbiAgICAgIHBob25lOiBwaG9uZSxcbiAgICB9KTtcblxuICAgIHJlcS5pby5lbWl0KCdwaG9uZUNvZGUnLCB7XG4gICAgICBkYXRhOiBwaG9uZUNvZGUsXG4gICAgICBwaG9uZTogcGhvbmUsXG4gICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICB9KTtcblxuICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAncGhvbmVDb2RlJywge1xuICAgICAgcGhvbmVDb2RlOiBwaG9uZUNvZGUsXG4gICAgICBwaG9uZTogcGhvbmUsXG4gICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICB9KTtcblxuICAgIGlmIChyZXMgJiYgIXJlcy5faGVhZGVyU2VudClcbiAgICAgIHJlcy5zdGF0dXMoMjAwKS5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAncGhvbmVDb2RlJyxcbiAgICAgICAgcGhvbmU6IHBob25lLFxuICAgICAgICBwaG9uZUNvZGU6IHBob25lQ29kZSxcbiAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICB9KTtcbiAgfVxuXG4gIGV4cG9ydFFSKFxuICAgIHJlcTogYW55LFxuICAgIHFyQ29kZTogYW55LFxuICAgIHVybENvZGU6IGFueSxcbiAgICBjbGllbnQ6IFdoYXRzQXBwU2VydmVyLFxuICAgIHJlcz86IGFueVxuICApIHtcbiAgICBldmVudEVtaXR0ZXIuZW1pdChgcXJjb2RlLSR7Y2xpZW50LnNlc3Npb259YCwgcXJDb2RlLCB1cmxDb2RlLCBjbGllbnQpO1xuICAgIE9iamVjdC5hc3NpZ24oY2xpZW50LCB7XG4gICAgICBzdGF0dXM6ICdRUkNPREUnLFxuICAgICAgcXJjb2RlOiBxckNvZGUsXG4gICAgICB1cmxjb2RlOiB1cmxDb2RlLFxuICAgIH0pO1xuXG4gICAgcXJDb2RlID0gcXJDb2RlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnLCAnJyk7XG4gICAgY29uc3QgaW1hZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbShxckNvZGUsICdiYXNlNjQnKTtcblxuICAgIHJlcS5pby5lbWl0KCdxckNvZGUnLCB7XG4gICAgICBkYXRhOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LCcgKyBpbWFnZUJ1ZmZlci50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbixcbiAgICB9KTtcblxuICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAncXJjb2RlJywge1xuICAgICAgcXJjb2RlOiBxckNvZGUsXG4gICAgICB1cmxjb2RlOiB1cmxDb2RlLFxuICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgfSk7XG4gICAgaWYgKHJlcyAmJiAhcmVzLl9oZWFkZXJTZW50KVxuICAgICAgcmVzLnN0YXR1cygyMDApLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdxcmNvZGUnLFxuICAgICAgICBxcmNvZGU6IHFyQ29kZSxcbiAgICAgICAgdXJsY29kZTogdXJsQ29kZSxcbiAgICAgICAgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24sXG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uUGFydGljaXBhbnRzQ2hhbmdlZChyZXE6IGFueSwgY2xpZW50OiBhbnkpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25QYXJ0aWNpcGFudHNDaGFuZ2VkKChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25wYXJ0aWNpcGFudHNjaGFuZ2VkJywgbWVzc2FnZSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdGFydChyZXE6IFJlcXVlc3QsIGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgICBPYmplY3QuYXNzaWduKGNsaWVudCwgeyBzdGF0dXM6ICdDT05ORUNURUQnLCBxcmNvZGU6IG51bGwgfSk7XG5cbiAgICAgIHJlcS5sb2dnZXIuaW5mbyhgU3RhcnRlZCBTZXNzaW9uOiAke2NsaWVudC5zZXNzaW9ufWApO1xuICAgICAgLy9jYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ3Nlc3Npb24tbG9nZ2VkJywgeyBzdGF0dXM6ICdDT05ORUNURUQnfSk7XG4gICAgICByZXEuaW8uZW1pdCgnc2Vzc2lvbi1sb2dnZWQnLCB7IHN0YXR1czogdHJ1ZSwgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24gfSk7XG4gICAgICBzdGFydEhlbHBlcihjbGllbnQsIHJlcSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJlcS5sb2dnZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgcmVxLmlvLmVtaXQoJ3Nlc3Npb24tZXJyb3InLCBjbGllbnQuc2Vzc2lvbik7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jaGVja1N0YXRlU2Vzc2lvbihjbGllbnQsIHJlcSk7XG4gICAgYXdhaXQgdGhpcy5saXN0ZW5NZXNzYWdlcyhjbGllbnQsIHJlcSk7XG5cbiAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5saXN0ZW5BY2tzKSB7XG4gICAgICBhd2FpdCB0aGlzLmxpc3RlbkFja3MoY2xpZW50LCByZXEpO1xuICAgIH1cblxuICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLm9uUHJlc2VuY2VDaGFuZ2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLm9uUHJlc2VuY2VDaGFuZ2VkKGNsaWVudCwgcmVxKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjaGVja1N0YXRlU2Vzc2lvbihjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25TdGF0ZUNoYW5nZSgoc3RhdGUpID0+IHtcbiAgICAgIHJlcS5sb2dnZXIuaW5mbyhgU3RhdGUgQ2hhbmdlICR7c3RhdGV9OiAke2NsaWVudC5zZXNzaW9ufWApO1xuICAgICAgY29uc3QgY29uZmxpdHMgPSBbU29ja2V0U3RhdGUuQ09ORkxJQ1RdO1xuXG4gICAgICBpZiAoY29uZmxpdHMuaW5jbHVkZXMoc3RhdGUpKSB7XG4gICAgICAgIGNsaWVudC51c2VIZXJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0ZW5NZXNzYWdlcyhjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQub25NZXNzYWdlKGFzeW5jIChtZXNzYWdlOiBhbnkpID0+IHtcbiAgICAgIGV2ZW50RW1pdHRlci5lbWl0KGBtZW5zYWdlbS0ke2NsaWVudC5zZXNzaW9ufWAsIGNsaWVudCwgbWVzc2FnZSk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29ubWVzc2FnZScsIG1lc3NhZ2UpO1xuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ2xvY2F0aW9uJylcbiAgICAgICAgY2xpZW50Lm9uTGl2ZUxvY2F0aW9uKG1lc3NhZ2Uuc2VuZGVyLmlkLCAobG9jYXRpb24pID0+IHtcbiAgICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ2xvY2F0aW9uJywgbG9jYXRpb24pO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGNsaWVudC5vbkFueU1lc3NhZ2UoYXN5bmMgKG1lc3NhZ2U6IGFueSkgPT4ge1xuICAgICAgbWVzc2FnZS5zZXNzaW9uID0gY2xpZW50LnNlc3Npb247XG5cbiAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICdzdGlja2VyJykge1xuICAgICAgICBkb3dubG9hZChtZXNzYWdlLCBjbGllbnQsIHJlcS5sb2dnZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHJlcS5zZXJ2ZXJPcHRpb25zPy53ZWJzb2NrZXQ/LmF1dG9Eb3dubG9hZCB8fFxuICAgICAgICAocmVxLnNlcnZlck9wdGlvbnM/LndlYmhvb2s/LmF1dG9Eb3dubG9hZCAmJiBtZXNzYWdlLmZyb21NZSA9PSBmYWxzZSlcbiAgICAgICkge1xuICAgICAgICBhd2FpdCBhdXRvRG93bmxvYWQoY2xpZW50LCByZXEsIG1lc3NhZ2UpO1xuICAgICAgfVxuXG4gICAgICByZXEuaW8uZW1pdCgncmVjZWl2ZWQtbWVzc2FnZScsIHsgcmVzcG9uc2U6IG1lc3NhZ2UgfSk7XG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5vblNlbGZNZXNzYWdlICYmIG1lc3NhZ2UuZnJvbU1lKVxuICAgICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29uc2VsZm1lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGNsaWVudC5vbkluY29taW5nQ2FsbChhc3luYyAoY2FsbCkgPT4ge1xuICAgICAgcmVxLmlvLmVtaXQoJ2luY29taW5nY2FsbCcsIGNhbGwpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdpbmNvbWluZ2NhbGwnLCBjYWxsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RlbkFja3MoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50Lm9uQWNrKGFzeW5jIChhY2spID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbmFjaycsIGFjayk7XG4gICAgICBjYWxsV2ViSG9vayhjbGllbnQsIHJlcSwgJ29uYWNrJywgYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uUHJlc2VuY2VDaGFuZ2VkKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5vblByZXNlbmNlQ2hhbmdlZChhc3luYyAocHJlc2VuY2VDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnByZXNlbmNlY2hhbmdlZCcsIHByZXNlbmNlQ2hhbmdlZEV2ZW50KTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25wcmVzZW5jZWNoYW5nZWQnLCBwcmVzZW5jZUNoYW5nZWRFdmVudCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJlYWN0aW9uTWVzc2FnZShjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25SZWFjdGlvbk1lc3NhZ2UoYXN5bmMgKHJlYWN0aW9uOiBhbnkpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnJlYWN0aW9ubWVzc2FnZScsIHJlYWN0aW9uKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25yZWFjdGlvbm1lc3NhZ2UnLCByZWFjdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvblJldm9rZWRNZXNzYWdlKGNsaWVudDogV2hhdHNBcHBTZXJ2ZXIsIHJlcTogUmVxdWVzdCkge1xuICAgIGF3YWl0IGNsaWVudC5pc0Nvbm5lY3RlZCgpO1xuICAgIGF3YWl0IGNsaWVudC5vblJldm9rZWRNZXNzYWdlKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXEuaW8uZW1pdCgnb25yZXZva2VkbWVzc2FnZScsIHJlc3BvbnNlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25yZXZva2VkbWVzc2FnZScsIHJlc3BvbnNlKTtcbiAgICB9KTtcbiAgfVxuICBhc3luYyBvblBvbGxSZXNwb25zZShjbGllbnQ6IFdoYXRzQXBwU2VydmVyLCByZXE6IFJlcXVlc3QpIHtcbiAgICBhd2FpdCBjbGllbnQuaXNDb25uZWN0ZWQoKTtcbiAgICBhd2FpdCBjbGllbnQub25Qb2xsUmVzcG9uc2UoYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnBvbGxyZXNwb25zZScsIHJlc3BvbnNlKTtcbiAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAnb25wb2xscmVzcG9uc2UnLCByZXNwb25zZSk7XG4gICAgfSk7XG4gIH1cbiAgYXN5bmMgb25MYWJlbFVwZGF0ZWQoY2xpZW50OiBXaGF0c0FwcFNlcnZlciwgcmVxOiBSZXF1ZXN0KSB7XG4gICAgYXdhaXQgY2xpZW50LmlzQ29ubmVjdGVkKCk7XG4gICAgYXdhaXQgY2xpZW50Lm9uVXBkYXRlTGFiZWwoYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHJlcS5pby5lbWl0KCdvbnVwZGF0ZWxhYmVsJywgcmVzcG9uc2UpO1xuICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICdvbnVwZGF0ZWxhYmVsJywgcmVzcG9uc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZW5jb2RlRnVuY3Rpb24oZGF0YTogYW55LCB3ZWJob29rOiBhbnkpIHtcbiAgICBkYXRhLndlYmhvb2sgPSB3ZWJob29rO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgfVxuXG4gIGRlY29kZUZ1bmN0aW9uKHRleHQ6IGFueSwgY2xpZW50OiBhbnkpIHtcbiAgICBjb25zdCBvYmplY3QgPSBKU09OLnBhcnNlKHRleHQpO1xuICAgIGlmIChvYmplY3Qud2ViaG9vayAmJiAhY2xpZW50LndlYmhvb2spIGNsaWVudC53ZWJob29rID0gb2JqZWN0LndlYmhvb2s7XG4gICAgZGVsZXRlIG9iamVjdC53ZWJob29rO1xuICAgIHJldHVybiBvYmplY3Q7XG4gIH1cblxuICBnZXRDbGllbnQoc2Vzc2lvbjogYW55KSB7XG4gICAgbGV0IGNsaWVudCA9IGNsaWVudHNBcnJheVtzZXNzaW9uXTtcblxuICAgIGlmICghY2xpZW50KVxuICAgICAgY2xpZW50ID0gY2xpZW50c0FycmF5W3Nlc3Npb25dID0ge1xuICAgICAgICBzdGF0dXM6IG51bGwsXG4gICAgICAgIHNlc3Npb246IHNlc3Npb24sXG4gICAgICB9IGFzIGFueTtcbiAgICByZXR1cm4gY2xpZW50O1xuICB9XG59XG4iXSwi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
|