@eggjs/koa 3.1.0-beta.2 → 3.1.0-beta.21
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/application.d.ts +119 -123
- package/dist/application.js +270 -229
- package/dist/context.d.ts +220 -225
- package/dist/context.js +349 -304
- package/dist/index.d.ts +7 -6
- package/dist/index.js +6 -9
- package/dist/request.d.ts +336 -341
- package/dist/request.js +518 -456
- package/dist/response.d.ts +224 -230
- package/dist/response.js +472 -387
- package/dist/types.d.ts +9 -12
- package/dist/types.js +2 -0
- package/package.json +11 -10
package/dist/context.js
CHANGED
|
@@ -1,304 +1,349 @@
|
|
|
1
|
-
import util from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import Cookies from
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
1
|
+
import util from 'node:util';
|
|
2
|
+
import createError from 'http-errors';
|
|
3
|
+
import statuses from 'statuses';
|
|
4
|
+
import Cookies from 'cookies';
|
|
5
|
+
export class Context {
|
|
6
|
+
app;
|
|
7
|
+
req;
|
|
8
|
+
res;
|
|
9
|
+
request;
|
|
10
|
+
response;
|
|
11
|
+
originalUrl;
|
|
12
|
+
respond;
|
|
13
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
14
|
+
#state = {};
|
|
15
|
+
constructor(app, req, res) {
|
|
16
|
+
this.app = app;
|
|
17
|
+
this.req = req;
|
|
18
|
+
this.res = res;
|
|
19
|
+
this.request = new app.RequestClass(app, this, req, res);
|
|
20
|
+
this.response = new app.ResponseClass(app, this, req, res);
|
|
21
|
+
this.request.response = this.response;
|
|
22
|
+
this.response.request = this.request;
|
|
23
|
+
this.originalUrl = req.url ?? '/';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* util.inspect() implementation, which
|
|
27
|
+
* just returns the JSON output.
|
|
28
|
+
*/
|
|
29
|
+
inspect() {
|
|
30
|
+
return this.toJSON();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Custom inspection implementation for newer Node.js versions.
|
|
34
|
+
*/
|
|
35
|
+
[util.inspect.custom]() {
|
|
36
|
+
return this.inspect();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Return JSON representation.
|
|
40
|
+
*
|
|
41
|
+
* Here we explicitly invoke .toJSON() on each
|
|
42
|
+
* object, as iteration will otherwise fail due
|
|
43
|
+
* to the getters and cause utilities such as
|
|
44
|
+
* clone() to fail.
|
|
45
|
+
*/
|
|
46
|
+
toJSON() {
|
|
47
|
+
return {
|
|
48
|
+
request: this.request.toJSON(),
|
|
49
|
+
response: this.response.toJSON(),
|
|
50
|
+
app: this.app.toJSON(),
|
|
51
|
+
originalUrl: this.originalUrl,
|
|
52
|
+
req: '<original node req>',
|
|
53
|
+
res: '<original node res>',
|
|
54
|
+
socket: '<original node socket>',
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
assert(value, status, errorMessageOrProps, errorProps) {
|
|
58
|
+
if (value) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
status = status ?? 500;
|
|
62
|
+
if (typeof errorMessageOrProps === 'string') {
|
|
63
|
+
// assert(value, status, errorMessage, errorProps?)
|
|
64
|
+
throw createError(status, errorMessageOrProps, errorProps ?? {});
|
|
65
|
+
}
|
|
66
|
+
// assert(value, status, errorProps?)
|
|
67
|
+
throw createError(status, errorMessageOrProps ?? {});
|
|
68
|
+
}
|
|
69
|
+
throw(arg1, arg2, errorProps) {
|
|
70
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
71
|
+
const args = [];
|
|
72
|
+
if (typeof arg2 === 'number') {
|
|
73
|
+
// throw(error, status)
|
|
74
|
+
args.push(arg2);
|
|
75
|
+
args.push(arg1);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
// throw(status, error?)
|
|
79
|
+
args.push(arg1);
|
|
80
|
+
if (arg2) {
|
|
81
|
+
args.push(arg2);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (errorProps) {
|
|
85
|
+
args.push(errorProps);
|
|
86
|
+
}
|
|
87
|
+
throw createError(...args);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Default error handling.
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
93
|
+
onerror(err) {
|
|
94
|
+
// don't do anything if there is no error.
|
|
95
|
+
// this allows you to pass `this.onerror`
|
|
96
|
+
// to node-style callbacks.
|
|
97
|
+
if (err === null || err === undefined)
|
|
98
|
+
return;
|
|
99
|
+
// When dealing with cross-globals a normal `instanceof` check doesn't work properly.
|
|
100
|
+
// See https://github.com/koajs/koa/issues/1466
|
|
101
|
+
// We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.
|
|
102
|
+
const isNativeError = err instanceof Error || Object.prototype.toString.call(err) === '[object Error]';
|
|
103
|
+
if (!isNativeError) {
|
|
104
|
+
err = new Error(util.format('non-error thrown: %j', err));
|
|
105
|
+
}
|
|
106
|
+
let headerSent = false;
|
|
107
|
+
if (this.response.headerSent || !this.response.writable) {
|
|
108
|
+
headerSent = true;
|
|
109
|
+
err.headerSent = true;
|
|
110
|
+
}
|
|
111
|
+
// delegate
|
|
112
|
+
this.app.emit('error', err, this);
|
|
113
|
+
// nothing we can do here other
|
|
114
|
+
// than delegate to the app-level
|
|
115
|
+
// handler and log.
|
|
116
|
+
if (headerSent) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const res = this.res;
|
|
120
|
+
// first unset all headers
|
|
121
|
+
for (const name of res.getHeaderNames()) {
|
|
122
|
+
res.removeHeader(name);
|
|
123
|
+
}
|
|
124
|
+
// then set those specified
|
|
125
|
+
if (err.headers) {
|
|
126
|
+
this.response.set(err.headers);
|
|
127
|
+
}
|
|
128
|
+
// force text/plain
|
|
129
|
+
this.response.type = 'text';
|
|
130
|
+
let statusCode = err.status || err.statusCode;
|
|
131
|
+
// ENOENT support
|
|
132
|
+
if (err.code === 'ENOENT') {
|
|
133
|
+
statusCode = 404;
|
|
134
|
+
}
|
|
135
|
+
// default to 500
|
|
136
|
+
if (typeof statusCode !== 'number' || !statuses.message[statusCode]) {
|
|
137
|
+
statusCode = 500;
|
|
138
|
+
}
|
|
139
|
+
// respond
|
|
140
|
+
const statusMessage = statuses.message[statusCode];
|
|
141
|
+
const msg = err.expose ? err.message : statusMessage;
|
|
142
|
+
err.status = statusCode;
|
|
143
|
+
this.response.status = statusCode;
|
|
144
|
+
this.response.length = Buffer.byteLength(msg);
|
|
145
|
+
res.end(msg);
|
|
146
|
+
}
|
|
147
|
+
_cookies;
|
|
148
|
+
get cookies() {
|
|
149
|
+
if (!this._cookies) {
|
|
150
|
+
this._cookies = new Cookies(this.req, this.res, {
|
|
151
|
+
keys: this.app.keys,
|
|
152
|
+
secure: this.request.secure,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return this._cookies;
|
|
156
|
+
}
|
|
157
|
+
set cookies(cookies) {
|
|
158
|
+
this._cookies = cookies;
|
|
159
|
+
}
|
|
160
|
+
get state() {
|
|
161
|
+
return this.#state;
|
|
162
|
+
}
|
|
163
|
+
acceptsLanguages(languages, ...others) {
|
|
164
|
+
return this.request.acceptsLanguages(languages, ...others);
|
|
165
|
+
}
|
|
166
|
+
acceptsEncodings(encodings, ...others) {
|
|
167
|
+
return this.request.acceptsEncodings(encodings, ...others);
|
|
168
|
+
}
|
|
169
|
+
acceptsCharsets(charsets, ...others) {
|
|
170
|
+
return this.request.acceptsCharsets(charsets, ...others);
|
|
171
|
+
}
|
|
172
|
+
accepts(args, ...others) {
|
|
173
|
+
return this.request.accepts(args, ...others);
|
|
174
|
+
}
|
|
175
|
+
get(field) {
|
|
176
|
+
return this.request.get(field);
|
|
177
|
+
}
|
|
178
|
+
is(type, ...types) {
|
|
179
|
+
return this.request.is(type, ...types);
|
|
180
|
+
}
|
|
181
|
+
get querystring() {
|
|
182
|
+
return this.request.querystring;
|
|
183
|
+
}
|
|
184
|
+
set querystring(str) {
|
|
185
|
+
this.request.querystring = str;
|
|
186
|
+
}
|
|
187
|
+
get idempotent() {
|
|
188
|
+
return this.request.idempotent;
|
|
189
|
+
}
|
|
190
|
+
get socket() {
|
|
191
|
+
return this.request.socket;
|
|
192
|
+
}
|
|
193
|
+
get search() {
|
|
194
|
+
return this.request.search;
|
|
195
|
+
}
|
|
196
|
+
set search(str) {
|
|
197
|
+
this.request.search = str;
|
|
198
|
+
}
|
|
199
|
+
get method() {
|
|
200
|
+
return this.request.method;
|
|
201
|
+
}
|
|
202
|
+
set method(method) {
|
|
203
|
+
this.request.method = method;
|
|
204
|
+
}
|
|
205
|
+
get query() {
|
|
206
|
+
return this.request.query;
|
|
207
|
+
}
|
|
208
|
+
set query(obj) {
|
|
209
|
+
this.request.query = obj;
|
|
210
|
+
}
|
|
211
|
+
get path() {
|
|
212
|
+
return this.request.path;
|
|
213
|
+
}
|
|
214
|
+
set path(path) {
|
|
215
|
+
this.request.path = path;
|
|
216
|
+
}
|
|
217
|
+
get url() {
|
|
218
|
+
return this.request.url;
|
|
219
|
+
}
|
|
220
|
+
set url(url) {
|
|
221
|
+
this.request.url = url;
|
|
222
|
+
}
|
|
223
|
+
get accept() {
|
|
224
|
+
return this.request.accept;
|
|
225
|
+
}
|
|
226
|
+
set accept(accept) {
|
|
227
|
+
this.request.accept = accept;
|
|
228
|
+
}
|
|
229
|
+
get origin() {
|
|
230
|
+
return this.request.origin;
|
|
231
|
+
}
|
|
232
|
+
get href() {
|
|
233
|
+
return this.request.href;
|
|
234
|
+
}
|
|
235
|
+
get subdomains() {
|
|
236
|
+
return this.request.subdomains;
|
|
237
|
+
}
|
|
238
|
+
get protocol() {
|
|
239
|
+
return this.request.protocol;
|
|
240
|
+
}
|
|
241
|
+
get host() {
|
|
242
|
+
return this.request.host;
|
|
243
|
+
}
|
|
244
|
+
get hostname() {
|
|
245
|
+
return this.request.hostname;
|
|
246
|
+
}
|
|
247
|
+
get URL() {
|
|
248
|
+
return this.request.URL;
|
|
249
|
+
}
|
|
250
|
+
get header() {
|
|
251
|
+
return this.request.header;
|
|
252
|
+
}
|
|
253
|
+
get headers() {
|
|
254
|
+
return this.request.headers;
|
|
255
|
+
}
|
|
256
|
+
get secure() {
|
|
257
|
+
return this.request.secure;
|
|
258
|
+
}
|
|
259
|
+
get stale() {
|
|
260
|
+
return this.request.stale;
|
|
261
|
+
}
|
|
262
|
+
get fresh() {
|
|
263
|
+
return this.request.fresh;
|
|
264
|
+
}
|
|
265
|
+
get ips() {
|
|
266
|
+
return this.request.ips;
|
|
267
|
+
}
|
|
268
|
+
get ip() {
|
|
269
|
+
return this.request.ip;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Response delegation.
|
|
273
|
+
*/
|
|
274
|
+
attachment(...args) {
|
|
275
|
+
return this.response.attachment(...args);
|
|
276
|
+
}
|
|
277
|
+
redirect(...args) {
|
|
278
|
+
return this.response.redirect(...args);
|
|
279
|
+
}
|
|
280
|
+
remove(...args) {
|
|
281
|
+
return this.response.remove(...args);
|
|
282
|
+
}
|
|
283
|
+
vary(...args) {
|
|
284
|
+
return this.response.vary(...args);
|
|
285
|
+
}
|
|
286
|
+
has(...args) {
|
|
287
|
+
return this.response.has(...args);
|
|
288
|
+
}
|
|
289
|
+
set(...args) {
|
|
290
|
+
return this.response.set(...args);
|
|
291
|
+
}
|
|
292
|
+
append(...args) {
|
|
293
|
+
return this.response.append(...args);
|
|
294
|
+
}
|
|
295
|
+
flushHeaders(...args) {
|
|
296
|
+
return this.response.flushHeaders(...args);
|
|
297
|
+
}
|
|
298
|
+
get status() {
|
|
299
|
+
return this.response.status;
|
|
300
|
+
}
|
|
301
|
+
set status(status) {
|
|
302
|
+
this.response.status = status;
|
|
303
|
+
}
|
|
304
|
+
get message() {
|
|
305
|
+
return this.response.message;
|
|
306
|
+
}
|
|
307
|
+
set message(msg) {
|
|
308
|
+
this.response.message = msg;
|
|
309
|
+
}
|
|
310
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
311
|
+
get body() {
|
|
312
|
+
return this.response.body;
|
|
313
|
+
}
|
|
314
|
+
// oxlint-disable-next-line typescript/no-explicit-any
|
|
315
|
+
set body(val) {
|
|
316
|
+
this.response.body = val;
|
|
317
|
+
}
|
|
318
|
+
get length() {
|
|
319
|
+
return this.response.length;
|
|
320
|
+
}
|
|
321
|
+
set length(n) {
|
|
322
|
+
this.response.length = n;
|
|
323
|
+
}
|
|
324
|
+
get type() {
|
|
325
|
+
return this.response.type;
|
|
326
|
+
}
|
|
327
|
+
set type(type) {
|
|
328
|
+
this.response.type = type;
|
|
329
|
+
}
|
|
330
|
+
get lastModified() {
|
|
331
|
+
return this.response.lastModified;
|
|
332
|
+
}
|
|
333
|
+
set lastModified(val) {
|
|
334
|
+
this.response.lastModified = val;
|
|
335
|
+
}
|
|
336
|
+
get etag() {
|
|
337
|
+
return this.response.etag;
|
|
338
|
+
}
|
|
339
|
+
set etag(val) {
|
|
340
|
+
this.response.etag = val;
|
|
341
|
+
}
|
|
342
|
+
get headerSent() {
|
|
343
|
+
return this.response.headerSent;
|
|
344
|
+
}
|
|
345
|
+
get writable() {
|
|
346
|
+
return this.response.writable;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUk3QixPQUFPLFdBQVcsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQVE5QixNQUFNLE9BQU8sT0FBTztJQUVsQixHQUFHLENBQWM7SUFDakIsR0FBRyxDQUFrQjtJQUNyQixHQUFHLENBQWlCO0lBQ3BCLE9BQU8sQ0FBcUI7SUFDNUIsUUFBUSxDQUFzQjtJQUM5QixXQUFXLENBQVM7SUFDcEIsT0FBTyxDQUFXO0lBQ2xCLHNEQUFzRDtJQUN0RCxNQUFNLEdBQXdCLEVBQUUsQ0FBQztJQUVqQyxZQUFZLEdBQWdCLEVBQUUsR0FBb0IsRUFBRSxHQUFtQjtRQUNyRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLEdB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QUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFF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
|