phx-uikit 1.0.225 → 1.0.227
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.
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// axios.ts
|
|
3
2
|
exports.__esModule = true;
|
|
4
3
|
exports.PHXAxiosInstance = void 0;
|
|
5
4
|
var tslib_1 = require("tslib");
|
|
6
5
|
var axios_1 = tslib_1.__importDefault(require("axios"));
|
|
6
|
+
var async_lock_1 = tslib_1.__importDefault(require("async-lock"));
|
|
7
7
|
var read_env_config_1 = require("./read-env-config");
|
|
8
8
|
var constants_1 = require("./utils/constants");
|
|
9
9
|
var saveCookiesClient_1 = tslib_1.__importDefault(require("./components/Func/saveCookiesClient"));
|
|
10
10
|
var getCookieSession_1 = tslib_1.__importDefault(require("./components/Func/getCookieSession"));
|
|
11
11
|
var headers_1 = require("next/headers");
|
|
12
|
-
|
|
13
|
-
var refreshTokenPromise = null;
|
|
12
|
+
var lock = new async_lock_1["default"]();
|
|
14
13
|
var publicUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
15
|
-
|
|
14
|
+
var internalUrl = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
|
|
16
15
|
var isServer = typeof window === 'undefined';
|
|
17
16
|
var PHXAxiosInstance = axios_1["default"].create({
|
|
18
17
|
baseURL: publicUrl
|
|
19
18
|
});
|
|
20
19
|
exports.PHXAxiosInstance = PHXAxiosInstance;
|
|
21
|
-
// Lấy
|
|
20
|
+
// Lấy header (cookie + origin) khi chạy SSR
|
|
22
21
|
var getAuthHeaders = function () {
|
|
23
22
|
if (!isServer)
|
|
24
23
|
return {};
|
|
@@ -35,10 +34,10 @@ var getAuthHeaders = function () {
|
|
|
35
34
|
hostname: (0, headers_1.headers)().get('origin') || undefined
|
|
36
35
|
};
|
|
37
36
|
};
|
|
38
|
-
// Lưu
|
|
39
|
-
var saveRefreshTokenServer = function (
|
|
37
|
+
// Lưu lại refresh token từ header của response (chỉ SSR)
|
|
38
|
+
var saveRefreshTokenServer = function (response) {
|
|
40
39
|
var _a;
|
|
41
|
-
var setCookieHeader = ((_a =
|
|
40
|
+
var setCookieHeader = ((_a = response.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
|
|
42
41
|
var match = setCookieHeader.match(/refresh_token=([^;]+)/);
|
|
43
42
|
var refreshToken = (match === null || match === void 0 ? void 0 : match[1]) || '';
|
|
44
43
|
(0, headers_1.cookies)().set(constants_1.COOKIE_REFRESH_TOKEN, refreshToken, {
|
|
@@ -49,65 +48,100 @@ var saveRefreshTokenServer = function (res) {
|
|
|
49
48
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
50
49
|
});
|
|
51
50
|
};
|
|
52
|
-
//
|
|
51
|
+
// Gọi API refresh-token, đồng bộ hoá với AsyncLock
|
|
53
52
|
var refreshAccessToken = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
54
53
|
return tslib_1.__generator(this, function (_a) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
54
|
+
return [2 /*return*/, lock.acquire('refresh_token', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
55
|
+
var currentSession, existing, url, response, newToken, updatedSession, err_1;
|
|
56
|
+
return tslib_1.__generator(this, function (_a) {
|
|
57
|
+
switch (_a.label) {
|
|
58
|
+
case 0:
|
|
59
|
+
currentSession = (0, getCookieSession_1["default"])();
|
|
60
|
+
existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
|
|
61
|
+
console.log('existing', existing);
|
|
62
|
+
if (existing)
|
|
63
|
+
return [2 /*return*/, existing
|
|
64
|
+
// Thực sự gọi API refresh
|
|
65
|
+
];
|
|
66
|
+
_a.label = 1;
|
|
67
|
+
case 1:
|
|
68
|
+
_a.trys.push([1, 3, , 4]);
|
|
69
|
+
url = "".concat(isServer ? (0, headers_1.headers)().get('origin') : '', "/api/authenticate/refresh-token");
|
|
70
|
+
return [4 /*yield*/, axios_1["default"].post(url, {}, { headers: getAuthHeaders() })];
|
|
71
|
+
case 2:
|
|
72
|
+
response = _a.sent();
|
|
73
|
+
newToken = response.data.token;
|
|
74
|
+
updatedSession = (0, getCookieSession_1["default"])();
|
|
75
|
+
(0, saveCookiesClient_1["default"])({
|
|
76
|
+
value: tslib_1.__assign(tslib_1.__assign({}, updatedSession), { access_token: newToken })
|
|
77
|
+
});
|
|
78
|
+
// Lưu refresh token SSR nếu cần
|
|
79
|
+
if (isServer)
|
|
80
|
+
saveRefreshTokenServer(response);
|
|
81
|
+
return [2 /*return*/, newToken];
|
|
82
|
+
case 3:
|
|
83
|
+
err_1 = _a.sent();
|
|
84
|
+
if (!isServer) {
|
|
85
|
+
window.location.href = constants_1.loginPage;
|
|
86
|
+
}
|
|
87
|
+
throw err_1;
|
|
88
|
+
case 4: return [2 /*return*/];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}); })];
|
|
90
92
|
});
|
|
91
93
|
}); };
|
|
92
|
-
//
|
|
93
|
-
PHXAxiosInstance.interceptors.request.use(function (config) {
|
|
94
|
-
var session
|
|
95
|
-
var
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
95
|
+
PHXAxiosInstance.interceptors.request.use(function (config) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
96
|
+
var session, token, err_2, fresh;
|
|
97
|
+
var _a;
|
|
98
|
+
return tslib_1.__generator(this, function (_b) {
|
|
99
|
+
switch (_b.label) {
|
|
100
|
+
case 0:
|
|
101
|
+
session = (0, getCookieSession_1["default"])();
|
|
102
|
+
token = session === null || session === void 0 ? void 0 : session.access_token;
|
|
103
|
+
if (!token) return [3 /*break*/, 7];
|
|
104
|
+
config.headers = config.headers || {};
|
|
105
|
+
config.headers.Authorization = "Bearer ".concat(token);
|
|
106
|
+
if (!isServer) return [3 /*break*/, 7];
|
|
107
|
+
_b.label = 1;
|
|
108
|
+
case 1:
|
|
109
|
+
_b.trys.push([1, 3, , 7]);
|
|
110
|
+
return [4 /*yield*/, axios_1["default"].post("".concat(internalUrl, "/authen/authenticate"), {}, { headers: tslib_1.__assign({ Authorization: "Bearer ".concat(token) }, getAuthHeaders()) })];
|
|
111
|
+
case 2:
|
|
112
|
+
_b.sent();
|
|
113
|
+
return [3 /*break*/, 7];
|
|
114
|
+
case 3:
|
|
115
|
+
err_2 = _b.sent();
|
|
116
|
+
if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
|
|
117
|
+
(0, saveCookiesClient_1["default"])({
|
|
118
|
+
value: tslib_1.__assign(tslib_1.__assign({}, session), { access_token: '' })
|
|
119
|
+
});
|
|
120
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
121
|
+
case 4:
|
|
122
|
+
fresh = _b.sent();
|
|
123
|
+
config.headers.Authorization = "Bearer ".concat(fresh);
|
|
124
|
+
return [3 /*break*/, 6];
|
|
125
|
+
case 5: throw err_2;
|
|
126
|
+
case 6: return [3 /*break*/, 7];
|
|
127
|
+
case 7: return [2 /*return*/, config];
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}); });
|
|
131
|
+
// Response interceptor: bắt 401, gọi refresh và retry
|
|
103
132
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
104
|
-
var originalRequest, newToken, e_1;
|
|
133
|
+
var originalRequest, session, newToken, e_1;
|
|
105
134
|
var _a;
|
|
106
135
|
return tslib_1.__generator(this, function (_b) {
|
|
107
136
|
switch (_b.label) {
|
|
108
137
|
case 0:
|
|
138
|
+
console.log('errorerror', error);
|
|
109
139
|
originalRequest = error.config;
|
|
110
140
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
141
|
+
session = (0, getCookieSession_1["default"])();
|
|
142
|
+
(0, saveCookiesClient_1["default"])({
|
|
143
|
+
value: tslib_1.__assign(tslib_1.__assign({}, session), { access_token: '' })
|
|
144
|
+
});
|
|
111
145
|
originalRequest._retry = true;
|
|
112
146
|
_b.label = 1;
|
|
113
147
|
case 1:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
// axios.ts
|
|
2
1
|
import { __assign, __awaiter, __generator } from "tslib";
|
|
3
2
|
import axios from 'axios';
|
|
3
|
+
import AsyncLock from 'async-lock';
|
|
4
4
|
import { getEnv } from './read-env-config';
|
|
5
5
|
import { COOKIE_REFRESH_TOKEN, loginPage } from './utils/constants';
|
|
6
6
|
import saveCookiesClient from './components/Func/saveCookiesClient';
|
|
7
7
|
import PHXFuncGetCookieSession from './components/Func/getCookieSession';
|
|
8
8
|
import { cookies, headers } from 'next/headers';
|
|
9
|
-
|
|
10
|
-
var refreshTokenPromise = null;
|
|
9
|
+
var lock = new AsyncLock();
|
|
11
10
|
var publicUrl = getEnv('NEXT_PUBLIC_API_GATEWAY', process.env.NEXT_PUBLIC_API_GATEWAY);
|
|
12
|
-
|
|
11
|
+
var internalUrl = getEnv('NEXT_PUBLIC_API_GATEWAY_INTERNAL', process.env.NEXT_PUBLIC_API_GATEWAY_INTERNAL);
|
|
13
12
|
var isServer = typeof window === 'undefined';
|
|
14
13
|
var PHXAxiosInstance = axios.create({
|
|
15
14
|
baseURL: publicUrl
|
|
16
15
|
});
|
|
17
|
-
// Lấy
|
|
16
|
+
// Lấy header (cookie + origin) khi chạy SSR
|
|
18
17
|
var getAuthHeaders = function () {
|
|
19
18
|
if (!isServer)
|
|
20
19
|
return {};
|
|
@@ -31,10 +30,10 @@ var getAuthHeaders = function () {
|
|
|
31
30
|
hostname: headers().get('origin') || undefined
|
|
32
31
|
};
|
|
33
32
|
};
|
|
34
|
-
// Lưu
|
|
35
|
-
var saveRefreshTokenServer = function (
|
|
33
|
+
// Lưu lại refresh token từ header của response (chỉ SSR)
|
|
34
|
+
var saveRefreshTokenServer = function (response) {
|
|
36
35
|
var _a;
|
|
37
|
-
var setCookieHeader = ((_a =
|
|
36
|
+
var setCookieHeader = ((_a = response.headers['set-cookie']) === null || _a === void 0 ? void 0 : _a[0]) || '';
|
|
38
37
|
var match = setCookieHeader.match(/refresh_token=([^;]+)/);
|
|
39
38
|
var refreshToken = (match === null || match === void 0 ? void 0 : match[1]) || '';
|
|
40
39
|
cookies().set(COOKIE_REFRESH_TOKEN, refreshToken, {
|
|
@@ -45,65 +44,100 @@ var saveRefreshTokenServer = function (res) {
|
|
|
45
44
|
expires: new Date(Date.now() + 365 * 24 * 60 * 60 * 1000)
|
|
46
45
|
});
|
|
47
46
|
};
|
|
48
|
-
//
|
|
47
|
+
// Gọi API refresh-token, đồng bộ hoá với AsyncLock
|
|
49
48
|
var refreshAccessToken = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
50
49
|
return __generator(this, function (_a) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
50
|
+
return [2 /*return*/, lock.acquire('refresh_token', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
51
|
+
var currentSession, existing, url, response, newToken, updatedSession, err_1;
|
|
52
|
+
return __generator(this, function (_a) {
|
|
53
|
+
switch (_a.label) {
|
|
54
|
+
case 0:
|
|
55
|
+
currentSession = PHXFuncGetCookieSession();
|
|
56
|
+
existing = currentSession === null || currentSession === void 0 ? void 0 : currentSession.access_token;
|
|
57
|
+
console.log('existing', existing);
|
|
58
|
+
if (existing)
|
|
59
|
+
return [2 /*return*/, existing
|
|
60
|
+
// Thực sự gọi API refresh
|
|
61
|
+
];
|
|
62
|
+
_a.label = 1;
|
|
63
|
+
case 1:
|
|
64
|
+
_a.trys.push([1, 3, , 4]);
|
|
65
|
+
url = "".concat(isServer ? headers().get('origin') : '', "/api/authenticate/refresh-token");
|
|
66
|
+
return [4 /*yield*/, axios.post(url, {}, { headers: getAuthHeaders() })];
|
|
67
|
+
case 2:
|
|
68
|
+
response = _a.sent();
|
|
69
|
+
newToken = response.data.token;
|
|
70
|
+
updatedSession = PHXFuncGetCookieSession();
|
|
71
|
+
saveCookiesClient({
|
|
72
|
+
value: __assign(__assign({}, updatedSession), { access_token: newToken })
|
|
73
|
+
});
|
|
74
|
+
// Lưu refresh token SSR nếu cần
|
|
75
|
+
if (isServer)
|
|
76
|
+
saveRefreshTokenServer(response);
|
|
77
|
+
return [2 /*return*/, newToken];
|
|
78
|
+
case 3:
|
|
79
|
+
err_1 = _a.sent();
|
|
80
|
+
if (!isServer) {
|
|
81
|
+
window.location.href = loginPage;
|
|
82
|
+
}
|
|
83
|
+
throw err_1;
|
|
84
|
+
case 4: return [2 /*return*/];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}); })];
|
|
86
88
|
});
|
|
87
89
|
}); };
|
|
88
|
-
//
|
|
89
|
-
PHXAxiosInstance.interceptors.request.use(function (config) {
|
|
90
|
-
var session
|
|
91
|
-
var
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
90
|
+
// Request interceptor: luôn thêm Authorization nếu có access_token
|
|
91
|
+
PHXAxiosInstance.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
92
|
+
var session, token, err_2, fresh;
|
|
93
|
+
var _a;
|
|
94
|
+
return __generator(this, function (_b) {
|
|
95
|
+
switch (_b.label) {
|
|
96
|
+
case 0:
|
|
97
|
+
session = PHXFuncGetCookieSession();
|
|
98
|
+
token = session === null || session === void 0 ? void 0 : session.access_token;
|
|
99
|
+
if (!token) return [3 /*break*/, 7];
|
|
100
|
+
config.headers = config.headers || {};
|
|
101
|
+
config.headers.Authorization = "Bearer ".concat(token);
|
|
102
|
+
if (!isServer) return [3 /*break*/, 7];
|
|
103
|
+
_b.label = 1;
|
|
104
|
+
case 1:
|
|
105
|
+
_b.trys.push([1, 3, , 7]);
|
|
106
|
+
return [4 /*yield*/, axios.post("".concat(internalUrl, "/authen/authenticate"), {}, { headers: __assign({ Authorization: "Bearer ".concat(token) }, getAuthHeaders()) })];
|
|
107
|
+
case 2:
|
|
108
|
+
_b.sent();
|
|
109
|
+
return [3 /*break*/, 7];
|
|
110
|
+
case 3:
|
|
111
|
+
err_2 = _b.sent();
|
|
112
|
+
if (!(((_a = err_2.response) === null || _a === void 0 ? void 0 : _a.status) === 401)) return [3 /*break*/, 5];
|
|
113
|
+
saveCookiesClient({
|
|
114
|
+
value: __assign(__assign({}, session), { access_token: '' })
|
|
115
|
+
});
|
|
116
|
+
return [4 /*yield*/, refreshAccessToken()];
|
|
117
|
+
case 4:
|
|
118
|
+
fresh = _b.sent();
|
|
119
|
+
config.headers.Authorization = "Bearer ".concat(fresh);
|
|
120
|
+
return [3 /*break*/, 6];
|
|
121
|
+
case 5: throw err_2;
|
|
122
|
+
case 6: return [3 /*break*/, 7];
|
|
123
|
+
case 7: return [2 /*return*/, config];
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}); });
|
|
127
|
+
// Response interceptor: bắt 401, gọi refresh và retry
|
|
99
128
|
PHXAxiosInstance.interceptors.response.use(function (res) { return res; }, function (error) { return __awaiter(void 0, void 0, void 0, function () {
|
|
100
|
-
var originalRequest, newToken, e_1;
|
|
129
|
+
var originalRequest, session, newToken, e_1;
|
|
101
130
|
var _a;
|
|
102
131
|
return __generator(this, function (_b) {
|
|
103
132
|
switch (_b.label) {
|
|
104
133
|
case 0:
|
|
134
|
+
console.log('errorerror', error);
|
|
105
135
|
originalRequest = error.config;
|
|
106
136
|
if (!(((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 && !originalRequest._retry)) return [3 /*break*/, 4];
|
|
137
|
+
session = PHXFuncGetCookieSession();
|
|
138
|
+
saveCookiesClient({
|
|
139
|
+
value: __assign(__assign({}, session), { access_token: '' })
|
|
140
|
+
});
|
|
107
141
|
originalRequest._retry = true;
|
|
108
142
|
_b.label = 1;
|
|
109
143
|
case 1:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"axiosInstance.js","sourceRoot":"","sources":["../../src/axiosInstance.ts"],"names":[],"mappings":";AAAA,OAAO,KAAwB,MAAM,OAAO,CAAA;AAC5C,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,iBAAiB,MAAM,qCAAqC,CAAA;AACnE,OAAO,uBAAuB,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAS/C,IAAM,IAAI,GAAG,IAAI,SAAS,EAAE,CAAA;AAE5B,IAAM,SAAS,GAAG,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;AACxF,IAAM,WAAW,GAAG,MAAM,CAAC,kCAAkC,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;AAE5G,IAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;AAE9C,IAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,SAAS;CACnB,CAAC,CAAA;AAEF,4CAA4C;AAC5C,IAAM,cAAc,GAAG;IACrB,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA;IAExB,IAAM,WAAW,GAAG,OAAO,EAAE,CAAA;IAC7B,IAAM,YAAY,GAAG,WAAW;SAC7B,MAAM,EAAE;SACR,GAAG,CAAC,UAAC,EAAe;YAAb,IAAI,UAAA,EAAE,KAAK,WAAA;QAAO,OAAA,UAAG,IAAI,cAAI,KAAK,CAAE;IAAlB,CAAkB,CAAC;SAC5C,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS;KAC/C,CAAA;AACH,CAAC,CAAA;AAED,yDAAyD;AACzD,IAAM,sBAAsB,GAAG,UAAC,QAAuB;;IACrD,IAAM,eAAe,GAAG,CAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,0CAAG,CAAC,CAAC,KAAI,EAAE,CAAA;IACjE,IAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAC5D,IAAM,YAAY,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,KAAI,EAAE,CAAA;IACrC,OAAO,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE;QAChD,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,mDAAmD;AACnD,IAAM,kBAAkB,GAAG;;QACzB,sBAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;;;;;4BAE7B,cAAc,GAAG,uBAAuB,EAAE,CAAA;4BAC1C,QAAQ,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,YAAY,CAAA;4BAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;4BACjC,IAAI,QAAQ;gCAAE,sBAAO,QAAQ;oCAE7B,0BAA0B;kCAFG;;;;4BAIrB,GAAG,GAAG,UAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,oCAAiC,CAAA;4BACtE,qBAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC,EAAA;;4BAAnE,QAAQ,GAAG,SAAwD;4BACnE,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAe,CAAA;4BAGxC,cAAc,GAAG,uBAAuB,EAAE,CAAA;4BAChD,iBAAiB,CAAC;gCAChB,KAAK,wBAAO,cAAc,KAAE,YAAY,EAAE,QAAQ,GAAE;6BACrD,CAAC,CAAA;4BAEF,gCAAgC;4BAChC,IAAI,QAAQ;gCAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;4BAE9C,sBAAO,QAAQ,EAAA;;;4BAEf,IAAI,CAAC,QAAQ,EAAE;gCACb,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAA;6BACjC;4BACD,MAAM,KAAG,CAAA;;;;iBAEZ,CAAC,EAAA;;KACH,CAAA;AAED,mEAAmE;AACnE,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UAAO,MAAM;;;;;;gBAC/C,OAAO,GAAG,uBAAuB,EAAE,CAAA;gBACnC,KAAK,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CAAA;qBAC/B,KAAK,EAAL,wBAAK;gBACP,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;gBACrC,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,iBAAU,KAAK,CAAE,CAAA;qBAG5C,QAAQ,EAAR,wBAAQ;;;;gBAER,qBAAM,KAAK,CAAC,IAAI,CACd,UAAG,WAAW,yBAAsB,EACpC,EAAE,EACF,EAAE,OAAO,aAAI,aAAa,EAAE,iBAAU,KAAK,CAAE,IAAK,cAAc,EAAE,CAAE,EAAE,CACvE,EAAA;;gBAJD,SAIC,CAAA;;;;qBAEG,CAAA,CAAA,MAAA,KAAG,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,CAAA,EAA5B,wBAA4B;gBAC9B,iBAAiB,CAAC;oBAChB,KAAK,wBAAO,OAAO,KAAE,YAAY,EAAE,EAAE,GAAE;iBACxC,CAAC,CAAA;gBACY,qBAAM,kBAAkB,EAAE,EAAA;;gBAAlC,KAAK,GAAG,SAA0B;gBACxC,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,iBAAU,KAAK,CAAE,CAAA;;oBAEhD,MAAM,KAAG,CAAA;;oBAKjB,sBAAO,MAAM,EAAA;;;KACd,CAAC,CAAA;AAEF,sDAAsD;AACtD,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACxC,UAAC,GAAG,IAAK,OAAA,GAAG,EAAH,CAAG,EACZ,UAAO,KAAK;;;;;;gBACV,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;gBAC1B,eAAe,GAAG,KAAK,CAAC,MAAO,CAAA;qBAEjC,CAAA,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA,EAAzD,wBAAyD;gBACrD,OAAO,GAAG,uBAAuB,EAAE,CAAA;gBACzC,iBAAiB,CAAC;oBAChB,KAAK,wBAAO,OAAO,KAAE,YAAY,EAAE,EAAE,GAAE;iBACxC,CAAC,CAAA;gBACF,eAAe,CAAC,MAAM,GAAG,IAAI,CAAA;;;;gBAGV,qBAAM,kBAAkB,EAAE,EAAA;;gBAArC,QAAQ,GAAG,SAA0B;gBAC3C,eAAe,CAAC,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,EAAE,CAAA;gBACvD,eAAe,CAAC,OAAO,CAAC,aAAa,GAAG,iBAAU,QAAQ,CAAE,CAAA;gBAC5D,sBAAO,gBAAgB,CAAC,eAAe,CAAC,EAAA;;;gBAExC,sBAAO,OAAO,CAAC,MAAM,CAAC,GAAC,CAAC,EAAA;oBAI5B,sBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA;;;KAC7B,CACF,CAAA;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|