payload-auth 1.2.0 → 1.3.1
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/better-auth/plugin/constants.d.ts +2 -0
- package/dist/better-auth/plugin/constants.d.ts.map +1 -1
- package/dist/better-auth/plugin/constants.js +30 -1
- package/dist/better-auth/plugin/index.d.ts +5 -5
- package/dist/better-auth/plugin/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/index.js +14 -10
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +17 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +43 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +6 -1
- package/dist/better-auth/plugin/lib/set-login-methods.d.ts +5 -0
- package/dist/better-auth/plugin/lib/set-login-methods.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/set-login-methods.js +16 -0
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +2 -3
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +2 -2
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +2 -3
- package/dist/better-auth/plugin/payload/components/admin-invite-button/index.scss +5 -3
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts +1 -2
- package/dist/better-auth/plugin/payload/components/logout-button.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/components/logout-button.js +2 -3
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts +14 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js +142 -0
- package/dist/better-auth/plugin/payload/components/{admin-social-provider-buttons → social-provider-buttons}/index.scss +1 -1
- package/dist/better-auth/plugin/payload/exports/client.d.ts +4 -4
- package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/client.js +5 -5
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +2 -3
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +37 -54
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +3 -4
- package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +3 -4
- package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js +51 -85
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +0 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/index.js +44 -87
- package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/forgot-password/client.js +5 -7
- package/dist/better-auth/plugin/types.d.ts +23 -14
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/shared/form/ui/index.d.ts +2 -2
- package/dist/shared/form/ui/index.d.ts.map +1 -1
- package/dist/shared/form/ui/index.js +4 -7
- package/dist/shared/form/ui/index.scss +15 -0
- package/dist/shared/form/validation.d.ts +103 -0
- package/dist/shared/form/validation.d.ts.map +1 -0
- package/dist/shared/form/validation.js +108 -0
- package/package.json +1 -1
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts +0 -14
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.d.ts.map +0 -1
- package/dist/better-auth/plugin/payload/components/admin-social-provider-buttons/index.js +0 -109
- package/dist/better-auth/plugin/payload/views/admin-signup/index.scss +0 -29
|
@@ -20,14 +20,16 @@
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
@layer payload-default {
|
|
23
|
-
// .collection-list__sub-header:has(.admin-invite-button) {
|
|
24
|
-
// flex-basis: auto !important;
|
|
25
|
-
// }
|
|
26
23
|
.list-header:has(.collection-list__sub-header .admin-invite-button) {
|
|
27
24
|
display: flex;
|
|
28
25
|
align-items: center;
|
|
29
26
|
}
|
|
30
27
|
|
|
28
|
+
.list-header:has(.collection-list__sub-header .admin-invite-button) .list-selection {
|
|
29
|
+
order: 2;
|
|
30
|
+
margin-left: 0;
|
|
31
|
+
}
|
|
32
|
+
|
|
31
33
|
.list-header:has(.collection-list__sub-header .admin-invite-button) .collection-list__sub-header {
|
|
32
34
|
margin-left: auto;
|
|
33
35
|
display: flex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout-button.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/components/logout-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,
|
|
1
|
+
{"version":3,"file":"logout-button.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/components/logout-button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAwBA,CAAA"}
|
|
@@ -4,7 +4,7 @@ import React from "react";
|
|
|
4
4
|
import { formatAdminURL } from "payload/shared";
|
|
5
5
|
import { LogOutIcon, useConfig, useTranslation } from "@payloadcms/ui";
|
|
6
6
|
const baseClass = 'nav';
|
|
7
|
-
const LogoutButton = ({ tabIndex = 0 })=>{
|
|
7
|
+
export const LogoutButton = ({ tabIndex = 0 })=>{
|
|
8
8
|
const { t } = useTranslation();
|
|
9
9
|
const { config } = useConfig();
|
|
10
10
|
const { admin: { routes: { logout: logoutRoute } }, routes: { admin: adminRoute } } = config;
|
|
@@ -20,6 +20,5 @@ const LogoutButton = ({ tabIndex = 0 })=>{
|
|
|
20
20
|
children: /*#__PURE__*/ _jsx(LogOutIcon, {})
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
|
-
export default LogoutButton;
|
|
24
23
|
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL2xvZ291dC1idXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBmb3JtYXRBZG1pblVSTCB9IGZyb20gJ3BheWxvYWQvc2hhcmVkJ1xuaW1wb3J0IHsgTG9nT3V0SWNvbiwgdXNlQ29uZmlnLCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ0BwYXlsb2FkY21zL3VpJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnbmF2J1xuXG5leHBvcnQgY29uc3QgTG9nb3V0QnV0dG9uOiBSZWFjdC5GQzx7XG4gIHRhYkluZGV4PzogbnVtYmVyXG59PiA9ICh7IHRhYkluZGV4ID0gMCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGNvbmZpZyB9ID0gdXNlQ29uZmlnKClcblxuICBjb25zdCB7XG4gICAgYWRtaW46IHtcbiAgICAgIHJvdXRlczogeyBsb2dvdXQ6IGxvZ291dFJvdXRlIH1cbiAgICB9LFxuICAgIHJvdXRlczogeyBhZG1pbjogYWRtaW5Sb3V0ZSB9XG4gIH0gPSBjb25maWdcblxuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICBhcmlhLWxhYmVsPXt0KCdhdXRoZW50aWNhdGlvbjpsb2dPdXQnKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fbG9nLW91dGB9XG4gICAgICBocmVmPXtmb3JtYXRBZG1pblVSTCh7XG4gICAgICAgIGFkbWluUm91dGUsXG4gICAgICAgIHBhdGg6IGxvZ291dFJvdXRlXG4gICAgICB9KX1cbiAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgIHRpdGxlPXt0KCdhdXRoZW50aWNhdGlvbjpsb2dPdXQnKX0+XG4gICAgICA8TG9nT3V0SWNvbiAvPlxuICAgIDwvYT5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiZm9ybWF0QWRtaW5VUkwiLCJMb2dPdXRJY29uIiwidXNlQ29uZmlnIiwidXNlVHJhbnNsYXRpb24iLCJiYXNlQ2xhc3MiLCJMb2dvdXRCdXR0b24iLCJ0YWJJbmRleCIsInQiLCJjb25maWciLCJhZG1pbiIsInJvdXRlcyIsImxvZ291dCIsImxvZ291dFJvdXRlIiwiYWRtaW5Sb3V0ZSIsImEiLCJhcmlhLWxhYmVsIiwiY2xhc3NOYW1lIiwiaHJlZiIsInBhdGgiLCJ0aXRsZSJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsT0FBT0EsV0FBVyxRQUFPO0FBQ3pCLFNBQVNDLGNBQWMsUUFBUSxpQkFBZ0I7QUFDL0MsU0FBU0MsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLGNBQWMsUUFBUSxpQkFBZ0I7QUFFdEUsTUFBTUMsWUFBWTtBQUVsQixPQUFPLE1BQU1DLGVBRVIsQ0FBQyxFQUFFQyxXQUFXLENBQUMsRUFBRTtJQUNwQixNQUFNLEVBQUVDLENBQUMsRUFBRSxHQUFHSjtJQUNkLE1BQU0sRUFBRUssTUFBTSxFQUFFLEdBQUdOO0lBRW5CLE1BQU0sRUFDSk8sT0FBTyxFQUNMQyxRQUFRLEVBQUVDLFFBQVFDLFdBQVcsRUFBRSxFQUNoQyxFQUNERixRQUFRLEVBQUVELE9BQU9JLFVBQVUsRUFBRSxFQUM5QixHQUFHTDtJQUVKLHFCQUNFLEtBQUNNO1FBQ0NDLGNBQVlSLEVBQUU7UUFDZFMsV0FBVyxHQUFHWixVQUFVLFNBQVMsQ0FBQztRQUNsQ2EsTUFBTWpCLGVBQWU7WUFDbkJhO1lBQ0FLLE1BQU1OO1FBQ1I7UUFDQU4sVUFBVUE7UUFDVmEsT0FBT1osRUFBRTtrQkFDVCxjQUFBLEtBQUNOOztBQUdQLEVBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LoginMethod } from '@/better-auth/plugin/types';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import './index.scss';
|
|
4
|
+
type AdminSocialProviderButtonsProps = {
|
|
5
|
+
isSignup: boolean;
|
|
6
|
+
loginMethods: LoginMethod[];
|
|
7
|
+
setLoading: (loading: boolean) => void;
|
|
8
|
+
redirectUrl?: string;
|
|
9
|
+
newUserCallbackURL?: string;
|
|
10
|
+
adminInviteToken?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare const AdminSocialProviderButtons: React.FC<AdminSocialProviderButtonsProps>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/components/social-provider-buttons/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,4BAA4B,CAAA;AAO7E,OAAO,KAAkB,MAAM,OAAO,CAAA;AACtC,OAAO,cAAc,CAAA;AAErB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAID,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA6HhF,CAAA"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { socialProviders } from "../../../constants";
|
|
4
|
+
import { Icons } from "../../../../../shared/components/icons";
|
|
5
|
+
import { Button, toast } from "@payloadcms/ui";
|
|
6
|
+
import { passkeyClient } from "better-auth/client/plugins";
|
|
7
|
+
import { createAuthClient } from "better-auth/react";
|
|
8
|
+
import { Key } from "lucide-react";
|
|
9
|
+
import { useRouter } from "next/navigation";
|
|
10
|
+
import React, { useMemo } from "react";
|
|
11
|
+
import "./index.scss";
|
|
12
|
+
const baseClass = 'admin-social-provider-buttons';
|
|
13
|
+
export const AdminSocialProviderButtons = ({ isSignup, loginMethods, setLoading, redirectUrl, newUserCallbackURL, adminInviteToken })=>{
|
|
14
|
+
const router = useRouter();
|
|
15
|
+
const authClient = useMemo(()=>createAuthClient({
|
|
16
|
+
plugins: [
|
|
17
|
+
passkeyClient()
|
|
18
|
+
]
|
|
19
|
+
}), []);
|
|
20
|
+
const loginMethodCount = loginMethods.filter((method)=>method !== 'emailPassword', 'passkey').length;
|
|
21
|
+
if (loginMethodCount === 0) return null;
|
|
22
|
+
const showIconOnly = loginMethodCount >= 3;
|
|
23
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
24
|
+
children: [
|
|
25
|
+
loginMethods.includes('emailPassword') && /*#__PURE__*/ _jsx("div", {
|
|
26
|
+
style: {
|
|
27
|
+
textAlign: 'center',
|
|
28
|
+
fontSize: '0.875rem',
|
|
29
|
+
textTransform: 'uppercase',
|
|
30
|
+
marginTop: '-.5rem',
|
|
31
|
+
color: 'var(--theme-elevation-450)',
|
|
32
|
+
marginBottom: '1.5rem'
|
|
33
|
+
},
|
|
34
|
+
children: /*#__PURE__*/ _jsxs("span", {
|
|
35
|
+
children: [
|
|
36
|
+
"Or ",
|
|
37
|
+
isSignup ? 'sign up' : 'login',
|
|
38
|
+
" with"
|
|
39
|
+
]
|
|
40
|
+
})
|
|
41
|
+
}),
|
|
42
|
+
/*#__PURE__*/ _jsx("div", {
|
|
43
|
+
className: `${baseClass} ${baseClass}--count-${showIconOnly ? 'many' : loginMethodCount}`,
|
|
44
|
+
children: loginMethods.map((loginMethod)=>{
|
|
45
|
+
const providerName = loginMethod.charAt(0).toUpperCase() + loginMethod.slice(1);
|
|
46
|
+
const isSocialProvider = socialProviders.includes(loginMethod);
|
|
47
|
+
// ---- Passkey ----
|
|
48
|
+
if (loginMethod === 'passkey') {
|
|
49
|
+
if (isSignup) return null;
|
|
50
|
+
const handlePasskeyClick = async ()=>{
|
|
51
|
+
setLoading(true);
|
|
52
|
+
try {
|
|
53
|
+
await authClient.signIn.passkey({
|
|
54
|
+
fetchOptions: {
|
|
55
|
+
onSuccess () {
|
|
56
|
+
if (router && redirectUrl) router.push(redirectUrl);
|
|
57
|
+
},
|
|
58
|
+
onError (context) {
|
|
59
|
+
toast.error(context.error.message || 'Failed to sign in with passkey');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
} catch (error) {
|
|
64
|
+
toast.error(error?.message || 'Failed to sign in with passkey');
|
|
65
|
+
} finally{
|
|
66
|
+
setLoading(false);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
return /*#__PURE__*/ _jsxs(Button, {
|
|
70
|
+
type: "button",
|
|
71
|
+
size: "large",
|
|
72
|
+
className: `${baseClass}__button provider--passkey`,
|
|
73
|
+
onClick: handlePasskeyClick,
|
|
74
|
+
icon: showIconOnly ? /*#__PURE__*/ _jsx(Key, {
|
|
75
|
+
className: `${baseClass}__icon`
|
|
76
|
+
}) : undefined,
|
|
77
|
+
tooltip: showIconOnly ? `Sign in with ${providerName}` : undefined,
|
|
78
|
+
children: [
|
|
79
|
+
!showIconOnly && /*#__PURE__*/ _jsx(Key, {
|
|
80
|
+
className: `${baseClass}__icon`
|
|
81
|
+
}),
|
|
82
|
+
!showIconOnly && /*#__PURE__*/ _jsx("span", {
|
|
83
|
+
children: providerName
|
|
84
|
+
})
|
|
85
|
+
]
|
|
86
|
+
}, loginMethod);
|
|
87
|
+
}
|
|
88
|
+
// ---- Social providers ----
|
|
89
|
+
if (isSocialProvider) {
|
|
90
|
+
const Icon = Icons[loginMethod] ?? null;
|
|
91
|
+
const handleSocialClick = async ()=>{
|
|
92
|
+
setLoading(true);
|
|
93
|
+
try {
|
|
94
|
+
const { error } = await authClient.signIn.social({
|
|
95
|
+
provider: loginMethod,
|
|
96
|
+
fetchOptions: {
|
|
97
|
+
query: {
|
|
98
|
+
...isSignup && {
|
|
99
|
+
adminInviteToken
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
errorCallbackURL: window.location.href,
|
|
104
|
+
callbackURL: redirectUrl,
|
|
105
|
+
newUserCallbackURL,
|
|
106
|
+
...isSignup && {
|
|
107
|
+
requestSignUp: true
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
if (error) {
|
|
111
|
+
toast.error(error.message);
|
|
112
|
+
}
|
|
113
|
+
} catch (error) {
|
|
114
|
+
toast.error(`Failed to sign in with ${providerName}`);
|
|
115
|
+
} finally{
|
|
116
|
+
setLoading(false);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
return /*#__PURE__*/ _jsx(Button, {
|
|
120
|
+
type: "button",
|
|
121
|
+
size: "large",
|
|
122
|
+
className: `${baseClass}__button provider--${loginMethod}`,
|
|
123
|
+
onClick: handleSocialClick,
|
|
124
|
+
iconPosition: "left",
|
|
125
|
+
icon: /*#__PURE__*/ _jsx(Icon, {
|
|
126
|
+
className: `${baseClass}__icon`
|
|
127
|
+
}),
|
|
128
|
+
tooltip: showIconOnly ? `Sign in with ${providerName}` : undefined,
|
|
129
|
+
children: !showIconOnly && /*#__PURE__*/ _jsx("span", {
|
|
130
|
+
children: providerName
|
|
131
|
+
})
|
|
132
|
+
}, loginMethod);
|
|
133
|
+
}
|
|
134
|
+
// Unknown provider — render nothing
|
|
135
|
+
return null;
|
|
136
|
+
})
|
|
137
|
+
})
|
|
138
|
+
]
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL3NvY2lhbC1wcm92aWRlci1idXR0b25zL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgc29jaWFsUHJvdmlkZXJzIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBMb2dpbk1ldGhvZCwgU29jaWFsUHJvdmlkZXIgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi90eXBlcydcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnQC9zaGFyZWQvY29tcG9uZW50cy9pY29ucydcbmltcG9ydCB7IEJ1dHRvbiwgdG9hc3QgfSBmcm9tICdAcGF5bG9hZGNtcy91aSdcbmltcG9ydCB7IHBhc3NrZXlDbGllbnQgfSBmcm9tICdiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2lucydcbmltcG9ydCB7IGNyZWF0ZUF1dGhDbGllbnQgfSBmcm9tICdiZXR0ZXItYXV0aC9yZWFjdCdcbmltcG9ydCB7IEtleSB9IGZyb20gJ2x1Y2lkZS1yZWFjdCdcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxudHlwZSBBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9uc1Byb3BzID0ge1xuICBpc1NpZ251cDogYm9vbGVhblxuICBsb2dpbk1ldGhvZHM6IExvZ2luTWV0aG9kW11cbiAgc2V0TG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWRcbiAgcmVkaXJlY3RVcmw/OiBzdHJpbmdcbiAgbmV3VXNlckNhbGxiYWNrVVJMPzogc3RyaW5nXG4gIGFkbWluSW52aXRlVG9rZW4/OiBzdHJpbmdcbn1cblxuY29uc3QgYmFzZUNsYXNzID0gJ2FkbWluLXNvY2lhbC1wcm92aWRlci1idXR0b25zJ1xuXG5leHBvcnQgY29uc3QgQWRtaW5Tb2NpYWxQcm92aWRlckJ1dHRvbnM6IFJlYWN0LkZDPEFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zUHJvcHM+ID0gKHtcbiAgaXNTaWdudXAsXG4gIGxvZ2luTWV0aG9kcyxcbiAgc2V0TG9hZGluZyxcbiAgcmVkaXJlY3RVcmwsXG4gIG5ld1VzZXJDYWxsYmFja1VSTCxcbiAgYWRtaW5JbnZpdGVUb2tlblxufSkgPT4ge1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKVxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgcGx1Z2luczogW3Bhc3NrZXlDbGllbnQoKV0gfSksIFtdKVxuICBcbiAgY29uc3QgbG9naW5NZXRob2RDb3VudCA9IGxvZ2luTWV0aG9kcy5maWx0ZXIobWV0aG9kID0+IG1ldGhvZCAhPT0gJ2VtYWlsUGFzc3dvcmQnLCAncGFzc2tleScpLmxlbmd0aFxuICBpZiAobG9naW5NZXRob2RDb3VudCA9PT0gMCkgcmV0dXJuIG51bGxcblxuICBjb25zdCBzaG93SWNvbk9ubHkgPSBsb2dpbk1ldGhvZENvdW50ID49IDNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7bG9naW5NZXRob2RzLmluY2x1ZGVzKCdlbWFpbFBhc3N3b3JkJykgJiYgKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICBmb250U2l6ZTogJzAuODc1cmVtJyxcbiAgICAgICAgICAgIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnLFxuICAgICAgICAgICAgbWFyZ2luVG9wOiAnLS41cmVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tdGhlbWUtZWxldmF0aW9uLTQ1MCknLFxuICAgICAgICAgIG1hcmdpbkJvdHRvbTogJzEuNXJlbSdcbiAgICAgICAgfX0+XG4gICAgICAgICAgPHNwYW4+T3Ige2lzU2lnbnVwID8gJ3NpZ24gdXAnIDogJ2xvZ2luJ30gd2l0aDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc30gJHtiYXNlQ2xhc3N9LS1jb3VudC0ke3Nob3dJY29uT25seSA/ICdtYW55JyA6IGxvZ2luTWV0aG9kQ291bnR9YH0+XG4gICAgICAgIHtsb2dpbk1ldGhvZHMubWFwKChsb2dpbk1ldGhvZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb3ZpZGVyTmFtZSA9IGxvZ2luTWV0aG9kLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbG9naW5NZXRob2Quc2xpY2UoMSlcbiAgICAgICAgICBjb25zdCBpc1NvY2lhbFByb3ZpZGVyID0gc29jaWFsUHJvdmlkZXJzLmluY2x1ZGVzKGxvZ2luTWV0aG9kIGFzIFNvY2lhbFByb3ZpZGVyKVxuXG4gICAgICAgICAgLy8gLS0tLSBQYXNza2V5IC0tLS1cbiAgICAgICAgICBpZiAobG9naW5NZXRob2QgPT09ICdwYXNza2V5Jykge1xuICAgICAgICAgICAgaWYgKGlzU2lnbnVwKSByZXR1cm4gbnVsbFxuICAgICAgICAgICAgY29uc3QgaGFuZGxlUGFzc2tleUNsaWNrID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgYXV0aENsaWVudC5zaWduSW4ucGFzc2tleSh7XG4gICAgICAgICAgICAgICAgICBmZXRjaE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzKCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZXIgJiYgcmVkaXJlY3RVcmwpIHJvdXRlci5wdXNoKHJlZGlyZWN0VXJsKVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbkVycm9yKGNvbnRleHQ6IGFueSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRvYXN0LmVycm9yKGNvbnRleHQuZXJyb3IubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHNpZ24gaW4gd2l0aCBwYXNza2V5JylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgICAgICB0b2FzdC5lcnJvcihlcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHNpZ24gaW4gd2l0aCBwYXNza2V5JylcbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBrZXk9e2xvZ2luTWV0aG9kfVxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19idXR0b24gcHJvdmlkZXItLXBhc3NrZXlgfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVBhc3NrZXlDbGlja31cbiAgICAgICAgICAgICAgICBpY29uPXtzaG93SWNvbk9ubHkgPyA8S2V5IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faWNvbmB9IC8+IDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgIHRvb2x0aXA9e3Nob3dJY29uT25seSA/IGBTaWduIGluIHdpdGggJHtwcm92aWRlck5hbWV9YCA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgeyFzaG93SWNvbk9ubHkgJiYgPEtleSBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2ljb25gfSAvPn1cbiAgICAgICAgICAgICAgICB7IXNob3dJY29uT25seSAmJiA8c3Bhbj57cHJvdmlkZXJOYW1lfTwvc3Bhbj59XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIC0tLS0gU29jaWFsIHByb3ZpZGVycyAtLS0tXG4gICAgICAgICAgaWYgKGlzU29jaWFsUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IEljb24gPSBJY29uc1tsb2dpbk1ldGhvZCBhcyBrZXlvZiB0eXBlb2YgSWNvbnNdID8/IG51bGxcblxuICAgICAgICAgICAgY29uc3QgaGFuZGxlU29jaWFsQ2xpY2sgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9yIH0gPSBhd2FpdCBhdXRoQ2xpZW50LnNpZ25Jbi5zb2NpYWwoe1xuICAgICAgICAgICAgICAgICAgcHJvdmlkZXI6IGxvZ2luTWV0aG9kIGFzIFNvY2lhbFByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uKGlzU2lnbnVwICYmIHsgYWRtaW5JbnZpdGVUb2tlbiB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFja1VSTDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFja1VSTDogcmVkaXJlY3RVcmwsXG4gICAgICAgICAgICAgICAgICBuZXdVc2VyQ2FsbGJhY2tVUkwsXG4gICAgICAgICAgICAgICAgICAuLi4oaXNTaWdudXAgJiYgeyByZXF1ZXN0U2lnblVwOiB0cnVlIH0pLFxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgIHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgICAgdG9hc3QuZXJyb3IoYEZhaWxlZCB0byBzaWduIGluIHdpdGggJHtwcm92aWRlck5hbWV9YClcbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBrZXk9e2xvZ2luTWV0aG9kfVxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19idXR0b24gcHJvdmlkZXItLSR7bG9naW5NZXRob2R9YH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTb2NpYWxDbGlja31cbiAgICAgICAgICAgICAgICBpY29uUG9zaXRpb249J2xlZnQnXG4gICAgICAgICAgICAgICAgaWNvbj17PEljb24gY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pY29uYH0gLz59XG4gICAgICAgICAgICAgICAgdG9vbHRpcD17c2hvd0ljb25Pbmx5ID8gYFNpZ24gaW4gd2l0aCAke3Byb3ZpZGVyTmFtZX1gIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICB7IXNob3dJY29uT25seSAmJiA8c3Bhbj57cHJvdmlkZXJOYW1lfTwvc3Bhbj59XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFVua25vd24gcHJvdmlkZXIg4oCUIHJlbmRlciBub3RoaW5nXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm5hbWVzIjpbInNvY2lhbFByb3ZpZGVycyIsIkljb25zIiwiQnV0dG9uIiwidG9hc3QiLCJwYXNza2V5Q2xpZW50IiwiY3JlYXRlQXV0aENsaWVudCIsIktleSIsInVzZVJvdXRlciIsIlJlYWN0IiwidXNlTWVtbyIsImJhc2VDbGFzcyIsIkFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIiwiaXNTaWdudXAiLCJsb2dpbk1ldGhvZHMiLCJzZXRMb2FkaW5nIiwicmVkaXJlY3RVcmwiLCJuZXdVc2VyQ2FsbGJhY2tVUkwiLCJhZG1pbkludml0ZVRva2VuIiwicm91dGVyIiwiYXV0aENsaWVudCIsInBsdWdpbnMiLCJsb2dpbk1ldGhvZENvdW50IiwiZmlsdGVyIiwibWV0aG9kIiwibGVuZ3RoIiwic2hvd0ljb25Pbmx5IiwiaW5jbHVkZXMiLCJkaXYiLCJzdHlsZSIsInRleHRBbGlnbiIsImZvbnRTaXplIiwidGV4dFRyYW5zZm9ybSIsIm1hcmdpblRvcCIsImNvbG9yIiwibWFyZ2luQm90dG9tIiwic3BhbiIsImNsYXNzTmFtZSIsIm1hcCIsImxvZ2luTWV0aG9kIiwicHJvdmlkZXJOYW1lIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImlzU29jaWFsUHJvdmlkZXIiLCJoYW5kbGVQYXNza2V5Q2xpY2siLCJzaWduSW4iLCJwYXNza2V5IiwiZmV0Y2hPcHRpb25zIiwib25TdWNjZXNzIiwicHVzaCIsIm9uRXJyb3IiLCJjb250ZXh0IiwiZXJyb3IiLCJtZXNzYWdlIiwidHlwZSIsInNpemUiLCJvbkNsaWNrIiwiaWNvbiIsInVuZGVmaW5lZCIsInRvb2x0aXAiLCJJY29uIiwiaGFuZGxlU29jaWFsQ2xpY2siLCJzb2NpYWwiLCJwcm92aWRlciIsInF1ZXJ5IiwiZXJyb3JDYWxsYmFja1VSTCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImNhbGxiYWNrVVJMIiwicmVxdWVzdFNpZ25VcCIsImljb25Qb3NpdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsU0FBU0EsZUFBZSxRQUFRLHFCQUFnQztBQUVoRSxTQUFTQyxLQUFLLFFBQVEseUNBQTJCO0FBQ2pELFNBQVNDLE1BQU0sRUFBRUMsS0FBSyxRQUFRLGlCQUFnQjtBQUM5QyxTQUFTQyxhQUFhLFFBQVEsNkJBQTRCO0FBQzFELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFtQjtBQUNwRCxTQUFTQyxHQUFHLFFBQVEsZUFBYztBQUNsQyxTQUFTQyxTQUFTLFFBQVEsa0JBQWlCO0FBQzNDLE9BQU9DLFNBQVNDLE9BQU8sUUFBUSxRQUFPO0FBQ3RDLE9BQU8sZUFBYztBQVdyQixNQUFNQyxZQUFZO0FBRWxCLE9BQU8sTUFBTUMsNkJBQXdFLENBQUMsRUFDcEZDLFFBQVEsRUFDUkMsWUFBWSxFQUNaQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsa0JBQWtCLEVBQ2xCQyxnQkFBZ0IsRUFDakI7SUFDQyxNQUFNQyxTQUFTWDtJQUNmLE1BQU1ZLGFBQWFWLFFBQVEsSUFBTUosaUJBQWlCO1lBQUVlLFNBQVM7Z0JBQUNoQjthQUFnQjtRQUFDLElBQUksRUFBRTtJQUVyRixNQUFNaUIsbUJBQW1CUixhQUFhUyxNQUFNLENBQUNDLENBQUFBLFNBQVVBLFdBQVcsaUJBQWlCLFdBQVdDLE1BQU07SUFDcEcsSUFBSUgscUJBQXFCLEdBQUcsT0FBTztJQUVuQyxNQUFNSSxlQUFlSixvQkFBb0I7SUFFekMscUJBQ0U7O1lBQ0dSLGFBQWFhLFFBQVEsQ0FBQyxrQ0FDckIsS0FBQ0M7Z0JBQ0NDLE9BQU87b0JBQ0xDLFdBQVc7b0JBQ1hDLFVBQVU7b0JBQ1ZDLGVBQWU7b0JBQ2ZDLFdBQVc7b0JBQ1hDLE9BQU87b0JBQ1RDLGNBQWM7Z0JBQ2hCOzBCQUNFLGNBQUEsTUFBQ0M7O3dCQUFLO3dCQUFJdkIsV0FBVyxZQUFZO3dCQUFROzs7OzBCQUc3QyxLQUFDZTtn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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import AdminButtons from '../components/admin-buttons';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import { AdminButtons } from '../components/admin-buttons';
|
|
2
|
+
import { AdminInviteButton } from '../components/admin-invite-button';
|
|
3
|
+
import { LogoutButton } from '../components/logout-button';
|
|
4
|
+
import { AdminSocialProviderButtons } from '../components/social-provider-buttons';
|
|
5
5
|
export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons };
|
|
6
6
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/better-auth/plugin/payload/exports/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAElF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,0BAA0B,EAAE,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import AdminButtons from "../components/admin-buttons";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import { AdminButtons } from "../components/admin-buttons";
|
|
2
|
+
import { AdminInviteButton } from "../components/admin-invite-button";
|
|
3
|
+
import { LogoutButton } from "../components/logout-button";
|
|
4
|
+
import { AdminSocialProviderButtons } from "../components/social-provider-buttons";
|
|
5
5
|
export { AdminButtons, AdminInviteButton, LogoutButton, AdminSocialProviderButtons };
|
|
6
6
|
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9leHBvcnRzL2NsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZG1pbkJ1dHRvbnMgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkbWluLWJ1dHRvbnMnXG5pbXBvcnQgeyBBZG1pbkludml0ZUJ1dHRvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWRtaW4taW52aXRlLWJ1dHRvbidcbmltcG9ydCB7IExvZ291dEJ1dHRvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMvbG9nb3V0LWJ1dHRvbidcbmltcG9ydCB7IEFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zb2NpYWwtcHJvdmlkZXItYnV0dG9ucydcblxuZXhwb3J0IHsgQWRtaW5CdXR0b25zLCBBZG1pbkludml0ZUJ1dHRvbiwgTG9nb3V0QnV0dG9uLCBBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9ucyB9XG4iXSwibmFtZXMiOlsiQWRtaW5CdXR0b25zIiwiQWRtaW5JbnZpdGVCdXR0b24iLCJMb2dvdXRCdXR0b24iLCJBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9ucyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxRQUFRLDhCQUE2QjtBQUMxRCxTQUFTQyxpQkFBaUIsUUFBUSxvQ0FBbUM7QUFDckUsU0FBU0MsWUFBWSxRQUFRLDhCQUE2QjtBQUMxRCxTQUFTQywwQkFBMEIsUUFBUSx3Q0FBdUM7QUFFbEYsU0FBU0gsWUFBWSxFQUFFQyxpQkFBaUIsRUFBRUMsWUFBWSxFQUFFQywwQkFBMEIsR0FBRSJ9
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { LoginMethod } from '@/better-auth/plugin/types';
|
|
3
3
|
import type { LoginWithUsernameOptions } from 'payload';
|
|
4
4
|
type AdminLoginClientProps = {
|
|
5
|
-
|
|
5
|
+
loginMethods: LoginMethod[];
|
|
6
6
|
hasUsernamePlugin: boolean;
|
|
7
|
-
hasPasskeySupport: boolean;
|
|
8
7
|
prefillEmail?: string;
|
|
9
8
|
prefillPassword?: string;
|
|
10
9
|
prefillUsername?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/client.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAUvD,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IAC9D,iBAAiB,EAAE,KAAK,GAAG,wBAAwB,CAAA;CACpD,CAAA;AAmHD,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA6B5D,CAAA"}
|
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { AdminSocialProviderButtons } from "../../components/social-provider-buttons";
|
|
4
|
+
import { getSafeRedirect } from "../../utils/get-safe-redirect";
|
|
5
|
+
import { useConfig, Link, toast, useTranslation } from "@payloadcms/ui";
|
|
3
6
|
import React, { useMemo, useState } from "react";
|
|
4
|
-
import {
|
|
7
|
+
import { adminRoutes } from "../../../constants";
|
|
5
8
|
import { useAppForm } from "../../../../../shared/form";
|
|
6
|
-
import { Form, FormInputWrap } from "../../../../../shared/form/ui";
|
|
9
|
+
import { Form, FormError, FormInputWrap } from "../../../../../shared/form/ui";
|
|
7
10
|
import { FormHeader } from "../../../../../shared/form/ui/header";
|
|
11
|
+
import { createLoginSchema, isValidEmail } from "../../../../../shared/form/validation";
|
|
8
12
|
import { createAuthClient } from "better-auth/client";
|
|
9
13
|
import { usernameClient } from "better-auth/client/plugins";
|
|
10
|
-
import { adminRoutes } from "../../../constants";
|
|
11
14
|
import { formatAdminURL, getLoginOptions } from "payload/shared";
|
|
12
|
-
import { getSafeRedirect } from "../../utils/get-safe-redirect";
|
|
13
|
-
import { Link, toast, useConfig, useTranslation } from "@payloadcms/ui";
|
|
14
|
-
import AdminSocialProviderButtons from "../../components/admin-social-provider-buttons";
|
|
15
|
-
import { emailRegex, usernameRegex } from "../../../../../shared/utils/regex";
|
|
16
15
|
const baseClass = 'login__form';
|
|
17
|
-
|
|
16
|
+
const LoginForm = ({ hasUsernamePlugin, prefillEmail, prefillPassword, prefillUsername, searchParams, loginWithUsername })=>{
|
|
18
17
|
const { config } = useConfig();
|
|
19
18
|
const { t } = useTranslation();
|
|
20
19
|
const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername);
|
|
21
|
-
const
|
|
22
|
-
minLength: 5,
|
|
23
|
-
maxLength: 128
|
|
24
|
-
};
|
|
20
|
+
const searchParamError = searchParams?.error;
|
|
25
21
|
const redirectUrl = getSafeRedirect(searchParams?.redirect, config.routes.admin);
|
|
26
22
|
const forgotPasswordUrl = formatAdminURL({
|
|
27
23
|
adminRoute: config.routes.admin,
|
|
@@ -51,28 +47,10 @@ export const AdminLoginClient = ({ socialProviders, hasUsernamePlugin, hasPasske
|
|
|
51
47
|
}
|
|
52
48
|
});
|
|
53
49
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
},
|
|
59
|
-
username: {
|
|
60
|
-
isValid: (val)=>usernameRegex.test(val) && val.length >= usernameSettings.minLength && val.length <= usernameSettings.maxLength,
|
|
61
|
-
getErrorMessage: ()=>t('authentication:usernameNotValid') || 'Username is not valid'
|
|
62
|
-
},
|
|
63
|
-
emailOrUsername: {
|
|
64
|
-
isValid: (val)=>val.includes('@') ? emailRegex.test(val) : usernameRegex.test(val) && val.length >= usernameSettings.minLength && val.length <= usernameSettings.maxLength,
|
|
65
|
-
getErrorMessage: (val)=>{
|
|
66
|
-
const isProbablyEmail = val.includes('@') || !canLoginWithUsername;
|
|
67
|
-
return isProbablyEmail ? t('authentication:emailNotValid') || 'Email is not valid' : t('authentication:usernameNotValid') || 'Username is not valid';
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
const loginSchema = z.object({
|
|
72
|
-
login: z.string().refine((val)=>val ? validationMap[loginType].isValid(val) : false, (val)=>({
|
|
73
|
-
message: !val ? t('validation:required') : validationMap[loginType].getErrorMessage(val)
|
|
74
|
-
})),
|
|
75
|
-
password: z.string().min(1, 'Password is required')
|
|
50
|
+
const loginSchema = createLoginSchema({
|
|
51
|
+
t,
|
|
52
|
+
loginType,
|
|
53
|
+
canLoginWithUsername
|
|
76
54
|
});
|
|
77
55
|
const form = useAppForm({
|
|
78
56
|
defaultValues: {
|
|
@@ -81,7 +59,7 @@ export const AdminLoginClient = ({ socialProviders, hasUsernamePlugin, hasPasske
|
|
|
81
59
|
},
|
|
82
60
|
onSubmit: async ({ value })=>{
|
|
83
61
|
const { login, password } = value;
|
|
84
|
-
const isEmail =
|
|
62
|
+
const isEmail = isValidEmail(login);
|
|
85
63
|
try {
|
|
86
64
|
const { data, error } = await (loginType === 'email' || loginType === 'emailOrUsername' && isEmail ? authClient.signIn.email({
|
|
87
65
|
email: login,
|
|
@@ -122,6 +100,11 @@ export const AdminLoginClient = ({ socialProviders, hasUsernamePlugin, hasPasske
|
|
|
122
100
|
return /*#__PURE__*/ _jsxs("div", {
|
|
123
101
|
className: `${baseClass}__wrapper`,
|
|
124
102
|
children: [
|
|
103
|
+
searchParamError && searchParamError === 'signup_disabled' && /*#__PURE__*/ _jsx(FormError, {
|
|
104
|
+
errors: [
|
|
105
|
+
'Sign up is disabled.'
|
|
106
|
+
]
|
|
107
|
+
}),
|
|
125
108
|
/*#__PURE__*/ _jsxs(Form, {
|
|
126
109
|
className: baseClass,
|
|
127
110
|
onSubmit: (e)=>{
|
|
@@ -164,29 +147,29 @@ export const AdminLoginClient = ({ socialProviders, hasUsernamePlugin, hasPasske
|
|
|
164
147
|
})
|
|
165
148
|
})
|
|
166
149
|
]
|
|
167
|
-
})
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
150
|
+
})
|
|
151
|
+
]
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
export const AdminLoginClient = ({ loginMethods, hasUsernamePlugin, prefillEmail, prefillPassword, prefillUsername, searchParams, loginWithUsername })=>{
|
|
155
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
156
|
+
children: [
|
|
157
|
+
loginMethods.includes('emailPassword') && /*#__PURE__*/ _jsx(LoginForm, {
|
|
158
|
+
hasUsernamePlugin: hasUsernamePlugin,
|
|
159
|
+
prefillEmail: prefillEmail,
|
|
160
|
+
prefillPassword: prefillPassword,
|
|
161
|
+
prefillUsername: prefillUsername,
|
|
162
|
+
searchParams: searchParams,
|
|
163
|
+
loginWithUsername: loginWithUsername
|
|
180
164
|
}),
|
|
181
165
|
/*#__PURE__*/ _jsx(AdminSocialProviderButtons, {
|
|
182
|
-
|
|
183
|
-
|
|
166
|
+
isSignup: false,
|
|
167
|
+
loginMethods: loginMethods,
|
|
184
168
|
setLoading: ()=>{},
|
|
185
|
-
|
|
186
|
-
redirectUrl: redirectUrl
|
|
169
|
+
redirectUrl: getSafeRedirect(searchParams?.redirect, useConfig().config.routes.admin)
|
|
187
170
|
})
|
|
188
171
|
]
|
|
189
172
|
});
|
|
190
173
|
};
|
|
191
174
|
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC92aWV3cy9hZG1pbi1sb2dpbi9jbGllbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHogfSBmcm9tICd6b2QnXG5pbXBvcnQgeyB1c2VBcHBGb3JtIH0gZnJvbSAnQC9zaGFyZWQvZm9ybSdcbmltcG9ydCB7IEZvcm0sIEZvcm1JbnB1dFdyYXAgfSBmcm9tICdAL3NoYXJlZC9mb3JtL3VpJ1xuaW1wb3J0IHsgRm9ybUhlYWRlciB9IGZyb20gJ0Avc2hhcmVkL2Zvcm0vdWkvaGVhZGVyJ1xuaW1wb3J0IHsgY3JlYXRlQXV0aENsaWVudCB9IGZyb20gJ2JldHRlci1hdXRoL2NsaWVudCdcbmltcG9ydCB7IHVzZXJuYW1lQ2xpZW50IH0gZnJvbSAnYmV0dGVyLWF1dGgvY2xpZW50L3BsdWdpbnMnXG5pbXBvcnQgeyBhZG1pblJvdXRlcyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50cydcbmltcG9ydCB7IGZvcm1hdEFkbWluVVJMLCBnZXRMb2dpbk9wdGlvbnMgfSBmcm9tICdwYXlsb2FkL3NoYXJlZCdcbmltcG9ydCB7IGdldFNhZmVSZWRpcmVjdCB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3BheWxvYWQvdXRpbHMvZ2V0LXNhZmUtcmVkaXJlY3QnXG5pbXBvcnQgeyBMaW5rLCB0b2FzdCwgdXNlQ29uZmlnLCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ0BwYXlsb2FkY21zL3VpJ1xuaW1wb3J0IEFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3BheWxvYWQvY29tcG9uZW50cy9hZG1pbi1zb2NpYWwtcHJvdmlkZXItYnV0dG9ucydcbmltcG9ydCB7IGVtYWlsUmVnZXgsIHVzZXJuYW1lUmVnZXggfSBmcm9tICdAL3NoYXJlZC91dGlscy9yZWdleCdcblxuaW1wb3J0IHR5cGUgeyBTb2NpYWxQcm92aWRlcnMgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi90eXBlcydcbmltcG9ydCB0eXBlIHsgTG9naW5XaXRoVXNlcm5hbWVPcHRpb25zIH0gZnJvbSAncGF5bG9hZCdcblxuY29uc3QgYmFzZUNsYXNzID0gJ2xvZ2luX19mb3JtJ1xuXG50eXBlIEFkbWluTG9naW5DbGllbnRQcm9wcyA9IHtcbiAgc29jaWFsUHJvdmlkZXJzOiBTb2NpYWxQcm92aWRlcnNcbiAgaGFzVXNlcm5hbWVQbHVnaW46IGJvb2xlYW5cbiAgaGFzUGFzc2tleVN1cHBvcnQ6IGJvb2xlYW5cbiAgcHJlZmlsbEVtYWlsPzogc3RyaW5nXG4gIHByZWZpbGxQYXNzd29yZD86IHN0cmluZ1xuICBwcmVmaWxsVXNlcm5hbWU/OiBzdHJpbmdcbiAgc2VhcmNoUGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIH1cbiAgbG9naW5XaXRoVXNlcm5hbWU6IGZhbHNlIHwgTG9naW5XaXRoVXNlcm5hbWVPcHRpb25zXG59XG5cbmV4cG9ydCBjb25zdCBBZG1pbkxvZ2luQ2xpZW50OiBSZWFjdC5GQzxBZG1pbkxvZ2luQ2xpZW50UHJvcHM+ID0gKHtcbiAgc29jaWFsUHJvdmlkZXJzLFxuICBoYXNVc2VybmFtZVBsdWdpbixcbiAgaGFzUGFzc2tleVN1cHBvcnQsXG4gIHByZWZpbGxFbWFpbCxcbiAgcHJlZmlsbFBhc3N3b3JkLFxuICBwcmVmaWxsVXNlcm5hbWUsXG4gIHNlYXJjaFBhcmFtcyxcbiAgbG9naW5XaXRoVXNlcm5hbWVcbn0pID0+IHtcbiAgY29uc3QgeyBjb25maWcgfSA9IHVzZUNvbmZpZygpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGNhbkxvZ2luV2l0aEVtYWlsLCBjYW5Mb2dpbldpdGhVc2VybmFtZSB9ID0gZ2V0TG9naW5PcHRpb25zKGxvZ2luV2l0aFVzZXJuYW1lKVxuICBjb25zdCB1c2VybmFtZVNldHRpbmdzID0geyBtaW5MZW5ndGg6IDUsIG1heExlbmd0aDogMTI4IH1cbiAgY29uc3QgcmVkaXJlY3RVcmwgPSBnZXRTYWZlUmVkaXJlY3Qoc2VhcmNoUGFyYW1zPy5yZWRpcmVjdCBhcyBzdHJpbmcsIGNvbmZpZy5yb3V0ZXMuYWRtaW4pXG4gIGNvbnN0IGZvcmdvdFBhc3N3b3JkVXJsID0gZm9ybWF0QWRtaW5VUkwoe1xuICAgIGFkbWluUm91dGU6IGNvbmZpZy5yb3V0ZXMuYWRtaW4sXG4gICAgcGF0aDogYWRtaW5Sb3V0ZXM/LmZvcmdvdFBhc3N3b3JkIGFzIGAvJHtzdHJpbmd9YFxuICB9KVxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgcGx1Z2luczogW3VzZXJuYW1lQ2xpZW50KCldIH0pLCBbXSlcbiAgY29uc3QgbG9naW5UeXBlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGNhbkxvZ2luV2l0aEVtYWlsICYmIGNhbkxvZ2luV2l0aFVzZXJuYW1lICYmIGhhc1VzZXJuYW1lUGx1Z2luKSByZXR1cm4gJ2VtYWlsT3JVc2VybmFtZSdcbiAgICBpZiAoY2FuTG9naW5XaXRoVXNlcm5hbWUgJiYgaGFzVXNlcm5hbWVQbHVnaW4pIHJldHVybiAndXNlcm5hbWUnXG4gICAgcmV0dXJuICdlbWFpbCdcbiAgfSwgW2NhbkxvZ2luV2l0aEVtYWlsLCBjYW5Mb2dpbldpdGhVc2VybmFtZSwgaGFzVXNlcm5hbWVQbHVnaW5dKVxuICBjb25zdCBbcmVxdWlyZUVtYWlsVmVyaWZpY2F0aW9uLCBzZXRSZXF1aXJlRW1haWxWZXJpZmljYXRpb25dID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgaWYgKHJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbikge1xuICAgIHJldHVybiA8Rm9ybUhlYWRlciBoZWFkaW5nPVwiUGxlYXNlIHZlcmlmeSB5b3VyIGVtYWlsXCIgZGVzY3JpcHRpb249e3QoJ2F1dGhlbnRpY2F0aW9uOmVtYWlsU2VudCcpfSBzdHlsZT17eyB0ZXh0QWxpZ246ICdjZW50ZXInIH19IC8+XG4gIH1cblxuICBjb25zdCB2YWxpZGF0aW9uTWFwID0ge1xuICAgIGVtYWlsOiB7XG4gICAgICBpc1ZhbGlkOiAodmFsOiBzdHJpbmcpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpLFxuICAgICAgZ2V0RXJyb3JNZXNzYWdlOiAoKSA9PiB0KCdhdXRoZW50aWNhdGlvbjplbWFpbE5vdFZhbGlkJykgfHwgJ0VtYWlsIGlzIG5vdCB2YWxpZCdcbiAgICB9LFxuICAgIHVzZXJuYW1lOiB7XG4gICAgICBpc1ZhbGlkOiAodmFsOiBzdHJpbmcpID0+XG4gICAgICAgIHVzZXJuYW1lUmVnZXgudGVzdCh2YWwpICYmIHZhbC5sZW5ndGggPj0gdXNlcm5hbWVTZXR0aW5ncy5taW5MZW5ndGggJiYgdmFsLmxlbmd0aCA8PSB1c2VybmFtZVNldHRpbmdzLm1heExlbmd0aCxcbiAgICAgIGdldEVycm9yTWVzc2FnZTogKCkgPT4gdCgnYXV0aGVudGljYXRpb246dXNlcm5hbWVOb3RWYWxpZCcpIHx8ICdVc2VybmFtZSBpcyBub3QgdmFsaWQnXG4gICAgfSxcbiAgICBlbWFpbE9yVXNlcm5hbWU6IHtcbiAgICAgIGlzVmFsaWQ6ICh2YWw6IHN0cmluZykgPT5cbiAgICAgICAgdmFsLmluY2x1ZGVzKCdAJylcbiAgICAgICAgICA/IGVtYWlsUmVnZXgudGVzdCh2YWwpXG4gICAgICAgICAgOiB1c2VybmFtZVJlZ2V4LnRlc3QodmFsKSAmJiB2YWwubGVuZ3RoID49IHVzZXJuYW1lU2V0dGluZ3MubWluTGVuZ3RoICYmIHZhbC5sZW5ndGggPD0gdXNlcm5hbWVTZXR0aW5ncy5tYXhMZW5ndGgsXG4gICAgICBnZXRFcnJvck1lc3NhZ2U6ICh2YWw6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBpc1Byb2JhYmx5RW1haWwgPSB2YWwuaW5jbHVkZXMoJ0AnKSB8fCAhY2FuTG9naW5XaXRoVXNlcm5hbWVcbiAgICAgICAgcmV0dXJuIGlzUHJvYmFibHlFbWFpbFxuICAgICAgICAgID8gdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gICAgICAgICAgOiB0KCdhdXRoZW50aWNhdGlvbjp1c2VybmFtZU5vdFZhbGlkJykgfHwgJ1VzZXJuYW1lIGlzIG5vdCB2YWxpZCdcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBsb2dpblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBsb2dpbjogei5zdHJpbmcoKS5yZWZpbmUoXG4gICAgICAodmFsKSA9PiAodmFsID8gdmFsaWRhdGlvbk1hcFtsb2dpblR5cGVdLmlzVmFsaWQodmFsKSA6IGZhbHNlKSxcbiAgICAgICh2YWwpID0+ICh7XG4gICAgICAgIG1lc3NhZ2U6ICF2YWwgPyB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgOiB2YWxpZGF0aW9uTWFwW2xvZ2luVHlwZV0uZ2V0RXJyb3JNZXNzYWdlKHZhbClcbiAgICAgIH0pXG4gICAgKSxcbiAgICBwYXNzd29yZDogei5zdHJpbmcoKS5taW4oMSwgJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkJylcbiAgfSlcblxuICBjb25zdCBmb3JtID0gdXNlQXBwRm9ybSh7XG4gICAgZGVmYXVsdFZhbHVlczoge1xuICAgICAgbG9naW46IHByZWZpbGxFbWFpbCA/PyBwcmVmaWxsVXNlcm5hbWUgPz8gJycsXG4gICAgICBwYXNzd29yZDogcHJlZmlsbFBhc3N3b3JkID8/ICcnXG4gICAgfSxcbiAgICBvblN1Ym1pdDogYXN5bmMgKHsgdmFsdWUgfSkgPT4ge1xuICAgICAgY29uc3QgeyBsb2dpbiwgcGFzc3dvcmQgfSA9IHZhbHVlXG4gICAgICBjb25zdCBpc0VtYWlsID0gZW1haWxSZWdleC50ZXN0KGxvZ2luKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgKGxvZ2luVHlwZSA9PT0gJ2VtYWlsJyB8fCAobG9naW5UeXBlID09PSAnZW1haWxPclVzZXJuYW1lJyAmJiBpc0VtYWlsKVxuICAgICAgICAgID8gYXV0aENsaWVudC5zaWduSW4uZW1haWwoeyBlbWFpbDogbG9naW4sIHBhc3N3b3JkLCBjYWxsYmFja1VSTDogcmVkaXJlY3RVcmwgfSlcbiAgICAgICAgICA6IGF1dGhDbGllbnQuc2lnbkluLnVzZXJuYW1lKHsgdXNlcm5hbWU6IGxvZ2luLCBwYXNzd29yZCB9KSlcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yLmNvZGUgPT09ICdFTUFJTF9OT1RfVkVSSUZJRUQnKSB7XG4gICAgICAgICAgICBzZXRSZXF1aXJlRW1haWxWZXJpZmljYXRpb24odHJ1ZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRvYXN0LmVycm9yKGVycm9yLm1lc3NhZ2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBlcnJvci5tZXNzYWdlLnNsaWNlKDEpKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YT8udG9rZW4pIHtcbiAgICAgICAgICB0b2FzdC5zdWNjZXNzKHQoJ2dlbmVyYWw6c3VjY2VzcycpKVxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcmVkaXJlY3RVcmxcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKHQoJ2Vycm9yOnVua25vd24nKSB8fCAnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCcpXG4gICAgICB9XG4gICAgfSxcbiAgICB2YWxpZGF0b3JzOiB7XG4gICAgICBvblN1Ym1pdDogbG9naW5TY2hlbWFcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgZ2V0TG9naW5UeXBlTGFiZWwgPSAoKSA9PiB7XG4gICAgY29uc3QgbGFiZWxzID0ge1xuICAgICAgZW1haWw6IHQoJ2dlbmVyYWw6ZW1haWwnKSB8fCAnRW1haWwnLFxuICAgICAgdXNlcm5hbWU6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lJykgfHwgJ1VzZXJuYW1lJyxcbiAgICAgIGVtYWlsT3JVc2VybmFtZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxPclVzZXJuYW1lJykgfHwgJ0VtYWlsIG9yIFVzZXJuYW1lJ1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHNbbG9naW5UeXBlXVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAgPEZvcm1cbiAgICAgICAgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9XG4gICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8Rm9ybUlucHV0V3JhcCBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICAgICAgPGZvcm0uQXBwRmllbGRcbiAgICAgICAgICAgIG5hbWU9XCJsb2dpblwiXG4gICAgICAgICAgICBjaGlsZHJlbj17KGZpZWxkKSA9PiA8ZmllbGQuVGV4dEZpZWxkIHR5cGU9XCJ0ZXh0XCIgY2xhc3NOYW1lPVwiZW1haWxcIiBhdXRvQ29tcGxldGU9XCJlbWFpbFwiIGxhYmVsPXtnZXRMb2dpblR5cGVMYWJlbCgpfSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxmb3JtLkFwcEZpZWxkXG4gICAgICAgICAgICBuYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICAgICAgY2hpbGRyZW49eyhmaWVsZCkgPT4gKFxuICAgICAgICAgICAgICA8ZmllbGQuVGV4dEZpZWxkIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzTmFtZT1cInBhc3N3b3JkXCIgYXV0b0NvbXBsZXRlPVwicGFzc3dvcmRcIiBsYWJlbD17dCgnZ2VuZXJhbDpwYXNzd29yZCcpfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1JbnB1dFdyYXA+XG4gICAgICAgIDxMaW5rIGhyZWY9e2ZvcmdvdFBhc3N3b3JkVXJsfSBwcmVmZXRjaD17ZmFsc2V9PlxuICAgICAgICAgIHt0KCdhdXRoZW50aWNhdGlvbjpmb3Jnb3RQYXNzd29yZFF1ZXN0aW9uJyl9XG4gICAgICAgIDwvTGluaz5cbiAgICAgICAgPGZvcm0uQXBwRm9ybSBjaGlsZHJlbj17PGZvcm0uU3VibWl0IGxhYmVsPXt0KCdhdXRoZW50aWNhdGlvbjpsb2dpbicpfSBsb2FkaW5nTGFiZWw9e3QoJ2dlbmVyYWw6bG9hZGluZycpfSAvPn0gLz5cbiAgICAgIDwvRm9ybT5cbiAgICAgIHsoT2JqZWN0LmtleXMoc29jaWFsUHJvdmlkZXJzIHx8IHt9KS5sZW5ndGggPiAwIHx8IGhhc1Bhc3NrZXlTdXBwb3J0KSAmJiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiAnMC44NzVyZW0nLFxuICAgICAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXG4gICAgICAgICAgICBtYXJnaW5Ub3A6ICctLjVyZW0nLFxuICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10aGVtZS1lbGV2YXRpb24tNDUwKScsXG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206ICcxLjVyZW0nXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuPk9yIGxvZ2luIHdpdGg8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9uc1xuICAgICAgICBhbGxvd1NpZ251cD17ZmFsc2V9XG4gICAgICAgIHNvY2lhbFByb3ZpZGVycz17c29jaWFsUHJvdmlkZXJzfVxuICAgICAgICBzZXRMb2FkaW5nPXsoKSA9PiB7fX1cbiAgICAgICAgaGFzUGFzc2tleVN1cHBvcnQ9e2hhc1Bhc3NrZXlTdXBwb3J0fVxuICAgICAgICByZWRpcmVjdFVybD17cmVkaXJlY3RVcmx9XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJ6IiwidXNlQXBwRm9ybSIsIkZvcm0iLCJGb3JtSW5wdXRXcmFwIiwiRm9ybUhlYWRlciIsImNyZWF0ZUF1dGhDbGllbnQiLCJ1c2VybmFtZUNsaWVudCIsImFkbWluUm91dGVzIiwiZm9ybWF0QWRtaW5VUkwiLCJnZXRMb2dpbk9wdGlvbnMiLCJnZXRTYWZlUmVkaXJlY3QiLCJMaW5rIiwidG9hc3QiLCJ1c2VDb25maWciLCJ1c2VUcmFuc2xhdGlvbiIsIkFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIiwiZW1haWxSZWdleCIsInVzZXJuYW1lUmVnZXgiLCJiYXNlQ2xhc3MiLCJBZG1pbkxvZ2luQ2xpZW50Iiwic29jaWFsUHJvdmlkZXJzIiwiaGFzVXNlcm5hbWVQbHVnaW4iLCJoYXNQYXNza2V5U3VwcG9ydCIsInByZWZpbGxFbWFpbCIsInByZWZpbGxQYXNzd29yZCIsInByZWZpbGxVc2VybmFtZSIsInNlYXJjaFBhcmFtcyIsImxvZ2luV2l0aFVzZXJuYW1lIiwiY29uZmlnIiwidCIsImNhbkxvZ2luV2l0aEVtYWlsIiwiY2FuTG9naW5XaXRoVXNlcm5hbWUiLCJ1c2VybmFtZVNldHRpbmdzIiwibWluTGVuZ3RoIiwibWF4TGVuZ3RoIiwicmVkaXJlY3RVcmwiLCJyZWRpcmVjdCIsInJvdXRlcyIsImFkbWluIiwiZm9yZ290UGFzc3dvcmRVcmwiLCJhZG1pblJvdXRlIiwicGF0aCIsImZvcmdvdFBhc3N3b3JkIiwiYXV0aENsaWVudCIsInBsdWdpbnMiLCJsb2dpblR5cGUiLCJyZXF1aXJlRW1haWxWZXJpZmljYXRpb24iLCJzZXRSZXF1aXJlRW1haWxWZXJpZmljYXRpb24iLCJoZWFkaW5nIiwiZGVzY3JpcHRpb24iLCJzdHlsZSIsInRleHRBbGlnbiIsInZhbGlkYXRpb25NYXAiLCJlbWFpbCIsImlzVmFsaWQiLCJ2YWwiLCJ0ZXN0IiwiZ2V0RXJyb3JNZXNzYWdlIiwidXNlcm5hbWUiLCJsZW5ndGgiLCJlbWFpbE9yVXNlcm5hbWUiLCJpbmNsdWRlcyIsImlzUHJvYmFibHlFbWFpbCIsImxvZ2luU2NoZW1hIiwib2JqZWN0IiwibG9naW4iLCJzdHJpbmciLCJyZWZpbmUiLCJtZXNzYWdlIiwicGFzc3dvcmQiLCJtaW4iLCJmb3JtIiwiZGVmYXVsdFZhbHVlcyIsIm9uU3VibWl0IiwidmFsdWUiLCJpc0VtYWlsIiwiZGF0YSIsImVycm9yIiwic2lnbkluIiwiY2FsbGJhY2tVUkwiLCJjb2RlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRva2VuIiwic3VjY2VzcyIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImVyciIsInZhbGlkYXRvcnMiLCJnZXRMb2dpblR5cGVMYWJlbCIsImxhYmVscyIsImRpdiIsImNsYXNzTmFtZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVN1Ym1pdCIsIkFwcEZpZWxkIiwibmFtZSIsImNoaWxkcmVuIiwiZmllbGQiLCJUZXh0RmllbGQiLCJ0eXBlIiwiYXV0b0NvbXBsZXRlIiwibGFiZWwiLCJwcmVmZXRjaCIsIkFwcEZvcm0iLCJTdWJtaXQiLCJsb2FkaW5nTGFiZWwiLCJPYmplY3QiLCJrZXlzIiwiZm9udFNpemUiLCJ0ZXh0VHJhbnNmb3JtIiwibWFyZ2luVG9wIiwiY29sb3IiLCJtYXJnaW5Cb3R0b20iLCJzcGFuIiwiYWxsb3dTaWdudXAiLCJzZXRMb2FkaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxPQUFPQSxTQUFTQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxRQUFPO0FBQ2hELFNBQVNDLENBQUMsUUFBUSxNQUFLO0FBQ3ZCLFNBQVNDLFVBQVUsUUFBUSw2QkFBZTtBQUMxQyxTQUFTQyxJQUFJLEVBQUVDLGFBQWEs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
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC92aWV3cy9hZG1pbi1sb2dpbi9jbGllbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgeyBBZG1pblNvY2lhbFByb3ZpZGVyQnV0dG9ucyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3BheWxvYWQvY29tcG9uZW50cy9zb2NpYWwtcHJvdmlkZXItYnV0dG9ucydcbmltcG9ydCB7IGdldFNhZmVSZWRpcmVjdCB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3BheWxvYWQvdXRpbHMvZ2V0LXNhZmUtcmVkaXJlY3QnXG5pbXBvcnQgeyB1c2VDb25maWcsIExpbmssIHRvYXN0LCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ0BwYXlsb2FkY21zL3VpJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IExvZ2luTWV0aG9kIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IExvZ2luV2l0aFVzZXJuYW1lT3B0aW9ucyB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgeyBhZG1pblJvdXRlcyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50cydcbmltcG9ydCB7IHVzZUFwcEZvcm0gfSBmcm9tICdAL3NoYXJlZC9mb3JtJ1xuaW1wb3J0IHsgRm9ybSwgRm9ybUVycm9yLCBGb3JtSW5wdXRXcmFwIH0gZnJvbSAnQC9zaGFyZWQvZm9ybS91aSdcbmltcG9ydCB7IEZvcm1IZWFkZXIgfSBmcm9tICdAL3NoYXJlZC9mb3JtL3VpL2hlYWRlcidcbmltcG9ydCB7IGNyZWF0ZUxvZ2luU2NoZW1hLCBpc1ZhbGlkRW1haWwgfSBmcm9tICdAL3NoYXJlZC9mb3JtL3ZhbGlkYXRpb24nXG5pbXBvcnQgeyBjcmVhdGVBdXRoQ2xpZW50IH0gZnJvbSAnYmV0dGVyLWF1dGgvY2xpZW50J1xuaW1wb3J0IHsgdXNlcm5hbWVDbGllbnQgfSBmcm9tICdiZXR0ZXItYXV0aC9jbGllbnQvcGx1Z2lucydcbmltcG9ydCB7IGZvcm1hdEFkbWluVVJMLCBnZXRMb2dpbk9wdGlvbnMgfSBmcm9tICdwYXlsb2FkL3NoYXJlZCdcblxudHlwZSBBZG1pbkxvZ2luQ2xpZW50UHJvcHMgPSB7XG4gIGxvZ2luTWV0aG9kczogTG9naW5NZXRob2RbXVxuICBoYXNVc2VybmFtZVBsdWdpbjogYm9vbGVhblxuICBwcmVmaWxsRW1haWw/OiBzdHJpbmdcbiAgcHJlZmlsbFBhc3N3b3JkPzogc3RyaW5nXG4gIHByZWZpbGxVc2VybmFtZT86IHN0cmluZ1xuICBzZWFyY2hQYXJhbXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQgfVxuICBsb2dpbldpdGhVc2VybmFtZTogZmFsc2UgfCBMb2dpbldpdGhVc2VybmFtZU9wdGlvbnNcbn1cblxuY29uc3QgYmFzZUNsYXNzID0gJ2xvZ2luX19mb3JtJ1xuXG5jb25zdCBMb2dpbkZvcm06IFJlYWN0LkZDPHtcbiAgaGFzVXNlcm5hbWVQbHVnaW46IGJvb2xlYW5cbiAgcHJlZmlsbEVtYWlsPzogc3RyaW5nXG4gIHByZWZpbGxQYXNzd29yZD86IHN0cmluZ1xuICBwcmVmaWxsVXNlcm5hbWU/OiBzdHJpbmdcbiAgc2VhcmNoUGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIH1cbiAgbG9naW5XaXRoVXNlcm5hbWU6IGZhbHNlIHwgTG9naW5XaXRoVXNlcm5hbWVPcHRpb25zXG59PiA9ICh7XG4gIGhhc1VzZXJuYW1lUGx1Z2luLFxuICBwcmVmaWxsRW1haWwsXG4gIHByZWZpbGxQYXNzd29yZCxcbiAgcHJlZmlsbFVzZXJuYW1lLFxuICBzZWFyY2hQYXJhbXMsXG4gIGxvZ2luV2l0aFVzZXJuYW1lXG59KSA9PiB7XG4gIGNvbnN0IHsgY29uZmlnIH0gPSB1c2VDb25maWcoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBjYW5Mb2dpbldpdGhFbWFpbCwgY2FuTG9naW5XaXRoVXNlcm5hbWUgfSA9IGdldExvZ2luT3B0aW9ucyhsb2dpbldpdGhVc2VybmFtZSlcbiAgY29uc3Qgc2VhcmNoUGFyYW1FcnJvciA9IHNlYXJjaFBhcmFtcz8uZXJyb3JcbiAgY29uc3QgcmVkaXJlY3RVcmwgPSBnZXRTYWZlUmVkaXJlY3Qoc2VhcmNoUGFyYW1zPy5yZWRpcmVjdCBhcyBzdHJpbmcsIGNvbmZpZy5yb3V0ZXMuYWRtaW4pXG4gIGNvbnN0IGZvcmdvdFBhc3N3b3JkVXJsID0gZm9ybWF0QWRtaW5VUkwoe1xuICAgIGFkbWluUm91dGU6IGNvbmZpZy5yb3V0ZXMuYWRtaW4sXG4gICAgcGF0aDogYWRtaW5Sb3V0ZXM/LmZvcmdvdFBhc3N3b3JkIGFzIGAvJHtzdHJpbmd9YFxuICB9KVxuICBjb25zdCBhdXRoQ2xpZW50ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVBdXRoQ2xpZW50KHsgcGx1Z2luczogW3VzZXJuYW1lQ2xpZW50KCldIH0pLCBbXSlcbiAgY29uc3QgbG9naW5UeXBlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGNhbkxvZ2luV2l0aEVtYWlsICYmIGNhbkxvZ2luV2l0aFVzZXJuYW1lICYmIGhhc1VzZXJuYW1lUGx1Z2luKSByZXR1cm4gJ2VtYWlsT3JVc2VybmFtZSdcbiAgICBpZiAoY2FuTG9naW5XaXRoVXNlcm5hbWUgJiYgaGFzVXNlcm5hbWVQbHVnaW4pIHJldHVybiAndXNlcm5hbWUnXG4gICAgcmV0dXJuICdlbWFpbCdcbiAgfSwgW2NhbkxvZ2luV2l0aEVtYWlsLCBjYW5Mb2dpbldpdGhVc2VybmFtZSwgaGFzVXNlcm5hbWVQbHVnaW5dKVxuICBjb25zdCBbcmVxdWlyZUVtYWlsVmVyaWZpY2F0aW9uLCBzZXRSZXF1aXJlRW1haWxWZXJpZmljYXRpb25dID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgaWYgKHJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbikge1xuICAgIHJldHVybiA8Rm9ybUhlYWRlciBoZWFkaW5nPVwiUGxlYXNlIHZlcmlmeSB5b3VyIGVtYWlsXCIgZGVzY3JpcHRpb249e3QoJ2F1dGhlbnRpY2F0aW9uOmVtYWlsU2VudCcpfSBzdHlsZT17eyB0ZXh0QWxpZ246ICdjZW50ZXInIH19IC8+XG4gIH1cblxuICBjb25zdCBsb2dpblNjaGVtYSA9IGNyZWF0ZUxvZ2luU2NoZW1hKHsgdCwgbG9naW5UeXBlLCBjYW5Mb2dpbldpdGhVc2VybmFtZSB9KVxuXG4gIGNvbnN0IGZvcm0gPSB1c2VBcHBGb3JtKHtcbiAgICBkZWZhdWx0VmFsdWVzOiB7XG4gICAgICBsb2dpbjogcHJlZmlsbEVtYWlsID8/IHByZWZpbGxVc2VybmFtZSA/PyAnJyxcbiAgICAgIHBhc3N3b3JkOiBwcmVmaWxsUGFzc3dvcmQgPz8gJydcbiAgICB9LFxuICAgIG9uU3VibWl0OiBhc3luYyAoeyB2YWx1ZSB9KSA9PiB7XG4gICAgICBjb25zdCB7IGxvZ2luLCBwYXNzd29yZCB9ID0gdmFsdWVcbiAgICAgIGNvbnN0IGlzRW1haWwgPSBpc1ZhbGlkRW1haWwobG9naW4pXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSBhd2FpdCAobG9naW5UeXBlID09PSAnZW1haWwnIHx8IChsb2dpblR5cGUgPT09ICdlbWFpbE9yVXNlcm5hbWUnICYmIGlzRW1haWwpXG4gICAgICAgICAgPyBhdXRoQ2xpZW50LnNpZ25Jbi5lbWFpbCh7IGVtYWlsOiBsb2dpbiwgcGFzc3dvcmQsIGNhbGxiYWNrVVJMOiByZWRpcmVjdFVybCB9KVxuICAgICAgICAgIDogYXV0aENsaWVudC5zaWduSW4udXNlcm5hbWUoeyB1c2VybmFtZTogbG9naW4sIHBhc3N3b3JkIH0pKVxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IuY29kZSA9PT0gJ0VNQUlMX05PVF9WRVJJRklFRCcpIHtcbiAgICAgICAgICAgIHNldFJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbih0cnVlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSkge1xuICAgICAgICAgICAgdG9hc3QuZXJyb3IoZXJyb3IubWVzc2FnZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGVycm9yLm1lc3NhZ2Uuc2xpY2UoMSkpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhPy50b2tlbikge1xuICAgICAgICAgIHRvYXN0LnN1Y2Nlc3ModCgnZ2VuZXJhbDpzdWNjZXNzJykpXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSByZWRpcmVjdFVybFxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdG9hc3QuZXJyb3IodCgnZXJyb3I6dW5rbm93bicpIHx8ICdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkJylcbiAgICAgIH1cbiAgICB9LFxuICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgIG9uU3VibWl0OiBsb2dpblNjaGVtYVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBnZXRMb2dpblR5cGVMYWJlbCA9ICgpID0+IHtcbiAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICBlbWFpbDogdCgnZ2VuZXJhbDplbWFpbCcpIHx8ICdFbWFpbCcsXG4gICAgICB1c2VybmFtZTogdCgnYXV0aGVudGljYXRpb246dXNlcm5hbWUnKSB8fCAnVXNlcm5hbWUnLFxuICAgICAgZW1haWxPclVzZXJuYW1lOiB0KCdhdXRoZW50aWNhdGlvbjplbWFpbE9yVXNlcm5hbWUnKSB8fCAnRW1haWwgb3IgVXNlcm5hbWUnXG4gICAgfVxuICAgIHJldHVybiBsYWJlbHNbbG9naW5UeXBlXVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fd3JhcHBlcmB9PlxuICAgICAge3NlYXJjaFBhcmFtRXJyb3IgJiYgc2VhcmNoUGFyYW1FcnJvciA9PT0gJ3NpZ251cF9kaXNhYmxlZCcgJiYgPEZvcm1FcnJvciBlcnJvcnM9e1snU2lnbiB1cCBpcyBkaXNhYmxlZC4nXX0gLz59XG4gICAgICA8Rm9ybVxuICAgICAgICBjbGFzc05hbWU9e2Jhc2VDbGFzc31cbiAgICAgICAgb25TdWJtaXQ9e2UgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgIHZvaWQgZm9ybS5oYW5kbGVTdWJtaXQoKVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8Rm9ybUlucHV0V3JhcCBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICAgICAgPGZvcm0uQXBwRmllbGRcbiAgICAgICAgICAgIG5hbWU9XCJsb2dpblwiXG4gICAgICAgICAgICBjaGlsZHJlbj17ZmllbGQgPT4gPGZpZWxkLlRleHRGaWVsZCB0eXBlPVwidGV4dFwiIGNsYXNzTmFtZT1cImVtYWlsXCIgYXV0b0NvbXBsZXRlPVwiZW1haWxcIiBsYWJlbD17Z2V0TG9naW5UeXBlTGFiZWwoKX0gLz59XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8Zm9ybS5BcHBGaWVsZFxuICAgICAgICAgICAgbmFtZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIGNoaWxkcmVuPXtmaWVsZCA9PiAoXG4gICAgICAgICAgICAgIDxmaWVsZC5UZXh0RmllbGQgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3NOYW1lPVwicGFzc3dvcmRcIiBhdXRvQ29tcGxldGU9XCJwYXNzd29yZFwiIGxhYmVsPXt0KCdnZW5lcmFsOnBhc3N3b3JkJyl9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUlucHV0V3JhcD5cbiAgICAgICAgPExpbmsgaHJlZj17Zm9yZ290UGFzc3dvcmRVcmx9IHByZWZldGNoPXtmYWxzZX0+XG4gICAgICAgICAge3QoJ2F1dGhlbnRpY2F0aW9uOmZvcmdvdFBhc3N3b3JkUXVlc3Rpb24nKX1cbiAgICAgICAgPC9MaW5rPlxuICAgICAgICA8Zm9ybS5BcHBGb3JtIGNoaWxkcmVuPXs8Zm9ybS5TdWJtaXQgbGFiZWw9e3QoJ2F1dGhlbnRpY2F0aW9uOmxvZ2luJyl9IGxvYWRpbmdMYWJlbD17dCgnZ2VuZXJhbDpsb2FkaW5nJyl9IC8+fSAvPlxuICAgICAgPC9Gb3JtPlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBBZG1pbkxvZ2luQ2xpZW50OiBSZWFjdC5GQzxBZG1pbkxvZ2luQ2xpZW50UHJvcHM+ID0gKHtcbiAgbG9naW5NZXRob2RzLFxuICBoYXNVc2VybmFtZVBsdWdpbixcbiAgcHJlZmlsbEVtYWlsLFxuICBwcmVmaWxsUGFzc3dvcmQsXG4gIHByZWZpbGxVc2VybmFtZSxcbiAgc2VhcmNoUGFyYW1zLFxuICBsb2dpbldpdGhVc2VybmFtZVxufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7bG9naW5NZXRob2RzLmluY2x1ZGVzKCdlbWFpbFBhc3N3b3JkJykgJiYgKFxuICAgICAgICA8TG9naW5Gb3JtXG4gICAgICAgICAgaGFzVXNlcm5hbWVQbHVnaW49e2hhc1VzZXJuYW1lUGx1Z2lufVxuICAgICAgICAgIHByZWZpbGxFbWFpbD17cHJlZmlsbEVtYWlsfVxuICAgICAgICAgIHByZWZpbGxQYXNzd29yZD17cHJlZmlsbFBhc3N3b3JkfVxuICAgICAgICAgIHByZWZpbGxVc2VybmFtZT17cHJlZmlsbFVzZXJuYW1lfVxuICAgICAgICAgIHNlYXJjaFBhcmFtcz17c2VhcmNoUGFyYW1zfVxuICAgICAgICAgIGxvZ2luV2l0aFVzZXJuYW1lPXtsb2dpbldpdGhVc2VybmFtZX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8QWRtaW5Tb2NpYWxQcm92aWRlckJ1dHRvbnNcbiAgICAgICAgaXNTaWdudXA9e2ZhbHNlfVxuICAgICAgICBsb2dpbk1ldGhvZHM9e2xvZ2luTWV0aG9kc31cbiAgICAgICAgc2V0TG9hZGluZz17KCkgPT4ge319XG4gICAgICAgIHJlZGlyZWN0VXJsPXtnZXRTYWZlUmVkaXJlY3Qoc2VhcmNoUGFyYW1zPy5yZWRpcmVjdCBhcyBzdHJpbmcsIHVzZUNvbmZpZygpLmNvbmZpZy5yb3V0ZXMuYWRtaW4pfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIkFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIiwiZ2V0U2FmZVJlZGlyZWN0IiwidXNlQ29uZmlnIiwiTGluayIsInRvYXN0IiwidXNlVHJhbnNsYXRpb24iLCJSZWFjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImFkbWluUm91dGVzIiwidXNlQXBwRm9ybSIsIkZvcm0iLCJGb3JtRXJyb3IiLCJGb3JtSW5wdXRXcmFwIiwiRm9ybUhlYWRlciIsImNyZWF0ZUxvZ2luU2NoZW1hIiwiaXNWYWxpZEVtYWlsIiwiY3JlYXRlQXV0aENsaWVudCIsInVzZXJuYW1lQ2xpZW50IiwiZm9ybWF0QWRtaW5VUkwiLCJnZXRMb2dpbk9wdGlvbnMiLCJiYXNlQ2xhc3MiLCJMb2dpbkZvcm0iLCJoYXNVc2VybmFtZVBsdWdpbiIsInByZWZpbGxFbWFpbCIsInByZWZpbGxQYXNzd29yZCIsInByZWZpbGxVc2VybmFtZSIsInNlYXJjaFBhcmFtcyIsImxvZ2luV2l0aFVzZXJuYW1lIiwiY29uZmlnIiwidCIsImNhbkxvZ2luV2l0aEVtYWlsIiwiY2FuTG9naW5XaXRoVXNlcm5hbWUiLCJzZWFyY2hQYXJhbUVycm9yIiwiZXJyb3IiLCJyZWRpcmVjdFVybCIsInJlZGlyZWN0Iiwicm91dGVzIiwiYWRtaW4iLCJmb3Jnb3RQYXNzd29yZFVybCIsImFkbWluUm91dGUiLCJwYXRoIiwiZm9yZ290UGFzc3dvcmQiLCJhdXRoQ2xpZW50IiwicGx1Z2lucyIsImxvZ2luVHlwZSIsInJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbiIsInNldFJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbiIsImhlYWRpbmciLCJkZXNjcmlwdGlvbiIsInN0eWxlIiwidGV4dEFsaWduIiwibG9naW5TY2hlbWEiLCJmb3JtIiwiZGVmYXVsdFZhbHVlcyIsImxvZ2luIiwicGFzc3dvcmQiLCJvblN1Ym1pdCIsInZhbHVlIiwiaXNFbWFpbCIsImRhdGEiLCJzaWduSW4iLCJlbWFpbCIsImNhbGxiYWNrVVJMIiwidXNlcm5hbWUiLCJjb2RlIiwibWVzc2FnZSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJ0b2tlbiIsInN1Y2Nlc3MiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhyZWYiLCJlcnIiLCJ2YWxpZGF0b3JzIiwiZ2V0TG9naW5UeXBlTGFiZWwiLCJsYWJlbHMiLCJlbWFpbE9yVXNlcm5hbWUiLCJkaXYiLCJjbGFzc05hbWUiLCJlcnJvcnMiLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVTdWJtaXQiLCJBcHBGaWVsZCIsIm5hbWUiLCJjaGlsZHJlbiIsImZpZWxkIiwiVGV4dEZpZWxkIiwidHlwZSIsImF1dG9Db21wbGV0ZSIsImxhYmVsIiwicHJlZmV0Y2giLCJBcHBGb3JtIiwiU3VibWl0IiwibG9hZGluZ0xhYmVsIiwiQWRtaW5Mb2dpbkNsaWVudCIsImxvZ2luTWV0aG9kcyIsImluY2x1ZGVzIiwiaXNTaWdudXAiLCJzZXRMb2FkaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxTQUFTQSwwQkFBMEIsUUFBUSwyQ0FBaUU7QUFDNUcsU0FBU0MsZUFBZSxRQUFRLGdDQUFzRDtBQUN0RixTQUFTQyxTQUFTLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFQyxjQUFjLFFBQVEsaUJBQWdCO0FBQ3ZFLE9BQU9DLFNBQVNDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLFFBQU87QUFHaEQsU0FBU0MsV0FBVyxRQUFRLHFCQUFnQztBQUM1RCxTQUFTQyxVQUFVLFFBQVEsNkJBQWU7QUFDMUMsU0FBU0MsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLGFBQWEsUUFBUSxnQ0FBa0I7QUFDakUsU0FBU0MsVUFBVSxRQUFRLHVDQUF5QjtBQUNwRCxTQUFTQyxpQkFBaUIsRUFBRUMsWUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,EAAE,KAAK,oBAAoB,EAAoB,MAAM,SAAS,CAAA;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAErG,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,KAAK,eAAe,GAAG,oBAAoB,GAAG;IAC5C,aAAa,EAAE,uBAAuB,CAAA;IACtC,iBAAiB,EAAE,0BAA0B,CAAA;CAC9C,CAAA;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/views/admin-login/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,EAAE,KAAK,oBAAoB,EAAoB,MAAM,SAAS,CAAA;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAErG,eAAO,MAAM,cAAc,UAAU,CAAA;AAErC,KAAK,eAAe,GAAG,oBAAoB,GAAG;IAC5C,aAAa,EAAE,uBAAuB,CAAA;IACtC,iBAAiB,EAAE,0BAA0B,CAAA;CAC9C,CAAA;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmIzC,CAAA;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -64,7 +64,7 @@ const AdminLogin = async ({ initPageResult, params, searchParams, pluginOptions,
|
|
|
64
64
|
const prefillPassword = prefillAutoLogin && typeof config.admin?.autoLogin === 'object' ? config.admin?.autoLogin.password : undefined;
|
|
65
65
|
const hasUsernamePlugin = checkUsernamePlugin(betterAuthOptions);
|
|
66
66
|
const hasPasskeyPlugin = checkPasskeyPlugin(betterAuthOptions);
|
|
67
|
-
const
|
|
67
|
+
const loginMethods = pluginOptions.admin?.loginMethods ?? [];
|
|
68
68
|
const loginWithUsername = collections?.[userSlug]?.config.auth.loginWithUsername;
|
|
69
69
|
const canLoginWithUsername = (hasUsernamePlugin && loginWithUsername) ?? false;
|
|
70
70
|
return /*#__PURE__*/ _jsxs(MinimalTemplate, {
|
|
@@ -97,9 +97,8 @@ const AdminLogin = async ({ initPageResult, params, searchParams, pluginOptions,
|
|
|
97
97
|
}),
|
|
98
98
|
/*#__PURE__*/ _jsx(AdminLoginClient, {
|
|
99
99
|
loginWithUsername: canLoginWithUsername,
|
|
100
|
-
hasPasskeySupport: hasPasskeyPlugin,
|
|
101
100
|
hasUsernamePlugin: hasUsernamePlugin,
|
|
102
|
-
|
|
101
|
+
loginMethods: loginMethods,
|
|
103
102
|
prefillEmail: prefillEmail,
|
|
104
103
|
prefillPassword: prefillPassword,
|
|
105
104
|
prefillUsername: prefillUsername,
|
|
@@ -123,4 +122,4 @@ const AdminLogin = async ({ initPageResult, params, searchParams, pluginOptions,
|
|
|
123
122
|
};
|
|
124
123
|
export default AdminLogin;
|
|
125
124
|
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC92aWV3cy9hZG1pbi1sb2dpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQWRtaW5Mb2dpbkNsaWVudCB9IGZyb20gJy4vY2xpZW50J1xuaW1wb3J0IHsgcmVkaXJlY3QgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgeyBMb2dvIH0gZnJvbSAnQC9zaGFyZWQvY29tcG9uZW50cy9sb2dvJ1xuaW1wb3J0IHsgZ2V0U2FmZVJlZGlyZWN0IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZXQtc2FmZS1yZWRpcmVjdCdcbmltcG9ydCB7IE1pbmltYWxUZW1wbGF0ZSB9IGZyb20gJ0BwYXlsb2FkY21zL25leHQvdGVtcGxhdGVzJ1xuaW1wb3J0IHsgY2hlY2tQYXNza2V5UGx1Z2luIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9jaGVjay1wYXNza2V5LXBsdWdpbidcbmltcG9ydCB7IGNoZWNrVXNlcm5hbWVQbHVnaW4gfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL2NoZWNrLXVzZXJuYW1lLXBsdWdpbidcbmltcG9ydCB7IFJlbmRlclNlcnZlckNvbXBvbmVudCB9IGZyb20gJ0BwYXlsb2FkY21zL3VpL2VsZW1lbnRzL1JlbmRlclNlcnZlckNvbXBvbmVudCdcbmltcG9ydCB7IGFkbWluUm91dGVzLCBiYXNlQ29sbGVjdGlvblNsdWdzLCBkZWZhdWx0cyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50cydcblxuaW1wb3J0IHsgdHlwZSBBZG1pblZpZXdTZXJ2ZXJQcm9wcywgdHlwZSBTZXJ2ZXJQcm9wcyB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IEJldHRlckF1dGhQbHVnaW5PcHRpb25zLCBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgbG9naW5CYXNlQ2xhc3MgPSAnbG9naW4nXG5cbnR5cGUgQWRtaW5Mb2dpblByb3BzID0gQWRtaW5WaWV3U2VydmVyUHJvcHMgJiB7XG4gIHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zXG4gIGJldHRlckF1dGhPcHRpb25zOiBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9uc1xufVxuXG5jb25zdCBBZG1pbkxvZ2luOiBSZWFjdC5GQzxBZG1pbkxvZ2luUHJvcHM+ID0gYXN5bmMgKHtcbiAgaW5pdFBhZ2VSZXN1bHQsXG4gIHBhcmFtcyxcbiAgc2VhcmNoUGFyYW1zLFxuICBwbHVnaW5PcHRpb25zLFxuICBiZXR0ZXJBdXRoT3B0aW9uc1xufTogQWRtaW5Mb2dpblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgbG9jYWxlLCBwZXJtaXNzaW9ucywgcmVxIH0gPSBpbml0UGFnZVJlc3VsdFxuICBjb25zdCB7XG4gICAgaTE4bixcbiAgICBwYXlsb2FkOiB7IGNvbmZpZywgY29sbGVjdGlvbnMgfSxcbiAgICBwYXlsb2FkLFxuICAgIHVzZXJcbiAgfSA9IHJlcVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjogeyBjb21wb25lbnRzOiB7IGFmdGVyTG9naW4sIGJlZm9yZUxvZ2luIH0gPSB7fSwgdXNlcjogdXNlclNsdWcgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW46IGFkbWluUm91dGUgfVxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgaW52aXRhdGlvbnNDb2xsZWN0aW9uID0gcGx1Z2luT3B0aW9ucy5hZG1pbkludml0YXRpb25zPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MuYWRtaW5JbnZpdGF0aW9uc1xuICBjb25zdCBhZG1pblJvbGUgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5kZWZhdWx0QWRtaW5Sb2xlID8/IGRlZmF1bHRzLmFkbWluUm9sZVxuICBjb25zdCByZWRpcmVjdFVybCA9IGdldFNhZmVSZWRpcmVjdChzZWFyY2hQYXJhbXM/LnJlZGlyZWN0ID8/ICcnLCBhZG1pblJvdXRlKVxuXG4gIGlmICh1c2VyKSB7XG4gICAgcmVkaXJlY3QocmVkaXJlY3RVcmwpXG4gIH1cblxuICBjb25zdCBhZG1pbkNvdW50ID0gYXdhaXQgcmVxLnBheWxvYWQuY291bnQoe1xuICAgIGNvbGxlY3Rpb246IHVzZXJTbHVnLFxuICAgIHdoZXJlOiB7XG4gICAgICByb2xlOiB7XG4gICAgICAgIGVxdWFsczogYWRtaW5Sb2xlXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG4gIGlmIChhZG1pbkNvdW50LnRvdGFsRG9jcyA9PT0gMCkge1xuICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhbiBhZG1pbiBpbnZpdGF0aW9uXG4gICAgY29uc3QgZXhpc3RpbmdJbnZpdGF0aW9ucyA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmQoe1xuICAgICAgY29sbGVjdGlvbjogaW52aXRhdGlvbnNDb2xsZWN0aW9uLFxuICAgICAgd2hlcmU6IHtcbiAgICAgICAgcm9sZToge1xuICAgICAgICAgIGVxdWFsczogYWRtaW5Sb2xlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgbGV0IHRva2VuXG5cbiAgICBpZiAoZXhpc3RpbmdJbnZpdGF0aW9ucy50b3RhbERvY3MgPiAwKSB7XG4gICAgICAvLyBVc2UgZXhpc3RpbmcgdG9rZW5cbiAgICAgIHRva2VuID0gZXhpc3RpbmdJbnZpdGF0aW9ucy5kb2NzWzBdLnRva2VuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdlbmVyYXRlIGEgbmV3IHNlY3VyZSBpbnZpdGUgdG9rZW5cbiAgICAgIHRva2VuID0gY3J5cHRvLnJhbmRvbVVVSUQoKVxuICAgICAgYXdhaXQgcmVxLnBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogaW52aXRhdGlvbnNDb2xsZWN0aW9uLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcm9sZTogYWRtaW5Sb2xlLFxuICAgICAgICAgIHRva2VuXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmVkaXJlY3QoYCR7YWRtaW5Sb3V0ZX0ke2FkbWluUm91dGVzLmFkbWluU2lnbnVwfT90b2tlbj0ke3Rva2VufWApXG4gIH1cblxuICAvLyBGaWx0ZXIgb3V0IHRoZSBmaXJzdCBjb21wb25lbnQgZnJvbSBhZnRlckxvZ2luIGFycmF5IG9yIHNldCB0byB1bmRlZmluZWQgaWYgbm90IG1vcmUgdGhhbiAxXG4gIC8vIFRoaXMgaXMgYmVjYXVzZSBvZiB0aGUgY3VzdG9tIGxvZ2luIHJlZGlyZWN0IGNvbXBvbmVudCwgd2UgZG9uJ3Qgd2FudCBhbiBpbmZpbml0ZSBsb29wXG4gIGNvbnN0IGZpbHRlcmVkQWZ0ZXJMb2dpbiA9IEFycmF5LmlzQXJyYXkoYWZ0ZXJMb2dpbikgJiYgYWZ0ZXJMb2dpbi5sZW5ndGggPiAxID8gYWZ0ZXJMb2dpbi5zbGljZSgxKSA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsQXV0b0xvZ2luID0gdHlwZW9mIGNvbmZpZy5hZG1pbj8uYXV0b0xvZ2luID09PSAnb2JqZWN0JyAmJiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5wcmVmaWxsT25seVxuICBjb25zdCBwcmVmaWxsVXNlcm5hbWUgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi51c2VybmFtZSA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsRW1haWwgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5lbWFpbCA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsUGFzc3dvcmQgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5wYXNzd29yZCA6IHVuZGVmaW5lZFxuICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrVXNlcm5hbWVQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGhhc1Bhc3NrZXlQbHVnaW4gPSBjaGVja1Bhc3NrZXlQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IHNvY2lhbFByb3ZpZGVycyA9IHBsdWdpbk9wdGlvbnMuYWRtaW5Db21wb25lbnRzPy5zb2NpYWxQcm92aWRlcnMgPz8ge31cbiAgY29uc3QgbG9naW5XaXRoVXNlcm5hbWUgPSBjb2xsZWN0aW9ucz8uW3VzZXJTbHVnXT8uY29uZmlnLmF1dGgubG9naW5XaXRoVXNlcm5hbWVcbiAgY29uc3QgY2FuTG9naW5XaXRoVXNlcm5hbWUgPSAoaGFzVXNlcm5hbWVQbHVnaW4gJiYgbG9naW5XaXRoVXNlcm5hbWUpID8/IGZhbHNlXG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbFRlbXBsYXRlIGNsYXNzTmFtZT17bG9naW5CYXNlQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2xvZ2luQmFzZUNsYXNzfV9fYnJhbmRgfT5cbiAgICAgICAgPExvZ29cbiAgICAgICAgICBpMThuPXtpMThufVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgIHBhcmFtcz17cGFyYW1zfVxuICAgICAgICAgIHBheWxvYWQ9e3BheWxvYWR9XG4gICAgICAgICAgcGVybWlzc2lvbnM9e3Blcm1pc3Npb25zfVxuICAgICAgICAgIHNlYXJjaFBhcmFtcz17c2VhcmNoUGFyYW1zfVxuICAgICAgICAgIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICB7UmVuZGVyU2VydmVyQ29tcG9uZW50KHtcbiAgICAgICAgQ29tcG9uZW50OiBiZWZvcmVMb2dpbixcbiAgICAgICAgaW1wb3J0TWFwOiBwYXlsb2FkLmltcG9ydE1hcCxcbiAgICAgICAgc2VydmVyUHJvcHM6IHtcbiAgICAgICAgICBpMThuLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICBwZXJtaXNzaW9ucyxcbiAgICAgICAgICBzZWFyY2hQYXJhbXMsXG4gICAgICAgICAgdXNlcjogdXNlciA/PyB1bmRlZmluZWRcbiAgICAgICAgfSBzYXRpc2ZpZXMgU2VydmVyUHJvcHNcbiAgICAgIH0pfVxuICAgICAgPEFkbWluTG9naW5DbGllbnRcbiAgICAgICAgbG9naW5XaXRoVXNlcm5hbWU9e2NhbkxvZ2luV2l0aFVzZXJuYW1lfVxuICAgICAgICBoYXNQYXNza2V5U3VwcG9ydD17aGFzUGFzc2tleVBsdWdpbn1cbiAgICAgICAgaGFzVXNlcm5hbWVQbHVnaW49e2hhc1VzZXJuYW1lUGx1Z2lufVxuICAgICAgICBzb2NpYWxQcm92aWRlcnM9e3NvY2lhbFByb3ZpZGVyc31cbiAgICAgICAgcHJlZmlsbEVtYWlsPXtwcmVmaWxsRW1haWx9XG4gICAgICAgIHByZWZpbGxQYXNzd29yZD17cHJlZmlsbFBhc3N3b3JkfVxuICAgICAgICBwcmVmaWxsVXNlcm5hbWU9e3ByZWZpbGxVc2VybmFtZX1cbiAgICAgICAgc2VhcmNoUGFyYW1zPXtzZWFyY2hQYXJhbXMgPz8ge319XG4gICAgICAvPlxuICAgICAge1JlbmRlclNlcnZlckNvbXBvbmVudCh7XG4gICAgICAgIENvbXBvbmVudDogZmlsdGVyZWRBZnRlckxvZ2luLFxuICAgICAgICBpbXBvcnRNYXA6IHBheWxvYWQuaW1wb3J0TWFwLFxuICAgICAgICBzZXJ2ZXJQcm9wczoge1xuICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICAgIHNlYXJjaFBhcmFtcyxcbiAgICAgICAgICB1c2VyOiB1c2VyID8/IHVuZGVmaW5lZFxuICAgICAgICB9IHNhdGlzZmllcyBTZXJ2ZXJQcm9wc1xuICAgICAgfSl9XG4gICAgPC9NaW5pbWFsVGVtcGxhdGU+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQWRtaW5Mb2dpblxuIl0sIm5hbWVzIjpbIlJlYWN0IiwiQWRtaW5Mb2dpbkNsaWVudCIsInJlZGlyZWN0IiwiTG9nbyIsImdldFNhZmVSZWRpcmVjdCIsIk1pbmltYWxUZW1wbGF0ZSIsImNoZWNrUGFzc2tleVBsdWdpbiIsImNoZWNrVXNlcm5hbWVQbHVnaW4iLCJSZW5kZXJTZXJ2ZXJDb21wb25lbnQiLCJhZG1pblJvdXRlcyIsImJhc2VDb2xsZWN0aW9uU2x1Z3MiLCJkZWZhdWx0cyIsImxvZ2luQmFzZUNsYXNzIiwiQWRtaW5Mb2dpbiIsImluaXRQYWdlUmVzdWx0IiwicGFyYW1zIiwic2VhcmNoUGFyYW1zIiwicGx1Z2luT3B0aW9ucyIsImJldHRlckF1dGhPcHRpb25zIiwibG9jYWxlIiwicGVybWlzc2lvbnMiLCJyZXEiLCJpMThuIiwicGF5bG9hZCIsImNvbmZpZyIsImNvbGxlY3Rpb25zIiwidXNlciIsImFkbWluIiwiY29tcG9uZW50cyIsImFmdGVyTG9naW4iLCJiZWZvcmVMb2dpbiIsInVzZXJTbHVnIiwicm91dGVzIiwiYWRtaW5Sb3V0ZSIsImludml0YXRpb25zQ29sbGVjdGlvbiIsImFkbWluSW52aXRhdGlvbnMiLCJzbHVnIiwiYWRtaW5Sb2xlIiwidXNlcnMiLCJkZWZhdWx0QWRtaW5Sb2xlIiwicmVkaXJlY3RVcmwiLCJhZG1pbkNvdW50IiwiY291bnQiLCJjb2xsZWN0aW9uIiwid2hlcmUiLCJyb2xlIiwiZXF1YWxzIiwidG90YWxEb2NzIiwiZXhpc3RpbmdJbnZpdGF0aW9ucyIsImZpbmQiLCJ0b2tlbiIsImRvY3MiLCJjcnlwdG8iLCJyYW5kb21VVUlEIiwiY3JlYXRlIiwiZGF0YSIsImFkbWluU2lnbnVwIiwiZmlsdGVyZWRBZnRlckxvZ2luIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwic2xpY2UiLCJ1bmRlZmluZWQiLCJwcmVmaWxsQXV0b0xvZ2luIiwiYXV0b0xvZ2luIiwicHJlZmlsbE9ubHkiLCJwcmVmaWxsVXNlcm5hbWUiLCJ1c2VybmFtZSIsInByZWZpbGxFbWFpbCIsImVtYWlsIiwicHJlZmlsbFBhc3N3b3JkIiwicGFzc3dvcmQiLCJoYXNVc2VybmFtZVBsdWdpbiIsImhhc1Bhc3NrZXlQbHVnaW4iLCJzb2NpYWxQcm92aWRlcnMiLCJhZG1pbkNvbXBvbmVudHMiLCJsb2dpbldpdGhVc2VybmFtZSIsImF1dGgiLCJjYW5Mb2dpbldpdGhVc2VybmFtZSIsImNsYXNzTmFtZSIsImRpdiIsIkNvbXBvbmVudCIsImltcG9ydE1hcCIsInNlcnZlclByb3BzIiwiaGFzUGFzc2tleVN1cHBvcnQiXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxXQUFXLFFBQU87QUFDekIsU0FBU0MsZ0JBQWdCLFFBQVEsV0FBVTtBQUMzQyxTQUFTQyxRQUFRLFFBQVEsa0JBQWlCO0FBQzFDLFNBQVNDLElBQUksUUFBUSx3Q0FBMEI7QUFDL0MsU0FBU0MsZUFBZSxRQUFRLGdDQUFzRDtBQUN0RixTQUFTQyxlQUFlLFFBQVEsNkJBQTRCO0FBQzVELFNBQVNDLGtCQUFrQixRQUFRLHdDQUFtRDtBQUN0RixTQUFTQyxtQkFBbUIsUUFBUSx5Q0FBb0Q7QUFDeEYsU0FBU0MscUJBQXFCLFFBQVEsZ0RBQStDO0FBQ3JGLFNBQVNDLFdBQVcsRUFBRUMsbUJBQW1CLEVBQUVDLFFBQVEsUUFBUSxxQkFBZ0M7QUFLM0YsT0FBTyxNQUFNQyxpQkFBaUIsUUFBTztBQU9yQyxNQUFNQyxhQUF3QyxPQUFPLEVBQ25EQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGlCQUFpQixFQUNEO0lBQ2hCLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxXQUFXLEVBQUVDLEdBQUcsRUFBRSxHQUFHUDtJQUNyQyxN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
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC92aWV3cy9hZG1pbi1sb2dpbi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQWRtaW5Mb2dpbkNsaWVudCB9IGZyb20gJy4vY2xpZW50J1xuaW1wb3J0IHsgcmVkaXJlY3QgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgeyBMb2dvIH0gZnJvbSAnQC9zaGFyZWQvY29tcG9uZW50cy9sb2dvJ1xuaW1wb3J0IHsgZ2V0U2FmZVJlZGlyZWN0IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC91dGlscy9nZXQtc2FmZS1yZWRpcmVjdCdcbmltcG9ydCB7IE1pbmltYWxUZW1wbGF0ZSB9IGZyb20gJ0BwYXlsb2FkY21zL25leHQvdGVtcGxhdGVzJ1xuaW1wb3J0IHsgY2hlY2tQYXNza2V5UGx1Z2luIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9jaGVjay1wYXNza2V5LXBsdWdpbidcbmltcG9ydCB7IGNoZWNrVXNlcm5hbWVQbHVnaW4gfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL2NoZWNrLXVzZXJuYW1lLXBsdWdpbidcbmltcG9ydCB7IFJlbmRlclNlcnZlckNvbXBvbmVudCB9IGZyb20gJ0BwYXlsb2FkY21zL3VpL2VsZW1lbnRzL1JlbmRlclNlcnZlckNvbXBvbmVudCdcbmltcG9ydCB7IGFkbWluUm91dGVzLCBiYXNlQ29sbGVjdGlvblNsdWdzLCBkZWZhdWx0cyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50cydcblxuaW1wb3J0IHsgdHlwZSBBZG1pblZpZXdTZXJ2ZXJQcm9wcywgdHlwZSBTZXJ2ZXJQcm9wcyB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IEJldHRlckF1dGhQbHVnaW5PcHRpb25zLCBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9ucyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3R5cGVzJ1xuXG5leHBvcnQgY29uc3QgbG9naW5CYXNlQ2xhc3MgPSAnbG9naW4nXG5cbnR5cGUgQWRtaW5Mb2dpblByb3BzID0gQWRtaW5WaWV3U2VydmVyUHJvcHMgJiB7XG4gIHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zXG4gIGJldHRlckF1dGhPcHRpb25zOiBTYW5pdGl6ZWRCZXR0ZXJBdXRoT3B0aW9uc1xufVxuXG5jb25zdCBBZG1pbkxvZ2luOiBSZWFjdC5GQzxBZG1pbkxvZ2luUHJvcHM+ID0gYXN5bmMgKHtcbiAgaW5pdFBhZ2VSZXN1bHQsXG4gIHBhcmFtcyxcbiAgc2VhcmNoUGFyYW1zLFxuICBwbHVnaW5PcHRpb25zLFxuICBiZXR0ZXJBdXRoT3B0aW9uc1xufTogQWRtaW5Mb2dpblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgbG9jYWxlLCBwZXJtaXNzaW9ucywgcmVxIH0gPSBpbml0UGFnZVJlc3VsdFxuICBjb25zdCB7XG4gICAgaTE4bixcbiAgICBwYXlsb2FkOiB7IGNvbmZpZywgY29sbGVjdGlvbnMgfSxcbiAgICBwYXlsb2FkLFxuICAgIHVzZXJcbiAgfSA9IHJlcVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjogeyBjb21wb25lbnRzOiB7IGFmdGVyTG9naW4sIGJlZm9yZUxvZ2luIH0gPSB7fSwgdXNlcjogdXNlclNsdWcgfSxcbiAgICByb3V0ZXM6IHsgYWRtaW46IGFkbWluUm91dGUgfVxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgaW52aXRhdGlvbnNDb2xsZWN0aW9uID0gcGx1Z2luT3B0aW9ucy5hZG1pbkludml0YXRpb25zPy5zbHVnID8/IGJhc2VDb2xsZWN0aW9uU2x1Z3MuYWRtaW5JbnZpdGF0aW9uc1xuICBjb25zdCBhZG1pblJvbGUgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5kZWZhdWx0QWRtaW5Sb2xlID8/IGRlZmF1bHRzLmFkbWluUm9sZVxuICBjb25zdCByZWRpcmVjdFVybCA9IGdldFNhZmVSZWRpcmVjdChzZWFyY2hQYXJhbXM/LnJlZGlyZWN0ID8/ICcnLCBhZG1pblJvdXRlKVxuXG4gIGlmICh1c2VyKSB7XG4gICAgcmVkaXJlY3QocmVkaXJlY3RVcmwpXG4gIH1cblxuICBjb25zdCBhZG1pbkNvdW50ID0gYXdhaXQgcmVxLnBheWxvYWQuY291bnQoe1xuICAgIGNvbGxlY3Rpb246IHVzZXJTbHVnLFxuICAgIHdoZXJlOiB7XG4gICAgICByb2xlOiB7XG4gICAgICAgIGVxdWFsczogYWRtaW5Sb2xlXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG4gIGlmIChhZG1pbkNvdW50LnRvdGFsRG9jcyA9PT0gMCkge1xuICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhbiBhZG1pbiBpbnZpdGF0aW9uXG4gICAgY29uc3QgZXhpc3RpbmdJbnZpdGF0aW9ucyA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmQoe1xuICAgICAgY29sbGVjdGlvbjogaW52aXRhdGlvbnNDb2xsZWN0aW9uLFxuICAgICAgd2hlcmU6IHtcbiAgICAgICAgcm9sZToge1xuICAgICAgICAgIGVxdWFsczogYWRtaW5Sb2xlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgbGV0IHRva2VuXG5cbiAgICBpZiAoZXhpc3RpbmdJbnZpdGF0aW9ucy50b3RhbERvY3MgPiAwKSB7XG4gICAgICAvLyBVc2UgZXhpc3RpbmcgdG9rZW5cbiAgICAgIHRva2VuID0gZXhpc3RpbmdJbnZpdGF0aW9ucy5kb2NzWzBdLnRva2VuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEdlbmVyYXRlIGEgbmV3IHNlY3VyZSBpbnZpdGUgdG9rZW5cbiAgICAgIHRva2VuID0gY3J5cHRvLnJhbmRvbVVVSUQoKVxuICAgICAgYXdhaXQgcmVxLnBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogaW52aXRhdGlvbnNDb2xsZWN0aW9uLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcm9sZTogYWRtaW5Sb2xlLFxuICAgICAgICAgIHRva2VuXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmVkaXJlY3QoYCR7YWRtaW5Sb3V0ZX0ke2FkbWluUm91dGVzLmFkbWluU2lnbnVwfT90b2tlbj0ke3Rva2VufWApXG4gIH1cblxuICAvLyBGaWx0ZXIgb3V0IHRoZSBmaXJzdCBjb21wb25lbnQgZnJvbSBhZnRlckxvZ2luIGFycmF5IG9yIHNldCB0byB1bmRlZmluZWQgaWYgbm90IG1vcmUgdGhhbiAxXG4gIC8vIFRoaXMgaXMgYmVjYXVzZSBvZiB0aGUgY3VzdG9tIGxvZ2luIHJlZGlyZWN0IGNvbXBvbmVudCwgd2UgZG9uJ3Qgd2FudCBhbiBpbmZpbml0ZSBsb29wXG4gIGNvbnN0IGZpbHRlcmVkQWZ0ZXJMb2dpbiA9IEFycmF5LmlzQXJyYXkoYWZ0ZXJMb2dpbikgJiYgYWZ0ZXJMb2dpbi5sZW5ndGggPiAxID8gYWZ0ZXJMb2dpbi5zbGljZSgxKSA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsQXV0b0xvZ2luID0gdHlwZW9mIGNvbmZpZy5hZG1pbj8uYXV0b0xvZ2luID09PSAnb2JqZWN0JyAmJiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5wcmVmaWxsT25seVxuICBjb25zdCBwcmVmaWxsVXNlcm5hbWUgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi51c2VybmFtZSA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsRW1haWwgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5lbWFpbCA6IHVuZGVmaW5lZFxuICBjb25zdCBwcmVmaWxsUGFzc3dvcmQgPSBwcmVmaWxsQXV0b0xvZ2luICYmIHR5cGVvZiBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbiA9PT0gJ29iamVjdCcgPyBjb25maWcuYWRtaW4/LmF1dG9Mb2dpbi5wYXNzd29yZCA6IHVuZGVmaW5lZFxuICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrVXNlcm5hbWVQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGhhc1Bhc3NrZXlQbHVnaW4gPSBjaGVja1Bhc3NrZXlQbHVnaW4oYmV0dGVyQXV0aE9wdGlvbnMpXG4gIGNvbnN0IGxvZ2luTWV0aG9kcyA9IHBsdWdpbk9wdGlvbnMuYWRtaW4/LmxvZ2luTWV0aG9kcyA/PyBbXVxuICBjb25zdCBsb2dpbldpdGhVc2VybmFtZSA9IGNvbGxlY3Rpb25zPy5bdXNlclNsdWddPy5jb25maWcuYXV0aC5sb2dpbldpdGhVc2VybmFtZVxuICBjb25zdCBjYW5Mb2dpbldpdGhVc2VybmFtZSA9IChoYXNVc2VybmFtZVBsdWdpbiAmJiBsb2dpbldpdGhVc2VybmFtZSkgPz8gZmFsc2VcblxuICByZXR1cm4gKFxuICAgIDxNaW5pbWFsVGVtcGxhdGUgY2xhc3NOYW1lPXtsb2dpbkJhc2VDbGFzc30+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7bG9naW5CYXNlQ2xhc3N9X19icmFuZGB9PlxuICAgICAgICA8TG9nb1xuICAgICAgICAgIGkxOG49e2kxOG59XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgcGFyYW1zPXtwYXJhbXN9XG4gICAgICAgICAgcGF5bG9hZD17cGF5bG9hZH1cbiAgICAgICAgICBwZXJtaXNzaW9ucz17cGVybWlzc2lvbnN9XG4gICAgICAgICAgc2VhcmNoUGFyYW1zPXtzZWFyY2hQYXJhbXN9XG4gICAgICAgICAgdXNlcj17dXNlciA/PyB1bmRlZmluZWR9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtSZW5kZXJTZXJ2ZXJDb21wb25lbnQoe1xuICAgICAgICBDb21wb25lbnQ6IGJlZm9yZUxvZ2luLFxuICAgICAgICBpbXBvcnRNYXA6IHBheWxvYWQuaW1wb3J0TWFwLFxuICAgICAgICBzZXJ2ZXJQcm9wczoge1xuICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICAgIHNlYXJjaFBhcmFtcyxcbiAgICAgICAgICB1c2VyOiB1c2VyID8/IHVuZGVmaW5lZFxuICAgICAgICB9IHNhdGlzZmllcyBTZXJ2ZXJQcm9wc1xuICAgICAgfSl9XG4gICAgICA8QWRtaW5Mb2dpbkNsaWVudFxuICAgICAgICBsb2dpbldpdGhVc2VybmFtZT17Y2FuTG9naW5XaXRoVXNlcm5hbWV9XG4gICAgICAgIGhhc1VzZXJuYW1lUGx1Z2luPXtoYXNVc2VybmFtZVBsdWdpbn1cbiAgICAgICAgbG9naW5NZXRob2RzPXtsb2dpbk1ldGhvZHN9XG4gICAgICAgIHByZWZpbGxFbWFpbD17cHJlZmlsbEVtYWlsfVxuICAgICAgICBwcmVmaWxsUGFzc3dvcmQ9e3ByZWZpbGxQYXNzd29yZH1cbiAgICAgICAgcHJlZmlsbFVzZXJuYW1lPXtwcmVmaWxsVXNlcm5hbWV9XG4gICAgICAgIHNlYXJjaFBhcmFtcz17c2VhcmNoUGFyYW1zID8/IHt9fVxuICAgICAgLz5cbiAgICAgIHtSZW5kZXJTZXJ2ZXJDb21wb25lbnQoe1xuICAgICAgICBDb21wb25lbnQ6IGZpbHRlcmVkQWZ0ZXJMb2dpbixcbiAgICAgICAgaW1wb3J0TWFwOiBwYXlsb2FkLmltcG9ydE1hcCxcbiAgICAgICAgc2VydmVyUHJvcHM6IHtcbiAgICAgICAgICBpMThuLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICBwZXJtaXNzaW9ucyxcbiAgICAgICAgICBzZWFyY2hQYXJhbXMsXG4gICAgICAgICAgdXNlcjogdXNlciA/PyB1bmRlZmluZWRcbiAgICAgICAgfSBzYXRpc2ZpZXMgU2VydmVyUHJvcHNcbiAgICAgIH0pfVxuICAgIDwvTWluaW1hbFRlbXBsYXRlPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEFkbWluTG9naW5cbiJdLCJuYW1lcyI6WyJSZWFjdCIsIkFkbWluTG9naW5DbGllbnQiLCJyZWRpcmVjdCIsIkxvZ28iLCJnZXRTYWZlUmVkaXJlY3QiLCJNaW5pbWFsVGVtcGxhdGUiLCJjaGVja1Bhc3NrZXlQbHVnaW4iLCJjaGVja1VzZXJuYW1lUGx1Z2luIiwiUmVuZGVyU2VydmVyQ29tcG9uZW50IiwiYWRtaW5Sb3V0ZXMiLCJiYXNlQ29sbGVjdGlvblNsdWdzIiwiZGVmYXVsdHMiLCJsb2dpbkJhc2VDbGFzcyIsIkFkbWluTG9naW4iLCJpbml0UGFnZVJlc3VsdCIsInBhcmFtcyIsInNlYXJjaFBhcmFtcyIsInBsdWdpbk9wdGlvbnMiLCJiZXR0ZXJBdXRoT3B0aW9ucyIsImxvY2FsZSIsInBlcm1pc3Npb25zIiwicmVxIiwiaTE4biIsInBheWxvYWQiLCJjb25maWciLCJjb2xsZWN0aW9ucyIsInVzZXIiLCJhZG1pbiIsImNvbXBvbmVudHMiLCJhZnRlckxvZ2luIiwiYmVmb3JlTG9naW4iLCJ1c2VyU2x1ZyIsInJvdXRlcyIsImFkbWluUm91dGUiLCJpbnZpdGF0aW9uc0NvbGxlY3Rpb24iLCJhZG1pbkludml0YXRpb25zIiwic2x1ZyIsImFkbWluUm9sZSIsInVzZXJzIiwiZGVmYXVsdEFkbWluUm9sZSIsInJlZGlyZWN0VXJsIiwiYWRtaW5Db3VudCIsImNvdW50IiwiY29sbGVjdGlvbiIsIndoZXJlIiwicm9sZSIsImVxdWFscyIsInRvdGFsRG9jcyIsImV4aXN0aW5nSW52aXRhdGlvbnMiLCJmaW5kIiwidG9rZW4iLCJkb2NzIiwiY3J5cHRvIiwicmFuZG9tVVVJRCIsImNyZWF0ZSIsImRhdGEiLCJhZG1pblNpZ251cCIsImZpbHRlcmVkQWZ0ZXJMb2dpbiIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsInNsaWNlIiwidW5kZWZpbmVkIiwicHJlZmlsbEF1dG9Mb2dpbiIsImF1dG9Mb2dpbiIsInByZWZpbGxPbmx5IiwicHJlZmlsbFVzZXJuYW1lIiwidXNlcm5hbWUiLCJwcmVmaWxsRW1haWwiLCJlbWFpbCIsInByZWZpbGxQYXNzd29yZCIsInBhc3N3b3JkIiwiaGFzVXNlcm5hbWVQbHVnaW4iLCJoYXNQYXNza2V5UGx1Z2luIiwibG9naW5NZXRob2RzIiwibG9naW5XaXRoVXNlcm5hbWUiLCJhdXRoIiwiY2FuTG9naW5XaXRoVXNlcm5hbWUiLCJjbGFzc05hbWUiLCJkaXYiLCJDb21wb25lbnQiLCJpbXBvcnRNYXAiLCJzZXJ2ZXJQcm9wcyJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLFdBQVcsUUFBTztBQUN6QixTQUFTQyxnQkFBZ0IsUUFBUSxXQUFVO0FBQzNDLFNBQVNDLFFBQVEsUUFBUSxrQkFBaUI7QUFDMUMsU0FBU0MsSUFBSSxRQUFRLHdDQUEwQjtBQUMvQyxTQUFTQyxlQUFlLFFBQVEsZ0NBQXNEO0FBQ3RGLFNBQVNDLGVBQWUsUUFBUSw2QkFBNEI7QUFDNUQsU0FBU0Msa0JBQWtCLFFBQVEsd0NBQW1EO0FBQ3RGLFNBQVNDLG1CQUFtQixRQUFRLHlDQUFvRDtBQUN4RixTQUFTQyxxQkFBcUIsUUFBUSxnREFBK0M7QUFDckYsU0FBU0MsV0FBVyxFQUFFQyxtQkFBbUIsRUFBRUMsUUFBUSxRQUFRLHFCQUFnQztBQUszRixPQUFPLE1BQU1DLGlCQUFpQixRQUFPO0FBT3JDLE1BQU1DLGFBQXdDLE9BQU8sRUFDbkRDLGNBQWMsRUFDZEMsTUFBTSxFQUNOQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsaUJBQWlCLEVBQ0Q7SUFDaEIsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLFdBQVcsRUFBRUMsR0FBRyxFQUFFLEdBQUdQO0lBQ3JDLE1BQU0sRUFDSlEsSUFBSSxFQUNKQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxFQUFFLEVBQ2hDRixPQUFPLEVBQ1BHLElBQUksRUFDTCxHQUFHTDtJQUVKLE1BQU0sRUFDSk0sT0FBTyxF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
|