@appconda/sdk 1.0.639 → 1.0.643
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/dist/EmploidClient.d.ts +52 -0
- package/dist/EmploidClient.js +78 -0
- package/dist/client.d.ts +149 -0
- package/dist/client.js +408 -0
- package/dist/enums/api-service.d.ts +13 -0
- package/dist/enums/api-service.js +15 -0
- package/dist/enums/api.d.ts +5 -0
- package/dist/enums/api.js +7 -0
- package/dist/enums/auth-method.d.ts +9 -0
- package/dist/enums/auth-method.js +11 -0
- package/dist/enums/browser.d.ts +16 -0
- package/dist/enums/browser.js +18 -0
- package/dist/enums/compression.d.ts +5 -0
- package/dist/enums/compression.js +7 -0
- package/dist/enums/credit-card.d.ts +18 -0
- package/dist/enums/credit-card.js +20 -0
- package/dist/enums/database-usage-range.d.ts +5 -0
- package/dist/enums/database-usage-range.js +7 -0
- package/dist/enums/email-template-locale.d.ts +133 -0
- package/dist/enums/email-template-locale.js +135 -0
- package/dist/enums/email-template-type.d.ts +9 -0
- package/dist/enums/email-template-type.js +11 -0
- package/dist/enums/entities/EntityLimitType.d.ts +4 -0
- package/dist/enums/entities/EntityLimitType.js +6 -0
- package/dist/enums/entities/PropertyAttributeName.d.ts +27 -0
- package/dist/enums/entities/PropertyAttributeName.js +29 -0
- package/dist/enums/entities/PropertyCondition.d.ts +7 -0
- package/dist/enums/entities/PropertyCondition.js +10 -0
- package/dist/enums/entities/PropertyType.d.ts +12 -0
- package/dist/enums/entities/PropertyType.js +18 -0
- package/dist/enums/entities/PropertyValueType.d.ts +6 -0
- package/dist/enums/entities/PropertyValueType.js +8 -0
- package/dist/enums/entities/RowAccess.d.ts +2 -0
- package/dist/enums/entities/RowAccess.js +2 -0
- package/dist/enums/entities/ViewFilterCondition.d.ts +12 -0
- package/dist/enums/entities/ViewFilterCondition.js +14 -0
- package/dist/enums/execution-method.d.ts +8 -0
- package/dist/enums/execution-method.js +10 -0
- package/dist/enums/flag.d.ts +197 -0
- package/dist/enums/flag.js +199 -0
- package/dist/enums/function-usage-range.d.ts +5 -0
- package/dist/enums/function-usage-range.js +7 -0
- package/dist/enums/image-format.d.ts +7 -0
- package/dist/enums/image-format.js +9 -0
- package/dist/enums/image-gravity.d.ts +11 -0
- package/dist/enums/image-gravity.js +13 -0
- package/dist/enums/index-type.d.ts +5 -0
- package/dist/enums/index-type.js +7 -0
- package/dist/enums/messaging-provider-type.d.ts +5 -0
- package/dist/enums/messaging-provider-type.js +7 -0
- package/dist/enums/name.d.ts +14 -0
- package/dist/enums/name.js +16 -0
- package/dist/enums/o-auth-provider copy.d.ts +41 -0
- package/dist/enums/o-auth-provider copy.js +43 -0
- package/dist/enums/password-hash.d.ts +13 -0
- package/dist/enums/password-hash.js +15 -0
- package/dist/enums/platform-type.d.ts +17 -0
- package/dist/enums/platform-type.js +19 -0
- package/dist/enums/project-usage-range.d.ts +4 -0
- package/dist/enums/project-usage-range.js +6 -0
- package/dist/enums/region.d.ts +4 -0
- package/dist/enums/region.js +6 -0
- package/dist/enums/relation-mutate.d.ts +5 -0
- package/dist/enums/relation-mutate.js +7 -0
- package/dist/enums/relationship-type.d.ts +6 -0
- package/dist/enums/relationship-type.js +8 -0
- package/dist/enums/resource-type.d.ts +4 -0
- package/dist/enums/resource-type.js +6 -0
- package/dist/enums/runtime.d.ts +48 -0
- package/dist/enums/runtime.js +50 -0
- package/dist/enums/s-m-t-p-secure.d.ts +3 -0
- package/dist/enums/s-m-t-p-secure.js +5 -0
- package/dist/enums/shared/ApplicationLayout.d.ts +4 -0
- package/dist/enums/shared/ApplicationLayout.js +6 -0
- package/dist/enums/shared/Colors.d.ts +24 -0
- package/dist/enums/shared/Colors.js +26 -0
- package/dist/enums/shared/InputType.d.ts +6 -0
- package/dist/enums/shared/InputType.js +8 -0
- package/dist/enums/shared/Periodicity.d.ts +7 -0
- package/dist/enums/shared/Periodicity.js +9 -0
- package/dist/enums/shared/SvgIcon.d.ts +37 -0
- package/dist/enums/shared/SvgIcon.js +39 -0
- package/dist/enums/shared/Theme.d.ts +4 -0
- package/dist/enums/shared/Theme.js +6 -0
- package/dist/enums/sms-template-locale.d.ts +133 -0
- package/dist/enums/sms-template-locale.js +135 -0
- package/dist/enums/sms-template-type.d.ts +6 -0
- package/dist/enums/sms-template-type.js +8 -0
- package/dist/enums/smtp-encryption.d.ts +5 -0
- package/dist/enums/smtp-encryption.js +7 -0
- package/dist/enums/storage-usage-range.d.ts +5 -0
- package/dist/enums/storage-usage-range.js +7 -0
- package/dist/enums/subscriptions/PricingModel.d.ts +11 -0
- package/dist/enums/subscriptions/PricingModel.js +12 -0
- package/dist/enums/subscriptions/SubscriptionBillingPeriod.d.ts +10 -0
- package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +11 -0
- package/dist/enums/subscriptions/SubscriptionFeatureLimitType.d.ts +10 -0
- package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +13 -0
- package/dist/enums/subscriptions/SubscriptionPriceType.d.ts +7 -0
- package/dist/enums/subscriptions/SubscriptionPriceType.js +8 -0
- package/dist/enums/tenants/LinkedAccountStatus.d.ts +5 -0
- package/dist/enums/tenants/LinkedAccountStatus.js +7 -0
- package/dist/enums/tenants/TenantUserJoined.d.ts +6 -0
- package/dist/enums/tenants/TenantUserJoined.js +8 -0
- package/dist/enums/tenants/TenantUserStatus.d.ts +6 -0
- package/dist/enums/tenants/TenantUserStatus.js +8 -0
- package/dist/enums/tenants/TenantUserType.d.ts +5 -0
- package/dist/enums/tenants/TenantUserType.js +7 -0
- package/dist/enums/user-usage-range.d.ts +5 -0
- package/dist/enums/user-usage-range.js +7 -0
- package/dist/getAppcondaClient.d.ts +14 -0
- package/dist/getAppcondaClient.js +60 -0
- package/dist/getSDKForService.d.ts +22 -0
- package/dist/getSDKForService.js +72 -0
- package/dist/id.d.ts +20 -0
- package/dist/id.js +45 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +6 -0
- package/dist/lib/errors.d.ts +70 -0
- package/dist/lib/errors.js +79 -0
- package/dist/lib/index.d.ts +0 -0
- package/dist/lib/index.js +1 -0
- package/dist/lib/types.d.ts +5 -0
- package/dist/lib/types.js +2 -0
- package/dist/models.d.ts +3272 -0
- package/dist/models.js +2 -0
- package/dist/modules/account/enums/authentication-factor.d.ts +6 -0
- package/dist/modules/account/enums/authentication-factor.js +8 -0
- package/dist/modules/account/enums/authenticator-type.d.ts +3 -0
- package/dist/modules/account/enums/authenticator-type.js +5 -0
- package/dist/modules/account/enums/o-auth-provider.d.ts +41 -0
- package/dist/modules/account/enums/o-auth-provider.js +43 -0
- package/dist/modules/account/index.d.ts +2 -0
- package/dist/modules/account/index.js +3 -0
- package/dist/modules/account/schema.d.ts +7 -0
- package/dist/modules/account/schema.js +8 -0
- package/dist/modules/account/service.d.ts +530 -0
- package/dist/modules/account/service.js +1263 -0
- package/dist/modules/account/types.d.ts +411 -0
- package/dist/modules/account/types.js +2 -0
- package/dist/modules/accounv1/index.d.ts +3 -0
- package/dist/modules/accounv1/index.js +4 -0
- package/dist/modules/accounv1/schema.d.ts +43 -0
- package/dist/modules/accounv1/schema.js +44 -0
- package/dist/modules/accounv1/service.d.ts +14 -0
- package/dist/modules/accounv1/service.js +28 -0
- package/dist/modules/accounv1/types.d.ts +14 -0
- package/dist/modules/accounv1/types.js +2 -0
- package/dist/modules/acl/service.d.ts +26 -0
- package/dist/modules/acl/service.js +27 -0
- package/dist/modules/agent/index.d.ts +3 -0
- package/dist/modules/agent/index.js +4 -0
- package/dist/modules/agent/schema.d.ts +20 -0
- package/dist/modules/agent/schema.js +21 -0
- package/dist/modules/agent/service.d.ts +12 -0
- package/dist/modules/agent/service.js +22 -0
- package/dist/modules/agent/types.d.ts +11 -0
- package/dist/modules/agent/types.js +2 -0
- package/dist/modules/ai/index.d.ts +1 -0
- package/dist/modules/ai/index.js +2 -0
- package/dist/modules/ai/node/index.d.ts +1 -0
- package/dist/modules/ai/node/index.js +2 -0
- package/dist/modules/ai/node/service.d.ts +5 -0
- package/dist/modules/ai/node/service.js +12 -0
- package/dist/modules/bpm/index.d.ts +3 -0
- package/dist/modules/bpm/index.js +4 -0
- package/dist/modules/bpm/schema.d.ts +18 -0
- package/dist/modules/bpm/schema.js +19 -0
- package/dist/modules/bpm/service.d.ts +11 -0
- package/dist/modules/bpm/service.js +20 -0
- package/dist/modules/bpm/types.d.ts +9 -0
- package/dist/modules/bpm/types.js +2 -0
- package/dist/modules/builder/index.d.ts +3 -0
- package/dist/modules/builder/index.js +4 -0
- package/dist/modules/builder/schema.d.ts +92 -0
- package/dist/modules/builder/schema.js +93 -0
- package/dist/modules/builder/service.d.ts +25 -0
- package/dist/modules/builder/service.js +61 -0
- package/dist/modules/builder/types.d.ts +100 -0
- package/dist/modules/builder/types.js +2 -0
- package/dist/modules/datasource/index.d.ts +3 -0
- package/dist/modules/datasource/index.js +4 -0
- package/dist/modules/datasource/schema.d.ts +55 -0
- package/dist/modules/datasource/schema.js +56 -0
- package/dist/modules/datasource/service.d.ts +19 -0
- package/dist/modules/datasource/service.js +43 -0
- package/dist/modules/datasource/types.d.ts +28 -0
- package/dist/modules/datasource/types.js +2 -0
- package/dist/modules/emploid/index.d.ts +3 -0
- package/dist/modules/emploid/index.js +4 -0
- package/dist/modules/emploid/schema.d.ts +1831 -0
- package/dist/modules/emploid/schema.js +1710 -0
- package/dist/modules/emploid/service.d.ts +336 -0
- package/dist/modules/emploid/service.js +998 -0
- package/dist/modules/emploid/types.d.ts +660 -0
- package/dist/modules/emploid/types.js +2 -0
- package/dist/modules/google/index.d.ts +3 -0
- package/dist/modules/google/index.js +4 -0
- package/dist/modules/google/schema.d.ts +13 -0
- package/dist/modules/google/schema.js +14 -0
- package/dist/modules/google/service.d.ts +10 -0
- package/dist/modules/google/service.js +16 -0
- package/dist/modules/google/types.d.ts +12 -0
- package/dist/modules/google/types.js +2 -0
- package/dist/modules/hooks/index.d.ts +2 -0
- package/dist/modules/hooks/index.js +3 -0
- package/dist/modules/hooks/lib/Hooks.d.ts +32 -0
- package/dist/modules/hooks/lib/Hooks.js +64 -0
- package/dist/modules/hooks/lib/jobs/index.d.ts +2 -0
- package/dist/modules/hooks/lib/jobs/index.js +3 -0
- package/dist/modules/hooks/lib/jobs/job1.d.ts +1 -0
- package/dist/modules/hooks/lib/jobs/job1.js +16 -0
- package/dist/modules/hooks/lib/jobs/log-job.d.ts +1 -0
- package/dist/modules/hooks/lib/jobs/log-job.js +9 -0
- package/dist/modules/hooks/lib/wait.d.ts +8 -0
- package/dist/modules/hooks/lib/wait.js +13 -0
- package/dist/modules/index.d.ts +18 -0
- package/dist/modules/index.js +19 -0
- package/dist/modules/mail/index.d.ts +3 -0
- package/dist/modules/mail/index.js +4 -0
- package/dist/modules/mail/schema.d.ts +6 -0
- package/dist/modules/mail/schema.js +7 -0
- package/dist/modules/mail/service.d.ts +8 -0
- package/dist/modules/mail/service.js +10 -0
- package/dist/modules/mail/types.d.ts +6 -0
- package/dist/modules/mail/types.js +2 -0
- package/dist/modules/notion/index.d.ts +3 -0
- package/dist/modules/notion/index.js +4 -0
- package/dist/modules/notion/schema.d.ts +13 -0
- package/dist/modules/notion/schema.js +14 -0
- package/dist/modules/notion/service.d.ts +10 -0
- package/dist/modules/notion/service.js +19 -0
- package/dist/modules/notion/types.d.ts +11 -0
- package/dist/modules/notion/types.js +2 -0
- package/dist/modules/organization/index.d.ts +3 -0
- package/dist/modules/organization/index.js +4 -0
- package/dist/modules/organization/schema.d.ts +65 -0
- package/dist/modules/organization/schema.js +56 -0
- package/dist/modules/organization/service.d.ts +20 -0
- package/dist/modules/organization/service.js +46 -0
- package/dist/modules/organization/types.d.ts +55 -0
- package/dist/modules/organization/types.js +2 -0
- package/dist/modules/scheduled-job/index.d.ts +5 -0
- package/dist/modules/scheduled-job/index.js +6 -0
- package/dist/modules/scheduled-job/lib/Schedules.d.ts +34 -0
- package/dist/modules/scheduled-job/lib/Schedules.js +65 -0
- package/dist/modules/scheduled-job/lib/jobs/index.d.ts +1 -0
- package/dist/modules/scheduled-job/lib/jobs/index.js +2 -0
- package/dist/modules/scheduled-job/lib/jobs/job1.d.ts +1 -0
- package/dist/modules/scheduled-job/lib/jobs/job1.js +10 -0
- package/dist/modules/scheduled-job/lib/wait.d.ts +8 -0
- package/dist/modules/scheduled-job/lib/wait.js +13 -0
- package/dist/modules/scheduled-job/schema.d.ts +39 -0
- package/dist/modules/scheduled-job/schema.js +40 -0
- package/dist/modules/scheduled-job/service.d.ts +20 -0
- package/dist/modules/scheduled-job/service.js +46 -0
- package/dist/modules/scheduled-job/types.d.ts +66 -0
- package/dist/modules/scheduled-job/types.js +2 -0
- package/dist/modules/scrapflow/index.d.ts +2 -0
- package/dist/modules/scrapflow/index.js +3 -0
- package/dist/modules/scrapflow/schema.d.ts +105 -0
- package/dist/modules/scrapflow/schema.js +106 -0
- package/dist/modules/scrapflow/service.d.ts +24 -0
- package/dist/modules/scrapflow/service.js +61 -0
- package/dist/modules/scrapflow/types.d.ts +0 -0
- package/dist/modules/scrapflow/types.js +1 -0
- package/dist/modules/task/index.d.ts +3 -0
- package/dist/modules/task/index.js +4 -0
- package/dist/modules/task/schema.d.ts +355 -0
- package/dist/modules/task/schema.js +371 -0
- package/dist/modules/task/service.d.ts +69 -0
- package/dist/modules/task/service.js +193 -0
- package/dist/modules/task/types.d.ts +293 -0
- package/dist/modules/task/types.js +37 -0
- package/dist/modules/tenant/index.d.ts +2 -0
- package/dist/modules/tenant/index.js +3 -0
- package/dist/modules/tenant/schema.d.ts +26 -0
- package/dist/modules/tenant/schema.js +28 -0
- package/dist/modules/tenant/service.d.ts +14 -0
- package/dist/modules/tenant/service.js +28 -0
- package/dist/modules/tenant/tenant.d.ts +32 -0
- package/dist/modules/tenant/tenant.js +125 -0
- package/dist/modules/tenant/types.d.ts +20 -0
- package/dist/modules/tenant/types.js +2 -0
- package/dist/modules/waitlist/index.d.ts +3 -0
- package/dist/modules/waitlist/index.js +4 -0
- package/dist/modules/waitlist/schema.d.ts +17 -0
- package/dist/modules/waitlist/schema.js +18 -0
- package/dist/modules/waitlist/service.d.ts +13 -0
- package/dist/modules/waitlist/service.js +28 -0
- package/dist/modules/waitlist/types.d.ts +14 -0
- package/dist/modules/waitlist/types.js +2 -0
- package/dist/permission.d.ts +43 -0
- package/dist/permission.js +54 -0
- package/dist/query.d.ts +194 -0
- package/dist/query.js +204 -0
- package/dist/role.d.ts +70 -0
- package/dist/role.js +94 -0
- package/dist/service-client.d.ts +10 -0
- package/dist/service-client.js +31 -0
- package/dist/service.d.ts +11 -0
- package/dist/service.js +23 -0
- package/dist/services/applets.d.ts +9 -0
- package/dist/services/applets.js +40 -0
- package/dist/services/avatars.d.ts +115 -0
- package/dist/services/avatars.js +251 -0
- package/dist/services/chat-flow.d.ts +7 -0
- package/dist/services/chat-flow.js +26 -0
- package/dist/services/community.d.ts +19 -0
- package/dist/services/community.js +69 -0
- package/dist/services/configuration.d.ts +5 -0
- package/dist/services/configuration.js +11 -0
- package/dist/services/databases.d.ts +613 -0
- package/dist/services/databases.js +1736 -0
- package/dist/services/functions.d.ts +319 -0
- package/dist/services/functions.js +810 -0
- package/dist/services/graphql.d.ts +25 -0
- package/dist/services/graphql.js +57 -0
- package/dist/services/health.d.ts +231 -0
- package/dist/services/health.js +463 -0
- package/dist/services/locale.d.ts +80 -0
- package/dist/services/locale.js +144 -0
- package/dist/services/messaging.d.ts +685 -0
- package/dist/services/messaging.js +1920 -0
- package/dist/services/permissions.d.ts +20 -0
- package/dist/services/permissions.js +90 -0
- package/dist/services/pricing.d.ts +15 -0
- package/dist/services/pricing.js +21 -0
- package/dist/services/projects.d.ts +542 -0
- package/dist/services/projects.js +1526 -0
- package/dist/services/roles.d.ts +19 -0
- package/dist/services/roles.js +72 -0
- package/dist/services/schema.d.ts +17 -0
- package/dist/services/schema.js +48 -0
- package/dist/services/storage.d.ts +189 -0
- package/dist/services/storage.js +474 -0
- package/dist/services/subscription.d.ts +15 -0
- package/dist/services/subscription.js +30 -0
- package/dist/services/teams.d.ts +167 -0
- package/dist/services/teams.js +395 -0
- package/dist/services/tenant-subscription.d.ts +12 -0
- package/dist/services/tenant-subscription.js +52 -0
- package/dist/services/users.d.ts +499 -0
- package/dist/services/users.js +1283 -0
- package/package.json +1 -1
- package/src/modules/emploid/schema.ts +19 -0
- package/src/modules/emploid/service.ts +22 -1
- package/src/modules/emploid/types.ts +10 -0
|
@@ -0,0 +1,998 @@
|
|
|
1
|
+
import { ServiceClient } from "../../service-client";
|
|
2
|
+
export class EmploidService extends ServiceClient {
|
|
3
|
+
getServiceName() {
|
|
4
|
+
return 'com.appconda.service.emploid';
|
|
5
|
+
}
|
|
6
|
+
isHttpUrl(value) {
|
|
7
|
+
return /^https?:\/\//i.test(value);
|
|
8
|
+
}
|
|
9
|
+
normalizeStoragePath(pathLike) {
|
|
10
|
+
const normalized = String(pathLike || "").trim();
|
|
11
|
+
if (!normalized) {
|
|
12
|
+
return "";
|
|
13
|
+
}
|
|
14
|
+
if (this.isHttpUrl(normalized)) {
|
|
15
|
+
return normalized;
|
|
16
|
+
}
|
|
17
|
+
return normalized.startsWith("/") ? normalized : `/${normalized}`;
|
|
18
|
+
}
|
|
19
|
+
resolveEnvEndpoint() {
|
|
20
|
+
const envCandidates = [
|
|
21
|
+
typeof process !== "undefined" ? process?.env?.APPCONDA_ENDPOINT : "",
|
|
22
|
+
typeof process !== "undefined" ? process?.env?.NEXT_PUBLIC_APPCONDA_ENDPOINT : "",
|
|
23
|
+
typeof process !== "undefined" ? process?.env?._APP_APPCONDA_ENDPOINT : "",
|
|
24
|
+
];
|
|
25
|
+
for (const candidate of envCandidates) {
|
|
26
|
+
const normalized = String(candidate || "").trim().replace(/\/+$/, "");
|
|
27
|
+
if (this.isHttpUrl(normalized)) {
|
|
28
|
+
return normalized;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return "";
|
|
32
|
+
}
|
|
33
|
+
resolveStorageViewUrl(storagePath) {
|
|
34
|
+
const normalizedPath = this.normalizeStoragePath(storagePath);
|
|
35
|
+
if (!normalizedPath) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
if (this.isHttpUrl(normalizedPath)) {
|
|
39
|
+
return normalizedPath;
|
|
40
|
+
}
|
|
41
|
+
const endpoint = String(this.client.config.endpoint || "").trim().replace(/\/+$/, "");
|
|
42
|
+
if (this.isHttpUrl(endpoint)) {
|
|
43
|
+
return `${endpoint}${normalizedPath}`;
|
|
44
|
+
}
|
|
45
|
+
if (typeof window !== "undefined") {
|
|
46
|
+
const protocol = window?.location?.protocol || "";
|
|
47
|
+
if (protocol && protocol !== "file:") {
|
|
48
|
+
const origin = String(window?.location?.origin || "").replace(/\/+$/, "");
|
|
49
|
+
if (origin) {
|
|
50
|
+
const normalizedEndpoint = endpoint
|
|
51
|
+
? (endpoint.startsWith("/") ? endpoint : `/${endpoint}`)
|
|
52
|
+
: "";
|
|
53
|
+
return `${origin}${normalizedEndpoint}${normalizedPath}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const envEndpoint = this.resolveEnvEndpoint();
|
|
58
|
+
if (envEndpoint) {
|
|
59
|
+
return `${envEndpoint}${normalizedPath}`;
|
|
60
|
+
}
|
|
61
|
+
return normalizedPath;
|
|
62
|
+
}
|
|
63
|
+
async CreateEmploid(payload) {
|
|
64
|
+
return await this.actionCall('emploid', 'CreateEmploid', payload);
|
|
65
|
+
}
|
|
66
|
+
async UpdateEmploid(payload) {
|
|
67
|
+
return await this.actionCall('emploid', 'UpdateEmploid', payload);
|
|
68
|
+
}
|
|
69
|
+
async DeleteEmploid(payload) {
|
|
70
|
+
return await this.actionCall('emploid', 'DeleteEmploid', payload);
|
|
71
|
+
}
|
|
72
|
+
async PublishEmploid(payload) {
|
|
73
|
+
return await this.actionCall('emploid', 'PublishEmploid', payload);
|
|
74
|
+
}
|
|
75
|
+
async ListEmploids(payload) {
|
|
76
|
+
return await this.actionCall('emploid', 'ListEmploids', payload);
|
|
77
|
+
}
|
|
78
|
+
async ListEmploidsPaginated(payload) {
|
|
79
|
+
return await this.actionCall('emploid', 'ListEmploidsPaginated', payload);
|
|
80
|
+
}
|
|
81
|
+
async CreateInstruction(payload) {
|
|
82
|
+
return await this.actionCall('emploid', 'CreateInstruction', payload);
|
|
83
|
+
}
|
|
84
|
+
async ListInstructions(payload) {
|
|
85
|
+
return await this.actionCall('emploid', 'ListInstructions', payload);
|
|
86
|
+
}
|
|
87
|
+
async UpdateInstruction(payload) {
|
|
88
|
+
return await this.actionCall('emploid', 'UpdateInstruction', payload);
|
|
89
|
+
}
|
|
90
|
+
async DeleteInstruction(payload) {
|
|
91
|
+
return await this.actionCall('emploid', 'DeleteInstruction', payload);
|
|
92
|
+
}
|
|
93
|
+
async CreateConstraint(payload) {
|
|
94
|
+
return await this.actionCall('emploid', 'CreateConstraint', payload);
|
|
95
|
+
}
|
|
96
|
+
async ListConstraints(payload) {
|
|
97
|
+
return await this.actionCall('emploid', 'ListConstraints', payload);
|
|
98
|
+
}
|
|
99
|
+
async UpdateConstraint(payload) {
|
|
100
|
+
return await this.actionCall('emploid', 'UpdateConstraint', payload);
|
|
101
|
+
}
|
|
102
|
+
async DeleteConstraint(payload) {
|
|
103
|
+
return await this.actionCall('emploid', 'DeleteConstraint', payload);
|
|
104
|
+
}
|
|
105
|
+
async ListScopes(payload) {
|
|
106
|
+
return await this.actionCall('emploid', 'ListScopes', payload);
|
|
107
|
+
}
|
|
108
|
+
async GetScopeByType(payload) {
|
|
109
|
+
return await this.actionCall('emploid', 'GetScopeByType', payload);
|
|
110
|
+
}
|
|
111
|
+
async CreateScope(payload) {
|
|
112
|
+
return await this.actionCall('emploid', 'CreateScope', payload);
|
|
113
|
+
}
|
|
114
|
+
async UpdateScope(payload) {
|
|
115
|
+
return await this.actionCall('emploid', 'UpdateScope', payload);
|
|
116
|
+
}
|
|
117
|
+
async DeleteScope(payload) {
|
|
118
|
+
return await this.actionCall('emploid', 'DeleteScope', payload);
|
|
119
|
+
}
|
|
120
|
+
async UploadScopeFile(payload) {
|
|
121
|
+
const result = await this.actionCall("scope", "UploadFile", payload);
|
|
122
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
123
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
124
|
+
return {
|
|
125
|
+
...result,
|
|
126
|
+
fileId: String(result?.fileId || result?.id || payload.attachmentId || ""),
|
|
127
|
+
path: storagePath,
|
|
128
|
+
filePath: resolvedUrl || storagePath,
|
|
129
|
+
url: resolvedUrl || storagePath,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
async ResolveScopeFileView(payload) {
|
|
133
|
+
const result = await this.actionCall("scope", "ResolveScopeFileView", payload);
|
|
134
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
135
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
136
|
+
return {
|
|
137
|
+
...result,
|
|
138
|
+
fileId: String(result?.fileId || payload.fileId || ""),
|
|
139
|
+
path: storagePath,
|
|
140
|
+
filePath: resolvedUrl || storagePath,
|
|
141
|
+
url: resolvedUrl || storagePath,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
async CreateOccupation(payload) {
|
|
145
|
+
return await this.actionCall('occupation', 'CreateOccupation', payload);
|
|
146
|
+
}
|
|
147
|
+
async UpdateOccupation(payload) {
|
|
148
|
+
return await this.actionCall('occupation', 'UpdateOccupation', payload);
|
|
149
|
+
}
|
|
150
|
+
async DeleteOccupation(payload) {
|
|
151
|
+
return await this.actionCall('occupation', 'DeleteOccupation', payload);
|
|
152
|
+
}
|
|
153
|
+
async ListOccupations(payload) {
|
|
154
|
+
return await this.actionCall('occupation', 'ListOccupations', payload);
|
|
155
|
+
}
|
|
156
|
+
async PublishDomain(payload) {
|
|
157
|
+
return await this.actionCall('occupation', 'PublishDomain', payload);
|
|
158
|
+
}
|
|
159
|
+
async CreateDomainTopic(payload) {
|
|
160
|
+
return await this.actionCall('occupation', 'CreateDomainTopic', payload);
|
|
161
|
+
}
|
|
162
|
+
async UpdateDomainTopic(payload) {
|
|
163
|
+
return await this.actionCall('occupation', 'UpdateDomainTopic', payload);
|
|
164
|
+
}
|
|
165
|
+
async DeleteDomainTopic(payload) {
|
|
166
|
+
return await this.actionCall('occupation', 'DeleteDomainTopic', payload);
|
|
167
|
+
}
|
|
168
|
+
async ListDomainTopics(payload) {
|
|
169
|
+
return await this.actionCall('occupation', 'ListDomainTopics', payload);
|
|
170
|
+
}
|
|
171
|
+
async CreateJobDefinition(payload) {
|
|
172
|
+
return await this.actionCall('emploid', 'CreateJobDefinition', payload);
|
|
173
|
+
}
|
|
174
|
+
async UpdateJobDefinition(payload) {
|
|
175
|
+
return await this.actionCall('emploid', 'UpdateJobDefinition', payload);
|
|
176
|
+
}
|
|
177
|
+
async DeleteJobDefinition(payload) {
|
|
178
|
+
return await this.actionCall('emploid', 'DeleteJobDefinition', payload);
|
|
179
|
+
}
|
|
180
|
+
async ListJobDefinitions(payload) {
|
|
181
|
+
return await this.actionCall('emploid', 'ListJobDefinitions', payload);
|
|
182
|
+
}
|
|
183
|
+
async CreateCompetency(payload) {
|
|
184
|
+
return await this.actionCall('emploid', 'CreateCompetency', payload);
|
|
185
|
+
}
|
|
186
|
+
async UpdateCompetency(payload) {
|
|
187
|
+
return await this.actionCall('emploid', 'UpdateCompetency', payload);
|
|
188
|
+
}
|
|
189
|
+
async DeleteCompetency(payload) {
|
|
190
|
+
return await this.actionCall('emploid', 'DeleteCompetency', payload);
|
|
191
|
+
}
|
|
192
|
+
async ListCompetencies(payload) {
|
|
193
|
+
return await this.actionCall('emploid', 'ListCompetencies', payload);
|
|
194
|
+
}
|
|
195
|
+
async CreateTaskTemplate(payload) {
|
|
196
|
+
return await this.actionCall('emploid', 'CreateTaskTemplate', payload);
|
|
197
|
+
}
|
|
198
|
+
async UpdateTaskTemplate(payload) {
|
|
199
|
+
return await this.actionCall('emploid', 'UpdateTaskTemplate', payload);
|
|
200
|
+
}
|
|
201
|
+
async DeleteTaskTemplate(payload) {
|
|
202
|
+
return await this.actionCall('emploid', 'DeleteTaskTemplate', payload);
|
|
203
|
+
}
|
|
204
|
+
async ListTaskTemplates(payload) {
|
|
205
|
+
return await this.actionCall('emploid', 'ListTaskTemplates', payload);
|
|
206
|
+
}
|
|
207
|
+
async CreateAgentFlow(payload) {
|
|
208
|
+
return await this.actionCall('agent-flow', 'CreateAgentFlow', payload);
|
|
209
|
+
}
|
|
210
|
+
async DeleteAgentFlow(payload) {
|
|
211
|
+
return await this.actionCall('agent-flow', 'DeleteAgentFlow', payload);
|
|
212
|
+
}
|
|
213
|
+
async DuplicateAgentFlow(payload) {
|
|
214
|
+
return await this.actionCall('agent-flow', 'DuplicateAgentFlow', payload);
|
|
215
|
+
}
|
|
216
|
+
async ChangeAgentflowProject(payload) {
|
|
217
|
+
return await this.actionCall('agent-flow', 'ChangeAgentflowProject', payload);
|
|
218
|
+
}
|
|
219
|
+
async UpdateAgentFlow(payload) {
|
|
220
|
+
return await this.actionCall('agent-flow', 'UpdateAgentFlow', payload);
|
|
221
|
+
}
|
|
222
|
+
async ListAgentFlows(payload) {
|
|
223
|
+
return await this.actionCall('agent-flow', 'ListAgentFlows', payload);
|
|
224
|
+
}
|
|
225
|
+
async CreateAgentFlowFolder(payload) {
|
|
226
|
+
return await this.actionCall('agent-flow', 'CreateAgentFlowFolder', payload);
|
|
227
|
+
}
|
|
228
|
+
async UpdateAgentFlowFolder(payload) {
|
|
229
|
+
return await this.actionCall('agent-flow', 'UpdateAgentFlowFolder', payload);
|
|
230
|
+
}
|
|
231
|
+
async DeleteAgentFlowFolder(payload) {
|
|
232
|
+
return await this.actionCall('agent-flow', 'DeleteAgentFlowFolder', payload);
|
|
233
|
+
}
|
|
234
|
+
async ListAgentFlowFolders(payload) {
|
|
235
|
+
return await this.actionCall('agent-flow', 'ListAgentFlowFolders', payload);
|
|
236
|
+
}
|
|
237
|
+
async GetPrivateAgentFlowFolder(payload) {
|
|
238
|
+
return await this.actionCall('agent-flow', 'GetPrivateAgentFlowFolder', payload);
|
|
239
|
+
}
|
|
240
|
+
async ListDriveItems(payload) {
|
|
241
|
+
return await this.actionCall("drive", "ListDriveItems", payload);
|
|
242
|
+
}
|
|
243
|
+
async ListDriveTree(payload) {
|
|
244
|
+
return await this.actionCall("drive", "ListDriveTree", payload);
|
|
245
|
+
}
|
|
246
|
+
async SearchDriveItems(payload) {
|
|
247
|
+
return await this.actionCall("drive", "SearchDriveItems", payload);
|
|
248
|
+
}
|
|
249
|
+
async CreateDriveFolder(payload) {
|
|
250
|
+
return await this.actionCall("drive", "CreateDriveFolder", payload);
|
|
251
|
+
}
|
|
252
|
+
async PrepareDriveUpload(payload) {
|
|
253
|
+
return await this.actionCall("drive", "PrepareDriveUpload", payload);
|
|
254
|
+
}
|
|
255
|
+
async RenameDriveItem(payload) {
|
|
256
|
+
return await this.actionCall("drive", "RenameDriveItem", payload);
|
|
257
|
+
}
|
|
258
|
+
async MoveDriveItem(payload) {
|
|
259
|
+
return await this.actionCall("drive", "MoveDriveItem", payload);
|
|
260
|
+
}
|
|
261
|
+
async GetDriveDeleteImpact(payload) {
|
|
262
|
+
return await this.actionCall("drive", "GetDriveDeleteImpact", payload);
|
|
263
|
+
}
|
|
264
|
+
async DeleteDriveItem(payload) {
|
|
265
|
+
return await this.actionCall("drive", "DeleteDriveItem", payload);
|
|
266
|
+
}
|
|
267
|
+
async ResolveDriveDownload(payload) {
|
|
268
|
+
const result = await this.actionCall("drive", "ResolveDriveDownload", payload);
|
|
269
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
270
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
271
|
+
return {
|
|
272
|
+
...result,
|
|
273
|
+
fileId: String(result?.itemId || payload.itemId || ""),
|
|
274
|
+
path: storagePath,
|
|
275
|
+
filePath: resolvedUrl || storagePath,
|
|
276
|
+
url: resolvedUrl || storagePath,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
async ListDriveRoots(payload) {
|
|
280
|
+
return await this.actionCall("drive", "ListDriveRoots", payload);
|
|
281
|
+
}
|
|
282
|
+
async EnsureDriveProviderCredential(payload) {
|
|
283
|
+
return await this.actionCall("drive", "EnsureDriveProviderCredential", payload);
|
|
284
|
+
}
|
|
285
|
+
async ListDriveProviderFolders(payload) {
|
|
286
|
+
return await this.actionCall("drive", "ListDriveProviderFolders", payload);
|
|
287
|
+
}
|
|
288
|
+
async CreateDriveRoot(payload) {
|
|
289
|
+
return await this.actionCall("drive", "CreateDriveRoot", payload);
|
|
290
|
+
}
|
|
291
|
+
async DeleteDriveRoot(payload) {
|
|
292
|
+
return await this.actionCall("drive", "DeleteDriveRoot", payload);
|
|
293
|
+
}
|
|
294
|
+
async ListDriveRootItems(payload) {
|
|
295
|
+
return await this.actionCall("drive", "ListDriveRootItems", payload);
|
|
296
|
+
}
|
|
297
|
+
async ListDriveRootTree(payload) {
|
|
298
|
+
return await this.actionCall("drive", "ListDriveRootTree", payload);
|
|
299
|
+
}
|
|
300
|
+
async SearchDriveRootItems(payload) {
|
|
301
|
+
return await this.actionCall("drive", "SearchDriveRootItems", payload);
|
|
302
|
+
}
|
|
303
|
+
async CreateDriveRootFolder(payload) {
|
|
304
|
+
return await this.actionCall("drive", "CreateDriveRootFolder", payload);
|
|
305
|
+
}
|
|
306
|
+
async UploadDriveRootFiles(payload) {
|
|
307
|
+
return await this.actionCall("drive", "UploadDriveRootFiles", payload);
|
|
308
|
+
}
|
|
309
|
+
async RenameDriveRootItem(payload) {
|
|
310
|
+
return await this.actionCall("drive", "RenameDriveRootItem", payload);
|
|
311
|
+
}
|
|
312
|
+
async MoveDriveRootItem(payload) {
|
|
313
|
+
return await this.actionCall("drive", "MoveDriveRootItem", payload);
|
|
314
|
+
}
|
|
315
|
+
async GetDriveRootDeleteImpact(payload) {
|
|
316
|
+
return await this.actionCall("drive", "GetDriveRootDeleteImpact", payload);
|
|
317
|
+
}
|
|
318
|
+
async DeleteDriveRootItem(payload) {
|
|
319
|
+
return await this.actionCall("drive", "DeleteDriveRootItem", payload);
|
|
320
|
+
}
|
|
321
|
+
async ReadDriveRootFileContent(payload) {
|
|
322
|
+
return await this.actionCall("drive", "ReadDriveRootFileContent", payload);
|
|
323
|
+
}
|
|
324
|
+
async ResolveDriveRootDownload(payload) {
|
|
325
|
+
const result = await this.actionCall("drive", "ResolveDriveRootDownload", payload);
|
|
326
|
+
const rawUrl = String(result?.url || "");
|
|
327
|
+
const normalizedUrl = rawUrl.startsWith("data:") ? rawUrl : this.normalizeStoragePath(rawUrl);
|
|
328
|
+
const resolvedUrl = rawUrl.startsWith("data:")
|
|
329
|
+
? rawUrl
|
|
330
|
+
: (this.resolveStorageViewUrl(normalizedUrl) || normalizedUrl);
|
|
331
|
+
return {
|
|
332
|
+
...result,
|
|
333
|
+
fileId: String(result?.itemId || payload.itemId || ""),
|
|
334
|
+
path: normalizedUrl,
|
|
335
|
+
filePath: resolvedUrl || normalizedUrl,
|
|
336
|
+
url: resolvedUrl || normalizedUrl,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
async CreateExtension(payload) {
|
|
340
|
+
return await this.actionCall('extension', 'CreateExtension', payload);
|
|
341
|
+
}
|
|
342
|
+
async UpdateExtension(payload) {
|
|
343
|
+
return await this.actionCall('extension', 'UpdateExtension', payload);
|
|
344
|
+
}
|
|
345
|
+
async DeleteExtension(payload) {
|
|
346
|
+
return await this.actionCall('extension', 'DeleteExtension', payload);
|
|
347
|
+
}
|
|
348
|
+
async ListExtensions(payload) {
|
|
349
|
+
return await this.actionCall('extension', 'ListExtensions', payload);
|
|
350
|
+
}
|
|
351
|
+
// -----------------Assistant-----------------
|
|
352
|
+
async CreateAssistant(payload) {
|
|
353
|
+
return await this.actionCall('assistant', 'CreateAssistant', payload);
|
|
354
|
+
}
|
|
355
|
+
async UpdateAssistant(payload) {
|
|
356
|
+
return await this.actionCall('assistant', 'UpdateAssistant', payload);
|
|
357
|
+
}
|
|
358
|
+
async DeleteAssistant(payload) {
|
|
359
|
+
return await this.actionCall('assistant', 'DeleteAssistant', payload);
|
|
360
|
+
}
|
|
361
|
+
async ListAssistants(payload) {
|
|
362
|
+
return await this.actionCall('assistant', 'ListAssistants', payload);
|
|
363
|
+
}
|
|
364
|
+
async CreateAssistantInstruction(payload) {
|
|
365
|
+
return await this.actionCall('assistant', 'CreateAssistantInstruction', payload);
|
|
366
|
+
}
|
|
367
|
+
async ListAssistantInstructions(payload) {
|
|
368
|
+
return await this.actionCall('assistant', 'ListAssistantInstructions', payload);
|
|
369
|
+
}
|
|
370
|
+
async CreateAssistantConstraint(payload) {
|
|
371
|
+
return await this.actionCall('assistant', 'CreateAssistantConstraint', payload);
|
|
372
|
+
}
|
|
373
|
+
async ListAssistantConstraints(payload) {
|
|
374
|
+
return await this.actionCall('assistant', 'ListAssistantConstraints', payload);
|
|
375
|
+
}
|
|
376
|
+
async CreateAssistantDatasource(payload) {
|
|
377
|
+
return await this.actionCall('assistant', 'CreateAssistantDatasource', payload);
|
|
378
|
+
}
|
|
379
|
+
async UpdateAssistantDatasource(payload) {
|
|
380
|
+
return await this.actionCall('assistant', 'UpdateAssistantDatasource', payload);
|
|
381
|
+
}
|
|
382
|
+
async DeleteAssistantDatasource(payload) {
|
|
383
|
+
return await this.actionCall('assistant', 'DeleteAssistantDatasource', payload);
|
|
384
|
+
}
|
|
385
|
+
async ListAssistantDatasources(payload) {
|
|
386
|
+
return await this.actionCall('assistant', 'ListAssistantDatasources', payload);
|
|
387
|
+
}
|
|
388
|
+
async CreateAssistantSkill(payload) {
|
|
389
|
+
return await this.actionCall('assistant', 'CreateAssistantSkill', payload);
|
|
390
|
+
}
|
|
391
|
+
async UpdateAssistantSkill(payload) {
|
|
392
|
+
return await this.actionCall('assistant', 'UpdateAssistantSkill', payload);
|
|
393
|
+
}
|
|
394
|
+
async DeleteAssistantSkill(payload) {
|
|
395
|
+
return await this.actionCall('assistant', 'DeleteAssistantSkill', payload);
|
|
396
|
+
}
|
|
397
|
+
async ListAssistantSkills(payload) {
|
|
398
|
+
return await this.actionCall('assistant', 'ListAssistantSkills', payload);
|
|
399
|
+
}
|
|
400
|
+
async CreateAssistantChannel(payload) {
|
|
401
|
+
return await this.actionCall('assistant', 'CreateAssistantChannel', payload);
|
|
402
|
+
}
|
|
403
|
+
async UpdateAssistantChannel(payload) {
|
|
404
|
+
return await this.actionCall('assistant', 'UpdateAssistantChannel', payload);
|
|
405
|
+
}
|
|
406
|
+
async DeleteAssistantChannel(payload) {
|
|
407
|
+
return await this.actionCall('assistant', 'DeleteAssistantChannel', payload);
|
|
408
|
+
}
|
|
409
|
+
async ListAssistantChannels(payload) {
|
|
410
|
+
return await this.actionCall('assistant', 'ListAssistantChannels', payload);
|
|
411
|
+
}
|
|
412
|
+
//---------------------------------------
|
|
413
|
+
//-----------------Datasources--------------
|
|
414
|
+
async CreateDatasource(payload) {
|
|
415
|
+
return await this.actionCall('data-source', 'CreateDatasource', payload);
|
|
416
|
+
}
|
|
417
|
+
async UpdateDatasource(payload) {
|
|
418
|
+
return await this.actionCall('data-source', 'UpdateDatasource', payload);
|
|
419
|
+
}
|
|
420
|
+
async DeleteDatasource(payload) {
|
|
421
|
+
return await this.actionCall('data-ource', 'DeleteDatasource', payload);
|
|
422
|
+
}
|
|
423
|
+
async ListDatasources(payload) {
|
|
424
|
+
return await this.actionCall('data-source', 'ListDatasources', payload);
|
|
425
|
+
}
|
|
426
|
+
//-----------------------------------------
|
|
427
|
+
//-----------------------Skills----------------
|
|
428
|
+
async CreateSkill(payload) {
|
|
429
|
+
return await this.actionCall('skill', 'CreateSkill', payload);
|
|
430
|
+
}
|
|
431
|
+
async ListSkills(payload) {
|
|
432
|
+
return await this.actionCall('skill', 'ListSkills', payload);
|
|
433
|
+
}
|
|
434
|
+
async UpdateSkill(payload) {
|
|
435
|
+
return await this.actionCall('skill', 'UpdateSkill', payload);
|
|
436
|
+
}
|
|
437
|
+
async DeleteSkill(payload) {
|
|
438
|
+
return await this.actionCall('skill', 'DeleteSkill', payload);
|
|
439
|
+
}
|
|
440
|
+
//--------------------------------------------
|
|
441
|
+
//-----------------------Channels----------------
|
|
442
|
+
async CreateChannel(payload) {
|
|
443
|
+
return await this.actionCall('channel', 'CreateChannel', payload);
|
|
444
|
+
}
|
|
445
|
+
async ListChannels(payload) {
|
|
446
|
+
return await this.actionCall('channel', 'ListChannels', payload);
|
|
447
|
+
}
|
|
448
|
+
async UpdateChannel(payload) {
|
|
449
|
+
return await this.actionCall('channel', 'UpdateChannel', payload);
|
|
450
|
+
}
|
|
451
|
+
async DeleteChannel(payload) {
|
|
452
|
+
return await this.actionCall('channel', 'DeleteChannel', payload);
|
|
453
|
+
}
|
|
454
|
+
//--------------------------------------------
|
|
455
|
+
//-----------------------Knowledge----------------
|
|
456
|
+
async CreateKnowledge(payload) {
|
|
457
|
+
return await this.actionCall('knowledge', 'CreateKnowledge', payload);
|
|
458
|
+
}
|
|
459
|
+
async ListKnowledges(payload) {
|
|
460
|
+
return await this.actionCall('knowledge', 'ListKnowledges', payload);
|
|
461
|
+
}
|
|
462
|
+
async UpdateKnowledge(payload) {
|
|
463
|
+
return await this.actionCall('knowledge', 'UpdateKnowledge', payload);
|
|
464
|
+
}
|
|
465
|
+
async DeleteKnowledge(payload) {
|
|
466
|
+
return await this.actionCall('knowledge', 'DeleteKnowledge', payload);
|
|
467
|
+
}
|
|
468
|
+
//----------------WORKER----------------------------
|
|
469
|
+
async CreateWorker(payload) {
|
|
470
|
+
return await this.actionCall('worker', 'CreateWorker', payload);
|
|
471
|
+
}
|
|
472
|
+
async UpdateWorker(payload) {
|
|
473
|
+
return await this.actionCall('worker', 'UpdateWorker', payload);
|
|
474
|
+
}
|
|
475
|
+
async DeleteWorker(payload) {
|
|
476
|
+
return await this.actionCall('worker', 'DeleteWorker', payload);
|
|
477
|
+
}
|
|
478
|
+
async PublishWorkerToMarketStore(payload) {
|
|
479
|
+
return await this.actionCall('market-store', 'PublishWorkerToMarketStore', payload);
|
|
480
|
+
}
|
|
481
|
+
async ListWorkers(payload) {
|
|
482
|
+
return await this.actionCall('worker', 'ListWorkers', payload);
|
|
483
|
+
}
|
|
484
|
+
async CreateWorkerTopic(payload) {
|
|
485
|
+
return await this.actionCall('worker', 'CreateWorkerTopic', payload);
|
|
486
|
+
}
|
|
487
|
+
async UpdateWorkerTopic(payload) {
|
|
488
|
+
return await this.actionCall('worker', 'UpdateWorkerTopic', payload);
|
|
489
|
+
}
|
|
490
|
+
async DeleteWorkerTopic(payload) {
|
|
491
|
+
return await this.actionCall('worker', 'DeleteWorkerTopic', payload);
|
|
492
|
+
}
|
|
493
|
+
async ListWorkerTopics(payload) {
|
|
494
|
+
return await this.actionCall('worker', 'ListWorkerTopics', payload);
|
|
495
|
+
}
|
|
496
|
+
async ListMarketStoreItems(payload) {
|
|
497
|
+
return await this.actionCall('market-store', 'ListMarketStoreItems', payload);
|
|
498
|
+
}
|
|
499
|
+
async GetMarketStoreItem(payload) {
|
|
500
|
+
return await this.actionCall('market-store', 'GetMarketStoreItem', payload);
|
|
501
|
+
}
|
|
502
|
+
//--------------------------------------------
|
|
503
|
+
//--------------------Topics-------------------
|
|
504
|
+
async CreateTopic(payload) {
|
|
505
|
+
return await this.actionCall('topic', 'CreateTopic', payload);
|
|
506
|
+
}
|
|
507
|
+
async UpdateTopic(payload) {
|
|
508
|
+
return await this.actionCall('topic', 'UpdateTopic', payload);
|
|
509
|
+
}
|
|
510
|
+
async DeleteTopic(payload) {
|
|
511
|
+
return await this.actionCall('topic', 'DeleteTopic', payload);
|
|
512
|
+
}
|
|
513
|
+
async ListTopics(payload) {
|
|
514
|
+
return await this.actionCall('topic', 'ListTopics', payload);
|
|
515
|
+
}
|
|
516
|
+
async EnhanceTopic(payload) {
|
|
517
|
+
return await this.actionCall('topic', 'EnhanceTopic', payload);
|
|
518
|
+
}
|
|
519
|
+
//---------------------------------------------
|
|
520
|
+
async CreateInput(payload) {
|
|
521
|
+
return await this.actionCall('input-output', 'CreateInput', payload);
|
|
522
|
+
}
|
|
523
|
+
async UpdateInput(payload) {
|
|
524
|
+
return await this.actionCall('input-output', 'UpdateInput', payload);
|
|
525
|
+
}
|
|
526
|
+
async DeleteInput(payload) {
|
|
527
|
+
return await this.actionCall('input-output', 'DeleteInput', payload);
|
|
528
|
+
}
|
|
529
|
+
async ListInputs(payload) {
|
|
530
|
+
return await this.actionCall('input-output', 'ListInputs', payload);
|
|
531
|
+
}
|
|
532
|
+
async CreateTeam(payload) {
|
|
533
|
+
return await this.actionCall('team', 'CreateTeam', payload);
|
|
534
|
+
}
|
|
535
|
+
async ListTeams(payload) {
|
|
536
|
+
return await this.actionCall('team', 'ListTeams', payload);
|
|
537
|
+
}
|
|
538
|
+
async UpdateTeam(payload) {
|
|
539
|
+
return await this.actionCall('team', 'UpdateTeam', payload);
|
|
540
|
+
}
|
|
541
|
+
async DeleteTeam(payload) {
|
|
542
|
+
return await this.actionCall('team', 'DeleteTeam', payload);
|
|
543
|
+
}
|
|
544
|
+
async SaveChat(payload) {
|
|
545
|
+
return await this.actionCall('chat', 'SaveChat', payload);
|
|
546
|
+
}
|
|
547
|
+
async DeleteChatById(payload) {
|
|
548
|
+
return await this.actionCall('chat', 'DeleteChatById', payload);
|
|
549
|
+
}
|
|
550
|
+
async GetChatById(payload) {
|
|
551
|
+
return await this.actionCall('chat', 'GetChatById', payload);
|
|
552
|
+
}
|
|
553
|
+
async GetChatsByUserId(payload) {
|
|
554
|
+
return await this.actionCall('chat', 'GetChatsByUserId', payload);
|
|
555
|
+
}
|
|
556
|
+
async SaveMessages(payload) {
|
|
557
|
+
return await this.actionCall('chat', 'SaveMessages', payload);
|
|
558
|
+
}
|
|
559
|
+
async GetMessagesByChatId(payload) {
|
|
560
|
+
return await this.actionCall('chat', 'GetMessagesByChatId', payload);
|
|
561
|
+
}
|
|
562
|
+
async GetMessageById(payload) {
|
|
563
|
+
return await this.actionCall('chat', 'GetMessageById', payload);
|
|
564
|
+
}
|
|
565
|
+
async VoteMessage(payload) {
|
|
566
|
+
return await this.actionCall('chat', 'VoteMessage', payload);
|
|
567
|
+
}
|
|
568
|
+
async GetVotesByChatId(payload) {
|
|
569
|
+
return await this.actionCall('chat', 'GetVotesByChatId', payload);
|
|
570
|
+
}
|
|
571
|
+
async DeleteDocumentsByIdAfterTimestamp(payload) {
|
|
572
|
+
return await this.actionCall('chat', 'DeleteDocumentsByIdAfterTimestamp', payload);
|
|
573
|
+
}
|
|
574
|
+
async SaveSuggestions(payload) {
|
|
575
|
+
return await this.actionCall('chat', 'SaveSuggestions', payload);
|
|
576
|
+
}
|
|
577
|
+
async GetSuggestionsByDocumentId(payload) {
|
|
578
|
+
return await this.actionCall('chat', 'GetSuggestionsByDocumentId', payload);
|
|
579
|
+
}
|
|
580
|
+
async DeleteMessagesByChatIdAfterTimestamp(payload) {
|
|
581
|
+
return await this.actionCall('chat', 'DeleteMessagesByChatIdAfterTimestamp', payload);
|
|
582
|
+
}
|
|
583
|
+
async UpdateChatVisiblityById(payload) {
|
|
584
|
+
return await this.actionCall('chat', 'UpdateChatVisiblityById', payload);
|
|
585
|
+
}
|
|
586
|
+
async UpdateChatLastContextById(payload) {
|
|
587
|
+
return await this.actionCall('chat', 'UpdateChatLastContextById', payload);
|
|
588
|
+
}
|
|
589
|
+
async GetMessageCountByUserId(payload) {
|
|
590
|
+
return await this.actionCall('chat', 'GetMessageCountByUserId', payload);
|
|
591
|
+
}
|
|
592
|
+
async CreateStreamId(payload) {
|
|
593
|
+
return await this.actionCall('chat', 'CreateStreamId', payload);
|
|
594
|
+
}
|
|
595
|
+
async GetStreamIdsByChatId(payload) {
|
|
596
|
+
return await this.actionCall('chat', 'GetStreamIdsByChatId', payload);
|
|
597
|
+
}
|
|
598
|
+
async SaveDocument(payload) {
|
|
599
|
+
return await this.actionCall('chat', 'SaveDocument', payload);
|
|
600
|
+
}
|
|
601
|
+
async GetDocumentById(payload) {
|
|
602
|
+
return await this.actionCall('chat', 'GetDocumentById', payload);
|
|
603
|
+
}
|
|
604
|
+
async GetDocumentsById(payload) {
|
|
605
|
+
return await this.actionCall('chat', 'GetDocumentsById', payload);
|
|
606
|
+
}
|
|
607
|
+
async CreateCommand(payload) {
|
|
608
|
+
/* debugger
|
|
609
|
+
if ( typeof payload.inputs === 'object' ) {
|
|
610
|
+
payload.inputs = JSON.stringify(payload.inputs) as any;
|
|
611
|
+
} */
|
|
612
|
+
return await this.actionCall('command', 'CreateCommand', payload);
|
|
613
|
+
}
|
|
614
|
+
async ListCommands(payload) {
|
|
615
|
+
return await this.actionCall('command', 'ListCommands', payload);
|
|
616
|
+
}
|
|
617
|
+
async UpdateCommand(payload) {
|
|
618
|
+
return await this.actionCall('command', 'UpdateCommand', payload);
|
|
619
|
+
}
|
|
620
|
+
async DeleteCommand(payload) {
|
|
621
|
+
return await this.actionCall('command', 'DeleteCommand', payload);
|
|
622
|
+
}
|
|
623
|
+
//------------------Collections-------------------
|
|
624
|
+
async CreateDataModel(payload) {
|
|
625
|
+
return await this.actionCall("collection", "CreateDataModel", payload);
|
|
626
|
+
}
|
|
627
|
+
async UpdateDataModel(payload) {
|
|
628
|
+
return await this.actionCall("collection", "UpdateDataModel", payload);
|
|
629
|
+
}
|
|
630
|
+
async DeleteDataModel(payload) {
|
|
631
|
+
return await this.actionCall("collection", "DeleteDataModel", payload);
|
|
632
|
+
}
|
|
633
|
+
async GetDataModelById(payload) {
|
|
634
|
+
return await this.actionCall("collection", "GetDataModelById", payload);
|
|
635
|
+
}
|
|
636
|
+
async ExportDataModel(payload) {
|
|
637
|
+
return await this.actionCall("collection", "ExportDataModel", payload);
|
|
638
|
+
}
|
|
639
|
+
async ImportDataModel(payload) {
|
|
640
|
+
return await this.actionCall("collection", "ImportDataModel", payload);
|
|
641
|
+
}
|
|
642
|
+
async ListDataModels(payload) {
|
|
643
|
+
return await this.actionCall("collection", "ListDataModels", payload);
|
|
644
|
+
}
|
|
645
|
+
async RestoreDataModel(payload) {
|
|
646
|
+
return await this.actionCall("collection", "RestoreDataModel", payload);
|
|
647
|
+
}
|
|
648
|
+
async HardDeleteDataModel(payload) {
|
|
649
|
+
return await this.actionCall("collection", "HardDeleteDataModel", payload);
|
|
650
|
+
}
|
|
651
|
+
async CreateCollection(payload) {
|
|
652
|
+
return await this.actionCall("collection", "CreateCollection", payload);
|
|
653
|
+
}
|
|
654
|
+
async ListCollections(payload) {
|
|
655
|
+
return await this.actionCall("collection", "ListCollections", payload);
|
|
656
|
+
}
|
|
657
|
+
async GetCollectionById(payload) {
|
|
658
|
+
return await this.actionCall("collection", "GetCollectionById", payload);
|
|
659
|
+
}
|
|
660
|
+
async CreateRecord(payload) {
|
|
661
|
+
return await this.actionCall("collection", "CreateRecord", payload);
|
|
662
|
+
}
|
|
663
|
+
async UploadCollectionFile(payload) {
|
|
664
|
+
const result = await this.actionCall("collection", "UploadCollectionFile", payload);
|
|
665
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
666
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
667
|
+
return {
|
|
668
|
+
...result,
|
|
669
|
+
fileId: String(result?.itemId || result?.fileId || result?.id || payload.itemId || ""),
|
|
670
|
+
path: storagePath,
|
|
671
|
+
filePath: resolvedUrl || storagePath,
|
|
672
|
+
url: resolvedUrl || storagePath,
|
|
673
|
+
};
|
|
674
|
+
}
|
|
675
|
+
async ResolveCollectionFileView(payload) {
|
|
676
|
+
const result = await this.actionCall("collection", "ResolveCollectionFileView", payload);
|
|
677
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
678
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
679
|
+
return {
|
|
680
|
+
...result,
|
|
681
|
+
fileId: String(result?.fileId || result?.itemId || payload.itemId || ""),
|
|
682
|
+
path: storagePath,
|
|
683
|
+
filePath: resolvedUrl || storagePath,
|
|
684
|
+
url: resolvedUrl || storagePath,
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
async GetRecordById(payload) {
|
|
688
|
+
return await this.actionCall("collection", "GetRecordById", payload);
|
|
689
|
+
}
|
|
690
|
+
async ListRecords(payload) {
|
|
691
|
+
return await this.actionCall("collection", "ListRecords", payload);
|
|
692
|
+
}
|
|
693
|
+
async UpdateRecord(payload) {
|
|
694
|
+
return await this.actionCall("collection", "UpdateRecord", payload);
|
|
695
|
+
}
|
|
696
|
+
async DeleteRecord(payload) {
|
|
697
|
+
return await this.actionCall("collection", "DeleteRecord", payload);
|
|
698
|
+
}
|
|
699
|
+
async RestoreRecord(payload) {
|
|
700
|
+
return await this.actionCall("collection", "RestoreRecord", payload);
|
|
701
|
+
}
|
|
702
|
+
async UpsertRecord(payload) {
|
|
703
|
+
return await this.actionCall("collection", "UpsertRecord", payload);
|
|
704
|
+
}
|
|
705
|
+
async BulkCreateRecords(payload) {
|
|
706
|
+
return await this.actionCall("collection", "BulkCreateRecords", payload);
|
|
707
|
+
}
|
|
708
|
+
async EnsureAirtableImportCredential(payload) {
|
|
709
|
+
return await this.actionCall("collection", "EnsureAirtableImportCredential", payload);
|
|
710
|
+
}
|
|
711
|
+
async ListAirtableImportSources(payload) {
|
|
712
|
+
return await this.actionCall("collection", "ListAirtableImportSources", payload);
|
|
713
|
+
}
|
|
714
|
+
async PreviewAirtableImport(payload) {
|
|
715
|
+
return await this.actionCall("collection", "PreviewAirtableImport", payload);
|
|
716
|
+
}
|
|
717
|
+
async RunAirtableImport(payload) {
|
|
718
|
+
return await this.actionCall("collection", "RunAirtableImport", payload);
|
|
719
|
+
}
|
|
720
|
+
async EnsureLinearImportCredential(payload) {
|
|
721
|
+
return await this.actionCall("collection", "EnsureLinearImportCredential", payload);
|
|
722
|
+
}
|
|
723
|
+
async ListLinearImportSources(payload) {
|
|
724
|
+
return await this.actionCall("collection", "ListLinearImportSources", payload);
|
|
725
|
+
}
|
|
726
|
+
async PreviewLinearImport(payload) {
|
|
727
|
+
return await this.actionCall("collection", "PreviewLinearImport", payload);
|
|
728
|
+
}
|
|
729
|
+
async RunLinearImport(payload) {
|
|
730
|
+
return await this.actionCall("collection", "RunLinearImport", payload);
|
|
731
|
+
}
|
|
732
|
+
async EnsureGmailImportCredential(payload) {
|
|
733
|
+
return await this.actionCall("collection", "EnsureGmailImportCredential", payload);
|
|
734
|
+
}
|
|
735
|
+
async EnsureGithubImportCredential(payload) {
|
|
736
|
+
return await this.actionCall("collection", "EnsureGithubImportCredential", payload);
|
|
737
|
+
}
|
|
738
|
+
async ListGmailImportSources(payload) {
|
|
739
|
+
return await this.actionCall("collection", "ListGmailImportSources", payload);
|
|
740
|
+
}
|
|
741
|
+
async ListGithubImportSources(payload) {
|
|
742
|
+
return await this.actionCall("collection", "ListGithubImportSources", payload);
|
|
743
|
+
}
|
|
744
|
+
async PreviewGmailImport(payload) {
|
|
745
|
+
return await this.actionCall("collection", "PreviewGmailImport", payload);
|
|
746
|
+
}
|
|
747
|
+
async PreviewCsvImport(payload) {
|
|
748
|
+
return await this.actionCall("collection", "PreviewCsvImport", payload);
|
|
749
|
+
}
|
|
750
|
+
async PreviewGithubImport(payload) {
|
|
751
|
+
return await this.actionCall("collection", "PreviewGithubImport", payload);
|
|
752
|
+
}
|
|
753
|
+
async RunGmailImport(payload) {
|
|
754
|
+
return await this.actionCall("collection", "RunGmailImport", payload);
|
|
755
|
+
}
|
|
756
|
+
async RunCsvImport(payload) {
|
|
757
|
+
return await this.actionCall("collection", "RunCsvImport", payload);
|
|
758
|
+
}
|
|
759
|
+
async RunGithubImport(payload) {
|
|
760
|
+
return await this.actionCall("collection", "RunGithubImport", payload);
|
|
761
|
+
}
|
|
762
|
+
async EnsureNotionImportCredential(payload) {
|
|
763
|
+
return await this.actionCall("collection", "EnsureNotionImportCredential", payload);
|
|
764
|
+
}
|
|
765
|
+
async ListNotionImportSources(payload) {
|
|
766
|
+
return await this.actionCall("collection", "ListNotionImportSources", payload);
|
|
767
|
+
}
|
|
768
|
+
async PreviewNotionImport(payload) {
|
|
769
|
+
return await this.actionCall("collection", "PreviewNotionImport", payload);
|
|
770
|
+
}
|
|
771
|
+
async RunNotionImport(payload) {
|
|
772
|
+
return await this.actionCall("collection", "RunNotionImport", payload);
|
|
773
|
+
}
|
|
774
|
+
async EnsureJiraImportCredential(payload) {
|
|
775
|
+
return await this.actionCall("collection", "EnsureJiraImportCredential", payload);
|
|
776
|
+
}
|
|
777
|
+
async ListJiraImportSources(payload) {
|
|
778
|
+
return await this.actionCall("collection", "ListJiraImportSources", payload);
|
|
779
|
+
}
|
|
780
|
+
async PreviewJiraImport(payload) {
|
|
781
|
+
return await this.actionCall("collection", "PreviewJiraImport", payload);
|
|
782
|
+
}
|
|
783
|
+
async RunJiraImport(payload) {
|
|
784
|
+
return await this.actionCall("collection", "RunJiraImport", payload);
|
|
785
|
+
}
|
|
786
|
+
async EnsureTrelloImportCredential(payload) {
|
|
787
|
+
return await this.actionCall("collection", "EnsureTrelloImportCredential", payload);
|
|
788
|
+
}
|
|
789
|
+
async ConnectTrelloImportCredential(payload) {
|
|
790
|
+
return await this.actionCall("collection", "ConnectTrelloImportCredential", payload);
|
|
791
|
+
}
|
|
792
|
+
async ListTrelloImportSources(payload) {
|
|
793
|
+
return await this.actionCall("collection", "ListTrelloImportSources", payload);
|
|
794
|
+
}
|
|
795
|
+
async PreviewTrelloImport(payload) {
|
|
796
|
+
return await this.actionCall("collection", "PreviewTrelloImport", payload);
|
|
797
|
+
}
|
|
798
|
+
async RunTrelloImport(payload) {
|
|
799
|
+
return await this.actionCall("collection", "RunTrelloImport", payload);
|
|
800
|
+
}
|
|
801
|
+
async BulkUpdateRecords(payload) {
|
|
802
|
+
return await this.actionCall("collection", "BulkUpdateRecords", payload);
|
|
803
|
+
}
|
|
804
|
+
async BulkDeleteRecords(payload) {
|
|
805
|
+
return await this.actionCall("collection", "BulkDeleteRecords", payload);
|
|
806
|
+
}
|
|
807
|
+
async DuplicateRecord(payload) {
|
|
808
|
+
return await this.actionCall("collection", "DuplicateRecord", payload);
|
|
809
|
+
}
|
|
810
|
+
async QueryRecords(payload) {
|
|
811
|
+
return await this.actionCall("collection", "QueryRecords", payload);
|
|
812
|
+
}
|
|
813
|
+
async SearchRecords(payload) {
|
|
814
|
+
return await this.actionCall("collection", "SearchRecords", payload);
|
|
815
|
+
}
|
|
816
|
+
async CountRecords(payload) {
|
|
817
|
+
return await this.actionCall("collection", "CountRecords", payload);
|
|
818
|
+
}
|
|
819
|
+
async GroupRecords(payload) {
|
|
820
|
+
return await this.actionCall("collection", "GroupRecords", payload);
|
|
821
|
+
}
|
|
822
|
+
async AggregateRecords(payload) {
|
|
823
|
+
return await this.actionCall("collection", "AggregateRecords", payload);
|
|
824
|
+
}
|
|
825
|
+
async DistinctFieldValues(payload) {
|
|
826
|
+
return await this.actionCall("collection", "DistinctFieldValues", payload);
|
|
827
|
+
}
|
|
828
|
+
async CreateCollectionField(payload) {
|
|
829
|
+
return await this.actionCall("collection", "CreateCollectionField", payload);
|
|
830
|
+
}
|
|
831
|
+
async UpdateCollectionField(payload) {
|
|
832
|
+
return await this.actionCall("collection", "UpdateCollectionField", payload);
|
|
833
|
+
}
|
|
834
|
+
async DeleteCollectionField(payload) {
|
|
835
|
+
return await this.actionCall("collection", "DeleteCollectionField", payload);
|
|
836
|
+
}
|
|
837
|
+
async ListCollectionAutomationRules(payload) {
|
|
838
|
+
return await this.actionCall("collection", "ListCollectionAutomationRules", payload);
|
|
839
|
+
}
|
|
840
|
+
async CreateCollectionAutomationRule(payload) {
|
|
841
|
+
return await this.actionCall("collection", "CreateCollectionAutomationRule", payload);
|
|
842
|
+
}
|
|
843
|
+
async UpdateCollectionAutomationRule(payload) {
|
|
844
|
+
return await this.actionCall("collection", "UpdateCollectionAutomationRule", payload);
|
|
845
|
+
}
|
|
846
|
+
async DeleteCollectionAutomationRule(payload) {
|
|
847
|
+
return await this.actionCall("collection", "DeleteCollectionAutomationRule", payload);
|
|
848
|
+
}
|
|
849
|
+
async ListCollectionViews(payload) {
|
|
850
|
+
return await this.actionCall("collection", "ListCollectionViews", payload);
|
|
851
|
+
}
|
|
852
|
+
async CreateCollectionView(payload) {
|
|
853
|
+
return await this.actionCall("collection", "CreateCollectionView", payload);
|
|
854
|
+
}
|
|
855
|
+
async UpdateCollectionView(payload) {
|
|
856
|
+
return await this.actionCall("collection", "UpdateCollectionView", payload);
|
|
857
|
+
}
|
|
858
|
+
async DeleteCollectionView(payload) {
|
|
859
|
+
return await this.actionCall("collection", "DeleteCollectionView", payload);
|
|
860
|
+
}
|
|
861
|
+
async ListCollectionButtons(payload) {
|
|
862
|
+
return await this.actionCall("collection", "ListCollectionButtons", payload);
|
|
863
|
+
}
|
|
864
|
+
async CreateCollectionButton(payload) {
|
|
865
|
+
return await this.actionCall("collection", "CreateCollectionButton", payload);
|
|
866
|
+
}
|
|
867
|
+
async UpdateCollectionButton(payload) {
|
|
868
|
+
return await this.actionCall("collection", "UpdateCollectionButton", payload);
|
|
869
|
+
}
|
|
870
|
+
async DeleteCollectionButton(payload) {
|
|
871
|
+
return await this.actionCall("collection", "DeleteCollectionButton", payload);
|
|
872
|
+
}
|
|
873
|
+
async ExecuteCollectionButton(payload) {
|
|
874
|
+
return await this.actionCall("collection", "ExecuteCollectionButton", payload);
|
|
875
|
+
}
|
|
876
|
+
async ExecuteCollectionAiField(payload) {
|
|
877
|
+
return await this.actionCall("collection", "ExecuteCollectionAiField", payload);
|
|
878
|
+
}
|
|
879
|
+
async ListCollectionRelations(payload) {
|
|
880
|
+
return await this.actionCall("collection", "ListCollectionRelations", payload);
|
|
881
|
+
}
|
|
882
|
+
async CreateCollectionRelation(payload) {
|
|
883
|
+
return await this.actionCall("collection", "CreateCollectionRelation", payload);
|
|
884
|
+
}
|
|
885
|
+
async UpdateCollectionRelation(payload) {
|
|
886
|
+
return await this.actionCall("collection", "UpdateCollectionRelation", payload);
|
|
887
|
+
}
|
|
888
|
+
async DeleteCollectionRelation(payload) {
|
|
889
|
+
return await this.actionCall("collection", "DeleteCollectionRelation", payload);
|
|
890
|
+
}
|
|
891
|
+
async ListRelationCandidates(payload) {
|
|
892
|
+
return await this.actionCall("collection", "ListRelationCandidates", payload);
|
|
893
|
+
}
|
|
894
|
+
async GetRecordRelations(payload) {
|
|
895
|
+
return await this.actionCall("collection", "GetRecordRelations", payload);
|
|
896
|
+
}
|
|
897
|
+
async ReorderCollectionFields(payload) {
|
|
898
|
+
return await this.actionCall("collection", "ReorderCollectionFields", payload);
|
|
899
|
+
}
|
|
900
|
+
async GetCollectionSchema(payload) {
|
|
901
|
+
return await this.actionCall("collection", "GetCollectionSchema", payload);
|
|
902
|
+
}
|
|
903
|
+
async ValidateRecord(payload) {
|
|
904
|
+
return await this.actionCall("collection", "ValidateRecord", payload);
|
|
905
|
+
}
|
|
906
|
+
async PreviewValidationErrors(payload) {
|
|
907
|
+
return await this.actionCall("collection", "PreviewValidationErrors", payload);
|
|
908
|
+
}
|
|
909
|
+
async CheckRecordPermission(payload) {
|
|
910
|
+
return await this.actionCall("collection", "CheckRecordPermission", payload);
|
|
911
|
+
}
|
|
912
|
+
async ListRecordPermissions(payload) {
|
|
913
|
+
return await this.actionCall("collection", "ListRecordPermissions", payload);
|
|
914
|
+
}
|
|
915
|
+
async GrantRecordPermission(payload) {
|
|
916
|
+
return await this.actionCall("collection", "GrantRecordPermission", payload);
|
|
917
|
+
}
|
|
918
|
+
async RevokeRecordPermission(payload) {
|
|
919
|
+
return await this.actionCall("collection", "RevokeRecordPermission", payload);
|
|
920
|
+
}
|
|
921
|
+
//---wiki--------
|
|
922
|
+
async CreateWikiPage(payload) {
|
|
923
|
+
return await this.actionCall("wiki", "CreateWikiPage", payload);
|
|
924
|
+
}
|
|
925
|
+
async UpdateWikiPage(payload) {
|
|
926
|
+
return await this.actionCall("wiki", "UpdateWikiPage", payload);
|
|
927
|
+
}
|
|
928
|
+
async DeleteWikiPage(payload) {
|
|
929
|
+
return await this.actionCall("wiki", "DeleteWikiPage", payload);
|
|
930
|
+
}
|
|
931
|
+
async ListWikiPages(payload) {
|
|
932
|
+
return await this.actionCall("wiki", "ListWikiPages", payload);
|
|
933
|
+
}
|
|
934
|
+
async SetWikiPageUserState(payload) {
|
|
935
|
+
return await this.actionCall("wiki", "SetWikiPageUserState", payload);
|
|
936
|
+
}
|
|
937
|
+
async UploadWikiFile(payload) {
|
|
938
|
+
return await this.actionCall("wiki", "UploadFile", payload);
|
|
939
|
+
}
|
|
940
|
+
async ResolveWikiFileView(payload) {
|
|
941
|
+
const result = await this.actionCall("wiki", "ResolveWikiFileView", payload);
|
|
942
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
943
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
944
|
+
return {
|
|
945
|
+
...result,
|
|
946
|
+
fileId: String(result?.fileId || payload.fileId || ""),
|
|
947
|
+
path: storagePath,
|
|
948
|
+
filePath: resolvedUrl || storagePath,
|
|
949
|
+
url: resolvedUrl || storagePath,
|
|
950
|
+
};
|
|
951
|
+
}
|
|
952
|
+
async CreateWikiComment(payload) {
|
|
953
|
+
return await this.actionCall("wiki", "CreateWikiComment", payload);
|
|
954
|
+
}
|
|
955
|
+
async UpdateWikiComment(payload) {
|
|
956
|
+
const normalizedPayload = {
|
|
957
|
+
...payload,
|
|
958
|
+
...(typeof payload.resolved === "boolean"
|
|
959
|
+
? { resolved: payload.resolved ? "true" : "false" }
|
|
960
|
+
: {}),
|
|
961
|
+
};
|
|
962
|
+
return await this.actionCall("wiki", "UpdateWikiComment", normalizedPayload);
|
|
963
|
+
}
|
|
964
|
+
async DeleteWikiComment(payload) {
|
|
965
|
+
return await this.actionCall("wiki", "DeleteWikiComment", payload);
|
|
966
|
+
}
|
|
967
|
+
async ListWikiComments(payload) {
|
|
968
|
+
return await this.actionCall("wiki", "ListWikiComments", payload);
|
|
969
|
+
}
|
|
970
|
+
async RestoreWikiPage(payload) {
|
|
971
|
+
return await this.actionCall("wiki", "RestoreWikiPage", payload);
|
|
972
|
+
}
|
|
973
|
+
async GetWikiPageById(payload) {
|
|
974
|
+
return await this.actionCall("wiki", "GetWikiPageById", payload);
|
|
975
|
+
}
|
|
976
|
+
async GetWikiPageBySlug(payload) {
|
|
977
|
+
return await this.actionCall("wiki", "GetWikiPageBySlug", payload);
|
|
978
|
+
}
|
|
979
|
+
async GetWikiTree(payload) {
|
|
980
|
+
return await this.actionCall("wiki", "GetWikiTree", payload);
|
|
981
|
+
}
|
|
982
|
+
/* ------------------------------------------------------------------
|
|
983
|
+
* Wiki Revision
|
|
984
|
+
* ------------------------------------------------------------------ */
|
|
985
|
+
async CreateWikiRevision(payload) {
|
|
986
|
+
return await this.actionCall("wiki", "CreateWikiRevision", payload);
|
|
987
|
+
}
|
|
988
|
+
async GetLatestWikiRevision(payload) {
|
|
989
|
+
return await this.actionCall("wiki", "GetLatestWikiRevision", payload);
|
|
990
|
+
}
|
|
991
|
+
async GetWikiRevisionById(payload) {
|
|
992
|
+
return await this.actionCall("wiki", "GetWikiRevisionById", payload);
|
|
993
|
+
}
|
|
994
|
+
async ListChatHistory(payload) {
|
|
995
|
+
return await this.get("/chat/history", payload);
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtcGxvaWQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPckQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBQ25DLGNBQWM7UUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsT0FBTyxPQUFPLEtBQUssV0FBVyxD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RUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FDcEIsT0FBMEM7UUFFMUMsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7OzRFQUV3RTtJQUVqRSxLQUFLLENBQUMsa0JBQWtCLENBQzNCLE9BQWlEO1FBRWpELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQixDQUM5QixPQUFvRDtRQUVwRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FDNUIsT0FBa0Q7UUFFbEQsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUN4QixPQUE4QztRQUU5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeiBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ2xpZW50IH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UtY2xpZW50XCI7XG5cblxuaW1wb3J0IHsgQWdncmVnYXRlUmVjb3Jkc1NjaGVtYSwgQnVsa0NyZWF0ZVJlY29yZHNTY2hlbWEsIEJ1bGtEZWxldGVSZWNvcmRzU2NoZW1hLCBCdWxrVXBkYXRlUmVjb3Jkc1NjaGVtYSwgQ2hhbmdlQWdlbnRmbG93UHJvamVjdFNjaGVtYSwgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgQ291bnRSZWNvcmRzU2NoZW1hLCBDcmVhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIENyZWF0ZUFnZW50Rmxvd1NjaGVtYSwgQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb25TY2hlbWEsIENyZWF0ZUFzc2lzdGFudFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIENyZWF0ZUNoYW5uZWxTY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBDcmVhdGVDb21tYW5kU2NoZW1hLCBDcmVhdGVDb21wZXRlbmN5U2NoZW1hLCBDcmVhdGVDb25zdHJhaW50U2NoZW1hLCBDcmVhdGVEYXRhTW9kZWxTY2hlbWEsIENyZWF0ZURhdGFzb3VyY2VTY2hlbWEsIENyZWF0ZURvbWFpblRvcGljU2NoZW1hLCBDcmVhdGVEcml2ZUZvbGRlclNjaGVtYSwgQ3JlYXRlRHJpdmVSb290Rm9sZGVyU2NoZW1hLCBDcmVhdGVEcml2ZVJvb3RTY2hlbWEsIENyZWF0ZUVtcGxvaWRTY2hlbWEsIENyZWF0ZUV4dGVuc2lvblNjaGVtYSwgQ3JlYXRlSW5wdXRTY2hlbWEsIENyZWF0ZUluc3RydWN0aW9uU2NoZW1hLCBDcmVhdGVKb2JEZWZpbml0aW9uU2NoZW1hLCBDcmVhdGVLbm93bGVkZ2VTY2hlbWEsIENyZWF0ZU9jY3VwYXRpb25TY2hlbWEsIENyZWF0ZVJlY29yZFNjaGVtYSwgQ3JlYXRlU2NvcGVTY2hlbWEsIENyZWF0ZVNraWxsU2NoZW1hLCBDcmVhdGVTdHJlYW1JZFNjaGVtYSwgQ3JlYXRlVGFza1RlbXBsYXRlU2NoZW1hLCBDcmVhdGVUZWFtU2NoZW1hLCBDcmVhdGVUb3BpY1NjaGVtYSwgQ3JlYXRlV2lraUNvbW1lbnRTY2hlbWEsIENyZWF0ZVdpa2lQYWdlU2NoZW1hLCBDcmVhdGVXaWtpUmV2aXNpb25TY2hlbWEsIENyZWF0ZVdvcmtlclNjaGVtYSwgQ3JlYXRlV29ya2VyVG9waWNTY2hlbWEsIERlbGV0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYSwgRGVsZXRlQWdlbnRGbG93U2NoZW1hLCBEZWxldGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hLCBEZWxldGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hLCBEZWxldGVBc3Npc3RhbnRTY2hlbWEsIERlbGV0ZUFzc2lzdGFudFNraWxsU2NoZW1hLCBEZWxldGVDaGFubmVsU2NoZW1hLCBEZWxldGVDaGF0QnlJZFNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uRmllbGRTY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvblZpZXdTY2hlbWEsIERlbGV0ZUNvbW1hbmRTY2hlbWEsIERlbGV0ZUNvbXBldGVuY3lTY2hlbWEsIERlbGV0ZUNvbnN0cmFpbnRTY2hlbWEsIERlbGV0ZURhdGFNb2RlbFNjaGVtYSwgRGVsZXRlRGF0YXNvdXJjZVNjaGVtYSwgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wU2NoZW1hLCBEZWxldGVEb21haW5Ub3BpY1NjaGVtYSwgRGVsZXRlRHJpdmVJdGVtU2NoZW1hLCBEZWxldGVEcml2ZVJvb3RJdGVtU2NoZW1hLCBEZWxldGVEcml2ZVJvb3RTY2hlbWEsIERlbGV0ZUVtcGxvaWRTY2hlbWEsIERlbGV0ZUV4dGVuc2lvblNjaGVtYSwgRGVsZXRlSW5wdXRTY2hlbWEsIERlbGV0ZUluc3RydWN0aW9uU2NoZW1hLCBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hLCBEZWxldGVLbm93bGVkZ2VTY2hlbWEsIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlT2NjdXBhdGlvblNjaGVtYSwgRGVsZXRlUmVjb3JkU2NoZW1hLCBEZWxldGVTY29wZVNjaGVtYSwgRGVsZXRlU2tpbGxTY2hlbWEsIERlbGV0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgRGVsZXRlVGVhbVNjaGVtYSwgRGVsZXRlVG9waWNTY2hlbWEsIERlbGV0ZVdpa2lDb21tZW50U2NoZW1hLCBEZWxldGVXaWtpUGFnZVNjaGVtYSwgRGVsZXRlV29ya2VyU2NoZW1hLCBEZWxldGVXb3JrZXJUb3BpY1NjaGVtYSwgRGlzdGluY3RGaWVsZFZhbHVlc1NjaGVtYSwgRHVwbGljYXRlQWdlbnRGbG93U2NoZW1hLCBEdXBsaWNhdGVSZWNvcmRTY2hlbWEsIEVuaGFuY2VUb3BpY1NjaGVtYSwgRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVEcml2ZVByb3ZpZGVyQ3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlR21haWxJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkU2NoZW1hLCBFeGVjdXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgRXhwb3J0RGF0YU1vZGVsU2NoZW1hLCBHZXRDaGF0QnlJZFNjaGVtYSwgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYSwgR2V0Q29sbGVjdGlvbkJ5SWRTY2hlbWEsIEdldENvbGxlY3Rpb25TY2hlbWFTY2hlbWEsIEdldERhdGFNb2RlbEJ5SWRTY2hlbWEsIEdldERvY3VtZW50QnlJZFNjaGVtYSwgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYSwgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWEsIEdldERyaXZlUm9vdERlbGV0ZUltcGFjdFNjaGVtYSwgR2V0TGF0ZXN0V2lraVJldmlzaW9uU2NoZW1hLCBHZXRNYXJrZXRTdG9yZUl0ZW1TY2hlbWEsIEdldE1lc3NhZ2VCeUlkU2NoZW1hLCBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZFNjaGVtYSwgR2V0TWVzc2FnZXNCeUNoYXRJZFNjaGVtYSwgR2V0UHJpdmF0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYSwgR2V0UmVjb3JkQnlJZFNjaGVtYSwgR2V0UmVjb3JkUmVsYXRpb25zU2NoZW1hLCBHZXRTY29wZUJ5VHlwZVNjaGVtYSwgR2V0U3RyZWFtSWRzQnlDaGF0SWRTY2hlbWEsIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hLCBHZXRWb3Rlc0J5Q2hhdElkU2NoZW1hLCBHZXRXaWtpUGFnZUJ5SWRTY2hlbWEsIEdldFdpa2lQYWdlQnlTbHVnU2NoZW1hLCBHZXRXaWtpUmV2aXNpb25CeUlkU2NoZW1hLCBHZXRXaWtpVHJlZVNjaGVtYSwgR3JhbnRSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBHcm91cFJlY29yZHNTY2hlbWEsIEhhcmREZWxldGVEYXRhTW9kZWxTY2hlbWEsIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hLCBMaXN0QWdlbnRGbG93c1NjaGVtYSwgTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudENoYW5uZWxzU2NoZW1hLCBMaXN0QXNzaXN0YW50Q29uc3RyYWludHNTY2hlbWEsIExpc3RBc3Npc3RhbnREYXRhc291cmNlc1NjaGVtYSwgTGlzdEFzc2lzdGFudEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEFzc2lzdGFudFNraWxsc1NjaGVtYSwgTGlzdEFzc2lzdGFudHNTY2hlbWEsIExpc3RDaGFubmVsc1NjaGVtYSwgTGlzdENoYXRIaXN0b3J5U2NoZW1hLCBMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblJlbGF0aW9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25zU2NoZW1hLCBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hLCBMaXN0Q29tbWFuZHNTY2hlbWEsIExpc3RDb21wZXRlbmNpZXNTY2hlbWEsIExpc3RDb25zdHJhaW50c1NjaGVtYSwgTGlzdERhdGFNb2RlbHNTY2hlbWEsIExpc3REYXRhc291cmNlc1NjaGVtYSwgTGlzdERvbWFpblRvcGljc1NjaGVtYSwgTGlzdERyaXZlSXRlbXNTY2hlbWEsIExpc3REcml2ZVByb3ZpZGVyRm9sZGVyc1NjaGVtYSwgTGlzdERyaXZlUm9vdEl0ZW1zU2NoZW1hLCBMaXN0RHJpdmVSb290c1NjaGVtYSwgTGlzdERyaXZlUm9vdFRyZWVTY2hlbWEsIExpc3REcml2ZVRyZWVTY2hlbWEsIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYSwgTGlzdEVtcGxvaWRzU2NoZW1hLCBMaXN0RXh0ZW5zaW9uc1NjaGVtYSwgTGlzdEdtYWlsSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RJbnB1dFNjaGVtYSwgTGlzdEluc3RydWN0aW9uc1NjaGVtYSwgTGlzdEppcmFJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYSwgTGlzdEtub3dsZWRnZXNTY2hlbWEsIExpc3RMaW5lYXJJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0TWFya2V0U3RvcmVJdGVtc1NjaGVtYSwgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RPY2N1cGF0aW9uc1NjaGVtYSwgTGlzdFJlY29yZFBlcm1pc3Npb25zU2NoZW1hLCBMaXN0UmVjb3Jkc1NjaGVtYSwgTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1NjaGVtYSwgTGlzdFNjb3Blc1NjaGVtYSwgTGlzdFNraWxsc1NjaGVtYSwgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWEsIExpc3RUZWFtc1NjaGVtYSwgTGlzdFRvcGljc1NjaGVtYSwgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RXaWtpQ29tbWVudHNTY2hlbWEsIExpc3RXaWtpUGFnZXNTY2hlbWEsIExpc3RXb3JrZXJzU2NoZW1hLCBMaXN0V29ya2VyVG9waWNzU2NoZW1hLCBNb3ZlRHJpdmVJdGVtU2NoZW1hLCBNb3ZlRHJpdmVSb290SXRlbVNjaGVtYSwgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hLCBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWEsIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWEsIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYSwgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYSwgUHJldmlld0ppcmFJbXBvcnRTY2hlbWEsIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWEsIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWEsIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWEsIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hLCBQdWJsaXNoRG9tYWluU2NoZW1hLCBQdWJsaXNoRW1wbG9pZFNjaGVtYSwgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWEsIFF1ZXJ5UmVjb3Jkc1NjaGVtYSwgUmVhZERyaXZlUm9vdEZpbGVDb250ZW50U2NoZW1hLCBSZW5hbWVEcml2ZUl0ZW1TY2hlbWEsIFJlbmFtZURyaXZlUm9vdEl0ZW1TY2hlbWEsIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hLCBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3U2NoZW1hLCBSZXNvbHZlRHJpdmVEb3dubG9hZFNjaGVtYSwgUmVzb2x2ZURyaXZlUm9vdERvd25sb2FkU2NoZW1hLCBSZXNvbHZlU2NvcGVGaWxlVmlld1NjaGVtYSwgUmVzb2x2ZVdpa2lGaWxlVmlld1NjaGVtYSwgUmVzdG9yZURhdGFNb2RlbFNjaGVtYSwgUmVzdG9yZVJlY29yZFNjaGVtYSwgUmVzdG9yZVdpa2lQYWdlU2NoZW1hLCBSZXZva2VSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBSdW5BaXJ0YWJsZUltcG9ydFNjaGVtYSwgUnVuQ3N2SW1wb3J0U2NoZW1hLCBSdW5HbWFpbEltcG9ydFNjaGVtYSwgUnVuR2l0aHViSW1wb3J0U2NoZW1hLCBSdW5KaXJhSW1wb3J0U2NoZW1hLCBSdW5MaW5lYXJJbXBvcnRTY2hlbWEsIFJ1bk5vdGlvbkltcG9ydFNjaGVtYSwgUnVuVHJlbGxvSW1wb3J0U2NoZW1hLCBTYXZlQ2hhdFNjaGVtYSwgU2F2ZURvY3VtZW50U2NoZW1hLCBTYXZlTWVzc2FnZXNTY2hlbWEsIFNhdmVTdWdnZXN0aW9uc1NjaGVtYSwgU2VhcmNoRHJpdmVJdGVtc1NjaGVtYSwgU2VhcmNoRHJpdmVSb290SXRlbXNTY2hlbWEsIFNlYXJjaFJlY29yZHNTY2hlbWEsIFNldFdpa2lQYWdlVXNlclN0YXRlU2NoZW1hLCBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIFVwZGF0ZUFnZW50Rmxvd1NjaGVtYSwgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgVXBkYXRlQXNzaXN0YW50U2NoZW1hLCBVcGRhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYSwgVXBkYXRlQ2hhbm5lbFNjaGVtYSwgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYSwgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWRTY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBVcGRhdGVDb21tYW5kU2NoZW1hLCBVcGRhdGVDb21wZXRlbmN5U2NoZW1hLCBVcGRhdGVDb25zdHJhaW50U2NoZW1hLCBVcGRhdGVEYXRhTW9kZWxTY2hlbWEsIFVwZGF0ZURhdGFzb3VyY2VTY2hlbWEsIFVwZGF0ZURvbWFpblRvcGljU2NoZW1hLCBVcGRhdGVFbXBsb2lkU2NoZW1hLCBVcGRhdGVFeHRlbnNpb25TY2hlbWEsIFVwZGF0ZUlucHV0U2NoZW1hLCBVcGRhdGVJbnN0cnVjdGlvblNjaGVtYSwgVXBkYXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgVXBkYXRlS25vd2xlZGdlU2NoZW1hLCBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hLCBVcGRhdGVSZWNvcmRTY2hlbWEsIFVwZGF0ZVNjb3BlU2NoZW1hLCBVcGRhdGVTa2lsbFNjaGVtYSwgVXBkYXRlVGFza1RlbXBsYXRlU2NoZW1hLCBVcGRhdGVUZWFtU2NoZW1hLCBVcGRhdGVUb3BpY1NjaGVtYSwgVXBkYXRlV2lraUNvbW1lbnRTY2hlbWEsIFVwZGF0ZVdpa2lQYWdlU2NoZW1hLCBVcGRhdGVXb3JrZXJTY2hlbWEsIFVwZGF0ZVdvcmtlclRvcGljU2NoZW1hLCBVcGxvYWRDb2xsZWN0aW9uRmlsZVNjaGVtYSwgVXBsb2FkRHJpdmVSb290RmlsZXNTY2hlbWEsIFVwbG9hZEVkaXRvckZpbGVTY2hlbWEsIFVwc2VydFJlY29yZFNjaGVtYSwgVmFsaWRhdGVSZWNvcmRTY2hlbWEsIFZvdGVNZXNzYWdlU2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQgeyBUQWdlbnRGbG93LCBUQWdlbnRGbG93Rm9sZGVyLCBUQXNzaXN0YW50LCBUQXNzaXN0YW50Q2hhbm5lbCwgVEFzc2lzdGFudENvbnN0cmFpbnQsIFRBc3Npc3RhbnREYXRhc291cmNlLCBUQXNzaXN0YW50SW5zdHJ1Y3Rpb24sIFRBc3Npc3RhbnRTa2lsbCwgVENoYW5uZWwsIFRDaGF0LCBUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlLCBUQ29sbGVjdGlvbkJ1dHRvbiwgVENvbGxlY3Rpb25SZWxhdGlvbiwgVENvbGxlY3Rpb25WaWV3LCBUQ29tbWFuZCwgVENvbXBldGVuY3ksIFRDb25zdHJhaW50LCBURGF0YXNvdXJjZSwgVERlbGV0ZUFnZW50Rmxvd1Jlc3VsdCwgVERvY3VtZW50LCBURG9tYWluVG9waWMsIFREcml2ZURlbGV0ZUltcGFjdCwgVERyaXZlRmlsZUNvbnRlbnQsIFREcml2ZUl0ZW0sIFREcml2ZVByb3ZpZGVyRm9sZGVyLCBURHJpdmVSb290LCBURHJpdmVSb290UHJvdmlkZXIsIFREcml2ZVRyZWVOb2RlLCBURW1wbG9pZCwgVEVuaGFuY2VUb3BpYywgVEV4dGVuc2lvbiwgVElucHV0LCBUSW5zdHJ1Y3Rpb24sIFRKb2JEZWZpbml0aW9uLCBUS25vd2xlZGdlLCBUTWFya2V0U3RvcmVJdGVtLCBUT2NjdXBhdGlvbiwgVFBhZ2luYXRlZEVtcGxvaWRzUmVzdWx0LCBUUHJlcGFyZWREcml2ZVVwbG9hZCwgVFB1Ymxpc2hFbXBsb2lkLCBUUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmUsIFRSZWxhdGlvblJlY29yZE9wdGlvbiwgVFNjb3BlLCBUU2tpbGwsIFRTdHJlYW1JZCwgVFRhc2tUZW1wbGF0ZSwgVFRlYW0sIFRUb3BpYywgVFVwbG9hZGVkRmlsZSwgVFdpa2lDb21tZW50LCBUV2lraUNvbW1lbnRQYWdpbmF0aW9uLCBUV2lraUZpbGVWaWV3UmVzb2x1dGlvbiwgVFdvcmtlciwgVFdvcmtlclRvcGljIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEltcG9ydERhdGFNb2RlbFNjaGVtYSB9IGZyb20gXCIuL3NjaGVtYVwiO1xuXG5leHBvcnQgY2xhc3MgRW1wbG9pZFNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlQ2xpZW50IHtcbiAgICBwcm90ZWN0ZWQgZ2V0U2VydmljZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdjb20uYXBwY29uZGEuc2VydmljZS5lbXBsb2lkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSHR0cFVybCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVN0b3JhZ2VQYXRoKHBhdGhMaWtlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKHBhdGhMaWtlIHx8IFwiXCIpLnRyaW0oKTtcbiAgICAgICAgaWYgKCFub3JtYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZC5zdGFydHNXaXRoKFwiL1wiKSA/IG5vcm1hbGl6ZWQgOiBgLyR7bm9ybWFsaXplZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUVudkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVudkNhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3M/LmVudj8uQVBQQ09OREFfRU5EUE9JTlQgOiBcIlwiLFxuICAgICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzPy5lbnY/Lk5FWFRfUFVCTElDX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcz8uZW52Py5fQVBQX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBlbnZDYW5kaWRhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKGNhbmRpZGF0ZSB8fCBcIlwiKS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChzdG9yYWdlUGF0aCk7XG4gICAgICAgIGlmICghbm9ybWFsaXplZFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKG5vcm1hbGl6ZWRQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kcG9pbnQgPSBTdHJpbmcodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50IHx8IFwiXCIpLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwoZW5kcG9pbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3RvY29sID0gd2luZG93Py5sb2NhdGlvbj8ucHJvdG9jb2wgfHwgXCJcIjtcbiAgICAgICAgICAgIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbCAhPT0gXCJmaWxlOlwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gU3RyaW5nKHdpbmRvdz8ubG9jYXRpb24/Lm9yaWdpbiB8fCBcIlwiKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChvcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEVuZHBvaW50ID0gZW5kcG9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKGVuZHBvaW50LnN0YXJ0c1dpdGgoXCIvXCIpID8gZW5kcG9pbnQgOiBgLyR7ZW5kcG9pbnR9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke29yaWdpbn0ke25vcm1hbGl6ZWRFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW52RW5kcG9pbnQgPSB0aGlzLnJlc29sdmVFbnZFbmRwb2ludCgpO1xuICAgICAgICBpZiAoZW52RW5kcG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlbnZFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFB1Ymxpc2hFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VFB1Ymxpc2hFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnUHVibGlzaEVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEVtcGxvaWRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkc1BhZ2luYXRlZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWE+KTogUHJvbWlzZTxUUGFnaW5hdGVkRW1wbG9pZHNSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0RW1wbG9pZHNQYWdpbmF0ZWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SW5zdHJ1Y3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnN0cnVjdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RJbnN0cnVjdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVJbnN0cnVjdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlQ29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29uc3RyYWludHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbnN0cmFpbnRzU2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb25zdHJhaW50cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUNvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RTY29wZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFNjb3Blc1NjaGVtYT4pOiBQcm9taXNlPFRTY29wZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdFNjb3BlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTY29wZUJ5VHlwZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTY29wZUJ5VHlwZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdHZXRTY29wZUJ5VHlwZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTY29wZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTY29wZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZVNjb3BlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVNjb3BlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNjb3BlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlU2NvcGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlU2NvcGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlU2NvcGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVTY29wZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRTY29wZUZpbGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwbG9hZEVkaXRvckZpbGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUVXBsb2FkZWRGaWxlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwic2NvcGVcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/LmlkIHx8IHBheWxvYWQuYXR0YWNobWVudElkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlU2NvcGVGaWxlVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzb2x2ZVNjb3BlRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcInNjb3BlXCIsIFwiUmVzb2x2ZVNjb3BlRmlsZVZpZXdcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uZmlsZUlkIHx8IHBheWxvYWQuZmlsZUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVPY2N1cGF0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZU9jY3VwYXRpb25TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0NyZWF0ZU9jY3VwYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlT2NjdXBhdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdVcGRhdGVPY2N1cGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU9jY3VwYXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlT2NjdXBhdGlvblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlT2NjdXBhdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0T2NjdXBhdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE9jY3VwYXRpb25zU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0xpc3RPY2N1cGF0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoRG9tYWluKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hEb21haW5TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1B1Ymxpc2hEb21haW4nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRG9tYWluVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRG9tYWluVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdDcmVhdGVEb21haW5Ub3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEb21haW5Ub3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEb21haW5Ub3BpY1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1VwZGF0ZURvbWFpblRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURvbWFpblRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURvbWFpblRvcGljU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlRG9tYWluVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERvbWFpblRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RG9tYWluVG9waWNzU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdMaXN0RG9tYWluVG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUpvYkRlZmluaXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlSm9iRGVmaW5pdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVKb2JEZWZpbml0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUpvYkRlZmluaXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSm9iRGVmaW5pdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVKb2JEZWZpbml0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RKb2JEZWZpbml0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Sm9iRGVmaW5pdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29tcGV0ZW5jeShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb21wZXRlbmN5U2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3k+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVDb21wZXRlbmN5JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbXBldGVuY3kocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29tcGV0ZW5jeVNjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlQ29tcGV0ZW5jeScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb21wZXRlbmN5KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbXBldGVuY3lTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUNvbXBldGVuY3knLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbXBldGVuY2llcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3lbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb21wZXRlbmNpZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRhc2tUZW1wbGF0ZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0VGFza1RlbXBsYXRlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NyZWF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VERlbGV0ZUFnZW50Rmxvd1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0RlbGV0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEdXBsaWNhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRHVwbGljYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0R1cGxpY2F0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENoYW5nZUFnZW50Zmxvd1Byb2plY3RTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ2hhbmdlQWdlbnRmbG93UHJvamVjdCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ1VwZGF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWdlbnRGbG93cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93c1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0xpc3RBZ2VudEZsb3dzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ3JlYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnVXBkYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnRGVsZXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBZ2VudEZsb3dGb2xkZXJzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnTGlzdEFnZW50Rmxvd0ZvbGRlcnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0UHJpdmF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRQcml2YXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlciB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdHZXRQcml2YXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZUl0ZW1zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVJdGVtc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgY3VycmVudEZvbGRlcjogVERyaXZlSXRlbTsgaXRlbXM6IFREcml2ZUl0ZW1bXSB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZUl0ZW1zXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVUcmVlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RHJpdmVUcmVlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlVHJlZU5vZGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlVHJlZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2VhcmNoRHJpdmVJdGVtcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2VhcmNoRHJpdmVJdGVtc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJTZWFyY2hEcml2ZUl0ZW1zXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEcml2ZUZvbGRlcihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRHJpdmVGb2xkZXJTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkNyZWF0ZURyaXZlRm9sZGVyXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmVwYXJlRHJpdmVVcGxvYWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXBhcmVEcml2ZVVwbG9hZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRQcmVwYXJlZERyaXZlVXBsb2FkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlByZXBhcmVEcml2ZVVwbG9hZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVuYW1lRHJpdmVJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZW5hbWVEcml2ZUl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlJlbmFtZURyaXZlSXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTW92ZURyaXZlSXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTW92ZURyaXZlSXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTW92ZURyaXZlSXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RHJpdmVEZWxldGVJbXBhY3QoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERyaXZlRGVsZXRlSW1wYWN0U2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlRGVsZXRlSW1wYWN0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkdldERyaXZlRGVsZXRlSW1wYWN0XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEcml2ZUl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURyaXZlSXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZDogYm9vbGVhbjsgdG90YWxJdGVtczogbnVtYmVyIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiRGVsZXRlRHJpdmVJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlRHJpdmVEb3dubG9hZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzb2x2ZURyaXZlRG93bmxvYWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcImRyaXZlXCIsIFwiUmVzb2x2ZURyaXZlRG93bmxvYWRcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uaXRlbUlkIHx8IHBheWxvYWQuaXRlbUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVSb290cyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlUm9vdHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVSb290W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlUm9vdHNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuc3VyZURyaXZlUHJvdmlkZXJDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVEcml2ZVByb3ZpZGVyQ3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgY3JlZGVudGlhbElkOiBzdHJpbmc7IGNvbm5lY3RlZDogYm9vbGVhbjsgcHJvdmlkZXI6IFREcml2ZVJvb3RQcm92aWRlciB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkVuc3VyZURyaXZlUHJvdmlkZXJDcmVkZW50aWFsXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVQcm92aWRlckZvbGRlcnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVByb3ZpZGVyRm9sZGVyc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgY3JlZGVudGlhbElkOiBzdHJpbmc7XG4gICAgICAgIGNvbm5lY3RlZDogYm9vbGVhbjtcbiAgICAgICAgY3VycmVudEZvbGRlcjogVERyaXZlUHJvdmlkZXJGb2xkZXI7XG4gICAgICAgIGZvbGRlcnM6IFREcml2ZVByb3ZpZGVyRm9sZGVyW107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVQcm92aWRlckZvbGRlcnNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURyaXZlUm9vdChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRHJpdmVSb290U2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlUm9vdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJDcmVhdGVEcml2ZVJvb3RcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURyaXZlUm9vdChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRHJpdmVSb290U2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkOiBib29sZWFuIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiRGVsZXRlRHJpdmVSb290XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVSb290SXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVJvb3RJdGVtc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgY3VycmVudEZvbGRlcjogVERyaXZlSXRlbTsgaXRlbXM6IFREcml2ZUl0ZW1bXSB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVJvb3RJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlUm9vdFRyZWUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVJvb3RUcmVlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlVHJlZU5vZGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlUm9vdFRyZWVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNlYXJjaERyaXZlUm9vdEl0ZW1zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZWFyY2hEcml2ZVJvb3RJdGVtc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJTZWFyY2hEcml2ZVJvb3RJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRHJpdmVSb290Rm9sZGVyKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEcml2ZVJvb3RGb2xkZXJTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkNyZWF0ZURyaXZlUm9vdEZvbGRlclwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBsb2FkRHJpdmVSb290RmlsZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwbG9hZERyaXZlUm9vdEZpbGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlVwbG9hZERyaXZlUm9vdEZpbGVzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZW5hbWVEcml2ZVJvb3RJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZW5hbWVEcml2ZVJvb3RJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJSZW5hbWVEcml2ZVJvb3RJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBNb3ZlRHJpdmVSb290SXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTW92ZURyaXZlUm9vdEl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIk1vdmVEcml2ZVJvb3RJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREcml2ZVJvb3REZWxldGVJbXBhY3QoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERyaXZlUm9vdERlbGV0ZUltcGFjdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZURlbGV0ZUltcGFjdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJHZXREcml2ZVJvb3REZWxldGVJbXBhY3RcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURyaXZlUm9vdEl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURyaXZlUm9vdEl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IGRlbGV0ZWQ6IGJvb2xlYW47IHRvdGFsSXRlbXM6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkRlbGV0ZURyaXZlUm9vdEl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlYWREcml2ZVJvb3RGaWxlQ29udGVudChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVhZERyaXZlUm9vdEZpbGVDb250ZW50U2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlRmlsZUNvbnRlbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUmVhZERyaXZlUm9vdEZpbGVDb250ZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlRHJpdmVSb290RG93bmxvYWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVEcml2ZVJvb3REb3dubG9hZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiZHJpdmVcIiwgXCJSZXNvbHZlRHJpdmVSb290RG93bmxvYWRcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHJhd1VybCA9IFN0cmluZyhyZXN1bHQ/LnVybCB8fCBcIlwiKTtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFVybCA9IHJhd1VybC5zdGFydHNXaXRoKFwiZGF0YTpcIikgPyByYXdVcmwgOiB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKHJhd1VybCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gcmF3VXJsLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKVxuICAgICAgICAgICAgPyByYXdVcmxcbiAgICAgICAgICAgIDogKHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKG5vcm1hbGl6ZWRVcmwpIHx8IG5vcm1hbGl6ZWRVcmwpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/Lml0ZW1JZCB8fCBwYXlsb2FkLml0ZW1JZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IG5vcm1hbGl6ZWRVcmwsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgbm9ybWFsaXplZFVybCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgbm9ybWFsaXplZFVybCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRXh0ZW5zaW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUV4dGVuc2lvblNjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ0NyZWF0ZUV4dGVuc2lvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVFeHRlbnNpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRXh0ZW5zaW9uU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnVXBkYXRlRXh0ZW5zaW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUV4dGVuc2lvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVFeHRlbnNpb25TY2hlbWE+KTogUHJvbWlzZTxURXh0ZW5zaW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdEZWxldGVFeHRlbnNpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEV4dGVuc2lvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEV4dGVuc2lvbnNTY2hlbWE+KTogUHJvbWlzZTxURXh0ZW5zaW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ0xpc3RFeHRlbnNpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS1Bc3Npc3RhbnQtLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQXNzaXN0YW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRJbnN0cnVjdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRJbnN0cnVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudEluc3RydWN0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50SW5zdHJ1Y3Rpb25zU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudEluc3RydWN0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRDb25zdHJhaW50c1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDb25zdHJhaW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRDb25zdHJhaW50cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50RGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50RGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnREYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50RGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudERhdGFzb3VyY2VzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2VbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudERhdGFzb3VyY2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudFNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudFNraWxsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnRTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50U2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50U2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQXNzaXN0YW50U2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudFNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRTa2lsbHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudFNraWxsc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50U2tpbGxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudENoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudENoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnRDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudENoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnRDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRDaGFubmVscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50Q2hhbm5lbHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50Q2hhbm5lbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLURhdGFzb3VyY2VzLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLXNvdXJjZScsICdDcmVhdGVEYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZURhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtc291cmNlJywgJ1VwZGF0ZURhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1vdXJjZScsICdEZWxldGVEYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REYXRhc291cmNlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RGF0YXNvdXJjZXNTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtc291cmNlJywgJ0xpc3REYXRhc291cmNlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Ta2lsbHMtLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVNraWxsU2NoZW1hPik6IFByb21pc2U8VFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ0NyZWF0ZVNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RTa2lsbHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFNraWxsc1NjaGVtYT4pOiBQcm9taXNlPFRTa2lsbFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ0xpc3RTa2lsbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlU2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlU2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnVXBkYXRlU2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlU2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlU2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnRGVsZXRlU2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQ2hhbm5lbHMtLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnQ3JlYXRlQ2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q2hhbm5lbHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENoYW5uZWxzU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ0xpc3RDaGFubmVscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ1VwZGF0ZUNoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdEZWxldGVDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUtub3dsZWRnZS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlS25vd2xlZGdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUtub3dsZWRnZVNjaGVtYT4pOiBQcm9taXNlPFRLbm93bGVkZ2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ0NyZWF0ZUtub3dsZWRnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0S25vd2xlZGdlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0S25vd2xlZGdlc1NjaGVtYT4pOiBQcm9taXNlPFRLbm93bGVkZ2VbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnTGlzdEtub3dsZWRnZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlS25vd2xlZGdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUtub3dsZWRnZVNjaGVtYT4pOiBQcm9taXNlPFRLbm93bGVkZ2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ1VwZGF0ZUtub3dsZWRnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVLbm93bGVkZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlS25vd2xlZGdlU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnRGVsZXRlS25vd2xlZGdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tV09SS0VSLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdvcmtlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXb3JrZXJTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdDcmVhdGVXb3JrZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV29ya2VyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdvcmtlclNjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ1VwZGF0ZVdvcmtlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVXb3JrZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV29ya2VyU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnRGVsZXRlV29ya2VyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFB1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlU2NoZW1hPik6IFByb21pc2U8VFB1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ21hcmtldC1zdG9yZScsICdQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V29ya2VycyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V29ya2Vyc1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnTGlzdFdvcmtlcnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV29ya2VyVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV29ya2VyVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0NyZWF0ZVdvcmtlclRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdvcmtlclRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdvcmtlclRvcGljU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdVcGRhdGVXb3JrZXJUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVXb3JrZXJUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXb3JrZXJUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnRGVsZXRlV29ya2VyVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdvcmtlclRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V29ya2VyVG9waWNzU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0xpc3RXb3JrZXJUb3BpY3MnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdE1hcmtldFN0b3JlSXRlbXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE1hcmtldFN0b3JlSXRlbXNTY2hlbWE+KTogUHJvbWlzZTxUTWFya2V0U3RvcmVJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnbWFya2V0LXN0b3JlJywgJ0xpc3RNYXJrZXRTdG9yZUl0ZW1zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldE1hcmtldFN0b3JlSXRlbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNYXJrZXRTdG9yZUl0ZW1TY2hlbWE+KTogUHJvbWlzZTxUTWFya2V0U3RvcmVJdGVtIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdtYXJrZXQtc3RvcmUnLCAnR2V0TWFya2V0U3RvcmVJdGVtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLVRvcGljcy0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0b3BpYycsICdDcmVhdGVUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0b3BpYycsICdVcGRhdGVUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0b3BpYycsICdEZWxldGVUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VG9waWNzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RUb3BpY3NTY2hlbWE+KTogUHJvbWlzZTxUVG9waWNbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0b3BpYycsICdMaXN0VG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEVuaGFuY2VUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbmhhbmNlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURW5oYW5jZVRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0VuaGFuY2VUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlSW5wdXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ0NyZWF0ZUlucHV0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUlucHV0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUlucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdVcGRhdGVJbnB1dCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVJbnB1dChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnRGVsZXRlSW5wdXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdElucHV0cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0SW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnTGlzdElucHV0cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVUZWFtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRlYW1TY2hlbWE+KTogUHJvbWlzZTxUVGVhbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ0NyZWF0ZVRlYW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRlYW1zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RUZWFtc1NjaGVtYT4pOiBQcm9taXNlPFRUZWFtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdMaXN0VGVhbXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVGVhbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVUZWFtU2NoZW1hPik6IFByb21pc2U8VFRlYW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdVcGRhdGVUZWFtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVRlYW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVGVhbVNjaGVtYT4pOiBQcm9taXNlPFRUZWFtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnRGVsZXRlVGVhbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlQ2hhdChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlQ2hhdFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZUNoYXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ2hhdEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ2hhdEJ5SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0RlbGV0ZUNoYXRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldENoYXRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldENoYXRCeUlkU2NoZW1hPik6IFByb21pc2U8VENoYXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRDaGF0QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDaGF0c0J5VXNlcklkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldENoYXRzQnlVc2VySWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0Q2hhdHNCeVVzZXJJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlTWVzc2FnZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZU1lc3NhZ2VzU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVNZXNzYWdlcycsIHBheWxvYWQpO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIEdldE1lc3NhZ2VzQnlDaGF0SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZXNCeUNoYXRJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRNZXNzYWdlc0J5Q2hhdElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWVzc2FnZUJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZUJ5SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0TWVzc2FnZUJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVm90ZU1lc3NhZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVm90ZU1lc3NhZ2VTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnVm90ZU1lc3NhZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Vm90ZXNCeUNoYXRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRWb3Rlc0J5Q2hhdElkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldFZvdGVzQnlDaGF0SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXAnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZVN1Z2dlc3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVTdWdnZXN0aW9uc1NjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlU3VnZ2VzdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0U3VnZ2VzdGlvbnNCeURvY3VtZW50SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXAnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWRTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1VwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWVzc2FnZUNvdW50QnlVc2VySWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWE+KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRNZXNzYWdlQ291bnRCeVVzZXJJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTdHJlYW1JZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTdHJlYW1JZFNjaGVtYT4pOiBQcm9taXNlPFRTdHJlYW1JZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0NyZWF0ZVN0cmVhbUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFN0cmVhbUlkc0J5Q2hhdElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hPik6IFByb21pc2U8VFN0cmVhbUlkW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRTdHJlYW1JZHNCeUNoYXRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlRG9jdW1lbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZURvY3VtZW50U2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVEb2N1bWVudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREb2N1bWVudEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RG9jdW1lbnRCeUlkU2NoZW1hPik6IFByb21pc2U8VERvY3VtZW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0RG9jdW1lbnRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERvY3VtZW50c0J5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYT4pOiBQcm9taXNlPFREb2N1bWVudFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0RG9jdW1lbnRzQnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29tbWFuZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb21tYW5kU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmQ+IHtcbiAgICAgICAgLyogIGRlYnVnZ2VyXG4gICAgICAgICAgaWYgKCB0eXBlb2YgcGF5bG9hZC5pbnB1dHMgPT09ICdvYmplY3QnICkge1xuICAgICAgICAgICAgICBwYXlsb2FkLmlucHV0cyA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQuaW5wdXRzKSBhcyBhbnk7XG4gICAgICAgICAgfSAqL1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ0NyZWF0ZUNvbW1hbmQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbW1hbmRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb21tYW5kc1NjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdMaXN0Q29tbWFuZHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29tbWFuZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb21tYW5kU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdVcGRhdGVDb21tYW5kJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbW1hbmQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29tbWFuZFNjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnRGVsZXRlQ29tbWFuZCcsIHBheWxvYWQpO1xuICAgIH1cblxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS1Db2xsZWN0aW9ucy0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlRGF0YU1vZGVsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlRGF0YU1vZGVsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlRGF0YU1vZGVsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERhdGFNb2RlbEJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERhdGFNb2RlbEJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXREYXRhTW9kZWxCeUlkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEV4cG9ydERhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRXhwb3J0RGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRXhwb3J0RGF0YU1vZGVsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEltcG9ydERhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgSW1wb3J0RGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiSW1wb3J0RGF0YU1vZGVsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REYXRhTW9kZWxzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RGF0YU1vZGVsc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3REYXRhTW9kZWxzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc3RvcmVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc3RvcmVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZXN0b3JlRGF0YU1vZGVsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEhhcmREZWxldGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEhhcmREZWxldGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJIYXJkRGVsZXRlRGF0YU1vZGVsXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbGxlY3Rpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25zXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldENvbGxlY3Rpb25CeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDb2xsZWN0aW9uQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldENvbGxlY3Rpb25CeUlkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBsb2FkQ29sbGVjdGlvbkZpbGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwbG9hZENvbGxlY3Rpb25GaWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFVwbG9hZGVkRmlsZT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcImNvbGxlY3Rpb25cIiwgXCJVcGxvYWRDb2xsZWN0aW9uRmlsZVwiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5pdGVtSWQgfHwgcmVzdWx0Py5maWxlSWQgfHwgcmVzdWx0Py5pZCB8fCBwYXlsb2FkLml0ZW1JZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZUNvbGxlY3Rpb25GaWxlVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzb2x2ZUNvbGxlY3Rpb25GaWxlVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiY29sbGVjdGlvblwiLCBcIlJlc29sdmVDb2xsZWN0aW9uRmlsZVZpZXdcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uZmlsZUlkIHx8IHJlc3VsdD8uaXRlbUlkIHx8IHBheWxvYWQuaXRlbUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRSZWNvcmRCeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRSZWNvcmRCeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0UmVjb3JkQnlJZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIExpc3RSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgcmVjb3JkczogYW55W107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzdG9yZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJlc3RvcmVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBzZXJ0UmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcHNlcnRSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcHNlcnRSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQnVsa0NyZWF0ZVJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEJ1bGtDcmVhdGVSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQnVsa0NyZWF0ZVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVBaXJ0YWJsZUltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVBaXJ0YWJsZUltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld0FpcnRhYmxlSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3QWlydGFibGVJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuQWlydGFibGVJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkFpcnRhYmxlSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuQWlydGFibGVJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUxpbmVhckltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdExpbmVhckltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RMaW5lYXJJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdExpbmVhckltcG9ydFNvdXJjZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld0xpbmVhckltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0xpbmVhckltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdMaW5lYXJJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuTGluZWFySW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5MaW5lYXJJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5MaW5lYXJJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlR21haWxJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEdtYWlsSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEdtYWlsSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RHbWFpbEltcG9ydFNvdXJjZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RHaXRodWJJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld0dtYWlsSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3R21haWxJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3R21haWxJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld0NzdkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0NzdkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdDc3ZJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld0dpdGh1YkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdHaXRodWJJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuR21haWxJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkdtYWlsSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuR21haWxJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuQ3N2SW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5Dc3ZJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5Dc3ZJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuR2l0aHViSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5HaXRodWJJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5HaXRodWJJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZU5vdGlvbkltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3ROb3Rpb25JbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld05vdGlvbkltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld05vdGlvbkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdOb3Rpb25JbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuTm90aW9uSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5Ob3Rpb25JbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5Ob3Rpb25JbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEppcmFJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0SmlyYUltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0SmlyYUltcG9ydFNvdXJjZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld0ppcmFJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdKaXJhSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0ppcmFJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuSmlyYUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuSmlyYUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkppcmFJbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZVRyZWxsb0ltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENvbm5lY3RUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RUcmVsbG9JbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld1RyZWxsb0ltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld1RyZWxsb0ltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdUcmVsbG9JbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUnVuVHJlbGxvSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5UcmVsbG9JbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5UcmVsbG9JbXBvcnRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQnVsa1VwZGF0ZVJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEJ1bGtVcGRhdGVSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQnVsa1VwZGF0ZVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQnVsa0RlbGV0ZVJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEJ1bGtEZWxldGVSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQnVsa0RlbGV0ZVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIER1cGxpY2F0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRHVwbGljYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRHVwbGljYXRlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFF1ZXJ5UmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUXVlcnlSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICByZWNvcmRzOiBhbnlbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUXVlcnlSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNlYXJjaFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNlYXJjaFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHJlY29yZHM6IGFueVtdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJTZWFyY2hSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENvdW50UmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ291bnRSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ291bnRSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdyb3VwUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR3JvdXBSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHcm91cFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQWdncmVnYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQWdncmVnYXRlUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQWdncmVnYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEaXN0aW5jdEZpZWxkVmFsdWVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEaXN0aW5jdEZpZWxkVmFsdWVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEaXN0aW5jdEZpZWxkVmFsdWVzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25GaWVsZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvbkZpZWxkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25GaWVsZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVXBkYXRlQ29sbGVjdGlvbkZpZWxkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25GaWVsZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRGVsZXRlQ29sbGVjdGlvbkZpZWxkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvbkF1dG9tYXRpb25SdWxlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25WaWV3cyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25WaWV3c1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlld1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25WaWV3c1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvblZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblZpZXc+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uVmlld1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb2xsZWN0aW9uVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvblZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblZpZXc+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uVmlld1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvblZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uVmlld1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvbkJ1dHRvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uQnV0dG9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQnV0dG9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvbkJ1dHRvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uQnV0dG9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvbkJ1dHRvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uQnV0dG9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uQnV0dG9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFeGVjdXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEV4ZWN1dGVDb2xsZWN0aW9uQWlGaWVsZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uUmVsYXRpb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvblJlbGF0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uUmVsYXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uUmVsYXRpb25zXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25SZWxhdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uUmVsYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uUmVsYXRpb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlbGF0aW9uQ2FuZGlkYXRlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgZmllbGRJZDogc3RyaW5nOyBpdGVtczogVFJlbGF0aW9uUmVjb3JkT3B0aW9uW10gfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RSZWxhdGlvbkNhbmRpZGF0ZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0UmVjb3JkUmVsYXRpb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRSZWNvcmRSZWxhdGlvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHJlY29yZElkOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlczogUmVjb3JkPHN0cmluZywgVFJlbGF0aW9uUmVjb3JkT3B0aW9uW10gfCBUUmVsYXRpb25SZWNvcmRPcHRpb24gfCBudWxsPjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0UmVjb3JkUmVsYXRpb25zXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZW9yZGVyQ29sbGVjdGlvbkZpZWxkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJlb3JkZXJDb2xsZWN0aW9uRmllbGRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldENvbGxlY3Rpb25TY2hlbWEoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldENvbGxlY3Rpb25TY2hlbWFTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRDb2xsZWN0aW9uU2NoZW1hXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFZhbGlkYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBWYWxpZGF0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlZhbGlkYXRlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3VmFsaWRhdGlvbkVycm9yc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdWYWxpZGF0aW9uRXJyb3JzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENoZWNrUmVjb3JkUGVybWlzc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ2hlY2tSZWNvcmRQZXJtaXNzaW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RSZWNvcmRQZXJtaXNzaW9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFJlY29yZFBlcm1pc3Npb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0UmVjb3JkUGVybWlzc2lvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR3JhbnRSZWNvcmRQZXJtaXNzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHcmFudFJlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHcmFudFJlY29yZFBlcm1pc3Npb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBSZXZva2VSZWNvcmRQZXJtaXNzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXZva2VSZWNvcmRQZXJtaXNzaW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmV2b2tlUmVjb3JkUGVybWlzc2lvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8tLS13aWtpLS0tLS0tLS1cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJ3aWtpXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZVdpa2lQYWdlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlVwZGF0ZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV2lraVBhZ2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJEZWxldGVXaWtpUGFnZVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdpa2lQYWdlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdpa2lQYWdlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lQYWdlc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2V0V2lraVBhZ2VVc2VyU3RhdGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNldFdpa2lQYWdlVXNlclN0YXRlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiU2V0V2lraVBhZ2VVc2VyU3RhdGVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZFdpa2lGaWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGxvYWRFZGl0b3JGaWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFVwbG9hZGVkRmlsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlVwbG9hZEZpbGVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVXaWtpRmlsZVZpZXcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVXaWtpRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcIndpa2lcIiwgXCJSZXNvbHZlV2lraUZpbGVWaWV3XCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCBwYXlsb2FkLmZpbGVJZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraUNvbW1lbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lDb21tZW50U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lDb21tZW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiQ3JlYXRlV2lraUNvbW1lbnRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpQ29tbWVudD4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkUGF5bG9hZCA9IHtcbiAgICAgICAgICAgIC4uLnBheWxvYWQsXG4gICAgICAgICAgICAuLi4odHlwZW9mIHBheWxvYWQucmVzb2x2ZWQgPT09IFwiYm9vbGVhblwiXG4gICAgICAgICAgICAgICAgPyB7IHJlc29sdmVkOiBwYXlsb2FkLnJlc29sdmVkID8gXCJ0cnVlXCIgOiBcImZhbHNlXCIgfVxuICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICB9IGFzIGFueTtcblxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIlVwZGF0ZVdpa2lDb21tZW50XCIsIG5vcm1hbGl6ZWRQYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV2lraUNvbW1lbnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdpa2lDb21tZW50U2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkQXQ6IHN0cmluZyB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiRGVsZXRlV2lraUNvbW1lbnRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXaWtpQ29tbWVudHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXaWtpQ29tbWVudHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUNvbW1lbnRQYWdpbmF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiTGlzdFdpa2lDb21tZW50c1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzdG9yZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlV2lraVBhZ2VTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJSZXN0b3JlV2lraVBhZ2VcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lQYWdlQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0V2lraVBhZ2VCeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVBhZ2VCeUlkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpUGFnZUJ5U2x1ZyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0V2lraVBhZ2VCeVNsdWdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUGFnZUJ5U2x1Z1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVRyZWUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lUcmVlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVRyZWVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICogV2lraSBSZXZpc2lvblxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lSZXZpc2lvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV2lraVJldmlzaW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiQ3JlYXRlV2lraVJldmlzaW9uXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRMYXRlc3RXaWtpUmV2aXNpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldExhdGVzdFdpa2lSZXZpc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldExhdGVzdFdpa2lSZXZpc2lvblwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVJldmlzaW9uQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0V2lraVJldmlzaW9uQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lSZXZpc2lvbkJ5SWRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDaGF0SGlzdG9yeShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENoYXRIaXN0b3J5U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0KFwiL2NoYXQvaGlzdG9yeVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbn1cbiJdfQ==
|