@merchi/checkout 1.3.5
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/README.md +196 -0
- package/lib/actions/confirm.d.ts +2 -0
- package/lib/actions/confirm.js +85 -0
- package/lib/actions/customer.d.ts +2 -0
- package/lib/actions/customer.js +53 -0
- package/lib/actions/domain.d.ts +2 -0
- package/lib/actions/domain.js +65 -0
- package/lib/actions/files.d.ts +1 -0
- package/lib/actions/files.js +35 -0
- package/lib/actions/helpers.d.ts +19 -0
- package/lib/actions/helpers.js +125 -0
- package/lib/actions/invoice.d.ts +3 -0
- package/lib/actions/invoice.js +113 -0
- package/lib/area.d.ts +77 -0
- package/lib/area.js +298 -0
- package/lib/assets/merchi-monster-loader.gif +0 -0
- package/lib/checkoutSession.d.ts +32 -0
- package/lib/checkoutSession.js +151 -0
- package/lib/components/Alerts.d.ts +3 -0
- package/lib/components/Alerts.js +88 -0
- package/lib/components/CancelOrderConfirmModal.d.ts +10 -0
- package/lib/components/CancelOrderConfirmModal.js +50 -0
- package/lib/components/CheckoutSummaryFields.d.ts +11 -0
- package/lib/components/CheckoutSummaryFields.js +38 -0
- package/lib/components/Collapse.d.ts +3 -0
- package/lib/components/Collapse.js +34 -0
- package/lib/components/CustomerCheckoutMethodTabs.d.ts +6 -0
- package/lib/components/CustomerCheckoutMethodTabs.js +90 -0
- package/lib/components/DiscountInputGroup.d.ts +2 -0
- package/lib/components/DiscountInputGroup.js +256 -0
- package/lib/components/DraftImageUploaded.d.ts +8 -0
- package/lib/components/DraftImageUploaded.js +53 -0
- package/lib/components/FooterButtons.d.ts +11 -0
- package/lib/components/FooterButtons.js +28 -0
- package/lib/components/InvoiceInfo.d.ts +6 -0
- package/lib/components/InvoiceInfo.js +37 -0
- package/lib/components/JobInfoContent.d.ts +2 -0
- package/lib/components/JobInfoContent.js +728 -0
- package/lib/components/MerchiCheckout.d.ts +46 -0
- package/lib/components/MerchiCheckout.js +49 -0
- package/lib/components/MerchiCheckoutProvider.d.ts +167 -0
- package/lib/components/MerchiCheckoutProvider.js +569 -0
- package/lib/components/MerchiCheckoutTabs.d.ts +2 -0
- package/lib/components/MerchiCheckoutTabs.js +50 -0
- package/lib/components/TabPane.d.ts +7 -0
- package/lib/components/TabPane.js +21 -0
- package/lib/components/TabPaneAddress.d.ts +3 -0
- package/lib/components/TabPaneAddress.js +28 -0
- package/lib/components/TabPaneConfirm.d.ts +11 -0
- package/lib/components/TabPaneConfirm.js +288 -0
- package/lib/components/TabPaneContainer.d.ts +6 -0
- package/lib/components/TabPaneContainer.js +13 -0
- package/lib/components/TabPaneCustomer.d.ts +5 -0
- package/lib/components/TabPaneCustomer.js +93 -0
- package/lib/components/TabPaneNewDomain.d.ts +3 -0
- package/lib/components/TabPaneNewDomain.js +39 -0
- package/lib/components/TabPanePayment.d.ts +3 -0
- package/lib/components/TabPanePayment.js +99 -0
- package/lib/components/TabPaneSubmitted.d.ts +3 -0
- package/lib/components/TabPaneSubmitted.js +90 -0
- package/lib/components/TitleStep.d.ts +6 -0
- package/lib/components/TitleStep.js +24 -0
- package/lib/components/buttons/ButtonInvoiceDownload.d.ts +3 -0
- package/lib/components/buttons/ButtonInvoiceDownload.js +91 -0
- package/lib/components/buttons/ButtonNext.d.ts +10 -0
- package/lib/components/buttons/ButtonNext.js +48 -0
- package/lib/components/buttons/ButtonPrevious.d.ts +7 -0
- package/lib/components/buttons/ButtonPrevious.js +36 -0
- package/lib/components/buttons/index.d.ts +3 -0
- package/lib/components/buttons/index.js +4 -0
- package/lib/components/currency.d.ts +5 -0
- package/lib/components/currency.js +223 -0
- package/lib/components/forms/CheckboxBillingAddressSameAsShippingAddress.d.ts +7 -0
- package/lib/components/forms/CheckboxBillingAddressSameAsShippingAddress.js +22 -0
- package/lib/components/forms/FormAddresses.d.ts +6 -0
- package/lib/components/forms/FormAddresses.js +251 -0
- package/lib/components/forms/FormCustomerNew.d.ts +4 -0
- package/lib/components/forms/FormCustomerNew.js +197 -0
- package/lib/components/forms/FormCustomerReturning.d.ts +3 -0
- package/lib/components/forms/FormCustomerReturning.js +147 -0
- package/lib/components/forms/FormDomainNew.d.ts +2 -0
- package/lib/components/forms/FormDomainNew.js +152 -0
- package/lib/components/forms/FormWhatsappCustomer.d.ts +4 -0
- package/lib/components/forms/FormWhatsappCustomer.js +217 -0
- package/lib/components/forms/InputAcceptUserTermsAndConditions.d.ts +7 -0
- package/lib/components/forms/InputAcceptUserTermsAndConditions.js +38 -0
- package/lib/components/forms/InputCheckStoreName.d.ts +7 -0
- package/lib/components/forms/InputCheckStoreName.js +168 -0
- package/lib/components/forms/InputError.d.ts +8 -0
- package/lib/components/forms/InputError.js +19 -0
- package/lib/components/forms/InputFileUpload.d.ts +12 -0
- package/lib/components/forms/InputFileUpload.js +191 -0
- package/lib/components/forms/InputSelect.d.ts +14 -0
- package/lib/components/forms/InputSelect.js +52 -0
- package/lib/components/forms/InputText.d.ts +12 -0
- package/lib/components/forms/InputText.js +59 -0
- package/lib/components/forms/InputsAddress.d.ts +12 -0
- package/lib/components/forms/InputsAddress.js +533 -0
- package/lib/components/forms/index.d.ts +5 -0
- package/lib/components/forms/index.js +6 -0
- package/lib/components/lists/ListShipmentQuoteOptions.d.ts +9 -0
- package/lib/components/lists/ListShipmentQuoteOptions.js +145 -0
- package/lib/components/lists/index.d.ts +2 -0
- package/lib/components/lists/index.js +3 -0
- package/lib/fonts/nunito-bold-webfont.woff +0 -0
- package/lib/fonts/nunito-bold-webfont.woff2 +0 -0
- package/lib/fonts/nunito-regular-webfont.woff +0 -0
- package/lib/fonts/nunito-regular-webfont.woff2 +0 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +4 -0
- package/lib/merchi_source.d.ts +2 -0
- package/lib/merchi_source.js +31 -0
- package/lib/styles/globals.css +2546 -0
- package/lib/styles/globals.css.map +1 -0
- package/lib/styles/globals.scss +2763 -0
- package/lib/tabs_utils.d.ts +31 -0
- package/lib/tabs_utils.js +104 -0
- package/lib/types.d.ts +43 -0
- package/lib/types.js +40 -0
- package/lib/utils.d.ts +68 -0
- package/lib/utils.js +560 -0
- package/package.json +96 -0
package/lib/utils.js
ADDED
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
2
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
3
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
4
|
+
import { ProductType, Role } from './types';
|
|
5
|
+
export var isoCountries = {
|
|
6
|
+
AF: "Afghanistan",
|
|
7
|
+
AX: "Aland Islands",
|
|
8
|
+
AL: "Albania",
|
|
9
|
+
DZ: "Algeria",
|
|
10
|
+
AS: "American Samoa",
|
|
11
|
+
AD: "Andorra",
|
|
12
|
+
AO: "Angola",
|
|
13
|
+
AI: "Anguilla",
|
|
14
|
+
AQ: "Antarctica",
|
|
15
|
+
AG: "Antigua And Barbuda",
|
|
16
|
+
AR: "Argentina",
|
|
17
|
+
AM: "Armenia",
|
|
18
|
+
AW: "Aruba",
|
|
19
|
+
AU: "Australia",
|
|
20
|
+
AT: "Austria",
|
|
21
|
+
AZ: "Azerbaijan",
|
|
22
|
+
BS: "Bahamas",
|
|
23
|
+
BH: "Bahrain",
|
|
24
|
+
BD: "Bangladesh",
|
|
25
|
+
BB: "Barbados",
|
|
26
|
+
BY: "Belarus",
|
|
27
|
+
BE: "Belgium",
|
|
28
|
+
BZ: "Belize",
|
|
29
|
+
BJ: "Benin",
|
|
30
|
+
BM: "Bermuda",
|
|
31
|
+
BT: "Bhutan",
|
|
32
|
+
BO: "Bolivia",
|
|
33
|
+
BA: "Bosnia And Herzegovina",
|
|
34
|
+
BW: "Botswana",
|
|
35
|
+
BV: "Bouvet Island",
|
|
36
|
+
BR: "Brazil",
|
|
37
|
+
IO: "British Indian Ocean Territory",
|
|
38
|
+
BN: "Brunei Darussalam",
|
|
39
|
+
BG: "Bulgaria",
|
|
40
|
+
BF: "Burkina Faso",
|
|
41
|
+
BI: "Burundi",
|
|
42
|
+
KH: "Cambodia",
|
|
43
|
+
CM: "Cameroon",
|
|
44
|
+
CA: "Canada",
|
|
45
|
+
CV: "Cape Verde",
|
|
46
|
+
KY: "Cayman Islands",
|
|
47
|
+
CF: "Central African Republic",
|
|
48
|
+
TD: "Chad",
|
|
49
|
+
CL: "Chile",
|
|
50
|
+
CN: "China",
|
|
51
|
+
CX: "Christmas Island",
|
|
52
|
+
CC: "Cocos (Keeling) Islands",
|
|
53
|
+
CO: "Colombia",
|
|
54
|
+
KM: "Comoros",
|
|
55
|
+
CG: "Congo",
|
|
56
|
+
CD: "Congo, Democratic Republic",
|
|
57
|
+
CK: "Cook Islands",
|
|
58
|
+
CR: "Costa Rica",
|
|
59
|
+
CI: "Cote D'Ivoire",
|
|
60
|
+
HR: "Croatia",
|
|
61
|
+
CU: "Cuba",
|
|
62
|
+
CY: "Cyprus",
|
|
63
|
+
CZ: "Czech Republic",
|
|
64
|
+
DK: "Denmark",
|
|
65
|
+
DJ: "Djibouti",
|
|
66
|
+
DM: "Dominica",
|
|
67
|
+
DO: "Dominican Republic",
|
|
68
|
+
EC: "Ecuador",
|
|
69
|
+
EG: "Egypt",
|
|
70
|
+
SV: "El Salvador",
|
|
71
|
+
GQ: "Equatorial Guinea",
|
|
72
|
+
ER: "Eritrea",
|
|
73
|
+
EE: "Estonia",
|
|
74
|
+
ET: "Ethiopia",
|
|
75
|
+
FK: "Falkland Islands (Malvinas)",
|
|
76
|
+
FO: "Faroe Islands",
|
|
77
|
+
FJ: "Fiji",
|
|
78
|
+
FI: "Finland",
|
|
79
|
+
FR: "France",
|
|
80
|
+
GF: "French Guiana",
|
|
81
|
+
PF: "French Polynesia",
|
|
82
|
+
TF: "French Southern Territories",
|
|
83
|
+
GA: "Gabon",
|
|
84
|
+
GM: "Gambia",
|
|
85
|
+
GE: "Georgia",
|
|
86
|
+
DE: "Germany",
|
|
87
|
+
GH: "Ghana",
|
|
88
|
+
GI: "Gibraltar",
|
|
89
|
+
GR: "Greece",
|
|
90
|
+
GL: "Greenland",
|
|
91
|
+
GD: "Grenada",
|
|
92
|
+
GP: "Guadeloupe",
|
|
93
|
+
GU: "Guam",
|
|
94
|
+
GT: "Guatemala",
|
|
95
|
+
GG: "Guernsey",
|
|
96
|
+
GN: "Guinea",
|
|
97
|
+
GW: "Guinea-Bissau",
|
|
98
|
+
GY: "Guyana",
|
|
99
|
+
HT: "Haiti",
|
|
100
|
+
HM: "Heard Island & Mcdonald Islands",
|
|
101
|
+
VA: "Holy See (Vatican City State)",
|
|
102
|
+
HN: "Honduras",
|
|
103
|
+
HK: "Hong Kong",
|
|
104
|
+
HU: "Hungary",
|
|
105
|
+
IS: "Iceland",
|
|
106
|
+
IN: "India",
|
|
107
|
+
ID: "Indonesia",
|
|
108
|
+
IR: "Iran, Islamic Republic Of",
|
|
109
|
+
IQ: "Iraq",
|
|
110
|
+
IE: "Ireland",
|
|
111
|
+
IM: "Isle Of Man",
|
|
112
|
+
IL: "Israel",
|
|
113
|
+
IT: "Italy",
|
|
114
|
+
JM: "Jamaica",
|
|
115
|
+
JP: "Japan",
|
|
116
|
+
JE: "Jersey",
|
|
117
|
+
JO: "Jordan",
|
|
118
|
+
KZ: "Kazakhstan",
|
|
119
|
+
KE: "Kenya",
|
|
120
|
+
KI: "Kiribati",
|
|
121
|
+
KR: "Korea",
|
|
122
|
+
KW: "Kuwait",
|
|
123
|
+
KG: "Kyrgyzstan",
|
|
124
|
+
LA: "Lao People's Democratic Republic",
|
|
125
|
+
LV: "Latvia",
|
|
126
|
+
LB: "Lebanon",
|
|
127
|
+
LS: "Lesotho",
|
|
128
|
+
LR: "Liberia",
|
|
129
|
+
LY: "Libyan Arab Jamahiriya",
|
|
130
|
+
LI: "Liechtenstein",
|
|
131
|
+
LT: "Lithuania",
|
|
132
|
+
LU: "Luxembourg",
|
|
133
|
+
MO: "Macao",
|
|
134
|
+
MK: "Macedonia",
|
|
135
|
+
MG: "Madagascar",
|
|
136
|
+
MW: "Malawi",
|
|
137
|
+
MY: "Malaysia",
|
|
138
|
+
MV: "Maldives",
|
|
139
|
+
ML: "Mali",
|
|
140
|
+
MT: "Malta",
|
|
141
|
+
MH: "Marshall Islands",
|
|
142
|
+
MQ: "Martinique",
|
|
143
|
+
MR: "Mauritania",
|
|
144
|
+
MU: "Mauritius",
|
|
145
|
+
YT: "Mayotte",
|
|
146
|
+
MX: "Mexico",
|
|
147
|
+
FM: "Micronesia, Federated States Of",
|
|
148
|
+
MD: "Moldova",
|
|
149
|
+
MC: "Monaco",
|
|
150
|
+
MN: "Mongolia",
|
|
151
|
+
ME: "Montenegro",
|
|
152
|
+
MS: "Montserrat",
|
|
153
|
+
MA: "Morocco",
|
|
154
|
+
MZ: "Mozambique",
|
|
155
|
+
MM: "Myanmar",
|
|
156
|
+
NA: "Namibia",
|
|
157
|
+
NR: "Nauru",
|
|
158
|
+
NP: "Nepal",
|
|
159
|
+
NL: "Netherlands",
|
|
160
|
+
AN: "Netherlands Antilles",
|
|
161
|
+
NC: "New Caledonia",
|
|
162
|
+
NZ: "New Zealand",
|
|
163
|
+
NI: "Nicaragua",
|
|
164
|
+
NE: "Niger",
|
|
165
|
+
NG: "Nigeria",
|
|
166
|
+
NU: "Niue",
|
|
167
|
+
NF: "Norfolk Island",
|
|
168
|
+
MP: "Northern Mariana Islands",
|
|
169
|
+
NO: "Norway",
|
|
170
|
+
OM: "Oman",
|
|
171
|
+
PK: "Pakistan",
|
|
172
|
+
PW: "Palau",
|
|
173
|
+
PS: "Palestinian Territory, Occupied",
|
|
174
|
+
PA: "Panama",
|
|
175
|
+
PG: "Papua New Guinea",
|
|
176
|
+
PY: "Paraguay",
|
|
177
|
+
PE: "Peru",
|
|
178
|
+
PH: "Philippines",
|
|
179
|
+
PN: "Pitcairn",
|
|
180
|
+
PL: "Poland",
|
|
181
|
+
PT: "Portugal",
|
|
182
|
+
PR: "Puerto Rico",
|
|
183
|
+
QA: "Qatar",
|
|
184
|
+
RE: "Reunion",
|
|
185
|
+
RO: "Romania",
|
|
186
|
+
RU: "Russian Federation",
|
|
187
|
+
RW: "Rwanda",
|
|
188
|
+
BL: "Saint Barthelemy",
|
|
189
|
+
SH: "Saint Helena",
|
|
190
|
+
KN: "Saint Kitts And Nevis",
|
|
191
|
+
LC: "Saint Lucia",
|
|
192
|
+
MF: "Saint Martin",
|
|
193
|
+
PM: "Saint Pierre And Miquelon",
|
|
194
|
+
VC: "Saint Vincent And Grenadines",
|
|
195
|
+
WS: "Samoa",
|
|
196
|
+
SM: "San Marino",
|
|
197
|
+
ST: "Sao Tome And Principe",
|
|
198
|
+
SA: "Saudi Arabia",
|
|
199
|
+
SN: "Senegal",
|
|
200
|
+
RS: "Serbia",
|
|
201
|
+
SC: "Seychelles",
|
|
202
|
+
SL: "Sierra Leone",
|
|
203
|
+
SG: "Singapore",
|
|
204
|
+
SK: "Slovakia",
|
|
205
|
+
SI: "Slovenia",
|
|
206
|
+
SB: "Solomon Islands",
|
|
207
|
+
SO: "Somalia",
|
|
208
|
+
ZA: "South Africa",
|
|
209
|
+
GS: "South Georgia And Sandwich Isl.",
|
|
210
|
+
ES: "Spain",
|
|
211
|
+
LK: "Sri Lanka",
|
|
212
|
+
SD: "Sudan",
|
|
213
|
+
SR: "Suriname",
|
|
214
|
+
SJ: "Svalbard And Jan Mayen",
|
|
215
|
+
SZ: "Swaziland",
|
|
216
|
+
SE: "Sweden",
|
|
217
|
+
CH: "Switzerland",
|
|
218
|
+
SY: "Syrian Arab Republic",
|
|
219
|
+
TW: "Taiwan",
|
|
220
|
+
TJ: "Tajikistan",
|
|
221
|
+
TZ: "Tanzania",
|
|
222
|
+
TH: "Thailand",
|
|
223
|
+
TL: "Timor-Leste",
|
|
224
|
+
TG: "Togo",
|
|
225
|
+
TK: "Tokelau",
|
|
226
|
+
TO: "Tonga",
|
|
227
|
+
TT: "Trinidad And Tobago",
|
|
228
|
+
TN: "Tunisia",
|
|
229
|
+
TR: "Turkey",
|
|
230
|
+
TM: "Turkmenistan",
|
|
231
|
+
TC: "Turks And Caicos Islands",
|
|
232
|
+
TV: "Tuvalu",
|
|
233
|
+
UG: "Uganda",
|
|
234
|
+
UA: "Ukraine",
|
|
235
|
+
AE: "United Arab Emirates",
|
|
236
|
+
GB: "United Kingdom",
|
|
237
|
+
US: "United States",
|
|
238
|
+
UM: "United States Outlying Islands",
|
|
239
|
+
UY: "Uruguay",
|
|
240
|
+
UZ: "Uzbekistan",
|
|
241
|
+
VU: "Vanuatu",
|
|
242
|
+
VE: "Venezuela",
|
|
243
|
+
VN: "Viet Nam",
|
|
244
|
+
VG: "Virgin Islands, British",
|
|
245
|
+
VI: "Virgin Islands, U.S.",
|
|
246
|
+
WF: "Wallis And Futuna",
|
|
247
|
+
EH: "Western Sahara",
|
|
248
|
+
YE: "Yemen",
|
|
249
|
+
ZM: "Zambia",
|
|
250
|
+
ZW: "Zimbabwe"
|
|
251
|
+
};
|
|
252
|
+
export function userDomainsByRoles(user, roles) {
|
|
253
|
+
var eD = user && user.enrolledDomains ? user.enrolledDomains : [];
|
|
254
|
+
var domains = [];
|
|
255
|
+
var i = 0;
|
|
256
|
+
for (i; i < eD.length; i++) {
|
|
257
|
+
var e = eD[i];
|
|
258
|
+
if (roles.includes(e.role)) {
|
|
259
|
+
domains.push(e.domain);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return domains;
|
|
263
|
+
}
|
|
264
|
+
export function userAdminDomains(user) {
|
|
265
|
+
return userDomainsByRoles(user, [Role.ADMIN, Role.MANAGER]);
|
|
266
|
+
}
|
|
267
|
+
export function isProductSupplierMOD(product) {
|
|
268
|
+
var productType = product && product.productType;
|
|
269
|
+
return product && [String(ProductType.SUPPLIER_MOD), String(ProductType.SUPPLIER_RESELL_MOD)].includes(String(productType));
|
|
270
|
+
}
|
|
271
|
+
export function isUserRegistered(user) {
|
|
272
|
+
var id = user ? user.id : null;
|
|
273
|
+
return id !== undefined && id !== null && id > 0;
|
|
274
|
+
}
|
|
275
|
+
export function isRegisteredAndHasStore(user) {
|
|
276
|
+
var id = user ? user.id : null;
|
|
277
|
+
return id !== undefined && id !== null && id > 0 && user.hasStore;
|
|
278
|
+
}
|
|
279
|
+
var supportedNumbers = {
|
|
280
|
+
AU: 'Australia (+61)',
|
|
281
|
+
AE: 'United Arab Emirates (+971)',
|
|
282
|
+
BH: 'Bahrain (+973)',
|
|
283
|
+
CN: 'China (+86)',
|
|
284
|
+
DK: 'Denmark (+45)',
|
|
285
|
+
ES: 'Spain (+34)',
|
|
286
|
+
FR: 'France (+33)',
|
|
287
|
+
GB: 'United Kingdom (+44)',
|
|
288
|
+
HK: 'Hong Kong (+852)',
|
|
289
|
+
ID: 'Indonesia (+62)',
|
|
290
|
+
IN: 'India (+91)',
|
|
291
|
+
IT: 'Italy (+39)',
|
|
292
|
+
KR: 'South Korea (+82)',
|
|
293
|
+
NC: 'New Caledonia (+687)',
|
|
294
|
+
NZ: 'New Zealand (+64)',
|
|
295
|
+
OM: 'Oman (+968)',
|
|
296
|
+
PH: 'Philippines (+63)',
|
|
297
|
+
PT: 'Portugal (+351)',
|
|
298
|
+
QA: 'Qatar (+974)',
|
|
299
|
+
SE: 'Sweden (+46)',
|
|
300
|
+
SG: 'Singapore (+65)',
|
|
301
|
+
TH: 'Thailand (+66)',
|
|
302
|
+
US: 'United States (+1)',
|
|
303
|
+
ZA: 'South Africa (+27)'
|
|
304
|
+
};
|
|
305
|
+
export var phoneOptions = Object.keys(supportedNumbers).map(function (key) {
|
|
306
|
+
return {
|
|
307
|
+
value: key,
|
|
308
|
+
label: supportedNumbers[key]
|
|
309
|
+
};
|
|
310
|
+
});
|
|
311
|
+
export var addressComponentsSettingsBackend = {
|
|
312
|
+
administrative_area_level_1: 'shortName',
|
|
313
|
+
administrative_area_level_2: 'shortName',
|
|
314
|
+
country: 'shortName',
|
|
315
|
+
establishment: 'longName',
|
|
316
|
+
floor: 'shortName',
|
|
317
|
+
locality: 'longName',
|
|
318
|
+
postal_code: 'shortName',
|
|
319
|
+
premise: 'shortName',
|
|
320
|
+
room: 'longName',
|
|
321
|
+
route: 'shortName',
|
|
322
|
+
street_number: 'shortName',
|
|
323
|
+
sublocality: 'longName',
|
|
324
|
+
subpremise: 'shortName'
|
|
325
|
+
};
|
|
326
|
+
export function googlePlacesResultAsNewAddress(placeDetails) {
|
|
327
|
+
var addressComponents = (placeDetails === null || placeDetails === void 0 ? void 0 : placeDetails.addressComponents) || [];
|
|
328
|
+
var name = (placeDetails === null || placeDetails === void 0 ? void 0 : placeDetails.name) || '';
|
|
329
|
+
var address = {
|
|
330
|
+
city: '',
|
|
331
|
+
country: '',
|
|
332
|
+
lineOne: name ? name : '',
|
|
333
|
+
lineTwo: '',
|
|
334
|
+
postcode: '',
|
|
335
|
+
state: ''
|
|
336
|
+
};
|
|
337
|
+
if (addressComponents && addressComponents.length > 0) {
|
|
338
|
+
for (var i = 0; i < addressComponents.length; i++) {
|
|
339
|
+
var addrComponent = addressComponents[i];
|
|
340
|
+
var addrTypes = addrComponent.types;
|
|
341
|
+
|
|
342
|
+
// Find the first relevant type that we have a setting for
|
|
343
|
+
var addrType = null;
|
|
344
|
+
var componentSetting = null;
|
|
345
|
+
var _iterator = _createForOfIteratorHelper(addrTypes),
|
|
346
|
+
_step;
|
|
347
|
+
try {
|
|
348
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
349
|
+
var type = _step.value;
|
|
350
|
+
if (addressComponentsSettingsBackend[type]) {
|
|
351
|
+
addrType = type;
|
|
352
|
+
componentSetting = addressComponentsSettingsBackend[type];
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
} catch (err) {
|
|
357
|
+
_iterator.e(err);
|
|
358
|
+
} finally {
|
|
359
|
+
_iterator.f();
|
|
360
|
+
}
|
|
361
|
+
if (componentSetting && addrType) {
|
|
362
|
+
var addressVal = addrComponent[componentSetting];
|
|
363
|
+
switch (addrType) {
|
|
364
|
+
case 'establishment':
|
|
365
|
+
case 'room':
|
|
366
|
+
case 'floor':
|
|
367
|
+
case 'street_number':
|
|
368
|
+
case 'premise':
|
|
369
|
+
case 'subpremise':
|
|
370
|
+
case 'route':
|
|
371
|
+
var oldLineOne = address.lineOne;
|
|
372
|
+
address.lineOne = oldLineOne.includes(addressVal) ? oldLineOne : "".concat(oldLineOne, " ").concat(addressVal).trim();
|
|
373
|
+
break;
|
|
374
|
+
case 'locality':
|
|
375
|
+
case 'sublocality':
|
|
376
|
+
var oldCity = address.city ? "".concat(address.city, " ") : '';
|
|
377
|
+
address.city = (oldCity + addressVal).trim();
|
|
378
|
+
break;
|
|
379
|
+
case 'administrative_area_level_1':
|
|
380
|
+
address.state = addressVal;
|
|
381
|
+
break;
|
|
382
|
+
case 'administrative_area_level_2':
|
|
383
|
+
break;
|
|
384
|
+
case 'country':
|
|
385
|
+
address.country = addressVal;
|
|
386
|
+
break;
|
|
387
|
+
case 'postal_code':
|
|
388
|
+
address.postcode = addressVal;
|
|
389
|
+
break;
|
|
390
|
+
default:
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// Clean up line one if it's empty and we have a formatted address
|
|
397
|
+
if (!address.lineOne.trim() && placeDetails !== null && placeDetails !== void 0 && placeDetails.formattedAddress) {
|
|
398
|
+
// Try to extract street address from formatted address
|
|
399
|
+
var parts = placeDetails.formattedAddress.split(',');
|
|
400
|
+
if (parts.length > 0) {
|
|
401
|
+
address.lineOne = parts[0].trim();
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return address;
|
|
405
|
+
}
|
|
406
|
+
return null;
|
|
407
|
+
}
|
|
408
|
+
export function addressInOneLine(address) {
|
|
409
|
+
var a = address ? address : {};
|
|
410
|
+
var city = a.city,
|
|
411
|
+
country = a.country,
|
|
412
|
+
lineOne = a.lineOne,
|
|
413
|
+
lineTwo = a.lineTwo,
|
|
414
|
+
postcode = a.postcode,
|
|
415
|
+
state = a.state;
|
|
416
|
+
var l1 = lineOne ? "".concat(lineOne, " ") : '';
|
|
417
|
+
var l2 = lineTwo ? "".concat(lineTwo, " ") : '';
|
|
418
|
+
var c = city ? "".concat(city, " ") : '';
|
|
419
|
+
var s = state ? "".concat(state, " ") : '';
|
|
420
|
+
var p = postcode ? "".concat(postcode, " ") : '';
|
|
421
|
+
var countryFull = country ? isoCountries[country] : '';
|
|
422
|
+
return l1 + l2 + c + s + p + countryFull;
|
|
423
|
+
}
|
|
424
|
+
export var FieldType = /*#__PURE__*/function (FieldType) {
|
|
425
|
+
FieldType[FieldType["TEXT_INPUT"] = 1] = "TEXT_INPUT";
|
|
426
|
+
FieldType[FieldType["SELECT"] = 2] = "SELECT";
|
|
427
|
+
FieldType[FieldType["FILE_UPLOAD"] = 3] = "FILE_UPLOAD";
|
|
428
|
+
FieldType[FieldType["TEXT_AREA"] = 4] = "TEXT_AREA";
|
|
429
|
+
FieldType[FieldType["NUMBER_INPUT"] = 5] = "NUMBER_INPUT";
|
|
430
|
+
FieldType[FieldType["CHECKBOX"] = 6] = "CHECKBOX";
|
|
431
|
+
FieldType[FieldType["RADIO"] = 7] = "RADIO";
|
|
432
|
+
FieldType[FieldType["FIELD_INSTRUCTIONS"] = 8] = "FIELD_INSTRUCTIONS";
|
|
433
|
+
FieldType[FieldType["IMAGE_SELECT"] = 9] = "IMAGE_SELECT";
|
|
434
|
+
FieldType[FieldType["COLOUR_PICKER"] = 10] = "COLOUR_PICKER";
|
|
435
|
+
FieldType[FieldType["COLOUR_SELECT"] = 11] = "COLOUR_SELECT";
|
|
436
|
+
FieldType[FieldType["TURNAROUND_TIME"] = 12] = "TURNAROUND_TIME";
|
|
437
|
+
FieldType[FieldType["COLOUR_EXTRACT"] = 13] = "COLOUR_EXTRACT";
|
|
438
|
+
FieldType[FieldType["AREA"] = 14] = "AREA";
|
|
439
|
+
return FieldType;
|
|
440
|
+
}({});
|
|
441
|
+
export function isSelectable(fieldType) {
|
|
442
|
+
return [FieldType.SELECT, FieldType.CHECKBOX, FieldType.RADIO, FieldType.IMAGE_SELECT, FieldType.COLOUR_SELECT, FieldType.TURNAROUND_TIME, FieldType.COLOUR_EXTRACT].includes(fieldType);
|
|
443
|
+
}
|
|
444
|
+
export function isInstructionsType(fieldType) {
|
|
445
|
+
return String(FieldType.FIELD_INSTRUCTIONS) === String(fieldType);
|
|
446
|
+
}
|
|
447
|
+
export var countryDefaultDict = function countryDefaultDict(currency) {
|
|
448
|
+
return {
|
|
449
|
+
currency: currency
|
|
450
|
+
};
|
|
451
|
+
};
|
|
452
|
+
export var supportedCountryDefaults = {
|
|
453
|
+
AE: countryDefaultDict('USD'),
|
|
454
|
+
AU: countryDefaultDict('AUD'),
|
|
455
|
+
BH: countryDefaultDict('USD'),
|
|
456
|
+
CH: countryDefaultDict('CNY'),
|
|
457
|
+
DK: countryDefaultDict('EUR'),
|
|
458
|
+
ES: countryDefaultDict('EUR'),
|
|
459
|
+
FR: countryDefaultDict('EUR'),
|
|
460
|
+
GB: countryDefaultDict('GBP'),
|
|
461
|
+
HK: countryDefaultDict('HKD'),
|
|
462
|
+
ID: countryDefaultDict('USD'),
|
|
463
|
+
IN: countryDefaultDict('INR'),
|
|
464
|
+
IT: countryDefaultDict('EUR'),
|
|
465
|
+
KR: countryDefaultDict('USD'),
|
|
466
|
+
NC: countryDefaultDict('USD'),
|
|
467
|
+
NZ: countryDefaultDict('NZD'),
|
|
468
|
+
OM: countryDefaultDict('USD'),
|
|
469
|
+
PH: countryDefaultDict('USD'),
|
|
470
|
+
PT: countryDefaultDict('EUR'),
|
|
471
|
+
QA: countryDefaultDict('USD'),
|
|
472
|
+
SE: countryDefaultDict('USD'),
|
|
473
|
+
SG: countryDefaultDict('SGD'),
|
|
474
|
+
TH: countryDefaultDict('USD'),
|
|
475
|
+
US: countryDefaultDict('USD'),
|
|
476
|
+
ZA: countryDefaultDict('USD')
|
|
477
|
+
};
|
|
478
|
+
export var supportedCountryDefaultsWithDefault = function supportedCountryDefaultsWithDefault(countryCode) {
|
|
479
|
+
var defaultCountryValues = supportedCountryDefaults[countryCode];
|
|
480
|
+
return defaultCountryValues ? defaultCountryValues : supportedCountryDefaults.AU;
|
|
481
|
+
};
|
|
482
|
+
function isFileRef(value) {
|
|
483
|
+
return value != null && value.id != null && value.id !== '';
|
|
484
|
+
}
|
|
485
|
+
export function cleanClientFiles() {
|
|
486
|
+
var clientFiles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
487
|
+
return clientFiles.map(function (clientFile) {
|
|
488
|
+
if (!clientFile) return undefined;
|
|
489
|
+
if (isFileRef(clientFile.file)) return clientFile.file;
|
|
490
|
+
if (isFileRef(clientFile)) return {
|
|
491
|
+
id: clientFile.id
|
|
492
|
+
};
|
|
493
|
+
return undefined;
|
|
494
|
+
}).filter(function (file) {
|
|
495
|
+
return file != null;
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
export function appendClientToOwnDraft(job) {
|
|
499
|
+
var ownDrafts = job.ownDrafts;
|
|
500
|
+
if (job.ownDrafts && job.ownDrafts.length) {
|
|
501
|
+
job.ownDrafts[0].designer = job.client;
|
|
502
|
+
}
|
|
503
|
+
return job;
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Decode/normalize a redirect base URL from embed script params.
|
|
507
|
+
* Handles percent-encoding, legacy %27 wrappers, and trailing junk.
|
|
508
|
+
*/
|
|
509
|
+
export function normalizeRedirectBaseUrl(url) {
|
|
510
|
+
var clean = String(url || '').trim().replace(/%27/g, '').replace(/%91/g, '').replace(/%92/g, '').replace(/%93/g, '').replace(/%94/g, '').replace(/^['"]+|['"]+$/g, '');
|
|
511
|
+
|
|
512
|
+
// Fully decode so encoded absolute URLs are not treated as relative paths.
|
|
513
|
+
for (var i = 0; i < 2; i++) {
|
|
514
|
+
try {
|
|
515
|
+
if (!/%[0-9A-Fa-f]{2}/.test(clean)) break;
|
|
516
|
+
var decoded = decodeURIComponent(clean);
|
|
517
|
+
if (decoded === clean) break;
|
|
518
|
+
clean = decoded;
|
|
519
|
+
} catch (_unused) {
|
|
520
|
+
break;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
return clean;
|
|
524
|
+
}
|
|
525
|
+
export function getClientEmail(client) {
|
|
526
|
+
var _client$emailAddresse;
|
|
527
|
+
var email = client === null || client === void 0 || (_client$emailAddresse = client.emailAddresses) === null || _client$emailAddresse === void 0 || (_client$emailAddresse = _client$emailAddresse[0]) === null || _client$emailAddresse === void 0 ? void 0 : _client$emailAddresse.emailAddress;
|
|
528
|
+
return typeof email === 'string' && email.trim() ? email.trim() : undefined;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Build the post-checkout/quote redirect URL with proper query separators.
|
|
533
|
+
* Always safe when the base URL omits a trailing "?" / "&".
|
|
534
|
+
*/
|
|
535
|
+
export function buildSuccessRedirectUrl(url, redirectWithValue, value) {
|
|
536
|
+
var extras = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
537
|
+
var base = normalizeRedirectBaseUrl(url);
|
|
538
|
+
if (!base) return base;
|
|
539
|
+
var target = new URL(base, typeof window !== 'undefined' ? window.location.href : 'https://placeholder.invalid/');
|
|
540
|
+
if (redirectWithValue && value !== undefined && value !== null && value !== '') {
|
|
541
|
+
target.searchParams.set('merchiValue', String(value));
|
|
542
|
+
}
|
|
543
|
+
if (extras.invoiceId !== undefined && extras.invoiceId !== null && extras.invoiceId !== '') {
|
|
544
|
+
target.searchParams.set('invoiceId', String(extras.invoiceId));
|
|
545
|
+
}
|
|
546
|
+
if (extras.email) {
|
|
547
|
+
target.searchParams.set('email', String(extras.email));
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
// Preserve protocol-relative redirect targets (//example.com/...).
|
|
551
|
+
if (base.startsWith('//')) {
|
|
552
|
+
return "//".concat(target.host).concat(target.pathname).concat(target.search).concat(target.hash);
|
|
553
|
+
}
|
|
554
|
+
return target.toString();
|
|
555
|
+
}
|
|
556
|
+
export function redirectOnSuccess(url, redirectWithValue, value) {
|
|
557
|
+
var extras = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
558
|
+
window.location.href = buildSuccessRedirectUrl(url, redirectWithValue, value, extras);
|
|
559
|
+
}
|
|
560
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcm9kdWN0VHlwZSIsIlJvbGUiLCJpc29Db3VudHJpZXMiLCJBRiIsIkFYIiwiQUwiLCJEWiIsIkFTIiwiQUQiLCJBTyIsIkFJIiwiQVEiLCJBRyIsIkFSIiwiQU0iLCJBVyIsIkFVIiwiQVQiLCJBWiIsIkJTIiwiQkgiLCJCRCIsIkJCIiwiQlkiLCJCRSIsIkJaIiwiQkoiLCJCTSIsIkJUIiwiQk8iLCJCQSIsIkJXIiwiQlYiLCJCUiIsIklPIiwiQk4iLCJCRyIsIkJGIiwiQkkiLCJLSCIsIkNNIiwiQ0EiLCJDViIsIktZIiwiQ0YiLCJURCIsIkNMIiwiQ04iLCJDWCIsIkNDIiwiQ08iLCJLTSIsIkNHIiwiQ0QiLCJDSyIsIkNSIiwiQ0kiLCJIUiIsIkNVIiwiQ1kiLCJDWiIsIkRLIiwiREoiLCJETSIsIkRPIiwiRUMiLCJFRyIsIlNWIiwiR1EiLCJFUiIsIkVFIiwiRVQiLCJGSyIsIkZPIiwiRkoiLCJGSSIsIkZSIiwiR0YiLCJQRiIsIlRGIiwiR0EiLCJHTSIsIkdFIiwiREUiLCJHSCIsIkdJIiwiR1IiLCJHTCIsIkdEIiwiR1AiLCJHVSIsIkdUIiwiR0ciLCJHTiIsIkdXIiwiR1kiLCJIVCIsIkhNIiwiVkEiLCJITiIsIkhLIiwiSFUiLCJJUyIsIklOIiwiSUQiLCJJUiIsIklRIiwiSUUiLCJJTSIsIklMIiwiSVQiLCJKTSIsIkpQIiwiSkUiLCJKTyIsIktaIiwiS0UiLCJLSSIsIktSIiwiS1ciLCJLRyIsIkxBIiwiTFYiLCJMQiIsIkxTIiwiTFIiLCJMWSIsIkxJIiwiTFQiLCJMVSIsIk1PIiwiTUsiLCJNRyIsIk1XIiwiTVkiLCJNViIsIk1MIiwiTVQiLCJNSCIsIk1RIiwiTVIiLCJNVSIsIllUIiwiTVgiLCJGTSIsIk1EIiwiTUMiLCJNTiIsIk1FIiwiTVMiLCJNQSIsIk1aIiwiTU0iLCJOQSIsIk5SIiwiTlAiLCJOTCIsIkFOIiwiTkMiLCJOWiIsIk5JIiwiTkUiLCJORyIsIk5VIiwiTkYiLCJNUCIsIk5PIiwiT00iLCJQSyIsIlBXIiwiUFMiLCJQQSIsIlBHIiwiUFkiLCJQRSIsIlBIIiwiUE4iLCJQTCIsIlBUIiwiUFIiLCJRQSIsIlJFIiwiUk8iLCJSVSIsIlJXIiwiQkwiLCJTSCIsIktOIiwiTEMiLCJNRiIsIlBNIiwiVkMiLCJXUyIsIlNNIiwiU1QiLCJTQSIsIlNOIiwiUlMiLCJTQyIsIlNMIiwiU0ciLCJTSyIsIlNJIiwiU0IiLCJTTyIsIlpBIiwiR1MiLCJFUyIsIkxLIiwiU0QiLCJTUiIsIlNKIiwiU1oiLCJTRSIsIkNIIiwiU1kiLCJUVyIsIlRKIiwiVFoiLCJUSCIsIlRMIiwiVEciLCJUSyIsIlRPIiwiVFQiLCJUTiIsIlRSIiwiVE0iLCJUQyIsIlRWIiwiVUciLCJVQSIsIkFFIiwiR0IiLCJVUyIsIlVNIiwiVVkiLCJVWiIsIlZVIiwiVkUiLCJWTiIsIlZHIiwiVkkiLCJXRiIsIkVIIiwiWUUiLCJaTSIsIlpXIiwidXNlckRvbWFpbnNCeVJvbGVzIiwidXNlciIsInJvbGVzIiwiZUQiLCJlbnJvbGxlZERvbWFpbnMiLCJkb21haW5zIiwiaSIsImxlbmd0aCIsImUiLCJpbmNsdWRlcyIsInJvbGUiLCJwdXNoIiwiZG9tYWluIiwidXNlckFkbWluRG9tYWlucyIsIkFETUlOIiwiTUFOQUdFUiIsImlzUHJvZHVjdFN1cHBsaWVyTU9EIiwicHJvZHVjdCIsInByb2R1Y3RUeXBlIiwiU3RyaW5nIiwiU1VQUExJRVJfTU9EIiwiU1VQUExJRVJfUkVTRUxMX01PRCIsImlzVXNlclJlZ2lzdGVyZWQiLCJpZCIsInVuZGVmaW5lZCIsImlzUmVnaXN0ZXJlZEFuZEhhc1N0b3JlIiwiaGFzU3RvcmUiLCJzdXBwb3J0ZWROdW1iZXJzIiwicGhvbmVPcHRpb25zIiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsImtleSIsInZhbHVlIiwibGFiZWwiLCJhZGRyZXNzQ29tcG9uZW50c1NldHRpbmdzQmFja2VuZCIsImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMSIsImFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMiIsImNvdW50cnkiLCJlc3RhYmxpc2htZW50IiwiZmxvb3IiLCJsb2NhbGl0eSIsInBvc3RhbF9jb2RlIiwicHJlbWlzZSIsInJvb20iLCJyb3V0ZSIsInN0cmVldF9udW1iZXIiLCJzdWJsb2NhbGl0eSIsInN1YnByZW1pc2UiLCJnb29nbGVQbGFjZXNSZXN1bHRBc05ld0FkZHJlc3MiLCJwbGFjZURldGFpbHMiLCJhZGRyZXNzQ29tcG9uZW50cyIsIm5hbWUiLCJhZGRyZXNzIiwiY2l0eSIsImxpbmVPbmUiLCJsaW5lVHdvIiwicG9zdGNvZGUiLCJzdGF0ZSIsImFkZHJDb21wb25lbnQiLCJhZGRyVHlwZXMiLCJ0eXBlcyIsImFkZHJUeXBlIiwiY29tcG9uZW50U2V0dGluZyIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwibiIsImRvbmUiLCJ0eXBlIiwiZXJyIiwiZiIsImFkZHJlc3NWYWwiLCJvbGRMaW5lT25lIiwiY29uY2F0IiwidHJpbSIsIm9sZENpdHkiLCJmb3JtYXR0ZWRBZGRyZXNzIiwicGFydHMiLCJzcGxpdCIsImFkZHJlc3NJbk9uZUxpbmUiLCJhIiwibDEiLCJsMiIsImMiLCJwIiwiY291bnRyeUZ1bGwiLCJGaWVsZFR5cGUiLCJpc1NlbGVjdGFibGUiLCJmaWVsZFR5cGUiLCJTRUxFQ1QiLCJDSEVDS0JPWCIsIlJBRElPIiwiSU1BR0VfU0VMRUNUIiwiQ09MT1VSX1NFTEVDVCIsIlRVUk5BUk9VTkRfVElNRSIsIkNPTE9VUl9FWFRSQUNUIiwiaXNJbnN0cnVjdGlvbnNUeXBlIiwiRklFTERfSU5TVFJVQ1RJT05TIiwiY291bnRyeURlZmF1bHREaWN0IiwiY3VycmVuY3kiLCJzdXBwb3J0ZWRDb3VudHJ5RGVmYXVsdHMiLCJzdXBwb3J0ZWRDb3VudHJ5RGVmYXVsdHNXaXRoRGVmYXVsdCIsImNvdW50cnlDb2RlIiwiZGVmYXVsdENvdW50cnlWYWx1ZXMiLCJpc0ZpbGVSZWYiLCJjbGVhbkNsaWVudEZpbGVzIiwiY2xpZW50RmlsZXMiLCJhcmd1bWVudHMiLCJjbGllbnRGaWxlIiwiZmlsZSIsImZpbHRlciIsImFwcGVuZENsaWVudFRvT3duRHJhZnQiLCJqb2IiLCJvd25EcmFmdHMiLCJkZXNpZ25lciIsImNsaWVudCIsIm5vcm1hbGl6ZVJlZGlyZWN0QmFzZVVybCIsInVybCIsImNsZWFuIiwicmVwbGFjZSIsInRlc3QiLCJkZWNvZGVkIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiX3VudXNlZCIsImdldENsaWVudEVtYWlsIiwiX2NsaWVudCRlbWFpbEFkZHJlc3NlIiwiZW1haWwiLCJlbWFpbEFkZHJlc3NlcyIsImVtYWlsQWRkcmVzcyIsImJ1aWxkU3VjY2Vzc1JlZGlyZWN0VXJsIiwicmVkaXJlY3RXaXRoVmFsdWUiLCJleHRyYXMiLCJiYXNlIiwidGFyZ2V0IiwiVVJMIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwic2VhcmNoUGFyYW1zIiwic2V0IiwiaW52b2ljZUlkIiwic3RhcnRzV2l0aCIsImhvc3QiLCJwYXRobmFtZSIsInNlYXJjaCIsImhhc2giLCJ0b1N0cmluZyIsInJlZGlyZWN0T25TdWNjZXNzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3RUeXBlLCBSb2xlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBpc29Db3VudHJpZXM6IGFueSA9IHtcbiAgQUY6IFwiQWZnaGFuaXN0YW5cIixcbiAgQVg6IFwiQWxhbmQgSXNsYW5kc1wiLFxuICBBTDogXCJBbGJhbmlhXCIsXG4gIERaOiBcIkFsZ2VyaWFcIixcbiAgQVM6IFwiQW1lcmljYW4gU2Ftb2FcIixcbiAgQUQ6IFwiQW5kb3JyYVwiLFxuICBBTzogXCJBbmdvbGFcIixcbiAgQUk6IFwiQW5ndWlsbGFcIixcbiAgQVE6IFwiQW50YXJjdGljYVwiLFxuICBBRzogXCJBbnRpZ3VhIEFuZCBCYXJidWRhXCIsXG4gIEFSOiBcIkFyZ2VudGluYVwiLFxuICBBTTogXCJBcm1lbmlhXCIsXG4gIEFXOiBcIkFydWJhXCIsXG4gIEFVOiBcIkF1c3RyYWxpYVwiLFxuICBBVDogXCJBdXN0cmlhXCIsXG4gIEFaOiBcIkF6ZXJiYWlqYW5cIixcbiAgQlM6IFwiQmFoYW1hc1wiLFxuICBCSDogXCJCYWhyYWluXCIsXG4gIEJEOiBcIkJhbmdsYWRlc2hcIixcbiAgQkI6IFwiQmFyYmFkb3NcIixcbiAgQlk6IFwiQmVsYXJ1c1wiLFxuICBCRTogXCJCZWxnaXVtXCIsXG4gIEJaOiBcIkJlbGl6ZVwiLFxuICBCSjogXCJCZW5pblwiLFxuICBCTTogXCJCZXJtdWRhXCIsXG4gIEJUOiBcIkJodXRhblwiLFxuICBCTzogXCJCb2xpdmlhXCIsXG4gIEJBOiBcIkJvc25pYSBBbmQgSGVyemVnb3ZpbmFcIixcbiAgQlc6IFwiQm90c3dhbmFcIixcbiAgQlY6IFwiQm91dmV0IElzbGFuZFwiLFxuICBCUjogXCJCcmF6aWxcIixcbiAgSU86IFwiQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5XCIsXG4gIEJOOiBcIkJydW5laSBEYXJ1c3NhbGFtXCIsXG4gIEJHOiBcIkJ1bGdhcmlhXCIsXG4gIEJGOiBcIkJ1cmtpbmEgRmFzb1wiLFxuICBCSTogXCJCdXJ1bmRpXCIsXG4gIEtIOiBcIkNhbWJvZGlhXCIsXG4gIENNOiBcIkNhbWVyb29uXCIsXG4gIENBOiBcIkNhbmFkYVwiLFxuICBDVjogXCJDYXBlIFZlcmRlXCIsXG4gIEtZOiBcIkNheW1hbiBJc2xhbmRzXCIsXG4gIENGOiBcIkNlbnRyYWwgQWZyaWNhbiBSZXB1YmxpY1wiLFxuICBURDogXCJDaGFkXCIsXG4gIENMOiBcIkNoaWxlXCIsXG4gIENOOiBcIkNoaW5hXCIsXG4gIENYOiBcIkNocmlzdG1hcyBJc2xhbmRcIixcbiAgQ0M6IFwiQ29jb3MgKEtlZWxpbmcpIElzbGFuZHNcIixcbiAgQ086IFwiQ29sb21iaWFcIixcbiAgS006IFwiQ29tb3Jvc1wiLFxuICBDRzogXCJDb25nb1wiLFxuICBDRDogXCJDb25nbywgRGVtb2NyYXRpYyBSZXB1YmxpY1wiLFxuICBDSzogXCJDb29rIElzbGFuZHNcIixcbiAgQ1I6IFwiQ29zdGEgUmljYVwiLFxuICBDSTogXCJDb3RlIEQnSXZvaXJlXCIsXG4gIEhSOiBcIkNyb2F0aWFcIixcbiAgQ1U6IFwiQ3ViYVwiLFxuICBDWTogXCJDeXBydXNcIixcbiAgQ1o6IFwiQ3plY2ggUmVwdWJsaWNcIixcbiAgREs6IFwiRGVubWFya1wiLFxuICBESjogXCJEamlib3V0aVwiLFxuICBETTogXCJEb21pbmljYVwiLFxuICBETzogXCJEb21pbmljYW4gUmVwdWJsaWNcIixcbiAgRUM6IFwiRWN1YWRvclwiLFxuICBFRzogXCJFZ3lwdFwiLFxuICBTVjogXCJFbCBTYWx2YWRvclwiLFxuICBHUTogXCJFcXVhdG9yaWFsIEd1aW5lYVwiLFxuICBFUjogXCJFcml0cmVhXCIsXG4gIEVFOiBcIkVzdG9uaWFcIixcbiAgRVQ6IFwiRXRoaW9waWFcIixcbiAgRks6IFwiRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpXCIsXG4gIEZPOiBcIkZhcm9lIElzbGFuZHNcIixcbiAgRko6IFwiRmlqaVwiLFxuICBGSTogXCJGaW5sYW5kXCIsXG4gIEZSOiBcIkZyYW5jZVwiLFxuICBHRjogXCJGcmVuY2ggR3VpYW5hXCIsXG4gIFBGOiBcIkZyZW5jaCBQb2x5bmVzaWFcIixcbiAgVEY6IFwiRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzXCIsXG4gIEdBOiBcIkdhYm9uXCIsXG4gIEdNOiBcIkdhbWJpYVwiLFxuICBHRTogXCJHZW9yZ2lhXCIsXG4gIERFOiBcIkdlcm1hbnlcIixcbiAgR0g6IFwiR2hhbmFcIixcbiAgR0k6IFwiR2licmFsdGFyXCIsXG4gIEdSOiBcIkdyZWVjZVwiLFxuICBHTDogXCJHcmVlbmxhbmRcIixcbiAgR0Q6IFwiR3JlbmFkYVwiLFxuICBHUDogXCJHdWFkZWxvdXBlXCIsXG4gIEdVOiBcIkd1YW1cIixcbiAgR1Q6IFwiR3VhdGVtYWxhXCIsXG4gIEdHOiBcIkd1ZXJuc2V5XCIsXG4gIEdOOiBcIkd1aW5lYVwiLFxuICBHVzogXCJHdWluZWEtQmlzc2F1XCIsXG4gIEdZOiBcIkd1eWFuYVwiLFxuICBIVDogXCJIYWl0aVwiLFxuICBITTogXCJIZWFyZCBJc2xhbmQgJiBNY2RvbmFsZCBJc2xhbmRzXCIsXG4gIFZBOiBcIkhvbHkgU2VlIChWYXRpY2FuIENpdHkgU3RhdGUpXCIsXG4gIEhOOiBcIkhvbmR1cmFzXCIsXG4gIEhLOiBcIkhvbmcgS29uZ1wiLFxuICBIVTogXCJIdW5nYXJ5XCIsXG4gIElTOiBcIkljZWxhbmRcIixcbiAgSU46IFwiSW5kaWFcIixcbiAgSUQ6IFwiSW5kb25lc2lhXCIsXG4gIElSOiBcIklyYW4sIElzbGFtaWMgUmVwdWJsaWMgT2ZcIixcbiAgSVE6IFwiSXJhcVwiLFxuICBJRTogXCJJcmVsYW5kXCIsXG4gIElNOiBcIklzbGUgT2YgTWFuXCIsXG4gIElMOiBcIklzcmFlbFwiLFxuICBJVDogXCJJdGFseVwiLFxuICBKTTogXCJKYW1haWNhXCIsXG4gIEpQOiBcIkphcGFuXCIsXG4gIEpFOiBcIkplcnNleVwiLFxuICBKTzogXCJKb3JkYW5cIixcbiAgS1o6IFwiS2F6YWtoc3RhblwiLFxuICBLRTogXCJLZW55YVwiLFxuICBLSTogXCJLaXJpYmF0aVwiLFxuICBLUjogXCJLb3JlYVwiLFxuICBLVzogXCJLdXdhaXRcIixcbiAgS0c6IFwiS3lyZ3l6c3RhblwiLFxuICBMQTogXCJMYW8gUGVvcGxlJ3MgRGVtb2NyYXRpYyBSZXB1YmxpY1wiLFxuICBMVjogXCJMYXR2aWFcIixcbiAgTEI6IFwiTGViYW5vblwiLFxuICBMUzogXCJMZXNvdGhvXCIsXG4gIExSOiBcIkxpYmVyaWFcIixcbiAgTFk6IFwiTGlieWFuIEFyYWIgSmFtYWhpcml5YVwiLFxuICBMSTogXCJMaWVjaHRlbnN0ZWluXCIsXG4gIExUOiBcIkxpdGh1YW5pYVwiLFxuICBMVTogXCJMdXhlbWJvdXJnXCIsXG4gIE1POiBcIk1hY2FvXCIsXG4gIE1LOiBcIk1hY2Vkb25pYVwiLFxuICBNRzogXCJNYWRhZ2FzY2FyXCIsXG4gIE1XOiBcIk1hbGF3aVwiLFxuICBNWTogXCJNYWxheXNpYVwiLFxuICBNVjogXCJNYWxkaXZlc1wiLFxuICBNTDogXCJNYWxpXCIsXG4gIE1UOiBcIk1hbHRhXCIsXG4gIE1IOiBcIk1hcnNoYWxsIElzbGFuZHNcIixcbiAgTVE6IFwiTWFydGluaXF1ZVwiLFxuICBNUjogXCJNYXVyaXRhbmlhXCIsXG4gIE1VOiBcIk1hdXJpdGl1c1wiLFxuICBZVDogXCJNYXlvdHRlXCIsXG4gIE1YOiBcIk1leGljb1wiLFxuICBGTTogXCJNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIE9mXCIsXG4gIE1EOiBcIk1vbGRvdmFcIixcbiAgTUM6IFwiTW9uYWNvXCIsXG4gIE1OOiBcIk1vbmdvbGlhXCIsXG4gIE1FOiBcIk1vbnRlbmVncm9cIixcbiAgTVM6IFwiTW9udHNlcnJhdFwiLFxuICBNQTogXCJNb3JvY2NvXCIsXG4gIE1aOiBcIk1vemFtYmlxdWVcIixcbiAgTU06IFwiTXlhbm1hclwiLFxuICBOQTogXCJOYW1pYmlhXCIsXG4gIE5SOiBcIk5hdXJ1XCIsXG4gIE5QOiBcIk5lcGFsXCIsXG4gIE5MOiBcIk5ldGhlcmxhbmRzXCIsXG4gIEFOOiBcIk5ldGhlcmxhbmRzIEFudGlsbGVzXCIsXG4gIE5DOiBcIk5ldyBDYWxlZG9uaWFcIixcbiAgTlo6IFwiTmV3IFplYWxhbmRcIixcbiAgTkk6IFwiTmljYXJhZ3VhXCIsXG4gIE5FOiBcIk5pZ2VyXCIsXG4gIE5HOiBcIk5pZ2VyaWFcIixcbiAgTlU6IFwiTml1ZVwiLFxuICBORjogXCJOb3Jmb2xrIElzbGFuZFwiLFxuICBNUDogXCJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHNcIixcbiAgTk86IFwiTm9yd2F5XCIsXG4gIE9NOiBcIk9tYW5cIixcbiAgUEs6IFwiUGFraXN0YW5cIixcbiAgUFc6IFwiUGFsYXVcIixcbiAgUFM6IFwiUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZFwiLFxuICBQQTogXCJQYW5hbWFcIixcbiAgUEc6IFwiUGFwdWEgTmV3IEd1aW5lYVwiLFxuICBQWTogXCJQYXJhZ3VheVwiLFxuICBQRTogXCJQZXJ1XCIsXG4gIFBIOiBcIlBoaWxpcHBpbmVzXCIsXG4gIFBOOiBcIlBpdGNhaXJuXCIsXG4gIFBMOiBcIlBvbGFuZFwiLFxuICBQVDogXCJQb3J0dWdhbFwiLFxuICBQUjogXCJQdWVydG8gUmljb1wiLFxuICBRQTogXCJRYXRhclwiLFxuICBSRTogXCJSZXVuaW9uXCIsXG4gIFJPOiBcIlJvbWFuaWFcIixcbiAgUlU6IFwiUnVzc2lhbiBGZWRlcmF0aW9uXCIsXG4gIFJXOiBcIlJ3YW5kYVwiLFxuICBCTDogXCJTYWludCBCYXJ0aGVsZW15XCIsXG4gIFNIOiBcIlNhaW50IEhlbGVuYVwiLFxuICBLTjogXCJTYWludCBLaXR0cyBBbmQgTmV2aXNcIixcbiAgTEM6IFwiU2FpbnQgTHVjaWFcIixcbiAgTUY6IFwiU2FpbnQgTWFydGluXCIsXG4gIFBNOiBcIlNhaW50IFBpZXJyZSBBbmQgTWlxdWVsb25cIixcbiAgVkM6IFwiU2FpbnQgVmluY2VudCBBbmQgR3JlbmFkaW5lc1wiLFxuICBXUzogXCJTYW1vYVwiLFxuICBTTTogXCJTYW4gTWFyaW5vXCIsXG4gIFNUOiBcIlNhbyBUb21lIEFuZCBQcmluY2lwZVwiLFxuICBTQTogXCJTYXVkaSBBcmFiaWFcIixcbiAgU046IFwiU2VuZWdhbFwiLFxuICBSUzogXCJTZXJiaWFcIixcbiAgU0M6IFwiU2V5Y2hlbGxlc1wiLFxuICBTTDogXCJTaWVycmEgTGVvbmVcIixcbiAgU0c6IFwiU2luZ2Fwb3JlXCIsXG4gIFNLOiBcIlNsb3Zha2lhXCIsXG4gIFNJOiBcIlNsb3ZlbmlhXCIsXG4gIFNCOiBcIlNvbG9tb24gSXNsYW5kc1wiLFxuICBTTzogXCJTb21hbGlhXCIsXG4gIFpBOiBcIlNvdXRoIEFmcmljYVwiLFxuICBHUzogXCJTb3V0aCBHZW9yZ2lhIEFuZCBTYW5kd2ljaCBJc2wuXCIsXG4gIEVTOiBcIlNwYWluXCIsXG4gIExLOiBcIlNyaSBMYW5rYVwiLFxuICBTRDogXCJTdWRhblwiLFxuICBTUjogXCJTdXJpbmFtZVwiLFxuICBTSjogXCJTdmFsYmFyZCBBbmQgSmFuIE1heWVuXCIsXG4gIFNaOiBcIlN3YXppbGFuZFwiLFxuICBTRTogXCJTd2VkZW5cIixcbiAgQ0g6IFwiU3dpdHplcmxhbmRcIixcbiAgU1k6IFwiU3lyaWFuIEFyYWIgUmVwdWJsaWNcIixcbiAgVFc6IFwiVGFpd2FuXCIsXG4gIFRKOiBcIlRhamlraXN0YW5cIixcbiAgVFo6IFwiVGFuemFuaWFcIixcbiAgVEg6IFwiVGhhaWxhbmRcIixcbiAgVEw6IFwiVGltb3ItTGVzdGVcIixcbiAgVEc6IFwiVG9nb1wiLFxuICBUSzogXCJUb2tlbGF1XCIsXG4gIFRPOiBcIlRvbmdhXCIsXG4gIFRUOiBcIlRyaW5pZGFkIEFuZCBUb2JhZ29cIixcbiAgVE46IFwiVHVuaXNpYVwiLFxuICBUUjogXCJUdXJrZXlcIixcbiAgVE06IFwiVHVya21lbmlzdGFuXCIsXG4gIFRDOiBcIlR1cmtzIEFuZCBDYWljb3MgSXNsYW5kc1wiLFxuICBUVjogXCJUdXZhbHVcIixcbiAgVUc6IFwiVWdhbmRhXCIsXG4gIFVBOiBcIlVrcmFpbmVcIixcbiAgQUU6IFwiVW5pdGVkIEFyYWIgRW1pcmF0ZXNcIixcbiAgR0I6IFwiVW5pdGVkIEtpbmdkb21cIixcbiAgVVM6IFwiVW5pdGVkIFN0YXRlc1wiLFxuICBVTTogXCJVbml0ZWQgU3RhdGVzIE91dGx5aW5nIElzbGFuZHNcIixcbiAgVVk6IFwiVXJ1Z3VheVwiLFxuICBVWjogXCJVemJla2lzdGFuXCIsXG4gIFZVOiBcIlZhbnVhdHVcIixcbiAgVkU6IFwiVmVuZXp1ZWxhXCIsXG4gIFZOOiBcIlZpZXQgTmFtXCIsXG4gIFZHOiBcIlZpcmdpbiBJc2xhbmRzLCBCcml0aXNoXCIsXG4gIFZJOiBcIlZpcmdpbiBJc2xhbmRzLCBVLlMuXCIsXG4gIFdGOiBcIldhbGxpcyBBbmQgRnV0dW5hXCIsXG4gIEVIOiBcIldlc3Rlcm4gU2FoYXJhXCIsXG4gIFlFOiBcIlllbWVuXCIsXG4gIFpNOiBcIlphbWJpYVwiLFxuICBaVzogXCJaaW1iYWJ3ZVwiXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlckRvbWFpbnNCeVJvbGVzKHVzZXI6IGFueSwgcm9sZXM6IEFycmF5PG51bWJlcj4pIHtcbiAgY29uc3QgZUQgPSB1c2VyICYmIHVzZXIuZW5yb2xsZWREb21haW5zID8gdXNlci5lbnJvbGxlZERvbWFpbnMgOiBbXTtcbiAgY29uc3QgZG9tYWluczogYW55W10gPSBbXTtcbiAgbGV0IGkgPSAwO1xuICBmb3IgKGk7IGkgPCBlRC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGUgPSBlRFtpXTtcbiAgICBpZiAocm9sZXMuaW5jbHVkZXMoZS5yb2xlKSkge1xuICAgICAgZG9tYWlucy5wdXNoKChlIGFzIGFueSkuZG9tYWluKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvbWFpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VyQWRtaW5Eb21haW5zKHVzZXI6IGFueSkge1xuICByZXR1cm4gdXNlckRvbWFpbnNCeVJvbGVzKHVzZXIsIFtSb2xlLkFETUlOLCBSb2xlLk1BTkFHRVJdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvZHVjdFN1cHBsaWVyTU9EKHByb2R1Y3Q6IGFueSkge1xuICBjb25zdCBwcm9kdWN0VHlwZSA9IHByb2R1Y3QgJiYgcHJvZHVjdC5wcm9kdWN0VHlwZVxuICByZXR1cm4gcHJvZHVjdCAmJiBbXG4gICAgU3RyaW5nKFByb2R1Y3RUeXBlLlNVUFBMSUVSX01PRCksXG4gICAgU3RyaW5nKFByb2R1Y3RUeXBlLlNVUFBMSUVSX1JFU0VMTF9NT0QpXG4gIF0uaW5jbHVkZXMoU3RyaW5nKHByb2R1Y3RUeXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VzZXJSZWdpc3RlcmVkKHVzZXI6IGFueSkge1xuICBjb25zdCBpZCA9IHVzZXIgPyB1c2VyLmlkIDogbnVsbDtcbiAgcmV0dXJuIGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09IG51bGwgJiYgaWQgPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWdpc3RlcmVkQW5kSGFzU3RvcmUodXNlcjogYW55KSB7XG4gIGNvbnN0IGlkID0gdXNlciA/IHVzZXIuaWQgOiBudWxsO1xuICByZXR1cm4gaWQgIT09IHVuZGVmaW5lZCAmJiBpZCAhPT0gbnVsbCAmJiBpZCA+IDAgJiYgdXNlci5oYXNTdG9yZTtcbn1cblxuY29uc3Qgc3VwcG9ydGVkTnVtYmVyczogYW55ID0ge1xuICBBVTogJ0F1c3RyYWxpYSAoKzYxKScsXG4gIEFFOiAnVW5pdGVkIEFyYWIgRW1pcmF0ZXMgKCs5NzEpJyxcbiAgQkg6ICdCYWhyYWluICgrOTczKScsXG4gIENOOiAnQ2hpbmEgKCs4NiknLFxuICBESzogJ0Rlbm1hcmsgKCs0NSknLFxuICBFUzogJ1NwYWluICgrMzQpJyxcbiAgRlI6ICdGcmFuY2UgKCszMyknLFxuICBHQjogJ1VuaXRlZCBLaW5nZG9tICgrNDQpJyxcbiAgSEs6ICdIb25nIEtvbmcgKCs4NTIpJyxcbiAgSUQ6ICdJbmRvbmVzaWEgKCs2MiknLFxuICBJTjogJ0luZGlhICgrOTEpJyxcbiAgSVQ6ICdJdGFseSAoKzM5KScsXG4gIEtSOiAnU291dGggS29yZWEgKCs4MiknLFxuICBOQzogJ05ldyBDYWxlZG9uaWEgKCs2ODcpJyxcbiAgTlo6ICdOZXcgWmVhbGFuZCAoKzY0KScsXG4gIE9NOiAnT21hbiAoKzk2OCknLFxuICBQSDogJ1BoaWxpcHBpbmVzICgrNjMpJyxcbiAgUFQ6ICdQb3J0dWdhbCAoKzM1MSknLFxuICBRQTogJ1FhdGFyICgrOTc0KScsXG4gIFNFOiAnU3dlZGVuICgrNDYpJyxcbiAgU0c6ICdTaW5nYXBvcmUgKCs2NSknLFxuICBUSDogJ1RoYWlsYW5kICgrNjYpJyxcbiAgVVM6ICdVbml0ZWQgU3RhdGVzICgrMSknLFxuICBaQTogJ1NvdXRoIEFmcmljYSAoKzI3KScsXG59O1xuXG5leHBvcnQgY29uc3QgcGhvbmVPcHRpb25zID0gT2JqZWN0LmtleXMoc3VwcG9ydGVkTnVtYmVycykubWFwKChrZXkpID0+ICh7XG4gIHZhbHVlOiBrZXksXG4gIGxhYmVsOiBzdXBwb3J0ZWROdW1iZXJzW2tleV0sXG59KSk7XG5cbmV4cG9ydCBjb25zdCBhZGRyZXNzQ29tcG9uZW50c1NldHRpbmdzQmFja2VuZDogYW55ID0ge1xuICBhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzE6ICdzaG9ydE5hbWUnLFxuICBhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzI6ICdzaG9ydE5hbWUnLFxuICBjb3VudHJ5OiAnc2hvcnROYW1lJyxcbiAgZXN0YWJsaXNobWVudDogJ2xvbmdOYW1lJyxcbiAgZmxvb3I6ICdzaG9ydE5hbWUnLFxuICBsb2NhbGl0eTogJ2xvbmdOYW1lJyxcbiAgcG9zdGFsX2NvZGU6ICdzaG9ydE5hbWUnLFxuICBwcmVtaXNlOiAnc2hvcnROYW1lJyxcbiAgcm9vbTogJ2xvbmdOYW1lJyxcbiAgcm91dGU6ICdzaG9ydE5hbWUnLFxuICBzdHJlZXRfbnVtYmVyOiAnc2hvcnROYW1lJyxcbiAgc3VibG9jYWxpdHk6ICdsb25nTmFtZScsXG4gIHN1YnByZW1pc2U6ICdzaG9ydE5hbWUnLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdvb2dsZVBsYWNlc1Jlc3VsdEFzTmV3QWRkcmVzcyhwbGFjZURldGFpbHM6IGFueSkge1xuICBjb25zdCBhZGRyZXNzQ29tcG9uZW50cyA9IHBsYWNlRGV0YWlscz8uYWRkcmVzc0NvbXBvbmVudHMgfHwgW107XG4gIGNvbnN0IG5hbWUgPSBwbGFjZURldGFpbHM/Lm5hbWUgfHwgJyc7XG4gIGNvbnN0IGFkZHJlc3MgPSB7XG4gICAgY2l0eTogJycsXG4gICAgY291bnRyeTogJycsXG4gICAgbGluZU9uZTogbmFtZSA/IG5hbWUgOiAnJyxcbiAgICBsaW5lVHdvOiAnJyxcbiAgICBwb3N0Y29kZTogJycsXG4gICAgc3RhdGU6ICcnLFxuICB9O1xuXG4gIGlmIChhZGRyZXNzQ29tcG9uZW50cyAmJiBhZGRyZXNzQ29tcG9uZW50cy5sZW5ndGggPiAwKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRyZXNzQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYWRkckNvbXBvbmVudCA9IGFkZHJlc3NDb21wb25lbnRzW2ldO1xuICAgICAgY29uc3QgYWRkclR5cGVzID0gYWRkckNvbXBvbmVudC50eXBlcztcbiAgICAgIFxuICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVsZXZhbnQgdHlwZSB0aGF0IHdlIGhhdmUgYSBzZXR0aW5nIGZvclxuICAgICAgbGV0IGFkZHJUeXBlID0gbnVsbDtcbiAgICAgIGxldCBjb21wb25lbnRTZXR0aW5nID0gbnVsbDtcbiAgICAgIFxuICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGFkZHJUeXBlcykge1xuICAgICAgICBpZiAoYWRkcmVzc0NvbXBvbmVudHNTZXR0aW5nc0JhY2tlbmRbdHlwZV0pIHtcbiAgICAgICAgICBhZGRyVHlwZSA9IHR5cGU7XG4gICAgICAgICAgY29tcG9uZW50U2V0dGluZyA9IGFkZHJlc3NDb21wb25lbnRzU2V0dGluZ3NCYWNrZW5kW3R5cGVdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjb21wb25lbnRTZXR0aW5nICYmIGFkZHJUeXBlKSB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3NWYWwgPSBhZGRyQ29tcG9uZW50W2NvbXBvbmVudFNldHRpbmddO1xuICAgICAgICBzd2l0Y2ggKGFkZHJUeXBlKSB7XG4gICAgICAgICAgY2FzZSAnZXN0YWJsaXNobWVudCc6XG4gICAgICAgICAgY2FzZSAncm9vbSc6XG4gICAgICAgICAgY2FzZSAnZmxvb3InOlxuICAgICAgICAgIGNhc2UgJ3N0cmVldF9udW1iZXInOlxuICAgICAgICAgIGNhc2UgJ3ByZW1pc2UnOlxuICAgICAgICAgIGNhc2UgJ3N1YnByZW1pc2UnOlxuICAgICAgICAgIGNhc2UgJ3JvdXRlJzpcbiAgICAgICAgICAgIGNvbnN0IG9sZExpbmVPbmUgPSBhZGRyZXNzLmxpbmVPbmU7XG4gICAgICAgICAgICBhZGRyZXNzLmxpbmVPbmUgPSBvbGRMaW5lT25lLmluY2x1ZGVzKGFkZHJlc3NWYWwpID9cbiAgICAgICAgICAgICAgb2xkTGluZU9uZSA6IGAke29sZExpbmVPbmV9ICR7YWRkcmVzc1ZhbH1gLnRyaW0oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2xvY2FsaXR5JzpcbiAgICAgICAgICBjYXNlICdzdWJsb2NhbGl0eSc6XG4gICAgICAgICAgICBjb25zdCBvbGRDaXR5ID0gYWRkcmVzcy5jaXR5ID8gYCR7YWRkcmVzcy5jaXR5fSBgIDogJyc7XG4gICAgICAgICAgICBhZGRyZXNzLmNpdHkgPSAob2xkQ2l0eSArIGFkZHJlc3NWYWwpLnRyaW0oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMSc6XG5cbiAgICAgICAgICAgIGFkZHJlc3Muc3RhdGUgPSBhZGRyZXNzVmFsO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8yJzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2NvdW50cnknOlxuXG4gICAgICAgICAgICBhZGRyZXNzLmNvdW50cnkgPSBhZGRyZXNzVmFsO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncG9zdGFsX2NvZGUnOlxuICAgICAgICAgICAgYWRkcmVzcy5wb3N0Y29kZSA9IGFkZHJlc3NWYWw7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGVhbiB1cCBsaW5lIG9uZSBpZiBpdCdzIGVtcHR5IGFuZCB3ZSBoYXZlIGEgZm9ybWF0dGVkIGFkZHJlc3NcbiAgICBpZiAoIWFkZHJlc3MubGluZU9uZS50cmltKCkgJiYgcGxhY2VEZXRhaWxzPy5mb3JtYXR0ZWRBZGRyZXNzKSB7XG4gICAgICAvLyBUcnkgdG8gZXh0cmFjdCBzdHJlZXQgYWRkcmVzcyBmcm9tIGZvcm1hdHRlZCBhZGRyZXNzXG4gICAgICBjb25zdCBwYXJ0cyA9IHBsYWNlRGV0YWlscy5mb3JtYXR0ZWRBZGRyZXNzLnNwbGl0KCcsJyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgICBhZGRyZXNzLmxpbmVPbmUgPSBwYXJ0c1swXS50cmltKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZHJlc3M7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZHJlc3NJbk9uZUxpbmUoYWRkcmVzczogYW55KSB7XG4gIGNvbnN0IGEgPSBhZGRyZXNzID8gYWRkcmVzcyA6IHt9O1xuICBjb25zdCB7XG4gICAgY2l0eSxcbiAgICBjb3VudHJ5LFxuICAgIGxpbmVPbmUsXG4gICAgbGluZVR3byxcbiAgICBwb3N0Y29kZSxcbiAgICBzdGF0ZVxuICB9ID0gYTtcbiAgY29uc3QgbDEgPSBsaW5lT25lID8gYCR7bGluZU9uZX0gYCA6ICcnO1xuICBjb25zdCBsMiA9IGxpbmVUd28gPyBgJHtsaW5lVHdvfSBgIDogJyc7XG4gIGNvbnN0IGMgPSBjaXR5ID8gYCR7Y2l0eX0gYCA6ICcnO1xuICBjb25zdCBzID0gc3RhdGUgPyBgJHtzdGF0ZX0gYCA6ICcnO1xuICBjb25zdCBwID0gcG9zdGNvZGUgPyBgJHtwb3N0Y29kZX0gYCA6ICcnO1xuICBjb25zdCBjb3VudHJ5RnVsbCA9IGNvdW50cnkgPyBpc29Db3VudHJpZXNbY291bnRyeV0gOiAnJztcbiAgcmV0dXJuIGwxICsgbDIgKyBjICsgcyArIHAgKyBjb3VudHJ5RnVsbDtcbn1cblxuZXhwb3J0IGVudW0gRmllbGRUeXBlIHtcbiAgVEVYVF9JTlBVVCA9IDEsXG4gIFNFTEVDVCA9IDIsXG4gIEZJTEVfVVBMT0FEID0gMyxcbiAgVEVYVF9BUkVBID0gNCxcbiAgTlVNQkVSX0lOUFVUID0gNSxcbiAgQ0hFQ0tCT1ggPSA2LFxuICBSQURJTyA9IDcsXG4gIEZJRUxEX0lOU1RSVUNUSU9OUyA9IDgsXG4gIElNQUdFX1NFTEVDVCA9IDksXG4gIENPTE9VUl9QSUNLRVIgPSAxMCxcbiAgQ09MT1VSX1NFTEVDVCA9IDExLFxuICBUVVJOQVJPVU5EX1RJTUUgPSAxMixcbiAgQ09MT1VSX0VYVFJBQ1QgPSAxMyxcbiAgQVJFQSA9IDE0LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RhYmxlKGZpZWxkVHlwZTogbnVtYmVyKSB7XG4gIHJldHVybiBbXG4gICAgRmllbGRUeXBlLlNFTEVDVCxcbiAgICBGaWVsZFR5cGUuQ0hFQ0tCT1gsXG4gICAgRmllbGRUeXBlLlJBRElPLFxuICAgIEZpZWxkVHlwZS5JTUFHRV9TRUxFQ1QsXG4gICAgRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1QsXG4gICAgRmllbGRUeXBlLlRVUk5BUk9VTkRfVElNRSxcbiAgICBGaWVsZFR5cGUuQ09MT1VSX0VYVFJBQ1QsXG4gIF0uaW5jbHVkZXMoZmllbGRUeXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSW5zdHJ1Y3Rpb25zVHlwZShmaWVsZFR5cGU6IG51bWJlcikge1xuICByZXR1cm4gU3RyaW5nKEZpZWxkVHlwZS5GSUVMRF9JTlNUUlVDVElPTlMpID09PSBTdHJpbmcoZmllbGRUeXBlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvdW50cnlEZWZhdWx0RGljdCA9IChjdXJyZW5jeTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiB7Y3VycmVuY3k6IGN1cnJlbmN5fTtcbn07XG4gIFxuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZENvdW50cnlEZWZhdWx0czogYW55ID0ge1xuICBBRTogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgQVU6IGNvdW50cnlEZWZhdWx0RGljdCgnQVVEJyksXG4gIEJIOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxuICBDSDogY291bnRyeURlZmF1bHREaWN0KCdDTlknKSxcbiAgREs6IGNvdW50cnlEZWZhdWx0RGljdCgnRVVSJyksXG4gIEVTOiBjb3VudHJ5RGVmYXVsdERpY3QoJ0VVUicpLFxuICBGUjogY291bnRyeURlZmF1bHREaWN0KCdFVVInKSxcbiAgR0I6IGNvdW50cnlEZWZhdWx0RGljdCgnR0JQJyksXG4gIEhLOiBjb3VudHJ5RGVmYXVsdERpY3QoJ0hLRCcpLFxuICBJRDogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgSU46IGNvdW50cnlEZWZhdWx0RGljdCgnSU5SJyksXG4gIElUOiBjb3VudHJ5RGVmYXVsdERpY3QoJ0VVUicpLFxuICBLUjogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgTkM6IGNvdW50cnlEZWZhdWx0RGljdCgnVVNEJyksXG4gIE5aOiBjb3VudHJ5RGVmYXVsdERpY3QoJ05aRCcpLFxuICBPTTogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgUEg6IGNvdW50cnlEZWZhdWx0RGljdCgnVVNEJyksXG4gIFBUOiBjb3VudHJ5RGVmYXVsdERpY3QoJ0VVUicpLFxuICBRQTogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgU0U6IGNvdW50cnlEZWZhdWx0RGljdCgnVVNEJyksXG4gIFNHOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1NHRCcpLFxuICBUSDogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgVVM6IGNvdW50cnlEZWZhdWx0RGljdCgnVVNEJyksXG4gIFpBOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxufTtcbiAgXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkQ291bnRyeURlZmF1bHRzV2l0aERlZmF1bHQgPSAoY291bnRyeUNvZGU6IGFueSkgPT4ge1xuICBjb25zdCBkZWZhdWx0Q291bnRyeVZhbHVlcyA9IHN1cHBvcnRlZENvdW50cnlEZWZhdWx0c1tjb3VudHJ5Q29kZV07XG4gIHJldHVybiBkZWZhdWx0Q291bnRyeVZhbHVlcyA/IGRlZmF1bHRDb3VudHJ5VmFsdWVzIDogc3VwcG9ydGVkQ291bnRyeURlZmF1bHRzLkFVO1xufTtcblxuaW50ZXJmYWNlIENsaWVudEZpbGVBbmRPYmplY3RJZCB7XG4gIGZpbGU/OiBhbnk7XG4gIG9iamVjdElkPzogc3RyaW5nO1xuICBpZD86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gaXNGaWxlUmVmKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUuaWQgIT0gbnVsbCAmJiB2YWx1ZS5pZCAhPT0gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbkNsaWVudEZpbGVzKGNsaWVudEZpbGVzOiBDbGllbnRGaWxlQW5kT2JqZWN0SWRbXSA9IFtdKSB7XG4gIHJldHVybiBjbGllbnRGaWxlc1xuICAgIC5tYXAoKGNsaWVudEZpbGU6IENsaWVudEZpbGVBbmRPYmplY3RJZCkgPT4ge1xuICAgICAgaWYgKCFjbGllbnRGaWxlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgaWYgKGlzRmlsZVJlZihjbGllbnRGaWxlLmZpbGUpKSByZXR1cm4gY2xpZW50RmlsZS5maWxlO1xuICAgICAgaWYgKGlzRmlsZVJlZihjbGllbnRGaWxlKSkgcmV0dXJuIHsgaWQ6IGNsaWVudEZpbGUuaWQgfTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSlcbiAgICAuZmlsdGVyKChmaWxlKSA9PiBmaWxlICE9IG51bGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2xpZW50VG9Pd25EcmFmdChqb2I6IGFueSkge1xuICBjb25zdCB7IG93bkRyYWZ0cyB9ID0gam9iO1xuICBpZiAoam9iLm93bkRyYWZ0cyAmJiBqb2Iub3duRHJhZnRzLmxlbmd0aCkge1xuICAgIGpvYi5vd25EcmFmdHNbMF0uZGVzaWduZXIgPSBqb2IuY2xpZW50O1xuICB9XG4gIHJldHVybiBqb2I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VjY2Vzc1JlZGlyZWN0RXh0cmFzIHtcbiAgLyoqIEludm9pY2UgaWQgZm9yIHBhaWQgY2hlY2tvdXQsIG9yIGpvYiBpZCBmb3IgcXVvdGUgcmVxdWVzdHMuICovXG4gIGludm9pY2VJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7XG4gIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBEZWNvZGUvbm9ybWFsaXplIGEgcmVkaXJlY3QgYmFzZSBVUkwgZnJvbSBlbWJlZCBzY3JpcHQgcGFyYW1zLlxuICogSGFuZGxlcyBwZXJjZW50LWVuY29kaW5nLCBsZWdhY3kgJTI3IHdyYXBwZXJzLCBhbmQgdHJhaWxpbmcganVuay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlZGlyZWN0QmFzZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBjbGVhbiA9IFN0cmluZyh1cmwgfHwgJycpXG4gICAgLnRyaW0oKVxuICAgIC5yZXBsYWNlKC8lMjcvZywgJycpXG4gICAgLnJlcGxhY2UoLyU5MS9nLCAnJylcbiAgICAucmVwbGFjZSgvJTkyL2csICcnKVxuICAgIC5yZXBsYWNlKC8lOTMvZywgJycpXG4gICAgLnJlcGxhY2UoLyU5NC9nLCAnJylcbiAgICAucmVwbGFjZSgvXlsnXCJdK3xbJ1wiXSskL2csICcnKTtcblxuICAvLyBGdWxseSBkZWNvZGUgc28gZW5jb2RlZCBhYnNvbHV0ZSBVUkxzIGFyZSBub3QgdHJlYXRlZCBhcyByZWxhdGl2ZSBwYXRocy5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCEvJVswLTlBLUZhLWZdezJ9Ly50ZXN0KGNsZWFuKSkgYnJlYWs7XG4gICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KGNsZWFuKTtcbiAgICAgIGlmIChkZWNvZGVkID09PSBjbGVhbikgYnJlYWs7XG4gICAgICBjbGVhbiA9IGRlY29kZWQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnRFbWFpbChjbGllbnQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGVtYWlsID0gY2xpZW50Py5lbWFpbEFkZHJlc3Nlcz8uWzBdPy5lbWFpbEFkZHJlc3M7XG4gIHJldHVybiB0eXBlb2YgZW1haWwgPT09ICdzdHJpbmcnICYmIGVtYWlsLnRyaW0oKSA/IGVtYWlsLnRyaW0oKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBCdWlsZCB0aGUgcG9zdC1jaGVja291dC9xdW90ZSByZWRpcmVjdCBVUkwgd2l0aCBwcm9wZXIgcXVlcnkgc2VwYXJhdG9ycy5cbiAqIEFsd2F5cyBzYWZlIHdoZW4gdGhlIGJhc2UgVVJMIG9taXRzIGEgdHJhaWxpbmcgXCI/XCIgLyBcIiZcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3VjY2Vzc1JlZGlyZWN0VXJsKFxuICB1cmw6IHN0cmluZyxcbiAgcmVkaXJlY3RXaXRoVmFsdWU/OiBib29sZWFuLFxuICB2YWx1ZT86IGFueSxcbiAgZXh0cmFzOiBTdWNjZXNzUmVkaXJlY3RFeHRyYXMgPSB7fSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGJhc2UgPSBub3JtYWxpemVSZWRpcmVjdEJhc2VVcmwodXJsKTtcbiAgaWYgKCFiYXNlKSByZXR1cm4gYmFzZTtcblxuICBjb25zdCB0YXJnZXQgPSBuZXcgVVJMKFxuICAgIGJhc2UsXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cubG9jYXRpb24uaHJlZiA6ICdodHRwczovL3BsYWNlaG9sZGVyLmludmFsaWQvJyxcbiAgKTtcblxuICBpZiAoXG4gICAgcmVkaXJlY3RXaXRoVmFsdWUgJiZcbiAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICB2YWx1ZSAhPT0gJydcbiAgKSB7XG4gICAgdGFyZ2V0LnNlYXJjaFBhcmFtcy5zZXQoJ21lcmNoaVZhbHVlJywgU3RyaW5nKHZhbHVlKSk7XG4gIH1cblxuICBpZiAoZXh0cmFzLmludm9pY2VJZCAhPT0gdW5kZWZpbmVkICYmIGV4dHJhcy5pbnZvaWNlSWQgIT09IG51bGwgJiYgZXh0cmFzLmludm9pY2VJZCAhPT0gJycpIHtcbiAgICB0YXJnZXQuc2VhcmNoUGFyYW1zLnNldCgnaW52b2ljZUlkJywgU3RyaW5nKGV4dHJhcy5pbnZvaWNlSWQpKTtcbiAgfVxuXG4gIGlmIChleHRyYXMuZW1haWwpIHtcbiAgICB0YXJnZXQuc2VhcmNoUGFyYW1zLnNldCgnZW1haWwnLCBTdHJpbmcoZXh0cmFzLmVtYWlsKSk7XG4gIH1cblxuICAvLyBQcmVzZXJ2ZSBwcm90b2NvbC1yZWxhdGl2ZSByZWRpcmVjdCB0YXJnZXRzICgvL2V4YW1wbGUuY29tLy4uLikuXG4gIGlmIChiYXNlLnN0YXJ0c1dpdGgoJy8vJykpIHtcbiAgICByZXR1cm4gYC8vJHt0YXJnZXQuaG9zdH0ke3RhcmdldC5wYXRobmFtZX0ke3RhcmdldC5zZWFyY2h9JHt0YXJnZXQuaGFzaH1gO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldC50b1N0cmluZygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkaXJlY3RPblN1Y2Nlc3MoXG4gIHVybDogc3RyaW5nLFxuICByZWRpcmVjdFdpdGhWYWx1ZT86IGJvb2xlYW4sXG4gIHZhbHVlPzogYW55LFxuICBleHRyYXM6IFN1Y2Nlc3NSZWRpcmVjdEV4dHJhcyA9IHt9LFxuKSB7XG4gIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYnVpbGRTdWNjZXNzUmVkaXJlY3RVcmwoXG4gICAgdXJsLFxuICAgIHJlZGlyZWN0V2l0aFZhbHVlLFxuICAgIHZhbHVlLFxuICAgIGV4dHJhcyxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsV0FBVyxFQUFFQyxJQUFJLFFBQVEsU0FBUztBQUUzQyxPQUFPLElBQU1DLFlBQWlCLEdBQUc7RUFDL0JDLEVBQUUsRUFBRSxhQUFhO0VBQ2pCQyxFQUFFLEVBQUUs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
|