verdaccio 6.3.1 → 6.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +147 -57
- package/build/api/endpoint/api/dist-tags.d.ts +1 -1
- package/build/api/endpoint/api/dist-tags.js +1 -1
- package/build/api/endpoint/api/package.d.ts +1 -1
- package/build/api/endpoint/api/package.js +1 -1
- package/build/api/endpoint/api/publish.d.ts +1 -1
- package/build/api/endpoint/api/publish.js +1 -1
- package/build/api/endpoint/api/user.d.ts +1 -1
- package/build/api/endpoint/api/user.js +1 -1
- package/build/api/endpoint/api/v1/profile.d.ts +1 -1
- package/build/api/endpoint/api/v1/profile.js +1 -1
- package/build/api/endpoint/api/v1/token.d.ts +1 -1
- package/build/api/endpoint/api/v1/token.js +1 -1
- package/build/api/endpoint/index.d.ts +1 -1
- package/build/api/endpoint/index.js +1 -1
- package/build/api/index.js +1 -1
- package/build/api/web/api/package.d.ts +1 -1
- package/build/api/web/api/package.js +1 -1
- package/build/api/web/api/search.d.ts +1 -1
- package/build/api/web/api/search.js +1 -1
- package/build/api/web/api/user.d.ts +1 -1
- package/build/api/web/api/user.js +1 -1
- package/build/lib/cli/cli.js +1 -1
- package/build/lib/cli/commands/init.js +1 -1
- package/build/lib/cli/commands/version.js +1 -1
- package/build/lib/local-storage.d.ts +2 -0
- package/build/lib/local-storage.js +21 -1
- package/build/lib/storage-utils.js +13 -13
- package/build/lib/storage.d.ts +18 -2
- package/build/lib/storage.js +153 -90
- package/package.json +18 -16
- package/build/lib/auth.d.ts +0 -2
- package/build/lib/auth.js +0 -9
package/README.md
CHANGED
|
@@ -67,8 +67,135 @@ Verdaccio can be used as a module to launch a server programmatically. You can f
|
|
|
67
67
|
});
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
+
## Get Started
|
|
71
|
+
|
|
72
|
+
To get started, run Verdaccio in your terminal:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
verdaccio
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Optionally, you can set some npm configuration:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
$ npm set registry http://localhost:4873/
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
For one-off commands or to avoid setting the registry globally, use:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
NPM_CONFIG_REGISTRY=http://localhost:4873 npm i
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
You can now navigate to [http://localhost:4873/](http://localhost:4873/) where your local packages will be listed and searchable.
|
|
91
|
+
|
|
92
|
+
> Warning: Verdaccio [does not currently support PM2's cluster mode](https://github.com/verdaccio/verdaccio/issues/1301#issuecomment-489302298). Running it with cluster mode may lead to unknown behavior.
|
|
93
|
+
|
|
70
94
|
## Plugins
|
|
71
95
|
|
|
96
|
+
Verdaccio ships with a set of built-in plugins so it works out of the box with zero configuration. You can replace or extend any of them with community plugins.
|
|
97
|
+
|
|
98
|
+
### Bundled plugins
|
|
99
|
+
|
|
100
|
+
| Plugin | Category | Enabled by default | Description |
|
|
101
|
+
| ---------------------------- | ---------- | ------------------ | -------------------------------------------------------------------------------- |
|
|
102
|
+
| `verdaccio-htpasswd` | auth | Yes | Default authentication backend using an `htpasswd` file to store users. |
|
|
103
|
+
| `verdaccio-audit` | middleware | Yes | Implements the `npm audit` endpoint by proxying requests to a configured uplink. |
|
|
104
|
+
| `@verdaccio/local-storage` | storage | Yes | Default filesystem storage backend for packages and metadata. |
|
|
105
|
+
| `@verdaccio/ui-theme` | theme | Yes | Default web UI theme shipped with Verdaccio. |
|
|
106
|
+
| `@verdaccio/package-filter` | filter | No | Filters package metadata from uplinks (block versions, quarantine, whitelist). |
|
|
107
|
+
|
|
108
|
+
### Package Filter
|
|
109
|
+
|
|
110
|
+
`@verdaccio/package-filter` is a built-in plugin that intercepts package metadata from uplinks and removes versions matching configurable rules. With no rules configured, it acts as a no-op passthrough.
|
|
111
|
+
|
|
112
|
+
#### Block a compromised package version
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
filters:
|
|
116
|
+
'@verdaccio/package-filter':
|
|
117
|
+
block:
|
|
118
|
+
- package: 'event-stream'
|
|
119
|
+
versions: '3.3.6'
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### Block an entire malicious scope
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
filters:
|
|
126
|
+
'@verdaccio/package-filter':
|
|
127
|
+
block:
|
|
128
|
+
- scope: '@malicious'
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
#### Quarantine recently published versions
|
|
132
|
+
|
|
133
|
+
Hide versions published less than 7 days ago, giving time for review before adoption:
|
|
134
|
+
|
|
135
|
+
```yaml
|
|
136
|
+
filters:
|
|
137
|
+
'@verdaccio/package-filter':
|
|
138
|
+
minAgeDays: 7
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### Freeze registry to a point in time
|
|
142
|
+
|
|
143
|
+
Only serve versions published before a specific date:
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
filters:
|
|
147
|
+
'@verdaccio/package-filter':
|
|
148
|
+
dateThreshold: '2025-01-01'
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
#### Whitelist trusted packages within blocked rules
|
|
152
|
+
|
|
153
|
+
```yaml
|
|
154
|
+
filters:
|
|
155
|
+
'@verdaccio/package-filter':
|
|
156
|
+
minAgeDays: 30
|
|
157
|
+
allow:
|
|
158
|
+
- scope: '@my-company'
|
|
159
|
+
- package: 'trusted-pkg'
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### Replace instead of remove
|
|
163
|
+
|
|
164
|
+
Substitute a blocked version with the nearest older safe version, useful when removing it would break transitive dependencies:
|
|
165
|
+
|
|
166
|
+
```yaml
|
|
167
|
+
filters:
|
|
168
|
+
'@verdaccio/package-filter':
|
|
169
|
+
block:
|
|
170
|
+
- package: 'compromised-lib'
|
|
171
|
+
versions: '>=3.0.0'
|
|
172
|
+
strategy: replace
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### Full example
|
|
176
|
+
|
|
177
|
+
```yaml
|
|
178
|
+
filters:
|
|
179
|
+
'@verdaccio/package-filter':
|
|
180
|
+
minAgeDays: 7
|
|
181
|
+
block:
|
|
182
|
+
- scope: '@malicious'
|
|
183
|
+
- package: 'typosquat-pkg'
|
|
184
|
+
- package: 'compromised-lib'
|
|
185
|
+
versions: '>=3.0.0'
|
|
186
|
+
strategy: replace
|
|
187
|
+
allow:
|
|
188
|
+
- scope: '@my-org'
|
|
189
|
+
- package: 'compromised-lib'
|
|
190
|
+
versions: '3.0.1'
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
If a filter rejects a package entirely, Verdaccio returns a 404 to the client.
|
|
194
|
+
|
|
195
|
+
Learn more at the [`@verdaccio/package-filter` documentation](https://github.com/verdaccio/verdaccio/blob/8.x/packages/plugins/package-filter/README.md) and the [filter plugins documentation](https://verdaccio.org/docs/plugin-filter).
|
|
196
|
+
|
|
197
|
+
### Custom plugins
|
|
198
|
+
|
|
72
199
|
You can develop your own [plugins](https://verdaccio.org/docs/plugins) using the [verdaccio generator](https://github.com/verdaccio/generator-verdaccio-plugin). [Yeoman](https://yeoman.io/) installation is required.
|
|
73
200
|
|
|
74
201
|
Learn more about [how to develop plugins](https://verdaccio.org/docs/dev-plugins) and share them with the community.
|
|
@@ -107,39 +234,10 @@ Here are a few examples to get started:
|
|
|
107
234
|
|
|
108
235
|
- [e2e-ci-example-gh-actions](https://github.com/juanpicado/e2e-ci-example-gh-actions)
|
|
109
236
|
- [verdaccio-end-to-end-tests](https://github.com/juanpicado/verdaccio-end-to-end-tests)
|
|
110
|
-
- [verdaccio-fork](https://github.com/juanpicado/verdaccio-fork)
|
|
111
237
|
|
|
112
238
|
## Talks
|
|
113
239
|
|
|
114
|
-
|
|
115
|
-
- [Five Ways of Taking Advantage of Verdaccio, Your Private and Proxy Node.js Registry - **Node Congress 2022** - Juan Picado](https://portal.gitnation.org/contents/five-ways-of-taking-advantage-of-verdaccio-your-private-and-proxy-nodejs-registry)
|
|
116
|
-
- [Using Docker and Verdaccio to Make Integration Testing Easy - **Docker All Hands #4 December 2021** - Juan Picado](https://www.youtube.com/watch?v=zRI0skF1f8I)
|
|
117
|
-
|
|
118
|
-
[View more on the YouTube channel](https://www.youtube.com/channel/UC5i20v6o7lSjXzAHOvatt0w).
|
|
119
|
-
|
|
120
|
-
## Get Started
|
|
121
|
-
|
|
122
|
-
To get started, run Verdaccio in your terminal:
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
verdaccio
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Optionally, you can set some npm configuration:
|
|
129
|
-
|
|
130
|
-
```bash
|
|
131
|
-
$ npm set registry http://localhost:4873/
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
For one-off commands or to avoid setting the registry globally, use:
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
NPM_CONFIG_REGISTRY=http://localhost:4873 npm i
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
You can now navigate to [http://localhost:4873/](http://localhost:4873/) where your local packages will be listed and searchable.
|
|
141
|
-
|
|
142
|
-
> Warning: Verdaccio [does not currently support PM2's cluster mode](https://github.com/verdaccio/verdaccio/issues/1301#issuecomment-489302298). Running it with cluster mode may lead to unknown behavior.
|
|
240
|
+
See the list of Verdaccio talks at [verdaccio.org/talks](https://www.verdaccio.org/talks).
|
|
143
241
|
|
|
144
242
|
## Publishing
|
|
145
243
|
|
|
@@ -177,6 +275,8 @@ Available as [tags](https://hub.docker.com/r/verdaccio/verdaccio/tags/).
|
|
|
177
275
|
docker pull verdaccio/verdaccio:6.x-next
|
|
178
276
|
```
|
|
179
277
|
|
|
278
|
+
> The `6.x-next` tag tracks the latest changes from the `6.x` branch. It is useful for previewing upcoming fixes and features, but it is **not recommended for production use**.
|
|
279
|
+
|
|
180
280
|
### Running Verdaccio using Docker
|
|
181
281
|
|
|
182
282
|
To run the Docker container:
|
|
@@ -191,38 +291,28 @@ Docker examples are available [in this repository](https://github.com/verdaccio/
|
|
|
191
291
|
|
|
192
292
|
Verdaccio aims to support all relevant features of a standard npm client for private repositories. However, full compatibility isn't always possible.
|
|
193
293
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
- Transferring ownership (`npm owner add {user} {pkg}`) - not supported, _PRs welcome_
|
|
210
|
-
- Token (`npm token`) - **supported** (under flag)
|
|
211
|
-
|
|
212
|
-
### Miscellany
|
|
213
|
-
|
|
214
|
-
- Search (`npm search`) - **supported** (cli (`/-/all` and `v1`) / browser)
|
|
215
|
-
- Ping (`npm ping`) - **supported**
|
|
216
|
-
- Starring (`npm star`, `npm unstar`, `npm stars`) - **supported**
|
|
217
|
-
|
|
218
|
-
### Security
|
|
219
|
-
|
|
220
|
-
- npm/yarn audit - **supported**
|
|
294
|
+
| Category | Feature | Command | Status |
|
|
295
|
+
| ------------------------ | ---------------------- | --------------------------------------- | ------------------------- |
|
|
296
|
+
| Basic features | Installing packages | `npm install`, `npm upgrade`, etc. | Supported |
|
|
297
|
+
| Basic features | Publishing packages | `npm publish` | Supported |
|
|
298
|
+
| Advanced package control | Unpublishing packages | `npm unpublish` | Supported |
|
|
299
|
+
| Advanced package control | Tagging | `npm tag` | Supported |
|
|
300
|
+
| Advanced package control | Deprecation | `npm deprecate` | Supported |
|
|
301
|
+
| User management | Registering new users | `npm adduser {newuser}` | Supported |
|
|
302
|
+
| User management | Change password | `npm profile set password` | Supported |
|
|
303
|
+
| User management | Transferring ownership | `npm owner add {user} {pkg}` | Not supported, PRs welcome |
|
|
304
|
+
| User management | Token | `npm token` | Supported (under flag) |
|
|
305
|
+
| Miscellany | Search | `npm search` | Supported (cli `/-/all` and `v1`, browser) |
|
|
306
|
+
| Miscellany | Ping | `npm ping` | Supported |
|
|
307
|
+
| Miscellany | Starring | `npm star`, `npm unstar`, `npm stars` | Supported |
|
|
308
|
+
| Security | Audit | `npm audit`, `yarn audit` | Supported |
|
|
221
309
|
|
|
222
310
|
## Report a vulnerability
|
|
223
311
|
|
|
224
312
|
To report a security vulnerability, please follow the steps outlined in our [security policy](https://github.com/verdaccio/verdaccio/policy).
|
|
225
313
|
|
|
314
|
+
> **Note:** There is currently **no funding available for security research or bounty rewards**.
|
|
315
|
+
|
|
226
316
|
|
|
227
317
|
|
|
228
318
|
## Open Collective Backers
|
|
@@ -74,4 +74,4 @@ function _default(route, auth, storage) {
|
|
|
74
74
|
});
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbWltZSIsIl9taWRkbGV3YXJlIiwiX2NvbnN0YW50cyIsIl9sb2dnZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsInN0b3JhZ2UiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwidGFnX3BhY2thZ2VfdmVyc2lvbiIsInJlcSIsInJlcyIsIm5leHQiLCJfIiwiaXNTdHJpbmciLCJib2R5IiwidGFncyIsInRhZyIsIm1lcmdlVGFncyIsInBhY2thZ2UiLCJlcnIiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsIkFQSV9NRVNTQUdFIiwiVEFHX0FEREVEIiwicHV0IiwiRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMiLCJ0YWdnaW5nIiwibWVkaWEiLCJtaW1lIiwiZ2V0VHlwZSIsInBvc3QiLCJ0YWdnaW5nX3BhY2thZ2UiLCJkZWxldGUiLCJUQUdfUkVNT1ZFRCIsImdldCIsImdldF9kaXN0X3RhZ3MiLCJnZXRQYWNrYWdlIiwibmFtZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwiRElTVF9UQUdTIiwiVEFHX1VQREFURUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9kaXN0LXRhZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lJztcblxuaW1wb3J0IHR5cGUgeyBBdXRoIH0gZnJvbSAnQHZlcmRhY2Npby9hdXRoJztcbmltcG9ydCB7IERJU1RfVEFHU19BUElfRU5EUE9JTlRTLCBhbGxvdywgbWVkaWEgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHR5cGUgeyBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB7IEFQSV9NRVNTQUdFLCBESVNUX1RBR1MsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB0eXBlIFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHR5cGUgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogQXV0aCwgc3RvcmFnZTogU3RvcmFnZSk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoLCB7XG4gICAgYmVmb3JlQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgICBhZnRlckFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gIH0pO1xuICBjb25zdCB0YWdfcGFja2FnZV92ZXJzaW9uID0gZnVuY3Rpb24gKFxuICAgIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gICAgcmVzOiAkUmVzcG9uc2VFeHRlbmQsXG4gICAgbmV4dDogJE5leHRGdW5jdGlvblZlclxuICApOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICBpZiAoXy5pc1N0cmluZyhyZXEuYm9keSkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gbmV4dCgncm91dGUnKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWdzID0ge307XG4gICAgdGFnc1tyZXEucGFyYW1zLnRhZ10gPSByZXEuYm9keTtcbiAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHRhZ3MsIGZ1bmN0aW9uIChlcnI6IEVycm9yKTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuVEFHX0FEREVEIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIHRhZ2dpbmcgYSBwYWNrYWdlXG4gIHJvdXRlLnB1dChcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy50YWdnaW5nLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUucG9zdChcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy50YWdnaW5nX3BhY2thZ2UsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgIHRhZ19wYWNrYWdlX3ZlcnNpb25cbiAgKTtcblxuICByb3V0ZS5wdXQoXG4gICAgRElTVF9UQUdTX0FQSV9FTkRQT0lOVFMudGFnZ2luZ19wYWNrYWdlLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKG1pbWUuZ2V0VHlwZSgnanNvbicpKSxcbiAgICB0YWdfcGFja2FnZV92ZXJzaW9uXG4gICk7XG5cbiAgcm91dGUuZGVsZXRlKFxuICAgIERJU1RfVEFHU19BUElfRU5EUE9JTlRTLnRhZ2dpbmdfcGFja2FnZSxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgIHRhZ3NbcmVxLnBhcmFtcy50YWddID0gbnVsbDtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHJlcS5wYXJhbXMucGFja2FnZSwgdGFncywgZnVuY3Rpb24gKGVycjogYW55KTogJE5leHRGdW5jdGlvblZlciB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogQVBJX01FU1NBR0UuVEFHX1JFTU9WRUQsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHJvdXRlLmdldChcbiAgICBESVNUX1RBR1NfQVBJX0VORFBPSU5UUy5nZXRfZGlzdF90YWdzLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBhbnksIGluZm86IFBhY2thZ2UpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQoaW5mb1tESVNUX1RBR1NdKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5wb3N0KFxuICAgIERJU1RfVEFHU19BUElfRU5EUE9JTlRTLmdldF9kaXN0X3RhZ3MsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLm1lcmdlVGFncyhyZXEucGFyYW1zLnBhY2thZ2UsIHJlcS5ib2R5LCBmdW5jdGlvbiAoZXJyOiBhbnkpOiAkTmV4dEZ1bmN0aW9uVmVyIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQUdfVVBEQVRFRCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUdBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUE2QyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUk5QixTQUFBRyxTQUFVQyxLQUFhLEVBQUVDLElBQVUsRUFBRUMsT0FBZ0IsRUFBUTtFQUMxRSxNQUFNQyxHQUFHLEdBQUcsSUFBQUMsaUJBQUssRUFBQ0gsSUFBSSxFQUFFO0lBQ3RCSSxTQUFTLEVBQUVBLENBQUNDLE1BQU0sRUFBRUMsT0FBTyxLQUFLQyxjQUFNLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxFQUFFQyxPQUFPLENBQUM7SUFDN0RHLFFBQVEsRUFBRUEsQ0FBQ0osTUFBTSxFQUFFQyxPQUFPLEtBQUtDLGNBQU0s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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Router } from 'express';
|
|
2
|
+
import type { Auth } from '@verdaccio/auth';
|
|
2
3
|
import type { Config } from '@verdaccio/types';
|
|
3
|
-
import type Auth from '../../../lib/auth';
|
|
4
4
|
import type Storage from '../../../lib/storage';
|
|
5
5
|
export default function (route: Router, auth: Auth, storage: Storage, config: Config): void;
|
|
@@ -100,4 +100,4 @@ function _default(route, auth, storage, config) {
|
|
|
100
100
|
}
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIl9taWRkbGV3YXJlIiwiX3RhcmJhbGwiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlscyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRvd25sb2FkU3RyZWFtIiwicGFja2FnZU5hbWUiLCJmaWxlbmFtZSIsInN0b3JhZ2UiLCJyZXEiLCJyZXMiLCJzdHJlYW0iLCJnZXRUYXJiYWxsIiwib24iLCJjb250ZW50IiwiaGVhZGVyIiwiZXJyIiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiSEVBREVSUyIsIkNPTlRFTlRfVFlQRSIsIk9DVEVUX1NUUkVBTSIsInBpcGUiLCJyZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0iLCJjb25maWciLCJ0YXJiYWxsVXJsUmVkaXJlY3QiLCJfIiwiZ2V0IiwiaGFzTG9jYWxUYXJiYWxsIiwidGhlbiIsImNvbnRleHQiLCJ0YXJiYWxsVXJsIiwidGVtcGxhdGUiLCJyZWRpcmVjdCIsImNhdGNoIiwiX2RlZmF1bHQiLCJyb3V0ZSIsImF1dGgiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwiUEFDS0FHRV9BUElfRU5EUE9JTlRTIiwiZ2V0X3BhY2thZ2VfYnlfdmVyc2lvbiIsIm5leHQiLCJhYmJyZXZpYXRlZCIsInN0cmluZ1V0aWxzIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwiZ2V0X3BhY2thZ2VfdGFyYmFsbCIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IHN0cmluZ1V0aWxzIH0gZnJvbSAnQHZlcmRhY2Npby9jb3JlJztcbmltcG9ydCB7IFBBQ0tBR0VfQVBJX0VORFBPSU5UUywgYWxsb3cgfSBmcm9tICdAdmVyZGFjY2lvL21pZGRsZXdhcmUnO1xuaW1wb3J0IHsgY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMgfSBmcm9tICdAdmVyZGFjY2lvL3RhcmJhbGwnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcsIE1hbmlmZXN0IH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB0eXBlIEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBESVNUX1RBR1MsIEhFQURFUlMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHR5cGUgU3RvcmFnZSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZSc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGdldFZlcnNpb24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyAkTmV4dEZ1bmN0aW9uVmVyLCAkUmVxdWVzdEV4dGVuZCwgJFJlc3BvbnNlRXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5jb25zdCBkb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuZ2V0VGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuXG4gIHN0cmVhbS5vbignY29udGVudC1sZW5ndGgnLCBmdW5jdGlvbiAoY29udGVudCk6IHZvaWQge1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gIH0pO1xuXG4gIHJlcy5oZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuT0NURVRfU1RSRUFNKTtcbiAgc3RyZWFtLnBpcGUocmVzKTtcbn07XG5cbmNvbnN0IHJlZGlyZWN0T3JEb3dubG9hZFN0cmVhbSA9IChcbiAgcGFja2FnZU5hbWU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgc3RvcmFnZTogYW55LFxuICByZXE6ICRSZXF1ZXN0RXh0ZW5kLFxuICByZXM6ICRSZXNwb25zZUV4dGVuZCxcbiAgY29uZmlnOiBDb25maWdcbik6IHZvaWQgPT4ge1xuICBjb25zdCB0YXJiYWxsVXJsUmVkaXJlY3QgPSBfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpO1xuICBzdG9yYWdlXG4gICAgLmhhc0xvY2FsVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpXG4gICAgLnRoZW4oKGhhc0xvY2FsVGFyYmFsbCkgPT4ge1xuICAgICAgaWYgKGhhc0xvY2FsVGFyYmFsbCkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0geyBwYWNrYWdlTmFtZSwgZmlsZW5hbWUgfTtcbiAgICAgICAgY29uc3QgdGFyYmFsbFVybCA9XG4gICAgICAgICAgdHlwZW9mIHRhcmJhbGxVcmxSZWRpcmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyB0YXJiYWxsVXJsUmVkaXJlY3QoY29udGV4dClcbiAgICAgICAgICAgIDogXy50ZW1wbGF0ZSh0YXJiYWxsVXJsUmVkaXJlY3QpKGNvbnRleHQpO1xuICAgICAgICByZXMucmVkaXJlY3QodGFyYmFsbFVybCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb3dubG9hZFN0cmVhbShwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHN0b3JhZ2UsIHJlcSwgcmVzKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICByZXMubG9jYWxzLnJlcG9ydF9lcnJvcihlcnIpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKHJvdXRlOiBSb3V0ZXIsIGF1dGg6IEF1dGgsIHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG4gIC8vIFRPRE86IGFub255bW91cyB1c2VyP1xuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX2J5X3ZlcnNpb24sXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IGFiYnJldmlhdGVkID1cbiAgICAgICAgc3RyaW5nVXRpbHMuZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZShyZXEuZ2V0KCdBY2NlcHQnKSkgPT09XG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQubnBtLmluc3RhbGwtdjEranNvbic7XG4gICAgICBjb25zdCBnZXRQYWNrYWdlTWV0YUNhbGxiYWNrID0gZnVuY3Rpb24gKGVyciwgbWV0YWRhdGE6IE1hbmlmZXN0KTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgICB9XG4gICAgICAgIG1ldGFkYXRhID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoXG4gICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdG9jb2w6IHJlcS5wcm90b2NvbCxcbiAgICAgICAgICAgIGhlYWRlcnM6IHJlcS5oZWFkZXJzIGFzIGFueSxcbiAgICAgICAgICAgIGhvc3Q6IHJlcS5ob3N0bmFtZSxcbiAgICAgICAgICAgIHJlbW90ZUFkZHJlc3M6IHJlcS5zb2NrZXQucmVtb3RlQWRkcmVzcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbmZpZy51cmxfcHJlZml4XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHF1ZXJ5VmVyc2lvbiA9IHJlcS5wYXJhbXMudmVyc2lvbjtcbiAgICAgICAgaWYgKF8uaXNOaWwocXVlcnlWZXJzaW9uKSkge1xuICAgICAgICAgIGlmIChhYmJyZXZpYXRlZCkge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgJ2FwcGxpY2F0aW9uL3ZuZC5ucG0uaW5zdGFsbC12MStqc29uJyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5leHQobWV0YWRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCBIRUFERVJTLkpTT04pO1xuICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKF8uaXNOaWwobWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHF1ZXJ5VmVyc2lvbiA9IG1ldGFkYXRhW0RJU1RfVEFHU11bcXVlcnlWZXJzaW9uXTtcbiAgICAgICAgICAgIHZlcnNpb24gPSBnZXRWZXJzaW9uKG1ldGFkYXRhLCBxdWVyeVZlcnNpb24pO1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwodmVyc2lvbikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHZlcnNpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0Tm90Rm91bmQoYCR7QVBJX0VSUk9SLlZFUlNJT05fTk9UX0VYSVNUfTogJHtyZXEucGFyYW1zLnZlcnNpb259YCkpO1xuICAgICAgfTtcblxuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICB1cGxpbmtzTG9vazogdHJ1ZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBhYmJyZXZpYXRlZCxcbiAgICAgICAgY2FsbGJhY2s6IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2ssXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUuZ2V0KFxuICAgIFBBQ0tBR0VfQVBJX0VORFBPSU5UUy5nZXRfcGFja2FnZV90YXJiYWxsLFxuICAgIGNhbignYWNjZXNzJyksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kKTogdm9pZCB7XG4gICAgICBpZiAoXy5nZXQoY29uZmlnLCAnZXhwZXJpbWVudHMudGFyYmFsbF91cmxfcmVkaXJlY3QnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvd25sb2FkU3RyZWFtKHJlcS5wYXJhbXMucGFja2FnZSwgcmVxLnBhcmFtcy5maWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtKFxuICAgICAgICAgIHJlcS5wYXJhbXMucGFja2FnZSxcbiAgICAgICAgICByZXEucGFyYW1zLmZpbGVuYW1lLFxuICAgICAgICAgIHN0b3JhZ2UsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHJlcyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLEtBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQUlBLElBQUFJLFVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE9BQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUEyRCxTQUFBRCx1QkFBQVEsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUczRCxNQUFNRyxjQUFjLEdBQUdBLENBQ3JCQyxXQUFtQixFQUNuQkMsUUFBZ0IsRUFDaEJDLE9BQVksRUFDWkMsR0FBbUIsRUFDbkJDLEdBQW9CLEtBQ1g7RUFDVCxNQUFNQyxNQUFNLEdBQUdILE9BQU8sQ0FBQ0ksVUFBVSxDQUFDTixXQUFXLEVBQUVDLFFBQVEsQ0FBQztFQUV4REksTUFBTSxDQUFDRSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsVUFBVUMsT0FBTyxFQUFRO0lBQ25ESixHQUFHLENBQUNLLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRUQsT0FBTyxDQUFDO0VBQ3ZDLENBQUMsQ0FBQztFQUVGSCxNQUFNLENBQUNFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVUcsR0FBRyxFQUFRO0lBQ3RDLE9BQU9OLEdBQUcsQ0FBQ08sTUFBTSxDQUFDQyxZQUFZLENBQUNGLEdBQUcsQ0FBQztFQUNyQyxDQUFDLENBQUM7RUFFRk4sR0FBRyxDQUFDSyxNQUFNLENBQUNJLGtCQUFPLENBQUNDLFlBQVksRUFBRUQsa0JBQU8sQ0FBQ0UsWUFBWSxDQUFDO0VBQ3REVixNQUFNLENBQUNXLElBQUksQ0FBQ1osR0FBRyxDQUFDO0FBQ2xCLENBQUM7QUFFRCxNQUFNYSx3QkFBd0IsR0FBR0EsQ0FDL0JqQixXQUFtQixFQUNuQkMsUUFBZ0IsRUFDaEJDLE9BQVksRUFDWkMsR0FBbUIsRUFDbkJDLEdBQW9CLEVBQ3BCYyxNQUFjLEtBQ0w7RUFDVCxNQUFNQyxrQkFBa0IsR0FBR0MsZUFBQyxDQUFDQyxHQUFHLENBQUNILE1BQU0sRUFBRSxrQ0FBa0MsQ0FBQztFQUM1RWhCLE9BQU8sQ0FDSm9CLGVBQWUsQ0FBQ3RCLFdBQVcsRUFBRUMsUUFBUSxDQUFDLENBQ3RDc0IsSUFBSSxDQUFFRCxlQUFlLElBQUs7SUFDekIsSUFBSUEsZUFBZSxFQUFFO01BQ25CLE1BQU1FLE9BQU8sR0FBRztRQUFFeEIsV0FBVztRQUFFQztNQUFTLENBQUM7TUFDekMsTUFBTXdCLFVBQVUsR0FDZCxPQUFPTixrQkFBa0IsS0FBSyxVQUFVLEdBQ3BDQSxrQkFBa0IsQ0FBQ0ssT0FBTyxDQUFDLEdBQzNCSixlQUFDLENBQUNNLFFBQVEsQ0FBQ1Asa0JBQWtCLENBQUMsQ0FBQ0ssT0FBTyxDQUFDO01BQzdDcEIsR0FBRyxDQUFDdUIsUUFBUSxDQUFDRixVQUFVLENBQUM7SUFDMUIsQ0FBQyxNQUFNO01BQ0wxQixjQUFjLENBQUNDLFdBQVcsRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxDQUFDO0lBQzFEO0VBQ0YsQ0FBQyxDQUFDLENBQ0R3QixLQUFLLENBQUVsQixHQUFHLElBQUs7SUFDZE4sR0FBRyxDQUFDTyxNQUFNLENBQUNDLFlBQVksQ0FBQ0YsR0FBRyxDQUFDO0VBQzlCLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFYyxTQUFBbUIsU0FBVUMsS0FBYSxFQUFFQyxJQUFVLEVBQUU3QixPQUFnQixFQUFFZ0IsTUFBYyxFQUFRO0VBQzFGLE1BQU1jLEdBQUcsR0FBRyxJQUFBQyxpQkFBSyxFQUFDRixJQUFJLEVBQUU7SUFDdEJHLFNBQVMsRUFBRUEsQ0FBQ0MsTUFBTSxFQUFFQyxPQUFPLEtBQUtDLGNBQU0sQ0FBQ0MsS0FBSyxDQUFDSCxNQUFNLEVBQUVDLE9BQU8sQ0FBQztJQUM3REcsUUFBUSxFQUFFQSxDQUFDSixNQUFNLEVBQUVDLE9BQU8sS0FBS0MsY0FBTSxDQUFDQyxLQUFLLENBQUNILE1BQU0sRUFBRUMsT0FBTztFQUM3RCxDQUFDLENBQUM7RUFDRjtFQUNBTixLQUFLLENBQUNULEdBQUcsQ0FDUG1CLGlDQUFxQixDQUFDQyxzQkFBc0IsRUFDNUNULEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDYixVQUFVN0IsR0FBbUIsRUFBRUMsR0FBb0IsRUFBRXNDLElBQXNCLEVBQVE7SUFDakYsTUFBTUMsV0FBVyxHQUNmQyxpQkFBVyxDQUFDQyx5QkFBeUIsQ0FBQzFDLEdBQUcsQ0FBQ2tCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUN4RCxxQ0FBcUM7SUFDdkMsTUFBTXlCLHNCQUFzQixHQUFHLFNBQUFBLENBQVVwQyxHQUFHLEVBQUVxQyxRQUFrQixFQUFRO01BQ3RFLElBQUlyQyxHQUFHLEVBQUU7UUFDUCxPQUFPZ0MsSUFBSSxDQUFDaEMsR0FBRyxDQUFDO01BQ2xCO01BQ0FxQyxRQUFRLEdBQUcsSUFBQUMsNENBQW1DLEVBQzVDRCxRQUFRLEVBQ1I7UUFDRUUsUUFBUSxFQUFFOUMsR0FBRyxDQUFDOEMsUUFBUTtRQUN0QkMsT0FBTyxFQUFFL0MsR0FBRyxDQUFDK0MsT0FBYztRQUMzQkMsSUFBSSxFQUFFaEQsR0FBRyxDQUFDaUQsUUFBUTtRQUNsQkMsYUFBYSxFQUFFbEQsR0FBRyxDQUFDbUQsTUFBTSxDQUFDRDtNQUM1QixDQUFDLEVBQ0RuQyxNQUFNLENBQUNxQyxVQUNULENBQUM7TUFFRCxJQUFJQyxZQUFZLEdBQUdyRCxHQUFHLENBQUNnQyxNQUFNLENBQUNzQixPQUFPO01BQ3JDLElBQUlyQyxlQUFDLENBQUNzQyxLQUFLLENBQUNGLFlBQVksQ0FBQyxFQUFFO1FBQ3pCLElBQUliLFdBQVcsRUFBRTtVQUNmdkMsR0FBRyxDQUFDdUQsU0FBUyxDQUFDOUMsa0JBQU8sQ0FBQ0MsWUFBWSxFQUFFLHFDQUFxQyxDQUFDO1FBQzVFLENBQUMsTUFBTTtVQUNMVixHQUFHLENBQUN1RCxTQUFTLENBQUM5QyxrQkFBTyxDQUFDQyxZQUFZLEVBQUVELGtCQUFPLENBQUMrQyxJQUFJLENBQUM7UUFDbkQ7UUFFQSxPQUFPbEIsSUFBSSxDQUFDSyxRQUFRLENBQUM7TUFDdkI7TUFFQSxJQUFJVSxPQUFPLEdBQUcsSUFBQUksaUJBQVUsRUFBQ2QsUUFBUSxFQUFFUyxZQUFZLENBQUM7TUFDaEQsSUFBSXBDLGVBQUMsQ0FBQ3NDLEtBQUssQ0FBQ0QsT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzlCckQsR0FBRyxDQUFDdUQsU0FBUyxDQUFDOUMsa0JBQU8sQ0FBQ0MsWUFBWSxFQUFFRCxrQkFBTyxDQUFDK0MsSUFBSSxDQUFDO1FBQ2pELE9BQU9sQixJQUFJLENBQUNlLE9BQU8sQ0FBQztNQUN0QjtNQUVBLElBQUlyQyxlQUFDLENBQUNzQyxLQUFLLENBQUNYLFFBQVEsQ0FBQ2Usb0JBQVMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzFDLElBQUkxQyxlQUFDLENBQUNzQyxLQUFLLENBQUNYLFFBQVEsQ0FBQ2Usb0JBQVMsQ0FBQyxDQUFDTixZQUFZLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtVQUN4REEsWUFBWSxHQUFHVCxRQUFRLENBQUNlLG9CQUFTLENBQUMsQ0FBQ04sWUFBWSxDQUFDO1VBQ2hEQyxPQUFPLEdBQUcsSUFBQUksaUJBQVUsRUFBQ2QsUUFBUSxFQUFFUyxZQUFZLENBQUM7VUFDNUMsSUFBSXBDLGVBQUMsQ0FBQ3NDLEtBQUssQ0FBQ0QsT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQzlCckQsR0FBRyxDQUFDdUQsU0FBUyxDQUFDOUMsa0JBQU8sQ0FBQ0MsWUFBWSxFQUFFRCxrQkFBTyxDQUFDK0MsSUFBSSxDQUFDO1lBQ2pELE9BQU9sQixJQUFJLENBQUNlLE9BQU8sQ0FBQztVQUN0QjtRQUNGO01BQ0Y7TUFDQSxPQUFPZixJQUFJLENBQUNxQixnQkFBUyxDQUFDQyxXQUFXLENBQUMsR0FBR0Msb0JBQVMsQ0FBQ0MsaUJBQWlCLEtBQUsvRCxHQUFHLENBQUNnQyxNQUFNLENBQUNzQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRHZELE9BQU8sQ0FBQ2lFLFVBQVUsQ0FBQztNQUNqQkMsSUFBSSxFQUFFakUsR0FBRyxDQUFDZ0MsTUFBTSxDQUFDa0MsT0FBTztNQUN4QkMsV0FBVyxFQUFFLElBQUk7TUFDakJuRSxHQUFHO01BQ0h3QyxXQUFXO01BQ1g0QixRQUFRLEVBQUV6QjtJQUNaLENBQUMsQ0FBQztFQUNKLENBQ0YsQ0FBQztFQUVEaEIsS0FBSyxDQUFDVCxHQUFHLENBQ1BtQixpQ0FBcUIsQ0FBQ2dDLG1CQUFtQixFQUN6Q3hDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDYixVQUFVN0IsR0FBbUIsRUFBRUMsR0FBb0IsRUFBUTtJQUN6RCxJQUFJZ0IsZUFBQyxDQUFDQyxHQUFHLENBQUNILE1BQU0sRUFBRSxrQ0FBa0MsQ0FBQyxLQUFLdUQsU0FBUyxFQUFFO01BQ25FMUUsY0FBYyxDQUFDSSxHQUFHLENBQUNnQyxNQUFNLENBQUNrQyxPQUFPLEVBQUVsRSxHQUFHLENBQUNnQyxNQUFNLENBQUNsQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsR0FBRyxFQUFFQyxHQUFHLENBQUM7SUFDNUUsQ0FBQyxNQUFNO01BQ0xhLHdCQUF3QixDQUN0QmQsR0FBRyxDQUFDZ0MsTUFBTSxDQUFDa0MsT0FBTyxFQUNsQmxFLEdBQUcsQ0FBQ2dDLE1BQU0sQ0FBQ2xDLFFBQVEsRUFDbkJDLE9BQU8sRUFDUEMsR0FBRyxFQUNIQyxHQUFHLEVBQ0hjLE1BQ0YsQ0FBQztJQUNIO0VBQ0YsQ0FDRixDQUFDO0FBQ0giLCJpZ25vcmVMaXN0IjpbXX0=
|
|
103
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29yZSIsIl9taWRkbGV3YXJlIiwiX3RhcmJhbGwiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlscyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRvd25sb2FkU3RyZWFtIiwicGFja2FnZU5hbWUiLCJmaWxlbmFtZSIsInN0b3JhZ2UiLCJyZXEiLCJyZXMiLCJzdHJlYW0iLCJnZXRUYXJiYWxsIiwib24iLCJjb250ZW50IiwiaGVhZGVyIiwiZXJyIiwibG9jYWxzIiwicmVwb3J0X2Vycm9yIiwiSEVBREVSUyIsIkNPTlRFTlRfVFlQRSIsIk9DVEVUX1NUUkVBTSIsInBpcGUiLCJyZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0iLCJjb25maWciLCJ0YXJiYWxsVXJsUmVkaXJlY3QiLCJfIiwiZ2V0IiwiaGFzTG9jYWxUYXJiYWxsIiwidGhlbiIsImNvbnRleHQiLCJ0YXJiYWxsVXJsIiwidGVtcGxhdGUiLCJyZWRpcmVjdCIsImNhdGNoIiwiX2RlZmF1bHQiLCJyb3V0ZSIsImF1dGgiLCJjYW4iLCJhbGxvdyIsImJlZm9yZUFsbCIsInBhcmFtcyIsIm1lc3NhZ2UiLCJsb2dnZXIiLCJ0cmFjZSIsImFmdGVyQWxsIiwiUEFDS0FHRV9BUElfRU5EUE9JTlRTIiwiZ2V0X3BhY2thZ2VfYnlfdmVyc2lvbiIsIm5leHQiLCJhYmJyZXZpYXRlZCIsInN0cmluZ1V0aWxzIiwiZ2V0QnlRdWFsaXR5UHJpb3JpdHlWYWx1ZSIsImdldFBhY2thZ2VNZXRhQ2FsbGJhY2siLCJtZXRhZGF0YSIsImNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIiwicHJvdG9jb2wiLCJoZWFkZXJzIiwiaG9zdCIsImhvc3RuYW1lIiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsInVybF9wcmVmaXgiLCJxdWVyeVZlcnNpb24iLCJ2ZXJzaW9uIiwiaXNOaWwiLCJzZXRIZWFkZXIiLCJKU09OIiwiZ2V0VmVyc2lvbiIsIkRJU1RfVEFHUyIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiQVBJX0VSUk9SIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJnZXRQYWNrYWdlIiwibmFtZSIsInBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwiZ2V0X3BhY2thZ2VfdGFyYmFsbCIsInVuZGVmaW5lZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3BhY2thZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB0eXBlIHsgQXV0aCB9IGZyb20gJ0B2ZXJkYWNjaW8vYXV0aCc7XG5pbXBvcnQgeyBzdHJpbmdVdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBQQUNLQUdFX0FQSV9FTkRQT0lOVFMsIGFsbG93IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB7IGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzIH0gZnJvbSAnQHZlcmRhY2Npby90YXJiYWxsJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBNYW5pZmVzdCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBBUElfRVJST1IsIERJU1RfVEFHUywgSEVBREVSUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSBTdG9yYWdlIGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB7IEVycm9yQ29kZSwgZ2V0VmVyc2lvbiB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgdHlwZSB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmNvbnN0IGRvd25sb2FkU3RyZWFtID0gKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBhbnksXG4gIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gIHJlczogJFJlc3BvbnNlRXh0ZW5kXG4pOiB2b2lkID0+IHtcbiAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5nZXRUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSk7XG5cbiAgc3RyZWFtLm9uKCdjb250ZW50LWxlbmd0aCcsIGZ1bmN0aW9uIChjb250ZW50KTogdm9pZCB7XG4gICAgcmVzLmhlYWRlcignQ29udGVudC1MZW5ndGgnLCBjb250ZW50KTtcbiAgfSk7XG5cbiAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgfSk7XG5cbiAgcmVzLmhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5PQ1RFVF9TVFJFQU0pO1xuICBzdHJlYW0ucGlwZShyZXMpO1xufTtcblxuY29uc3QgcmVkaXJlY3RPckRvd25sb2FkU3RyZWFtID0gKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBhbnksXG4gIHJlcTogJFJlcXVlc3RFeHRlbmQsXG4gIHJlczogJFJlc3BvbnNlRXh0ZW5kLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHRhcmJhbGxVcmxSZWRpcmVjdCA9IF8uZ2V0KGNvbmZpZywgJ2V4cGVyaW1lbnRzLnRhcmJhbGxfdXJsX3JlZGlyZWN0Jyk7XG4gIHN0b3JhZ2VcbiAgICAuaGFzTG9jYWxUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSlcbiAgICAudGhlbigoaGFzTG9jYWxUYXJiYWxsKSA9PiB7XG4gICAgICBpZiAoaGFzTG9jYWxUYXJiYWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB7IHBhY2thZ2VOYW1lLCBmaWxlbmFtZSB9O1xuICAgICAgICBjb25zdCB0YXJiYWxsVXJsID1cbiAgICAgICAgICB0eXBlb2YgdGFyYmFsbFVybFJlZGlyZWN0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHRhcmJhbGxVcmxSZWRpcmVjdChjb250ZXh0KVxuICAgICAgICAgICAgOiBfLnRlbXBsYXRlKHRhcmJhbGxVcmxSZWRpcmVjdCkoY29udGV4dCk7XG4gICAgICAgIHJlcy5yZWRpcmVjdCh0YXJiYWxsVXJsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvd25sb2FkU3RyZWFtKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgc3RvcmFnZSwgcmVxLCByZXMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogQXV0aCwgc3RvcmFnZTogU3RvcmFnZSwgY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcbiAgLy8gVE9ETzogYW5vbnltb3VzIHVzZXI/XG4gIHJvdXRlLmdldChcbiAgICBQQUNLQUdFX0FQSV9FTkRQT0lOVFMuZ2V0X3BhY2thZ2VfYnlfdmVyc2lvbixcbiAgICBjYW4oJ2FjY2VzcycpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgYWJicmV2aWF0ZWQgPVxuICAgICAgICBzdHJpbmdVdGlscy5nZXRCeVF1YWxpdHlQcmlvcml0eVZhbHVlKHJlcS5nZXQoJ0FjY2VwdCcpKSA9PT1cbiAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5ucG0uaW5zdGFsbC12MStqc29uJztcbiAgICAgIGNvbnN0IGdldFBhY2thZ2VNZXRhQ2FsbGJhY2sgPSBmdW5jdGlvbiAoZXJyLCBtZXRhZGF0YTogTWFuaWZlc3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgIH1cbiAgICAgICAgbWV0YWRhdGEgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm90b2NvbDogcmVxLnByb3RvY29sLFxuICAgICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMgYXMgYW55LFxuICAgICAgICAgICAgaG9zdDogcmVxLmhvc3RuYW1lLFxuICAgICAgICAgICAgcmVtb3RlQWRkcmVzczogcmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29uZmlnLnVybF9wcmVmaXhcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcXVlcnlWZXJzaW9uID0gcmVxLnBhcmFtcy52ZXJzaW9uO1xuICAgICAgICBpZiAoXy5pc05pbChxdWVyeVZlcnNpb24pKSB7XG4gICAgICAgICAgaWYgKGFiYnJldmlhdGVkKSB7XG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKEhFQURFUlMuQ09OVEVOVF9UWVBFLCAnYXBwbGljYXRpb24vdm5kLm5wbS5pbnN0YWxsLXYxK2pzb24nKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbmV4dChtZXRhZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgIGlmIChfLmlzTmlsKHZlcnNpb24pID09PSBmYWxzZSkge1xuICAgICAgICAgIHJlcy5zZXRIZWFkZXIoSEVBREVSUy5DT05URU5UX1RZUEUsIEhFQURFUlMuSlNPTik7XG4gICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAoXy5pc05pbChtZXRhZGF0YVtESVNUX1RBR1NdW3F1ZXJ5VmVyc2lvbl0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcXVlcnlWZXJzaW9uID0gbWV0YWRhdGFbRElTVF9UQUdTXVtxdWVyeVZlcnNpb25dO1xuICAgICAgICAgICAgdmVyc2lvbiA9IGdldFZlcnNpb24obWV0YWRhdGEsIHF1ZXJ5VmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoXy5pc05pbCh2ZXJzaW9uKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihIRUFERVJTLkNPTlRFTlRfVFlQRSwgSEVBREVSUy5KU09OKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQodmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXROb3RGb3VuZChgJHtBUElfRVJST1IuVkVSU0lPTl9OT1RfRVhJU1R9OiAke3JlcS5wYXJhbXMudmVyc2lvbn1gKSk7XG4gICAgICB9O1xuXG4gICAgICBzdG9yYWdlLmdldFBhY2thZ2Uoe1xuICAgICAgICBuYW1lOiByZXEucGFyYW1zLnBhY2thZ2UsXG4gICAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAgICByZXEsXG4gICAgICAgIGFiYnJldmlhdGVkLFxuICAgICAgICBjYWxsYmFjazogZ2V0UGFja2FnZU1ldGFDYWxsYmFjayxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS5nZXQoXG4gICAgUEFDS0FHRV9BUElfRU5EUE9JTlRTLmdldF9wYWNrYWdlX3RhcmJhbGwsXG4gICAgY2FuKCdhY2Nlc3MnKSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQpOiB2b2lkIHtcbiAgICAgIGlmIChfLmdldChjb25maWcsICdleHBlcmltZW50cy50YXJiYWxsX3VybF9yZWRpcmVjdCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZG93bmxvYWRTdHJlYW0ocmVxLnBhcmFtcy5wYWNrYWdlLCByZXEucGFyYW1zLmZpbGVuYW1lLCBzdG9yYWdlLCByZXEsIHJlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWRpcmVjdE9yRG93bmxvYWRTdHJlYW0oXG4gICAgICAgICAgcmVxLnBhcmFtcy5wYWNrYWdlLFxuICAgICAgICAgIHJlcS5wYXJhbXMuZmlsZW5hbWUsXG4gICAgICAgICAgc3RvcmFnZSxcbiAgICAgICAgICByZXEsXG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsS0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBR0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBRUEsSUFBQU0sTUFBQSxHQUFBTixP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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Router } from 'express';
|
|
2
|
+
import type { Auth } from '@verdaccio/auth';
|
|
2
3
|
import type { Config } from '@verdaccio/types';
|
|
3
|
-
import type Auth from '../../../lib/auth';
|
|
4
4
|
import type Storage from '../../../lib/storage';
|
|
5
5
|
import type { $NextFunctionVer, $RequestExtend, $ResponseExtend } from '../../../types';
|
|
6
6
|
export default function publish(router: Router, auth: Auth, storage: Storage, config: Config): void;
|
|
@@ -356,4 +356,4 @@ function uploadPackageTarball(storage) {
|
|
|
356
356
|
});
|
|
357
357
|
};
|
|
358
358
|
}
|
|
359
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbWltZSIsIl9wYXRoIiwiX2NvcmUiLCJfaG9va3MiLCJfbWlkZGxld2FyZSIsIl9jb25zdGFudHMiLCJfbG9nZ2VyIiwiX3N0b3JhZ2VVdGlscyIsIl91dGlscyIsIl9zdGFyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJidWlsZERlYnVnIiwicHVibGlzaCIsInJvdXRlciIsImF1dGgiLCJzdG9yYWdlIiwiY29uZmlnIiwiY2FuIiwiYWxsb3ciLCJiZWZvcmVBbGwiLCJwYXJhbXMiLCJtZXNzYWdlIiwibG9nZ2VyIiwidHJhY2UiLCJhZnRlckFsbCIsInB1dCIsIm1lZGlhIiwibWltZSIsImdldFR5cGUiLCJleHBlY3RKc29uIiwicHVibGlzaFBhY2thZ2UiLCJkZWxldGUiLCJ1blB1Ymxpc2hQYWNrYWdlIiwicmVtb3ZlVGFyYmFsbCIsIkhFQURFUlMiLCJPQ1RFVF9TVFJFQU0iLCJ1cGxvYWRQYWNrYWdlVGFyYmFsbCIsImFkZFZlcnNpb24iLCJzdGFyQXBpIiwic3RhciIsInJlcSIsInJlcyIsIm5leHQiLCJwYWNrYWdlTmFtZSIsInBhY2thZ2UiLCJjcmVhdGVUYXJiYWxsIiwiZmlsZW5hbWUiLCJkYXRhIiwiY2IiLCJzdHJlYW0iLCJhZGRUYXJiYWxsIiwib24iLCJlcnIiLCJlbmQiLCJCdWZmZXIiLCJmcm9tIiwiZG9uZSIsImNyZWF0ZVZlcnNpb24iLCJ2ZXJzaW9uIiwibWV0YWRhdGEiLCJhZGRUYWdzIiwidGFncyIsIm1lcmdlVGFncyIsImFmdGVyQ2hhbmdlIiwiZXJyb3IiLCJva01lc3NhZ2UiLCJtZXRhZGF0YUNvcHkiLCJfYXR0YWNobWVudHMiLCJ2ZXJzaW9ucyIsIl8iLCJpc05pbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsInN1Y2Nlc3MiLCJpc0ludmFsaWRCb2R5Rm9ybWF0IiwiaXNPYmplY3QiLCJoYXNEaWZmT25lS2V5IiwiaW5mbyIsIkVycm9yQ29kZSIsImdldEJhZFJlcXVlc3QiLCJBUElfRVJST1IiLCJVTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwiLCJDT05GTElDVCIsImZpcnN0QXR0YWNobWVudEtleSIsIk9iamVjdCIsImtleXMiLCJQYXRoIiwiYmFzZW5hbWUiLCJ2ZXJzaW9uVG9QdWJsaXNoIiwidmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoIiwicmVhZG1lIiwiU3RyaW5nIiwiRElTVF9UQUdTIiwibm90aWZ5IiwicmVtb3RlX3VzZXIiLCJuYW1lIiwiaXNQdWJsaXNoYWJsZVBhY2thZ2UiLCJib2R5IiwidXNlcnMiLCJ2YWxpZGF0aW9uVXRpbHMiLCJub3JtYWxpemVNZXRhZGF0YSIsIl9yZXYiLCJpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIiwiaXNFbXB0eSIsInJlbW90ZSIsImFsbG93X3VucHVibGlzaCIsImNoYW5nZVBhY2thZ2UiLCJyZXZpc2lvbiIsIkFQSV9NRVNTQUdFIiwiUEtHX0NIQU5HRUQiLCJhZGRQYWNrYWdlIiwiUEtHX0NSRUFURUQiLCJnZXRCYWREYXRhIiwiQkFEX1BBQ0tBR0VfREFUQSIsInJlbW92ZVBhY2thZ2UiLCJQS0dfUkVNT1ZFRCIsIlRBUkJBTExfUkVNT1ZFRCIsInRhZyIsIlBLR19QVUJMSVNIRUQiLCJwaXBlIiwiY29tcGxldGUiLCJhYm9ydCIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIlRBUkJBTExfVVBMT0FERUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9wdWJsaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5pbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHsgdmFsaWRhdGlvblV0aWxzIH0gZnJvbSAnQHZlcmRhY2Npby9jb3JlJztcbmltcG9ydCB7IG5vdGlmeSB9IGZyb20gJ0B2ZXJkYWNjaW8vaG9va3MnO1xuaW1wb3J0IHsgYWxsb3csIGV4cGVjdEpzb24sIG1lZGlhIH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB0eXBlIHsgQ2FsbGJhY2ssIENvbmZpZywgTWVyZ2VUYWdzLCBQYWNrYWdlLCBWZXJzaW9uIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCB0eXBlIEF1dGggZnJvbSAnLi4vLi4vLi4vbGliL2F1dGgnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUElfTUVTU0FHRSwgRElTVF9UQUdTLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSBTdG9yYWdlIGZyb20gJy4uLy4uLy4uL2xpYi9zdG9yYWdlJztcbmltcG9ydCB7IGlzUHVibGlzaGFibGVQYWNrYWdlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UtdXRpbHMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBoYXNEaWZmT25lS2V5LCBpc09iamVjdCwgaXNSZWxhdGVkVG9EZXByZWNhdGlvbiB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgdHlwZSB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kLCAkUmVzcG9uc2VFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQgc3RhciBmcm9tICcuL3N0YXInO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxkRGVidWcoJ3ZlcmRhY2NpbzpwdWJsaXNoJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHB1Ymxpc2goXG4gIHJvdXRlcjogUm91dGVyLFxuICBhdXRoOiBBdXRoLFxuICBzdG9yYWdlOiBTdG9yYWdlLFxuICBjb25maWc6IENvbmZpZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGNhbiA9IGFsbG93KGF1dGgsIHtcbiAgICBiZWZvcmVBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICAgIGFmdGVyQWxsOiAocGFyYW1zLCBtZXNzYWdlKSA9PiBsb2dnZXIudHJhY2UocGFyYW1zLCBtZXNzYWdlKSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2ggYSBwYWNrYWdlIC8gdXBkYXRlIHBhY2thZ2UgLyB1bi9zdGFydCBhIHBhY2thZ2VcbiAgICpcbiAgICogVGhlcmUgYXJlIG11bHRpcGxlcyBzY2VuYXJpb3MgaGVyZSB0byBiZSBjb25zaWRlcmVkOlxuICAgKlxuICAgKiAxLiBQdWJsaXNoIHNjZW5hcmlvXG4gICAqXG4gICAqIFB1Ymxpc2ggYSBwYWNrYWdlIGNvbnNpc3Qgb2YgYXQgbGVhc3QgMSBzdGVwIChQVVQpIHdpdGggYSBtZXRhZGF0YSBwYXlsb2FkLlxuICAgKiBXaGVuIGEgcGFja2FnZSBpcyBwdWJsaXNoZWQsIGFuIF9hdHRhY2htZW50IHByb3BlcnR5IGlzIHByZXNlbnQgdGhhdCBjb250YWlucyB0aGUgZGF0YVxuICAgKiBvZiB0aGUgdGFyYmFsbC5cbiAgICpcbiAgICogRXhhbXBsZSBmbG93IG9mIHB1Ymxpc2guXG4gICAqXG4gICAqICBucG0gaHR0cCBmZXRjaCBQVVQgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MSA5NjI3bXNcbiAgICAgIG5wbSBpbmZvIGxpZmVjeWNsZSBAc2NvcGUvdGVzdDFAMS4wLjF+cHVibGlzaDogQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICBucG0gaW5mbyBsaWZlY3ljbGUgQHNjb3BlL3Rlc3QxQDEuMC4xfnBvc3RwdWJsaXNoOiBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgICsgQHNjb3BlL3Rlc3QxQDEuMC4xXG4gICAgICBucG0gdmVyYiBleGl0IFsgMCwgdHJ1ZSBdXG4gICAqXG4gICAqXG4gICAqIDIuIFVucHVibGlzaCBzY2VuYXJpb1xuICAgKlxuICAgKiBVbnB1Ymxpc2ggY29uc2lzdCBpbiAzIHN0ZXBzLlxuICAgKiAgMS4gVHJ5IHRvIGZldGNoICBtZXRhZGF0YSAtPiBpZiBpdCBmYWlscywgcmV0dXJuIDQwNFxuICAgKiAgMi4gQ29tcHV0ZSBtZXRhZGF0YSBsb2NhbGx5IChjbGllbnQgc2lkZSkgYW5kIHNlbmQgYSBtdXRhdGUgcGF5bG9hZCBleGNsdWRpbmcgdGhlIHZlcnNpb24gdG8gYmUgdW5wdWJsaXNoZWRcbiAgICogICAgZWc6IGlmIG1ldGFkYXRhIHJlZmxlY3RzIDEuMC4xLCAxLjAuMiBhbmQgMS4wLjMsIHRoZSBjb21wdXRlZCBtZXRhZGF0YSB3b24ndCBpbmNsdWRlIDEuMC4zLlxuICAgKiAgMy4gT25jZSB0aGUgc2Vjb25kIHN0ZXAgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGZpbmlzaGVkLCBkZWxldGUgdGhlIHRhcmJhbGwuXG4gICAqXG4gICAqICBBbGwgdGhlc2Ugc3RlcHMgYXJlIGNvbnNlY3V0aXZlIGFuZCByZXF1aXJlZCwgdGhlcmUgaXMgbm8gdHJhbnNhY2lvbnMgaGVyZSwgaWYgc3RlcCAzIGZhaWxzLCBtZXRhZGF0YSBtaWdodFxuICAgKiAgZ2V0IGNvcnJ1cHRlZC5cbiAgICpcbiAgICogIE5vdGUgdGhlIHVucHVibGlzaCBjYWxsIHdpbGwgc3VmZml4IGluIHRoZSB1cmwgYSAvLXJldi8xNC01ZDUwMGNmY2U5MmY5MGZkIHJldmlzaW9uIG51bWJlciwgdGhpcyBub3RcbiAgICogIHVzZWQgaW50ZXJuYWxseS5cbiAgICpcbiAgICpcbiAgICogRXhhbXBsZSBmbG93IG9mIHVucHVibGlzaC5cbiAgICpcbiAgICogbnBtIGh0dHAgZmV0Y2ggR0VUIDIwMCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxNjgwbXNcbiAgICAgbnBtIGh0dHAgZmV0Y2ggUFVUIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLXJldi8xNC01ZDUwMGNmY2U5MmY5MGZkIDk1NjYwNm1zIGF0dGVtcHQgIzJcbiAgICAgbnBtIGh0dHAgZmV0Y2ggR0VUIDIwMCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxNjAxbXNcbiAgICAgbnBtIGh0dHAgZmV0Y2ggREVMRVRFIDIwMSBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDEvLS90ZXN0MS0xLjAuMy50Z3ovLXJldi8xNi1lMTFjOGRiMjgyYjJkOTkyIDE5bXNcbiAgICpcbiAgICogMy4gU3RhciBhIHBhY2thZ2VcbiAgICpcbiAgICogUGVybWlzc2lvbnM6IHN0YXJ0IGEgcGFja2FnZSBkZXBlbmRzIG9mIHRoZSBwdWJsaXNoIGFuZCB1bnB1Ymxpc2ggcGVybWlzc2lvbnMsIHRoZXJlIGlzIG5vIHNwZWNpZmljIGZsYWcgZm9yIHN0YXIgb3IgdW4gc3RhcnQuXG4gICAqIFRoZSBVUkwgZm9yIHN0YXIgaXMgc2ltaWxhciB0byB0aGUgdW5wdWJsaXNoIChjaGFuZ2UgcGFja2FnZSBmb3JtYXQpXG4gICAqXG4gICAqIG5wbSBoYXMgbm8gZW5wb2ludCBmb3Igc3RhciBhIHBhY2thZ2UsIHJhdGhlciBtdXRhdGUgdGhlIG1ldGFkYXRhIGFuZCBhY3RzIGFzLCB0aGUgZGlmZmVyZW5jZSBpcyB0aGVcbiAgICogdXNlcnMgcHJvcGVydHkgd2hpY2ggaXMgcGFydCBvZiB0aGUgcGF5bG9hZCBhbmQgdGhlIGJvZHkgb25seSBpbmNsdWRlc1xuICAgKlxuICAgKiB7XG5cdFx0ICBcIl9pZFwiOiBwa2dOYW1lLFxuXHQgIFx0XCJfcmV2XCI6IFwiMy1iMGNkYWVmYzliZGI3N2M4XCIsXG5cdFx0ICBcInVzZXJzXCI6IHtcblx0XHQgICAgW3VzZXJuYW1lXTogYm9vbGVhbiB2YWx1ZSAodHJ1ZSwgZmFsc2UpXG5cdFx0ICB9XG5cdH1cbiAgICpcbiAgICovXG4gIHJvdXRlci5wdXQoXG4gICAgJy86cGFja2FnZS86X3Jldj8vOnJldmlzaW9uPycsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgIGV4cGVjdEpzb24sXG4gICAgcHVibGlzaFBhY2thZ2Uoc3RvcmFnZSwgY29uZmlnLCBhdXRoKVxuICApO1xuXG4gIC8qKlxuICAgKiBVbi1wdWJsaXNoaW5nIGFuIGVudGlyZSBwYWNrYWdlLlxuICAgKlxuICAgKiBUaGlzIHNjZW5hcmlvIGhhcHBlbnMgd2hlbiB0aGUgZmlyc3QgY2FsbCBkZXRlY3QgdGhlcmUgaXMgb25seSBvbmUgdmVyc2lvbiByZW1haW5pbmdcbiAgICogaW4gdGhlIG1ldGFkYXRhLCB0aGVuIHRoZSBjbGllbnQgZGVjaWRlcyB0byBERUxFVEUgdGhlIHJlc291cmNlXG4gICAqIG5wbSBodHRwIGZldGNoIEdFVCAzMDQgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxP3dyaXRlPXRydWUgMTA3Nm1zIChmcm9tIGNhY2hlKVxuICAgICBucG0gaHR0cCBmZXRjaCBERUxFVEUgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tcmV2LzE4LWQ4ZWJlMzAyMGJkNGFjOWMgMjJtc1xuICAgKi9cbiAgcm91dGVyLmRlbGV0ZSgnLzpwYWNrYWdlLy1yZXYvKicsIGNhbigndW5wdWJsaXNoJyksIHVuUHVibGlzaFBhY2thZ2Uoc3RvcmFnZSkpO1xuXG4gIC8vIHJlbW92aW5nIGEgdGFyYmFsbFxuICByb3V0ZXIuZGVsZXRlKFxuICAgICcvOnBhY2thZ2UvLS86ZmlsZW5hbWUvLXJldi86cmV2aXNpb24nLFxuICAgIGNhbigndW5wdWJsaXNoJyksXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgcmVtb3ZlVGFyYmFsbChzdG9yYWdlKVxuICApO1xuXG4gIC8vIHVwbG9hZGluZyBwYWNrYWdlIHRhcmJhbGxcbiAgcm91dGVyLnB1dChcbiAgICAnLzpwYWNrYWdlLy0vOmZpbGVuYW1lLyonLFxuICAgIGNhbigncHVibGlzaCcpLFxuICAgIG1lZGlhKEhFQURFUlMuT0NURVRfU1RSRUFNKSxcbiAgICB1cGxvYWRQYWNrYWdlVGFyYmFsbChzdG9yYWdlKVxuICApO1xuXG4gIC8vIG9ubHkgdXNlZCBmb3IgZGV2ZWxvcG1lbnRcbiAgaWYgKGNvbmZpZy5fZGVidWcpIHtcbiAgICAvLyBhZGRpbmcgYSB2ZXJzaW9uXG4gICAgcm91dGVyLnB1dChcbiAgICAgICcvOnBhY2thZ2UvOnZlcnNpb24vLXRhZy86dGFnJyxcbiAgICAgIGNhbigncHVibGlzaCcpLFxuICAgICAgbWVkaWEobWltZS5nZXRUeXBlKCdqc29uJykpLFxuICAgICAgZXhwZWN0SnNvbixcbiAgICAgIGFkZFZlcnNpb24oc3RvcmFnZSlcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogUHVibGlzaCBhIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IFN0b3JhZ2UsIGNvbmZpZzogQ29uZmlnLCBhdXRoOiBBdXRoKTogYW55IHtcbiAgY29uc3Qgc3RhckFwaSA9IHN0YXIoc3RvcmFnZSk7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygncHVibGlzaGluZyBvciB1cGRhdGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAvKipcbiAgICAgKiBXcml0ZSB0YXJiYWxsIG9mIHN0cmVhbSBkYXRhIGZyb20gcGFja2FnZSBjbGllbnRzLlxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVRhcmJhbGwgPSBmdW5jdGlvbiAoZmlsZW5hbWU6IHN0cmluZywgZGF0YSwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBjb25zdCBzdHJlYW0gPSBzdG9yYWdlLmFkZFRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNiKGVycik7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2IoKTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcyBpcyBkdW1iIGFuZCBtZW1vcnktY29uc3VtaW5nLCBidXQgd2hhdCBjaG9pY2VzIGRvIHdlIGhhdmU/XG4gICAgICAvLyBmbG93OiB3ZSBuZWVkIGZpcnN0IHJlZmFjdG9yIHRoaXMgZmlsZSBiZWZvcmUgZGVjaWRlcyB3aGljaCB0eXBlIHVzZSBoZXJlXG4gICAgICBzdHJlYW0uZW5kKEJ1ZmZlci5mcm9tKGRhdGEuZGF0YSwgJ2Jhc2U2NCcpKTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgcGFja2FnZSB2ZXJzaW9uIGluIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBjb25zdCBjcmVhdGVWZXJzaW9uID0gZnVuY3Rpb24gKHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBtZXRhZGF0YSwgbnVsbCwgY2IpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBBZGQgbmV3IHRhZ3MgaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGFkZFRhZ3MgPSBmdW5jdGlvbiAodGFnczogTWVyZ2VUYWdzLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIHN0b3JhZ2UubWVyZ2VUYWdzKHBhY2thZ2VOYW1lLCB0YWdzLCBjYik7XG4gICAgfTtcblxuICAgIGNvbnN0IGFmdGVyQ2hhbmdlID0gZnVuY3Rpb24gKGVycm9yLCBva01lc3NhZ2UsIG1ldGFkYXRhKTogdm9pZCB7XG4gICAgICBjb25zdCBtZXRhZGF0YUNvcHk6IFBhY2thZ2UgPSB7IC4uLm1ldGFkYXRhIH07XG5cbiAgICAgIGNvbnN0IHsgX2F0dGFjaG1lbnRzLCB2ZXJzaW9ucyB9ID0gbWV0YWRhdGFDb3B5O1xuXG4gICAgICAvLyBgbnBtIHN0YXJgIHdvdWxkbid0IGhhdmUgYXR0YWNobWVudHNcbiAgICAgIC8vIGFuZCBgbnBtIGRlcHJlY2F0ZWAgd291bGQgaGF2ZSBhdHRhY2htZW50cyBhcyBhIGVtcHR5IG9iamVjdCwgaS5lIHt9XG4gICAgICBpZiAoXy5pc05pbChfYXR0YWNobWVudHMpIHx8IEpTT04uc3RyaW5naWZ5KF9hdHRhY2htZW50cykgPT09ICd7fScpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICBvazogb2tNZXNzYWdlLFxuICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBucG0tcmVnaXN0cnktY2xpZW50IDAuMysgZW1iZWRzIHRhcmJhbGwgaW50byB0aGUganNvbiB1cGxvYWRcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3MvbnBtLXJlZ2lzdHJ5LWNsaWVudC9jb21taXQvZTlmYmViOGI2N2YyNDkzOTRmNzM1Yzc0ZWYxMWZlNDcyMGQ0NmNhMFxuICAgICAgLy8gaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3JsaWR3a2Evc2lub3BpYS9pc3N1ZXMvMzEsIGRlYWxpbmcgd2l0aCBpdCBoZXJlOlxuICAgICAgY29uc3QgaXNJbnZhbGlkQm9keUZvcm1hdCA9XG4gICAgICAgIGlzT2JqZWN0KF9hdHRhY2htZW50cykgPT09IGZhbHNlIHx8XG4gICAgICAgIGhhc0RpZmZPbmVLZXkoX2F0dGFjaG1lbnRzKSB8fFxuICAgICAgICBpc09iamVjdCh2ZXJzaW9ucykgPT09IGZhbHNlIHx8XG4gICAgICAgIGhhc0RpZmZPbmVLZXkodmVyc2lvbnMpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkQm9keUZvcm1hdCkge1xuICAgICAgICAvLyBucG0gaXMgZG9pbmcgc29tZXRoaW5nIHN0cmFuZ2UgYWdhaW5cbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCByZXBvcnQgaXQgYXMgYSBidWdcbiAgICAgICAgbG9nZ2VyLmluZm8oeyBwYWNrYWdlTmFtZSB9LCBgd3JvbmcgcGFja2FnZSBmb3JtYXQgb24gcHVibGlzaCBhIHBhY2thZ2UgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoQVBJX0VSUk9SLlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICE9PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQgZG9jdW1lbnQgaXMgZWl0aGVyIGNyZWF0ZWQgb3IgZXhpc3RlZCBiZWZvcmVcbiAgICAgIGNvbnN0IFtmaXJzdEF0dGFjaG1lbnRLZXldID0gT2JqZWN0LmtleXMoX2F0dGFjaG1lbnRzKTtcblxuICAgICAgY3JlYXRlVGFyYmFsbChcbiAgICAgICAgUGF0aC5iYXNlbmFtZShmaXJzdEF0dGFjaG1lbnRLZXkpLFxuICAgICAgICBfYXR0YWNobWVudHNbZmlyc3RBdHRhY2htZW50S2V5XSxcbiAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdmVyc2lvblRvUHVibGlzaCA9IE9iamVjdC5rZXlzKHZlcnNpb25zKVswXTtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2ggPSB2ZXJzaW9uc1t2ZXJzaW9uVG9QdWJsaXNoXTtcblxuICAgICAgICAgIHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUgPVxuICAgICAgICAgICAgXy5pc05pbCh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgPyBTdHJpbmcodmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSlcbiAgICAgICAgICAgICAgOiAnJztcblxuICAgICAgICAgIGNyZWF0ZVZlcnNpb24odmVyc2lvblRvUHVibGlzaCwgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFkZFRhZ3MobWV0YWRhdGFDb3B5W0RJU1RfVEFHU10sIGFzeW5jIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGF3YWl0IG5vdGlmeShcbiAgICAgICAgICAgICAgICAgIG1ldGFkYXRhQ29weSxcbiAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgIHJlcS5yZW1vdGVfdXNlcixcbiAgICAgICAgICAgICAgICAgIGAke21ldGFkYXRhQ29weS5uYW1lfUAke3ZlcnNpb25Ub1B1Ymxpc2h9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHsgZXJyb3IgfSwgJ25vdGlmeSBiYXRjaCBzZXJ2aWNlIGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dCh7IG9rOiBva01lc3NhZ2UsIHN1Y2Nlc3M6IHRydWUgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgaWYgKGlzUHVibGlzaGFibGVQYWNrYWdlKHJlcS5ib2R5KSA9PT0gZmFsc2UgJiYgaXNPYmplY3QocmVxLmJvZHkudXNlcnMpKSB7XG4gICAgICByZXR1cm4gc3RhckFwaShyZXEsIHJlcywgbmV4dCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gdmFsaWRhdGlvblV0aWxzLm5vcm1hbGl6ZU1ldGFkYXRhKHJlcS5ib2R5LCBwYWNrYWdlTmFtZSk7XG4gICAgICAvLyBjaGVjayBfYXR0YWNobWVudHMgdG8gZGlzdGluZ3Vpc2ggcHVibGlzaCBhbmQgZGVwcmVjYXRlXG4gICAgICBpZiAoXG4gICAgICAgIHJlcS5wYXJhbXMuX3JldiB8fFxuICAgICAgICAoaXNSZWxhdGVkVG9EZXByZWNhdGlvbihyZXEuYm9keSkgJiYgXy5pc0VtcHR5KHJlcS5ib2R5Ll9hdHRhY2htZW50cykpXG4gICAgICApIHtcbiAgICAgICAgZGVidWcoJ3VwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICAvLyB3ZSBjaGVjayB1bnB1Ymxpc2ggcGVybWlzc2lvbnMsIGFuIHVwZGF0ZSBpcyBiYXNpY2FsbHkgcmVtb3ZlIHZlcnNpb25zXG4gICAgICAgIGNvbnN0IHJlbW90ZSA9IHJlcS5yZW1vdGVfdXNlcjtcbiAgICAgICAgYXV0aC5hbGxvd191bnB1Ymxpc2goeyBwYWNrYWdlTmFtZSB9LCByZW1vdGUsIChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgYG5vdCBhbGxvd2VkIHRvIHVucHVibGlzaCBhIHZlcnNpb24gZm9yIEB7cGFja2FnZU5hbWV9YCk7XG4gICAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0b3JhZ2UuY2hhbmdlUGFja2FnZShwYWNrYWdlTmFtZSwgbWV0YWRhdGEsIHJlcS5wYXJhbXMucmV2aXNpb24sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgYWZ0ZXJDaGFuZ2UoZXJyb3IsIEFQSV9NRVNTQUdFLlBLR19DSEFOR0VELCBtZXRhZGF0YSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVidWcoJ2FkZGluZyBhIG5ldyB2ZXJzaW9uIGZvciAlbycsIHBhY2thZ2VOYW1lKTtcbiAgICAgICAgc3RvcmFnZS5hZGRQYWNrYWdlKHBhY2thZ2VOYW1lLCBtZXRhZGF0YSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgYWZ0ZXJDaGFuZ2UoZXJyb3IsIEFQSV9NRVNTQUdFLlBLR19DUkVBVEVELCBtZXRhZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGRlYnVnKCdlcnJvciBvbiBwdWJsaXNoOiAlcycsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgbG9nZ2VyLmVycm9yKHsgcGFja2FnZU5hbWUgfSwgJ2Vycm9yIG9uIHB1Ymxpc2gsIGJhZCBwYWNrYWdlIGRhdGEgZm9yIEB7cGFja2FnZU5hbWV9Jyk7XG4gICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkRGF0YShBUElfRVJST1IuQkFEX1BBQ0tBR0VfREFUQSkpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiB1bi1wdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlOiBTdG9yYWdlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMucGFja2FnZTtcbiAgICBkZWJ1ZygndW5wdWJsaXNoaW5nICVvJywgcGFja2FnZU5hbWUpO1xuICAgIHN0b3JhZ2UucmVtb3ZlUGFja2FnZShwYWNrYWdlTmFtZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlBLR19SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIERlbGV0ZSB0YXJiYWxsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUYXJiYWxsKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGNvbnN0IHsgZmlsZW5hbWUsIHJldmlzaW9uIH0gPSByZXEucGFyYW1zO1xuICAgIGRlYnVnKCdyZW1vdmluZyBhIHRhcmJhbGwgZm9yICVvLSVvLSVvJywgcGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbik7XG4gICAgc3RvcmFnZS5yZW1vdmVUYXJiYWxsKHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICBkZWJ1Zygnc3VjY2VzcyByZW1vdmUgdGFyYmFsbCBmb3IgJW8tJW8tJW8nLCBwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uKTtcbiAgICAgIHJldHVybiBuZXh0KHsgb2s6IEFQSV9NRVNTQUdFLlRBUkJBTExfUkVNT1ZFRCB9KTtcbiAgICB9KTtcbiAgfTtcbn1cbi8qKlxuICogQWRkcyBhIG5ldyB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRWZXJzaW9uKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdmVyc2lvbiwgdGFnIH0gPSByZXEucGFyYW1zO1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5hZGRWZXJzaW9uKHBhY2thZ2VOYW1lLCB2ZXJzaW9uLCByZXEuYm9keSwgdGFnLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5QS0dfUFVCTElTSEVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogdXBsb2FkUGFja2FnZVRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgcmVxLnBhcmFtcy5maWxlbmFtZSk7XG4gICAgcmVxLnBpcGUoc3RyZWFtKTtcblxuICAgIC8vIGNoZWNraW5nIGlmIGVuZCBldmVudCBjYW1lIGJlZm9yZSBjbG9zaW5nXG4gICAgbGV0IGNvbXBsZXRlID0gZmFsc2U7XG4gICAgcmVxLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWU7XG4gICAgICBzdHJlYW0uZG9uZSgpO1xuICAgIH0pO1xuXG4gICAgcmVxLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29tcGxldGUpIHtcbiAgICAgICAgc3RyZWFtLmFib3J0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgcmV0dXJuIHJlcy5sb2NhbHMucmVwb3J0X2Vycm9yKGVycik7XG4gICAgfSk7XG5cbiAgICBzdHJlYW0ub24oJ3N1Y2Nlc3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9VUExPQURFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFD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
|
|
359
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbWltZSIsIl9wYXRoIiwiX2NvcmUiLCJfaG9va3MiLCJfbWlkZGxld2FyZSIsIl9jb25zdGFudHMiLCJfbG9nZ2VyIiwiX3N0b3JhZ2VVdGlscyIsIl91dGlscyIsIl9zdGFyIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJidWlsZERlYnVnIiwicHVibGlzaCIsInJvdXRlciIsImF1dGgiLCJzdG9yYWdlIiwiY29uZmlnIiwiY2FuIiwiYWxsb3ciLCJiZWZvcmVBbGwiLCJwYXJhbXMiLCJtZXNzYWdlIiwibG9nZ2VyIiwidHJhY2UiLCJhZnRlckFsbCIsInB1dCIsIm1lZGlhIiwibWltZSIsImdldFR5cGUiLCJleHBlY3RKc29uIiwicHVibGlzaFBhY2thZ2UiLCJkZWxldGUiLCJ1blB1Ymxpc2hQYWNrYWdlIiwicmVtb3ZlVGFyYmFsbCIsIkhFQURFUlMiLCJPQ1RFVF9TVFJFQU0iLCJ1cGxvYWRQYWNrYWdlVGFyYmFsbCIsImFkZFZlcnNpb24iLCJzdGFyQXBpIiwic3RhciIsInJlcSIsInJlcyIsIm5leHQiLCJwYWNrYWdlTmFtZSIsInBhY2thZ2UiLCJjcmVhdGVUYXJiYWxsIiwiZmlsZW5hbWUiLCJkYXRhIiwiY2IiLCJzdHJlYW0iLCJhZGRUYXJiYWxsIiwib24iLCJlcnIiLCJlbmQiLCJCdWZmZXIiLCJmcm9tIiwiZG9uZSIsImNyZWF0ZVZlcnNpb24iLCJ2ZXJzaW9uIiwibWV0YWRhdGEiLCJhZGRUYWdzIiwidGFncyIsIm1lcmdlVGFncyIsImFmdGVyQ2hhbmdlIiwiZXJyb3IiLCJva01lc3NhZ2UiLCJtZXRhZGF0YUNvcHkiLCJfYXR0YWNobWVudHMiLCJ2ZXJzaW9ucyIsIl8iLCJpc05pbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIkNSRUFURUQiLCJvayIsInN1Y2Nlc3MiLCJpc0ludmFsaWRCb2R5Rm9ybWF0IiwiaXNPYmplY3QiLCJoYXNEaWZmT25lS2V5IiwiaW5mbyIsIkVycm9yQ29kZSIsImdldEJhZFJlcXVlc3QiLCJBUElfRVJST1IiLCJVTlNVUE9SVEVEX1JFR0lTVFJZX0NBTEwiLCJDT05GTElDVCIsImZpcnN0QXR0YWNobWVudEtleSIsIk9iamVjdCIsImtleXMiLCJQYXRoIiwiYmFzZW5hbWUiLCJ2ZXJzaW9uVG9QdWJsaXNoIiwidmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoIiwicmVhZG1lIiwiU3RyaW5nIiwiRElTVF9UQUdTIiwibm90aWZ5IiwicmVtb3RlX3VzZXIiLCJuYW1lIiwiaXNQdWJsaXNoYWJsZVBhY2thZ2UiLCJib2R5IiwidXNlcnMiLCJ2YWxpZGF0aW9uVXRpbHMiLCJub3JtYWxpemVNZXRhZGF0YSIsIl9yZXYiLCJpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIiwiaXNFbXB0eSIsInJlbW90ZSIsImFsbG93X3VucHVibGlzaCIsImNoYW5nZVBhY2thZ2UiLCJyZXZpc2lvbiIsIkFQSV9NRVNTQUdFIiwiUEtHX0NIQU5HRUQiLCJhZGRQYWNrYWdlIiwiUEtHX0NSRUFURUQiLCJnZXRCYWREYXRhIiwiQkFEX1BBQ0tBR0VfREFUQSIsInJlbW92ZVBhY2thZ2UiLCJQS0dfUkVNT1ZFRCIsIlRBUkJBTExfUkVNT1ZFRCIsInRhZyIsIlBLR19QVUJMSVNIRUQiLCJwaXBlIiwiY29tcGxldGUiLCJhYm9ydCIsImxvY2FscyIsInJlcG9ydF9lcnJvciIsIlRBUkJBTExfVVBMT0FERUQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL2VuZHBvaW50L2FwaS9wdWJsaXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB0eXBlIHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5pbXBvcnQgUGF0aCBmcm9tICdwYXRoJztcblxuaW1wb3J0IHR5cGUgeyBBdXRoIH0gZnJvbSAnQHZlcmRhY2Npby9hdXRoJztcbmltcG9ydCB7IHZhbGlkYXRpb25VdGlscyB9IGZyb20gJ0B2ZXJkYWNjaW8vY29yZSc7XG5pbXBvcnQgeyBub3RpZnkgfSBmcm9tICdAdmVyZGFjY2lvL2hvb2tzJztcbmltcG9ydCB7IGFsbG93LCBleHBlY3RKc29uLCBtZWRpYSB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgdHlwZSB7IENhbGxiYWNrLCBDb25maWcsIE1lcmdlVGFncywgUGFja2FnZSwgVmVyc2lvbiB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBBUElfRVJST1IsIEFQSV9NRVNTQUdFLCBESVNUX1RBR1MsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB0eXBlIFN0b3JhZ2UgZnJvbSAnLi4vLi4vLi4vbGliL3N0b3JhZ2UnO1xuaW1wb3J0IHsgaXNQdWJsaXNoYWJsZVBhY2thZ2UgfSBmcm9tICcuLi8uLi8uLi9saWIvc3RvcmFnZS11dGlscyc7XG5pbXBvcnQgeyBFcnJvckNvZGUsIGhhc0RpZmZPbmVLZXksIGlzT2JqZWN0LCBpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQsICRSZXNwb25zZUV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCBzdGFyIGZyb20gJy4vc3Rhcic7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvOnB1Ymxpc2gnKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHVibGlzaChcbiAgcm91dGVyOiBSb3V0ZXIsXG4gIGF1dGg6IEF1dGgsXG4gIHN0b3JhZ2U6IFN0b3JhZ2UsXG4gIGNvbmZpZzogQ29uZmlnXG4pOiB2b2lkIHtcbiAgY29uc3QgY2FuID0gYWxsb3coYXV0aCwge1xuICAgIGJlZm9yZUFsbDogKHBhcmFtcywgbWVzc2FnZSkgPT4gbG9nZ2VyLnRyYWNlKHBhcmFtcywgbWVzc2FnZSksXG4gICAgYWZ0ZXJBbGw6IChwYXJhbXMsIG1lc3NhZ2UpID0+IGxvZ2dlci50cmFjZShwYXJhbXMsIG1lc3NhZ2UpLFxuICB9KTtcblxuICAvKipcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgLyB1cGRhdGUgcGFja2FnZSAvIHVuL3N0YXJ0IGEgcGFja2FnZVxuICAgKlxuICAgKiBUaGVyZSBhcmUgbXVsdGlwbGVzIHNjZW5hcmlvcyBoZXJlIHRvIGJlIGNvbnNpZGVyZWQ6XG4gICAqXG4gICAqIDEuIFB1Ymxpc2ggc2NlbmFyaW9cbiAgICpcbiAgICogUHVibGlzaCBhIHBhY2thZ2UgY29uc2lzdCBvZiBhdCBsZWFzdCAxIHN0ZXAgKFBVVCkgd2l0aCBhIG1ldGFkYXRhIHBheWxvYWQuXG4gICAqIFdoZW4gYSBwYWNrYWdlIGlzIHB1Ymxpc2hlZCwgYW4gX2F0dGFjaG1lbnQgcHJvcGVydHkgaXMgcHJlc2VudCB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhXG4gICAqIG9mIHRoZSB0YXJiYWxsLlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgcHVibGlzaC5cbiAgICpcbiAgICogIG5wbSBodHRwIGZldGNoIFBVVCAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxIDk2Mjdtc1xuICAgICAgbnBtIGluZm8gbGlmZWN5Y2xlIEBzY29wZS90ZXN0MUAxLjAuMX5wdWJsaXNoOiBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSBpbmZvIGxpZmVjeWNsZSBAc2NvcGUvdGVzdDFAMS4wLjF+cG9zdHB1Ymxpc2g6IEBzY29wZS90ZXN0MUAxLjAuMVxuICAgICAgKyBAc2NvcGUvdGVzdDFAMS4wLjFcbiAgICAgIG5wbSB2ZXJiIGV4aXQgWyAwLCB0cnVlIF1cbiAgICpcbiAgICpcbiAgICogMi4gVW5wdWJsaXNoIHNjZW5hcmlvXG4gICAqXG4gICAqIFVucHVibGlzaCBjb25zaXN0IGluIDMgc3RlcHMuXG4gICAqICAxLiBUcnkgdG8gZmV0Y2ggIG1ldGFkYXRhIC0+IGlmIGl0IGZhaWxzLCByZXR1cm4gNDA0XG4gICAqICAyLiBDb21wdXRlIG1ldGFkYXRhIGxvY2FsbHkgKGNsaWVudCBzaWRlKSBhbmQgc2VuZCBhIG11dGF0ZSBwYXlsb2FkIGV4Y2x1ZGluZyB0aGUgdmVyc2lvbiB0byBiZSB1bnB1Ymxpc2hlZFxuICAgKiAgICBlZzogaWYgbWV0YWRhdGEgcmVmbGVjdHMgMS4wLjEsIDEuMC4yIGFuZCAxLjAuMywgdGhlIGNvbXB1dGVkIG1ldGFkYXRhIHdvbid0IGluY2x1ZGUgMS4wLjMuXG4gICAqICAzLiBPbmNlIHRoZSBzZWNvbmQgc3RlcCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZmluaXNoZWQsIGRlbGV0ZSB0aGUgdGFyYmFsbC5cbiAgICpcbiAgICogIEFsbCB0aGVzZSBzdGVwcyBhcmUgY29uc2VjdXRpdmUgYW5kIHJlcXVpcmVkLCB0aGVyZSBpcyBubyB0cmFuc2FjaW9ucyBoZXJlLCBpZiBzdGVwIDMgZmFpbHMsIG1ldGFkYXRhIG1pZ2h0XG4gICAqICBnZXQgY29ycnVwdGVkLlxuICAgKlxuICAgKiAgTm90ZSB0aGUgdW5wdWJsaXNoIGNhbGwgd2lsbCBzdWZmaXggaW4gdGhlIHVybCBhIC8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgcmV2aXNpb24gbnVtYmVyLCB0aGlzIG5vdFxuICAgKiAgdXNlZCBpbnRlcm5hbGx5LlxuICAgKlxuICAgKlxuICAgKiBFeGFtcGxlIGZsb3cgb2YgdW5wdWJsaXNoLlxuICAgKlxuICAgKiBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2ODBtc1xuICAgICBucG0gaHR0cCBmZXRjaCBQVVQgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tcmV2LzE0LTVkNTAwY2ZjZTkyZjkwZmQgOTU2NjA2bXMgYXR0ZW1wdCAjMlxuICAgICBucG0gaHR0cCBmZXRjaCBHRVQgMjAwIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MT93cml0ZT10cnVlIDE2MDFtc1xuICAgICBucG0gaHR0cCBmZXRjaCBERUxFVEUgMjAxIGh0dHA6Ly9sb2NhbGhvc3Q6NDg3My9Ac2NvcGUlMmZ0ZXN0MS8tL3Rlc3QxLTEuMC4zLnRnei8tcmV2LzE2LWUxMWM4ZGIyODJiMmQ5OTIgMTltc1xuICAgKlxuICAgKiAzLiBTdGFyIGEgcGFja2FnZVxuICAgKlxuICAgKiBQZXJtaXNzaW9uczogc3RhcnQgYSBwYWNrYWdlIGRlcGVuZHMgb2YgdGhlIHB1Ymxpc2ggYW5kIHVucHVibGlzaCBwZXJtaXNzaW9ucywgdGhlcmUgaXMgbm8gc3BlY2lmaWMgZmxhZyBmb3Igc3RhciBvciB1biBzdGFydC5cbiAgICogVGhlIFVSTCBmb3Igc3RhciBpcyBzaW1pbGFyIHRvIHRoZSB1bnB1Ymxpc2ggKGNoYW5nZSBwYWNrYWdlIGZvcm1hdClcbiAgICpcbiAgICogbnBtIGhhcyBubyBlbnBvaW50IGZvciBzdGFyIGEgcGFja2FnZSwgcmF0aGVyIG11dGF0ZSB0aGUgbWV0YWRhdGEgYW5kIGFjdHMgYXMsIHRoZSBkaWZmZXJlbmNlIGlzIHRoZVxuICAgKiB1c2VycyBwcm9wZXJ0eSB3aGljaCBpcyBwYXJ0IG9mIHRoZSBwYXlsb2FkIGFuZCB0aGUgYm9keSBvbmx5IGluY2x1ZGVzXG4gICAqXG4gICAqIHtcblx0XHQgIFwiX2lkXCI6IHBrZ05hbWUsXG5cdCAgXHRcIl9yZXZcIjogXCIzLWIwY2RhZWZjOWJkYjc3YzhcIixcblx0XHQgIFwidXNlcnNcIjoge1xuXHRcdCAgICBbdXNlcm5hbWVdOiBib29sZWFuIHZhbHVlICh0cnVlLCBmYWxzZSlcblx0XHQgIH1cblx0fVxuICAgKlxuICAgKi9cbiAgcm91dGVyLnB1dChcbiAgICAnLzpwYWNrYWdlLzpfcmV2Py86cmV2aXNpb24/JyxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksXG4gICAgZXhwZWN0SnNvbixcbiAgICBwdWJsaXNoUGFja2FnZShzdG9yYWdlLCBjb25maWcsIGF1dGgpXG4gICk7XG5cbiAgLyoqXG4gICAqIFVuLXB1Ymxpc2hpbmcgYW4gZW50aXJlIHBhY2thZ2UuXG4gICAqXG4gICAqIFRoaXMgc2NlbmFyaW8gaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBjYWxsIGRldGVjdCB0aGVyZSBpcyBvbmx5IG9uZSB2ZXJzaW9uIHJlbWFpbmluZ1xuICAgKiBpbiB0aGUgbWV0YWRhdGEsIHRoZW4gdGhlIGNsaWVudCBkZWNpZGVzIHRvIERFTEVURSB0aGUgcmVzb3VyY2VcbiAgICogbnBtIGh0dHAgZmV0Y2ggR0VUIDMwNCBodHRwOi8vbG9jYWxob3N0OjQ4NzMvQHNjb3BlJTJmdGVzdDE/d3JpdGU9dHJ1ZSAxMDc2bXMgKGZyb20gY2FjaGUpXG4gICAgIG5wbSBodHRwIGZldGNoIERFTEVURSAyMDEgaHR0cDovL2xvY2FsaG9zdDo0ODczL0BzY29wZSUyZnRlc3QxLy1yZXYvMTgtZDhlYmUzMDIwYmQ0YWM5YyAyMm1zXG4gICAqL1xuICByb3V0ZXIuZGVsZXRlKCcvOnBhY2thZ2UvLXJldi8qJywgY2FuKCd1bnB1Ymxpc2gnKSwgdW5QdWJsaXNoUGFja2FnZShzdG9yYWdlKSk7XG5cbiAgLy8gcmVtb3ZpbmcgYSB0YXJiYWxsXG4gIHJvdXRlci5kZWxldGUoXG4gICAgJy86cGFja2FnZS8tLzpmaWxlbmFtZS8tcmV2LzpyZXZpc2lvbicsXG4gICAgY2FuKCd1bnB1Ymxpc2gnKSxcbiAgICBjYW4oJ3B1Ymxpc2gnKSxcbiAgICByZW1vdmVUYXJiYWxsKHN0b3JhZ2UpXG4gICk7XG5cbiAgLy8gdXBsb2FkaW5nIHBhY2thZ2UgdGFyYmFsbFxuICByb3V0ZXIucHV0KFxuICAgICcvOnBhY2thZ2UvLS86ZmlsZW5hbWUvKicsXG4gICAgY2FuKCdwdWJsaXNoJyksXG4gICAgbWVkaWEoSEVBREVSUy5PQ1RFVF9TVFJFQU0pLFxuICAgIHVwbG9hZFBhY2thZ2VUYXJiYWxsKHN0b3JhZ2UpXG4gICk7XG5cbiAgLy8gb25seSB1c2VkIGZvciBkZXZlbG9wbWVudFxuICBpZiAoY29uZmlnLl9kZWJ1Zykge1xuICAgIC8vIGFkZGluZyBhIHZlcnNpb25cbiAgICByb3V0ZXIucHV0KFxuICAgICAgJy86cGFja2FnZS86dmVyc2lvbi8tdGFnLzp0YWcnLFxuICAgICAgY2FuKCdwdWJsaXNoJyksXG4gICAgICBtZWRpYShtaW1lLmdldFR5cGUoJ2pzb24nKSksXG4gICAgICBleHBlY3RKc29uLFxuICAgICAgYWRkVmVyc2lvbihzdG9yYWdlKVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdWJsaXNoIGEgcGFja2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaFBhY2thZ2Uoc3RvcmFnZTogU3RvcmFnZSwgY29uZmlnOiBDb25maWcsIGF1dGg6IEF1dGgpOiBhbnkge1xuICBjb25zdCBzdGFyQXBpID0gc3RhcihzdG9yYWdlKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCdwdWJsaXNoaW5nIG9yIHVwZGF0aW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgIC8qKlxuICAgICAqIFdyaXRlIHRhcmJhbGwgb2Ygc3RyZWFtIGRhdGEgZnJvbSBwYWNrYWdlIGNsaWVudHMuXG4gICAgICovXG4gICAgY29uc3QgY3JlYXRlVGFyYmFsbCA9IGZ1bmN0aW9uIChmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IHN0b3JhZ2UuYWRkVGFyYmFsbChwYWNrYWdlTmFtZSwgZmlsZW5hbWUpO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdzdWNjZXNzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYigpO1xuICAgICAgfSk7XG4gICAgICAvLyB0aGlzIGlzIGR1bWIgYW5kIG1lbW9yeS1jb25zdW1pbmcsIGJ1dCB3aGF0IGNob2ljZXMgZG8gd2UgaGF2ZT9cbiAgICAgIC8vIGZsb3c6IHdlIG5lZWQgZmlyc3QgcmVmYWN0b3IgdGhpcyBmaWxlIGJlZm9yZSBkZWNpZGVzIHdoaWNoIHR5cGUgdXNlIGhlcmVcbiAgICAgIHN0cmVhbS5lbmQoQnVmZmVyLmZyb20oZGF0YS5kYXRhLCAnYmFzZTY0JykpO1xuICAgICAgc3RyZWFtLmRvbmUoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQWRkIG5ldyBwYWNrYWdlIHZlcnNpb24gaW4gc3RvcmFnZVxuICAgICAqL1xuICAgIGNvbnN0IGNyZWF0ZVZlcnNpb24gPSBmdW5jdGlvbiAodmVyc2lvbjogc3RyaW5nLCBtZXRhZGF0YTogVmVyc2lvbiwgY2I6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIG1ldGFkYXRhLCBudWxsLCBjYik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEFkZCBuZXcgdGFncyBpbiBzdG9yYWdlXG4gICAgICovXG4gICAgY29uc3QgYWRkVGFncyA9IGZ1bmN0aW9uICh0YWdzOiBNZXJnZVRhZ3MsIGNiOiBDYWxsYmFjayk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5tZXJnZVRhZ3MocGFja2FnZU5hbWUsIHRhZ3MsIGNiKTtcbiAgICB9O1xuXG4gICAgY29uc3QgYWZ0ZXJDaGFuZ2UgPSBmdW5jdGlvbiAoZXJyb3IsIG9rTWVzc2FnZSwgbWV0YWRhdGEpOiB2b2lkIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhQ29weTogUGFja2FnZSA9IHsgLi4ubWV0YWRhdGEgfTtcblxuICAgICAgY29uc3QgeyBfYXR0YWNobWVudHMsIHZlcnNpb25zIH0gPSBtZXRhZGF0YUNvcHk7XG5cbiAgICAgIC8vIGBucG0gc3RhcmAgd291bGRuJ3QgaGF2ZSBhdHRhY2htZW50c1xuICAgICAgLy8gYW5kIGBucG0gZGVwcmVjYXRlYCB3b3VsZCBoYXZlIGF0dGFjaG1lbnRzIGFzIGEgZW1wdHkgb2JqZWN0LCBpLmUge31cbiAgICAgIGlmIChfLmlzTmlsKF9hdHRhY2htZW50cykgfHwgSlNPTi5zdHJpbmdpZnkoX2F0dGFjaG1lbnRzKSA9PT0gJ3t9Jykge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgIG9rOiBva01lc3NhZ2UsXG4gICAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIG5wbS1yZWdpc3RyeS1jbGllbnQgMC4zKyBlbWJlZHMgdGFyYmFsbCBpbnRvIHRoZSBqc29uIHVwbG9hZFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ucG0tcmVnaXN0cnktY2xpZW50L2NvbW1pdC9lOWZiZWI4YjY3ZjI0OTM5NGY3MzVjNzRlZjExZmU0NzIwZDQ2Y2EwXG4gICAgICAvLyBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8zMSwgZGVhbGluZyB3aXRoIGl0IGhlcmU6XG4gICAgICBjb25zdCBpc0ludmFsaWRCb2R5Rm9ybWF0ID1cbiAgICAgICAgaXNPYmplY3QoX2F0dGFjaG1lbnRzKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleShfYXR0YWNobWVudHMpIHx8XG4gICAgICAgIGlzT2JqZWN0KHZlcnNpb25zKSA9PT0gZmFsc2UgfHxcbiAgICAgICAgaGFzRGlmZk9uZUtleSh2ZXJzaW9ucyk7XG5cbiAgICAgIGlmIChpc0ludmFsaWRCb2R5Rm9ybWF0KSB7XG4gICAgICAgIC8vIG5wbSBpcyBkb2luZyBzb21ldGhpbmcgc3RyYW5nZSBhZ2FpblxuICAgICAgICAvLyBpZiB0aGlzIGhhcHBlbnMgaW4gbm9ybWFsIGNpcmN1bXN0YW5jZXMsIHJlcG9ydCBpdCBhcyBhIGJ1Z1xuICAgICAgICBsb2dnZXIuaW5mbyh7IHBhY2thZ2VOYW1lIH0sIGB3cm9uZyBwYWNrYWdlIGZvcm1hdCBvbiBwdWJsaXNoIGEgcGFja2FnZSBAe3BhY2thZ2VOYW1lfWApO1xuICAgICAgICByZXR1cm4gbmV4dChFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChBUElfRVJST1IuVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciAmJiBlcnJvci5zdGF0dXMgIT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gYXQgdGhpcyBwb2ludCBkb2N1bWVudCBpcyBlaXRoZXIgY3JlYXRlZCBvciBleGlzdGVkIGJlZm9yZVxuICAgICAgY29uc3QgW2ZpcnN0QXR0YWNobWVudEtleV0gPSBPYmplY3Qua2V5cyhfYXR0YWNobWVudHMpO1xuXG4gICAgICBjcmVhdGVUYXJiYWxsKFxuICAgICAgICBQYXRoLmJhc2VuYW1lKGZpcnN0QXR0YWNobWVudEtleSksXG4gICAgICAgIF9hdHRhY2htZW50c1tmaXJzdEF0dGFjaG1lbnRLZXldLFxuICAgICAgICBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uVG9QdWJsaXNoID0gT2JqZWN0LmtleXModmVyc2lvbnMpWzBdO1xuICAgICAgICAgIGNvbnN0IHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaCA9IHZlcnNpb25zW3ZlcnNpb25Ub1B1Ymxpc2hdO1xuXG4gICAgICAgICAgdmVyc2lvbk1ldGFkYXRhVG9QdWJsaXNoLnJlYWRtZSA9XG4gICAgICAgICAgICBfLmlzTmlsKHZlcnNpb25NZXRhZGF0YVRvUHVibGlzaC5yZWFkbWUpID09PSBmYWxzZVxuICAgICAgICAgICAgICA/IFN0cmluZyh2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gucmVhZG1lKVxuICAgICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgICAgY3JlYXRlVmVyc2lvbih2ZXJzaW9uVG9QdWJsaXNoLCB2ZXJzaW9uTWV0YWRhdGFUb1B1Ymxpc2gsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWRkVGFncyhtZXRhZGF0YUNvcHlbRElTVF9UQUdTXSwgYXN5bmMgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgbm90aWZ5KFxuICAgICAgICAgICAgICAgICAgbWV0YWRhdGFDb3B5LFxuICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgcmVxLnJlbW90ZV91c2VyLFxuICAgICAgICAgICAgICAgICAgYCR7bWV0YWRhdGFDb3B5Lm5hbWV9QCR7dmVyc2lvblRvUHVibGlzaH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBlcnJvciB9LCAnbm90aWZ5IGJhdGNoIHNlcnZpY2UgaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KHsgb2s6IG9rTWVzc2FnZSwgc3VjY2VzczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH07XG5cbiAgICBpZiAoaXNQdWJsaXNoYWJsZVBhY2thZ2UocmVxLmJvZHkpID09PSBmYWxzZSAmJiBpc09iamVjdChyZXEuYm9keS51c2VycykpIHtcbiAgICAgIHJldHVybiBzdGFyQXBpKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB2YWxpZGF0aW9uVXRpbHMubm9ybWFsaXplTWV0YWRhdGEocmVxLmJvZHksIHBhY2thZ2VOYW1lKTtcbiAgICAgIC8vIGNoZWNrIF9hdHRhY2htZW50cyB0byBkaXN0aW5ndWlzaCBwdWJsaXNoIGFuZCBkZXByZWNhdGVcbiAgICAgIGlmIChcbiAgICAgICAgcmVxLnBhcmFtcy5fcmV2IHx8XG4gICAgICAgIChpc1JlbGF0ZWRUb0RlcHJlY2F0aW9uKHJlcS5ib2R5KSAmJiBfLmlzRW1wdHkocmVxLmJvZHkuX2F0dGFjaG1lbnRzKSlcbiAgICAgICkge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgYSBuZXcgdmVyc2lvbiBmb3IgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgICAgIC8vIHdlIGNoZWNrIHVucHVibGlzaCBwZXJtaXNzaW9ucywgYW4gdXBkYXRlIGlzIGJhc2ljYWxseSByZW1vdmUgdmVyc2lvbnNcbiAgICAgICAgY29uc3QgcmVtb3RlID0gcmVxLnJlbW90ZV91c2VyO1xuICAgICAgICBhdXRoLmFsbG93X3VucHVibGlzaCh7IHBhY2thZ2VOYW1lIH0sIHJlbW90ZSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCBgbm90IGFsbG93ZWQgdG8gdW5wdWJsaXNoIGEgdmVyc2lvbiBmb3IgQHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RvcmFnZS5jaGFuZ2VQYWNrYWdlKHBhY2thZ2VOYW1lLCBtZXRhZGF0YSwgcmVxLnBhcmFtcy5yZXZpc2lvbiwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NIQU5HRUQsIG1ldGFkYXRhKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWJ1ZygnYWRkaW5nIGEgbmV3IHZlcnNpb24gZm9yICVvJywgcGFja2FnZU5hbWUpO1xuICAgICAgICBzdG9yYWdlLmFkZFBhY2thZ2UocGFja2FnZU5hbWUsIG1ldGFkYXRhLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBhZnRlckNoYW5nZShlcnJvciwgQVBJX01FU1NBR0UuUEtHX0NSRUFURUQsIG1ldGFkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgZGVidWcoJ2Vycm9yIG9uIHB1Ymxpc2g6ICVzJywgZXJyb3IubWVzc2FnZSk7XG4gICAgICBsb2dnZXIuZXJyb3IoeyBwYWNrYWdlTmFtZSB9LCAnZXJyb3Igb24gcHVibGlzaCwgYmFkIHBhY2thZ2UgZGF0YSBmb3IgQHtwYWNrYWdlTmFtZX0nKTtcbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRCYWREYXRhKEFQSV9FUlJPUi5CQURfUEFDS0FHRV9EQVRBKSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIHVuLXB1Ymxpc2ggYSBwYWNrYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1blB1Ymxpc2hQYWNrYWdlKHN0b3JhZ2U6IFN0b3JhZ2UpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lID0gcmVxLnBhcmFtcy5wYWNrYWdlO1xuICAgIGRlYnVnKCd1bnB1Ymxpc2hpbmcgJW8nLCBwYWNrYWdlTmFtZSk7XG4gICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKHBhY2thZ2VOYW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICB9XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuUEtHX1JFTU9WRUQgfSk7XG4gICAgfSk7XG4gIH07XG59XG5cbi8qKlxuICogRGVsZXRlIHRhcmJhbGxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRhcmJhbGwoc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgcmV2aXNpb24gfSA9IHJlcS5wYXJhbXM7XG4gICAgZGVidWcoJ3JlbW92aW5nIGEgdGFyYmFsbCBmb3IgJW8tJW8tJW8nLCBwYWNrYWdlTmFtZSwgZmlsZW5hbWUsIHJldmlzaW9uKTtcbiAgICBzdG9yYWdlLnJlbW92ZVRhcmJhbGwocGFja2FnZU5hbWUsIGZpbGVuYW1lLCByZXZpc2lvbiwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgICAgfVxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIGRlYnVnKCdzdWNjZXNzIHJlbW92ZSB0YXJiYWxsIGZvciAlby0lby0lbycsIHBhY2thZ2VOYW1lLCBmaWxlbmFtZSwgcmV2aXNpb24pO1xuICAgICAgcmV0dXJuIG5leHQoeyBvazogQVBJX01FU1NBR0UuVEFSQkFMTF9SRU1PVkVEIH0pO1xuICAgIH0pO1xuICB9O1xufVxuLyoqXG4gKiBBZGRzIGEgbmV3IHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFZlcnNpb24oc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgeyB2ZXJzaW9uLCB0YWcgfSA9IHJlcS5wYXJhbXM7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG5cbiAgICBzdG9yYWdlLmFkZFZlcnNpb24ocGFja2FnZU5hbWUsIHZlcnNpb24sIHJlcS5ib2R5LCB0YWcsIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJldHVybiBuZXh0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLlBLR19QVUJMSVNIRUQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn1cblxuLyoqXG4gKiB1cGxvYWRQYWNrYWdlVGFyYmFsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkUGFja2FnZVRhcmJhbGwoc3RvcmFnZTogU3RvcmFnZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWUgPSByZXEucGFyYW1zLnBhY2thZ2U7XG4gICAgY29uc3Qgc3RyZWFtID0gc3RvcmFnZS5hZGRUYXJiYWxsKHBhY2thZ2VOYW1lLCByZXEucGFyYW1zLmZpbGVuYW1lKTtcbiAgICByZXEucGlwZShzdHJlYW0pO1xuXG4gICAgLy8gY2hlY2tpbmcgaWYgZW5kIGV2ZW50IGNhbWUgYmVmb3JlIGNsb3NpbmdcbiAgICBsZXQgY29tcGxldGUgPSBmYWxzZTtcbiAgICByZXEub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5kb25lKCk7XG4gICAgfSk7XG5cbiAgICByZXEub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb21wbGV0ZSkge1xuICAgICAgICBzdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICByZXR1cm4gcmVzLmxvY2Fscy5yZXBvcnRfZXJyb3IoZXJyKTtcbiAgICB9KTtcblxuICAgIHN0cmVhbS5vbignc3VjY2VzcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgIG9rOiBBUElfTUVTU0FHRS5UQVJCQUxMX1VQTE9BREVELFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFB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
|
|
@@ -81,4 +81,4 @@ function _default(route, auth, config) {
|
|
|
81
81
|
});
|
|
82
82
|
route.use(userRouter);
|
|
83
83
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9hdXRoIiwiX2NvbmZpZyIsIl9jb3JlIiwiX21pZGRsZXdhcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlsczIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsImNvbmZpZyIsInVzZXJSb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0IiwicmF0ZUxpbWl0IiwidXNlclJhdGVMaW1pdCIsInJlcSIsInJlcyIsIm5leHQiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIk9LIiwib2siLCJnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSIsInJlbW90ZV91c2VyIiwibmFtZSIsInB1dCIsInBhc3N3b3JkIiwiYm9keSIsInJlbW90ZU5hbWUiLCJfIiwiaXNOaWwiLCJhdXRoZW50aWNhdGUiLCJjYWxsYmFja0F1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJsb2dnZXIiLCJlcnJvciIsIkVycm9yQ29kZSIsImdldENvZGUiLCJVTkFVVEhPUklaRUQiLCJBUElfRVJST1IiLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJyZXN0b3JlZFJlbW90ZVVzZXIiLCJjcmVhdGVSZW1vdGVVc2VyIiwiZ3JvdXBzIiwidG9rZW4iLCJnZXRBcGlUb2tlbiIsIkNSRUFURUQiLCJzZXQiLCJIRUFERVJTIiwiQ0FDSEVfQ09OVFJPTCIsInZhbGlkYXRpb25VdGlscyIsInZhbGlkYXRlUGFzc3dvcmQiLCJCQURfUkVRVUVTVCIsIlBBU1NXT1JEX1NIT1JUIiwiYWRkX3VzZXIiLCJJTlRFUk5BTF9FUlJPUiIsIm1lc3NhZ2UiLCJnZXRDb25mbGljdCIsInVuZGVmaW5lZCIsImRlbGV0ZSIsIkFQSV9NRVNTQUdFIiwiTE9HR0VEX09VVCIsInVzZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3VzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNwb25zZSwgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGdldEFwaVRva2VuIH0gZnJvbSAnQHZlcmRhY2Npby9hdXRoJztcbmltcG9ydCB7IGNyZWF0ZVJlbW90ZVVzZXIgfSBmcm9tICdAdmVyZGFjY2lvL2NvbmZpZyc7XG5pbXBvcnQgeyB2YWxpZGF0aW9uVXRpbHMgfSBmcm9tICdAdmVyZGFjY2lvL2NvcmUnO1xuaW1wb3J0IHsgcmF0ZUxpbWl0IH0gZnJvbSAnQHZlcmRhY2Npby9taWRkbGV3YXJlJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnLCBSZW1vdGVVc2VyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdXRpbHMnO1xuXG5pbXBvcnQgdHlwZSBBdXRoIGZyb20gJy4uLy4uLy4uL2xpYi9hdXRoJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgQVBJX01FU1NBR0UsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgdHlwZSB7ICROZXh0RnVuY3Rpb25WZXIsICRSZXF1ZXN0RXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAocm91dGU6IFJvdXRlciwgYXV0aDogQXV0aCwgY29uZmlnOiBDb25maWcpOiB2b2lkIHtcbiAgLyogZXNsaW50IG5ldy1jYXA6b2ZmICovXG4gIGNvbnN0IHVzZXJSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG4gIHVzZXJSb3V0ZXIuZ2V0KFxuICAgICcvLS91c2VyLzpvcmdfY291Y2hkYl91c2VyJyxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5PSyk7XG4gICAgICBuZXh0KHtcbiAgICAgICAgb2s6IGdldEF1dGhlbnRpY2F0ZWRNZXNzYWdlKHJlcS5yZW1vdGVfdXNlci5uYW1lKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICB1c2VyUm91dGVyLnB1dChcbiAgICAnLy0vdXNlci86b3JnX2NvdWNoZGJfdXNlci86X3Jldj8vOnJldmlzaW9uPycsXG4gICAgcmF0ZUxpbWl0KGNvbmZpZz8udXNlclJhdGVMaW1pdCksXG4gICAgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgICAgY29uc3QgcmVtb3RlTmFtZSA9IHJlcS5yZW1vdGVfdXNlci5uYW1lO1xuXG4gICAgICBpZiAoXy5pc05pbChyZW1vdGVOYW1lKSA9PT0gZmFsc2UgJiYgXy5pc05pbChuYW1lKSA9PT0gZmFsc2UgJiYgcmVtb3RlTmFtZSA9PT0gbmFtZSkge1xuICAgICAgICBhdXRoLmF1dGhlbnRpY2F0ZShcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNhbGxiYWNrQXV0aGVudGljYXRlKGVyciwgdXNlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgeyBuYW1lLCBlcnIgfSxcbiAgICAgICAgICAgICAgICAnYXV0aGVudGljYXRpbmcgZm9yIHVzZXIgQHt1c2VybmFtZX0gZmFpbGVkLiBFcnJvcjogQHtlcnIubWVzc2FnZX0nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0KFxuICAgICAgICAgICAgICAgIEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCwgQVBJX0VSUk9SLkJBRF9VU0VSTkFNRV9QQVNTV09SRClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzdG9yZWRSZW1vdGVVc2VyOiBSZW1vdGVVc2VyID0gY3JlYXRlUmVtb3RlVXNlcihuYW1lLCB1c2VyPy5ncm91cHMgPz8gW10pO1xuICAgICAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRBcGlUb2tlbihhdXRoLCBjb25maWcsIHJlc3RvcmVkUmVtb3RlVXNlciwgcGFzc3dvcmQpO1xuXG4gICAgICAgICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLkNSRUFURUQpO1xuICAgICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICAgICAgb2s6IGdldEF1dGhlbnRpY2F0ZWRNZXNzYWdlKHJlcS5yZW1vdGVfdXNlci5uYW1lKSxcbiAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodmFsaWRhdGlvblV0aWxzLnZhbGlkYXRlUGFzc3dvcmQocGFzc3dvcmQpID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUElfRVJST1IuUEFTU1dPUkRfU0hPUlQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF1dGguYWRkX3VzZXIobmFtZSwgcGFzc3dvcmQsIGFzeW5jIGZ1bmN0aW9uIChlcnIsIHVzZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX1NUQVRVUy5CQURfUkVRVUVTVCAmJiBlcnIuc3RhdHVzIDwgSFRUUF9TVEFUVVMuSU5URVJOQUxfRVJST1IpIHtcbiAgICAgICAgICAgICAgLy8gV2l0aCBucG0gcmVnaXN0ZXJpbmcgaXMgdGhlIHNhbWUgYXMgbG9nZ2luZyBpbixcbiAgICAgICAgICAgICAgLy8gYW5kIG5wbSBhY2NlcHRzIG9ubHkgYW4gNDA5IGVycm9yLlxuICAgICAgICAgICAgICAvLyBTbywgY2hhbmdpbmcgc3RhdHVzIGNvZGUgaGVyZS5cbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoZXJyLnN0YXR1cywgZXJyLm1lc3NhZ2UpIHx8IEVycm9yQ29kZS5nZXRDb25mbGljdChlcnIubWVzc2FnZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXh0KGVycik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdG9rZW4gPVxuICAgICAgICAgICAgbmFtZSAmJiBwYXNzd29yZFxuICAgICAgICAgICAgICA/IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgdXNlciBhcyBSZW1vdGVVc2VyLCBwYXNzd29yZClcbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgcmVzLnNldChIRUFERVJTLkNBQ0hFX0NPTlRST0wsICduby1jYWNoZSwgbm8tc3RvcmUnKTtcbiAgICAgICAgICByZXR1cm4gbmV4dCh7XG4gICAgICAgICAgICBvazogYHVzZXIgJyR7cmVxLmJvZHkubmFtZX0nIGNyZWF0ZWRgLFxuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICB1c2VyUm91dGVyLmRlbGV0ZShcbiAgICAnLy0vdXNlci90b2tlbi8qJyxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5PSyk7XG4gICAgICBuZXh0KHtcbiAgICAgICAgb2s6IEFQSV9NRVNTQUdFLkxPR0dFRF9PVVQsXG4gICAgICB9KTtcbiAgICB9XG4gICk7XG5cbiAgcm91dGUudXNlKHVzZXJSb3V0ZXIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFFQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFHQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxPQUFBLEdBQUFULE9BQUE7QUFBK0MsU0FBQUQsdUJBQUFXLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFG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
|
|
84
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xvZGFzaCIsIl9hdXRoIiwiX2NvbmZpZyIsIl9jb3JlIiwiX21pZGRsZXdhcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2xvZ2dlciIsIl91dGlsczIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZGVmYXVsdCIsInJvdXRlIiwiYXV0aCIsImNvbmZpZyIsInVzZXJSb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwiZ2V0IiwicmF0ZUxpbWl0IiwidXNlclJhdGVMaW1pdCIsInJlcSIsInJlcyIsIm5leHQiLCJzdGF0dXMiLCJIVFRQX1NUQVRVUyIsIk9LIiwib2siLCJnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSIsInJlbW90ZV91c2VyIiwibmFtZSIsInB1dCIsInBhc3N3b3JkIiwiYm9keSIsInJlbW90ZU5hbWUiLCJfIiwiaXNOaWwiLCJhdXRoZW50aWNhdGUiLCJjYWxsYmFja0F1dGhlbnRpY2F0ZSIsImVyciIsInVzZXIiLCJsb2dnZXIiLCJlcnJvciIsIkVycm9yQ29kZSIsImdldENvZGUiLCJVTkFVVEhPUklaRUQiLCJBUElfRVJST1IiLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJyZXN0b3JlZFJlbW90ZVVzZXIiLCJjcmVhdGVSZW1vdGVVc2VyIiwiZ3JvdXBzIiwidG9rZW4iLCJnZXRBcGlUb2tlbiIsIkNSRUFURUQiLCJzZXQiLCJIRUFERVJTIiwiQ0FDSEVfQ09OVFJPTCIsInZhbGlkYXRpb25VdGlscyIsInZhbGlkYXRlUGFzc3dvcmQiLCJCQURfUkVRVUVTVCIsIlBBU1NXT1JEX1NIT1JUIiwiYWRkX3VzZXIiLCJJTlRFUk5BTF9FUlJPUiIsIm1lc3NhZ2UiLCJnZXRDb25mbGljdCIsInVuZGVmaW5lZCIsImRlbGV0ZSIsIkFQSV9NRVNTQUdFIiwiTE9HR0VEX09VVCIsInVzZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvZW5kcG9pbnQvYXBpL3VzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNwb25zZSwgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGdldEFwaVRva2VuIH0gZnJvbSAnQHZlcmRhY2Npby9hdXRoJztcbmltcG9ydCB0eXBlIHsgQXV0aCB9IGZyb20gJ0B2ZXJkYWNjaW8vYXV0aCc7XG5pbXBvcnQgeyBjcmVhdGVSZW1vdGVVc2VyIH0gZnJvbSAnQHZlcmRhY2Npby9jb25maWcnO1xuaW1wb3J0IHsgdmFsaWRhdGlvblV0aWxzIH0gZnJvbSAnQHZlcmRhY2Npby9jb3JlJztcbmltcG9ydCB7IHJhdGVMaW1pdCB9IGZyb20gJ0B2ZXJkYWNjaW8vbWlkZGxld2FyZSc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZywgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3V0aWxzJztcblxuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUElfTUVTU0FHRSwgSEVBREVSUywgSFRUUF9TVEFUVVMgfSBmcm9tICcuLi8uLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uLy4uLy4uL2xpYi9sb2dnZXInO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB0eXBlIHsgJE5leHRGdW5jdGlvblZlciwgJFJlcXVlc3RFeHRlbmQgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIChyb3V0ZTogUm91dGVyLCBhdXRoOiBBdXRoLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICAvKiBlc2xpbnQgbmV3LWNhcDpvZmYgKi9cbiAgY29uc3QgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5cbiAgdXNlclJvdXRlci5nZXQoXG4gICAgJy8tL3VzZXIvOm9yZ19jb3VjaGRiX3VzZXInLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBvazogZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UocmVxLnJlbW90ZV91c2VyLm5hbWUpLFxuICAgICAgfSk7XG4gICAgfVxuICApO1xuXG4gIHVzZXJSb3V0ZXIucHV0KFxuICAgICcvLS91c2VyLzpvcmdfY291Y2hkYl91c2VyLzpfcmV2Py86cmV2aXNpb24/JyxcbiAgICByYXRlTGltaXQoY29uZmlnPy51c2VyUmF0ZUxpbWl0KSxcbiAgICBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgeyBuYW1lLCBwYXNzd29yZCB9ID0gcmVxLmJvZHk7XG4gICAgICBjb25zdCByZW1vdGVOYW1lID0gcmVxLnJlbW90ZV91c2VyLm5hbWU7XG5cbiAgICAgIGlmIChfLmlzTmlsKHJlbW90ZU5hbWUpID09PSBmYWxzZSAmJiBfLmlzTmlsKG5hbWUpID09PSBmYWxzZSAmJiByZW1vdGVOYW1lID09PSBuYW1lKSB7XG4gICAgICAgIGF1dGguYXV0aGVudGljYXRlKFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgYXN5bmMgZnVuY3Rpb24gY2FsbGJhY2tBdXRoZW50aWNhdGUoZXJyLCB1c2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICB7IG5hbWUsIGVyciB9LFxuICAgICAgICAgICAgICAgICdhdXRoZW50aWNhdGluZyBmb3IgdXNlciBAe3VzZXJuYW1lfSBmYWlsZWQuIEVycm9yOiBAe2Vyci5tZXNzYWdlfSdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQoXG4gICAgICAgICAgICAgICAgRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuVU5BVVRIT1JJWkVELCBBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN0b3JlZFJlbW90ZVVzZXI6IFJlbW90ZVVzZXIgPSBjcmVhdGVSZW1vdGVVc2VyKG5hbWUsIHVzZXI/Lmdyb3VwcyA/PyBbXSk7XG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IGdldEFwaVRva2VuKGF1dGgsIGNvbmZpZywgcmVzdG9yZWRSZW1vdGVVc2VyLCBwYXNzd29yZCk7XG5cbiAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuQ1JFQVRFRCk7XG4gICAgICAgICAgICByZXMuc2V0KEhFQURFUlMuQ0FDSEVfQ09OVFJPTCwgJ25vLWNhY2hlLCBuby1zdG9yZScpO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAgICAgICBvazogZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UocmVxLnJlbW90ZV91c2VyLm5hbWUpLFxuICAgICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uVXRpbHMudmFsaWRhdGVQYXNzd29yZChwYXNzd29yZCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuQkFEX1JFUVVFU1QsIEFQSV9FUlJPUi5QQVNTV09SRF9TSE9SVCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXV0aC5hZGRfdXNlcihuYW1lLCBwYXNzd29yZCwgYXN5bmMgZnVuY3Rpb24gKGVyciwgdXNlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID49IEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNUICYmIGVyci5zdGF0dXMgPCBIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUikge1xuICAgICAgICAgICAgICAvLyBXaXRoIG5wbSByZWdpc3RlcmluZyBpcyB0aGUgc2FtZSBhcyBsb2dnaW5nIGluLFxuICAgICAgICAgICAgICAvLyBhbmQgbnBtIGFjY2VwdHMgb25seSBhbiA0MDkgZXJyb3IuXG4gICAgICAgICAgICAgIC8vIFNvLCBjaGFuZ2luZyBzdGF0dXMgY29kZSBoZXJlLlxuICAgICAgICAgICAgICByZXR1cm4gbmV4dChcbiAgICAgICAgICAgICAgICBFcnJvckNvZGUuZ2V0Q29kZShlcnIuc3RhdHVzLCBlcnIubWVzc2FnZSkgfHwgRXJyb3JDb2RlLmdldENvbmZsaWN0KGVyci5tZXNzYWdlKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0b2tlbiA9XG4gICAgICAgICAgICBuYW1lICYmIHBhc3N3b3JkXG4gICAgICAgICAgICAgID8gYXdhaXQgZ2V0QXBpVG9rZW4oYXV0aCwgY29uZmlnLCB1c2VyIGFzIFJlbW90ZVVzZXIsIHBhc3N3b3JkKVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5DUkVBVEVEKTtcbiAgICAgICAgICByZXMuc2V0KEhFQURFUlMuQ0FDSEVfQ09OVFJPTCwgJ25vLWNhY2hlLCBuby1zdG9yZScpO1xuICAgICAgICAgIHJldHVybiBuZXh0KHtcbiAgICAgICAgICAgIG9rOiBgdXNlciAnJHtyZXEuYm9keS5uYW1lfScgY3JlYXRlZGAsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIHVzZXJSb3V0ZXIuZGVsZXRlKFxuICAgICcvLS91c2VyL3Rva2VuLyonLFxuICAgIHJhdGVMaW1pdChjb25maWc/LnVzZXJSYXRlTGltaXQpLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6IFJlc3BvbnNlLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgICByZXMuc3RhdHVzKEhUVFBfU1RBVFVTLk9LKTtcbiAgICAgIG5leHQoe1xuICAgICAgICBvazogQVBJX01FU1NBR0UuTE9HR0VEX09VVCxcbiAgICAgIH0pO1xuICAgIH1cbiAgKTtcblxuICByb3V0ZS51c2UodXNlclJvdXRlcik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLEtBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLE9BQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE9BQUEsR0FBQVQsT0FBQTtBQUErQyxTQUFBRCx1QkFBQVcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFB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
|