@mountainpass/problem-document 0.0.54 → 0.0.56
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/.dry-aged-deps.json +1 -15
- package/.project-words.txt +2 -0
- package/README.md +0 -1
- package/eslint.config.mjs +142 -0
- package/lib/index.d.ts +0 -3
- package/lib/index.js +1 -2
- package/package.json +22 -22
- package/.eslintignore +0 -26
- package/.eslintrc-json.json +0 -26
package/.dry-aged-deps.json
CHANGED
|
@@ -1,17 +1,3 @@
|
|
|
1
1
|
{
|
|
2
|
-
"exclude": {
|
|
3
|
-
"@types/jest": "Pinned to jest 27.x; upgrade requires jest 29+ migration",
|
|
4
|
-
"eslint": "Pinned to ^8; upgrade to 9+ requires flat config migration and plugin compatibility",
|
|
5
|
-
"eslint-config-prettier": "Major version upgrade; blocked by eslint 8.x constraint",
|
|
6
|
-
"eslint-import-resolver-node": "Pinned by eslint-plugin-import compatibility",
|
|
7
|
-
"eslint-import-resolver-typescript": "Major version upgrade; blocked by eslint 8.x constraint",
|
|
8
|
-
"eslint-plugin-import": "Pinned by eslint 8.x compatibility",
|
|
9
|
-
"eslint-plugin-jsdoc": "Major version upgrade; blocked by eslint 8.x constraint",
|
|
10
|
-
"eslint-plugin-jsonc": "Major version upgrade; blocked by eslint 8.x constraint",
|
|
11
|
-
"eslint-plugin-no-secrets": "Major version upgrade; blocked by eslint 8.x constraint",
|
|
12
|
-
"eslint-plugin-unicorn": "Major version upgrade; blocked by eslint 8.x constraint",
|
|
13
|
-
"jest": "Pinned to ^27; upgrade requires ts-jest migration",
|
|
14
|
-
"jest-junit": "Major version upgrade; blocked by jest 27.x constraint",
|
|
15
|
-
"ts-jest": "Pinned to jest 27.x; upgrade requires jest migration"
|
|
16
|
-
}
|
|
2
|
+
"exclude": {}
|
|
17
3
|
}
|
package/.project-words.txt
CHANGED
package/README.md
CHANGED
|
@@ -7,7 +7,6 @@ A basic [RFC7807](https://datatracker.ietf.org/doc/html/rfc7807) Problem Details
|
|
|
7
7
|
|
|
8
8
|
[](https://github.com/mountain-pass/problem-document/actions/workflows/release.yml) [](https://github.com/mountain-pass/problem-document/issues) [](https://github.com/mountain-pass/problem-document/pulls)
|
|
9
9
|
|
|
10
|
-
<!-- [](https://www.codacy.com/gh/mountain-pass/problem-document/dashboard?utm_source=github.com&utm_medium=referral&utm_content=mountain-pass/problem-document&utm_campaign=Badge_Grade) [](https://www.codacy.com/gh/mountain-pass/problem-document/dashboard?utm_source=github.com&utm_medium=referral&utm_content=mountain-pass/problem-document&utm_campaign=Badge_Coverage) -->
|
|
11
10
|
|
|
12
11
|
[](https://snyk.io/test/github/mountain-pass/problem-document) [](https://snyk.io/test/npm/@mountainpass/problem-document/latest)
|
|
13
12
|
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import eslintConfigPrettier from "eslint-config-prettier";
|
|
2
|
+
import jsdoc from "eslint-plugin-jsdoc";
|
|
3
|
+
import jsonc from "eslint-plugin-jsonc";
|
|
4
|
+
import noSecrets from "eslint-plugin-no-secrets";
|
|
5
|
+
import prettier from "eslint-plugin-prettier/recommended";
|
|
6
|
+
import unicorn from "eslint-plugin-unicorn";
|
|
7
|
+
import tseslint from "typescript-eslint";
|
|
8
|
+
|
|
9
|
+
const tsFiles = ["**/*.ts", "**/*.tsx"];
|
|
10
|
+
const jsonFiles = ["**/*.json", "**/*.json5", "**/*.jsonc"];
|
|
11
|
+
|
|
12
|
+
export default tseslint.config(
|
|
13
|
+
{
|
|
14
|
+
ignores: [
|
|
15
|
+
"**/*.js",
|
|
16
|
+
"**/*.d.ts",
|
|
17
|
+
"node_modules/",
|
|
18
|
+
"**/*.generated.ts",
|
|
19
|
+
"coverage/",
|
|
20
|
+
"dist/",
|
|
21
|
+
"lib/",
|
|
22
|
+
"test-reports/",
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
// TypeScript configs - scoped to TS files
|
|
26
|
+
...tseslint.configs.recommended.map((config) => ({
|
|
27
|
+
...config,
|
|
28
|
+
files: tsFiles,
|
|
29
|
+
})),
|
|
30
|
+
{
|
|
31
|
+
files: tsFiles,
|
|
32
|
+
...prettier,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
files: tsFiles,
|
|
36
|
+
...eslintConfigPrettier,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
files: tsFiles,
|
|
40
|
+
...unicorn.configs.recommended,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
files: tsFiles,
|
|
44
|
+
...jsdoc.configs["flat/recommended-typescript"],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
files: tsFiles,
|
|
48
|
+
languageOptions: {
|
|
49
|
+
parserOptions: {
|
|
50
|
+
project: "./tsconfig.dev.json",
|
|
51
|
+
tsconfigRootDir: import.meta.dirname,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
plugins: {
|
|
55
|
+
"no-secrets": noSecrets,
|
|
56
|
+
},
|
|
57
|
+
rules: {
|
|
58
|
+
"@typescript-eslint/no-unused-vars": [
|
|
59
|
+
"error",
|
|
60
|
+
{ ignoreRestSiblings: true },
|
|
61
|
+
],
|
|
62
|
+
"prettier/prettier": "error",
|
|
63
|
+
"@typescript-eslint/no-require-imports": "error",
|
|
64
|
+
"no-duplicate-imports": "error",
|
|
65
|
+
"no-shadow": "off",
|
|
66
|
+
"@typescript-eslint/no-shadow": "error",
|
|
67
|
+
"key-spacing": "error",
|
|
68
|
+
"no-multiple-empty-lines": "error",
|
|
69
|
+
"@typescript-eslint/no-floating-promises": "error",
|
|
70
|
+
"no-return-await": "off",
|
|
71
|
+
"@typescript-eslint/return-await": "error",
|
|
72
|
+
"no-trailing-spaces": "error",
|
|
73
|
+
"dot-notation": "error",
|
|
74
|
+
"no-bitwise": "error",
|
|
75
|
+
"@typescript-eslint/member-ordering": [
|
|
76
|
+
"error",
|
|
77
|
+
{
|
|
78
|
+
default: [
|
|
79
|
+
"public-static-field",
|
|
80
|
+
"public-static-method",
|
|
81
|
+
"protected-static-field",
|
|
82
|
+
"protected-static-method",
|
|
83
|
+
"private-static-field",
|
|
84
|
+
"private-static-method",
|
|
85
|
+
"field",
|
|
86
|
+
"constructor",
|
|
87
|
+
"method",
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
"unicorn/prefer-node-protocol": "off",
|
|
92
|
+
"unicorn/expiring-todo-comments": "off",
|
|
93
|
+
"jsdoc/require-jsdoc": [
|
|
94
|
+
"error",
|
|
95
|
+
{
|
|
96
|
+
contexts: [
|
|
97
|
+
"TSInterfaceDeclaration",
|
|
98
|
+
"TSTypeAliasDeclaration",
|
|
99
|
+
"TSEnumDeclaration",
|
|
100
|
+
"PropertyDeclaration",
|
|
101
|
+
"ClassProperty",
|
|
102
|
+
"ClassDeclaration",
|
|
103
|
+
"MethodDefinition",
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
"jsdoc/require-description": [
|
|
108
|
+
"error",
|
|
109
|
+
{
|
|
110
|
+
contexts: ["any"],
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
"jsdoc/check-indentation": "error",
|
|
114
|
+
"jsdoc/check-line-alignment": "error",
|
|
115
|
+
"jsdoc/check-syntax": "error",
|
|
116
|
+
"jsdoc/require-asterisk-prefix": "error",
|
|
117
|
+
"jsdoc/require-param-type": "off",
|
|
118
|
+
"jsdoc/require-param-description": "error",
|
|
119
|
+
"jsdoc/require-returns-type": "off",
|
|
120
|
+
"no-secrets/no-secrets": "error",
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
// JSON configs
|
|
124
|
+
...jsonc.configs["flat/recommended-with-jsonc"].map((config) => ({
|
|
125
|
+
...config,
|
|
126
|
+
files: jsonFiles,
|
|
127
|
+
})),
|
|
128
|
+
{
|
|
129
|
+
files: jsonFiles,
|
|
130
|
+
ignores: [
|
|
131
|
+
"package.json",
|
|
132
|
+
"tsconfig.json",
|
|
133
|
+
"tsconfig.dev.json",
|
|
134
|
+
],
|
|
135
|
+
plugins: {
|
|
136
|
+
"no-secrets": noSecrets,
|
|
137
|
+
},
|
|
138
|
+
rules: {
|
|
139
|
+
"no-secrets/no-secrets": "error",
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
);
|
package/lib/index.d.ts
CHANGED
|
@@ -131,7 +131,6 @@ type StatusCode =
|
|
|
131
131
|
| 423
|
|
132
132
|
/**
|
|
133
133
|
* METHOD_FAILURE
|
|
134
|
-
*
|
|
135
134
|
* @deprecated
|
|
136
135
|
* Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt
|
|
137
136
|
*
|
|
@@ -389,7 +388,6 @@ type StatusCode =
|
|
|
389
388
|
| 415
|
|
390
389
|
/**
|
|
391
390
|
* USE_PROXY
|
|
392
|
-
*
|
|
393
391
|
* @deprecated
|
|
394
392
|
* Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6
|
|
395
393
|
*
|
|
@@ -493,7 +491,6 @@ export declare class ProblemDocument implements ProblemDocumentProperties {
|
|
|
493
491
|
/**
|
|
494
492
|
*
|
|
495
493
|
* construct a new ProblemDocument instance
|
|
496
|
-
*
|
|
497
494
|
* @param data properties to assign to the new instance
|
|
498
495
|
*/
|
|
499
496
|
constructor(data: ProblemDocumentProperties);
|
package/lib/index.js
CHANGED
|
@@ -43,7 +43,6 @@ class ProblemDocument {
|
|
|
43
43
|
/**
|
|
44
44
|
*
|
|
45
45
|
* construct a new ProblemDocument instance
|
|
46
|
-
*
|
|
47
46
|
* @param data properties to assign to the new instance
|
|
48
47
|
*/
|
|
49
48
|
constructor(data) {
|
|
@@ -51,4 +50,4 @@ class ProblemDocument {
|
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
exports.ProblemDocument = ProblemDocument;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc2NBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBYSxlQUFlO0lBTzFCOzs7OztPQUtHO0lBQ0gsWUFBWSxJQUErQjtRQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIdHRwIFN0YXR1cyBDb2RlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmV0dHltdWNoYnJ5Y2UvaHR0cC1zdGF0dXMtY29kZXMvYmxvYi9tYXN0ZXIvc3JjL3N0YXR1cy1jb2Rlcy50cyB1bmRlciBNSVQgTGljZW5zZVxuICogSWYgeW91IGtub3cgaG93IHRvIGNvbnZlcnQgbnVtZXJpYyBlbnVtIHZhbHVlcyB0byBhIHVuaW9uIHR5cGUsIHBsZWFzZSBzdWJtaXQgYSBQUi5cbiAqL1xudHlwZSBTdGF0dXNDb2RlID1cbiAgLyoqXG4gICAqIEFDQ0VQVEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4zXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCBub3QgeWV0IGFjdGVkIHVwb24uIEl0IGlzIG5vbi1jb21taXR0YWwsIG1lYW5pbmcgdGhhdCB0aGVyZSBpcyBubyB3YXkgaW4gSFRUUCB0byBsYXRlciBzZW5kIGFuIGFzeW5jaHJvbm91cyByZXNwb25zZSBpbmRpY2F0aW5nIHRoZSBvdXRjb21lIG9mIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuIEl0IGlzIGludGVuZGVkIGZvciBjYXNlcyB3aGVyZSBhbm90aGVyIHByb2Nlc3Mgb3Igc2VydmVyIGhhbmRsZXMgdGhlIHJlcXVlc3QsIG9yIGZvciBiYXRjaCBwcm9jZXNzaW5nLlxuICAgKi9cbiAgfCAyMDJcbiAgLyoqXG4gICAqIEJBRF9HQVRFV0FZXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNi4zXG4gICAqXG4gICAqIFRoaXMgZXJyb3IgcmVzcG9uc2UgbWVhbnMgdGhhdCB0aGUgc2VydmVyLCB3aGlsZSB3b3JraW5nIGFzIGEgZ2F0ZXdheSB0byBnZXQgYSByZXNwb25zZSBuZWVkZWQgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LCBnb3QgYW4gaW52YWxpZCByZXNwb25zZS5cbiAgICovXG4gIHwgNTAyXG4gIC8qKlxuICAgKiBCQURfUkVRVUVTVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIG1lYW5zIHRoYXQgc2VydmVyIGNvdWxkIG5vdCB1bmRlcnN0YW5kIHRoZSByZXF1ZXN0IGR1ZSB0byBpbnZhbGlkIHN5bnRheC5cbiAgICovXG4gIHwgNDAwXG4gIC8qKlxuICAgKiBDT05GTElDVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuOFxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGlzIHNlbnQgd2hlbiBhIHJlcXVlc3QgY29uZmxpY3RzIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNDA5XG4gIC8qKlxuICAgKiBDT05USU5VRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjIuMVxuICAgKlxuICAgKiBUaGlzIGludGVyaW0gcmVzcG9uc2UgaW5kaWNhdGVzIHRoYXQgZXZlcnl0aGluZyBzbyBmYXIgaXMgT0sgYW5kIHRoYXQgdGhlIGNsaWVudCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgcmVxdWVzdCBvciBpZ25vcmUgaXQgaWYgaXQgaXMgYWxyZWFkeSBmaW5pc2hlZC5cbiAgICovXG4gIHwgMTAwXG4gIC8qKlxuICAgKiBDUkVBVEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4yXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBzdWNjZWVkZWQgYW5kIGEgbmV3IHJlc291cmNlIGhhcyBiZWVuIGNyZWF0ZWQgYXMgYSByZXN1bHQgb2YgaXQuIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSByZXNwb25zZSBzZW50IGFmdGVyIGEgUFVUIHJlcXVlc3QuXG4gICAqL1xuICB8IDIwMVxuICAvKipcbiAgICogRVhQRUNUQVRJT05fRkFJTEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xNFxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgbWVhbnMgdGhlIGV4cGVjdGF0aW9uIGluZGljYXRlZCBieSB0aGUgRXhwZWN0IHJlcXVlc3QgaGVhZGVyIGZpZWxkIGNhbid0IGJlIG1ldCBieSB0aGUgc2VydmVyLlxuICAgKi9cbiAgfCA0MTdcbiAgLyoqXG4gICAqIEZBSUxFRF9ERVBFTkRFTkNZXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjUxOCNzZWN0aW9uLTEwLjVcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgZmFpbGVkIGR1ZSB0byBmYWlsdXJlIG9mIGEgcHJldmlvdXMgcmVxdWVzdC5cbiAgICovXG4gIHwgNDI0XG4gIC8qKlxuICAgKiBGT1JCSURERU5cbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjNcbiAgICpcbiAgICogVGhlIGNsaWVudCBkb2VzIG5vdCBoYXZlIGFjY2VzcyByaWdodHMgdG8gdGhlIGNvbnRlbnQsIGkuZS4gdGhleSBhcmUgdW5hdXRob3JpemVkLCBzbyBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRvIGdpdmUgcHJvcGVyIHJlc3BvbnNlLiBVbmxpa2UgNDAxLCB0aGUgY2xpZW50J3MgaWRlbnRpdHkgaXMga25vd24gdG8gdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNDAzXG4gIC8qKlxuICAgKiBHQVRFV0FZX1RJTUVPVVRcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjVcbiAgICpcbiAgICogVGhpcyBlcnJvciByZXNwb25zZSBpcyBnaXZlbiB3aGVuIHRoZSBzZXJ2ZXIgaXMgYWN0aW5nIGFzIGEgZ2F0ZXdheSBhbmQgY2Fubm90IGdldCBhIHJlc3BvbnNlIGluIHRpbWUuXG4gICAqL1xuICB8IDUwNFxuICAvKipcbiAgICogR09ORVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuOVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIHdvdWxkIGJlIHNlbnQgd2hlbiB0aGUgcmVxdWVzdGVkIGNvbnRlbnQgaGFzIGJlZW4gcGVybWFuZW50bHkgZGVsZXRlZCBmcm9tIHNlcnZlciwgd2l0aCBubyBmb3J3YXJkaW5nIGFkZHJlc3MuIENsaWVudHMgYXJlIGV4cGVjdGVkIHRvIHJlbW92ZSB0aGVpciBjYWNoZXMgYW5kIGxpbmtzIHRvIHRoZSByZXNvdXJjZS4gVGhlIEhUVFAgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRoaXMgc3RhdHVzIGNvZGUgdG8gYmUgdXNlZCBmb3IgXCJsaW1pdGVkLXRpbWUsIHByb21vdGlvbmFsIHNlcnZpY2VzXCIuIEFQSXMgc2hvdWxkIG5vdCBmZWVsIGNvbXBlbGxlZCB0byBpbmRpY2F0ZSByZXNvdXJjZXMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZCB3aXRoIHRoaXMgc3RhdHVzIGNvZGUuXG4gICAqL1xuICB8IDQxMFxuICAvKipcbiAgICogSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjZcbiAgICpcbiAgICogVGhlIEhUVFAgdmVyc2lvbiB1c2VkIGluIHRoZSByZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNTA1XG4gIC8qKlxuICAgKiBJTV9BX1RFQVBPVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIzMjQjc2VjdGlvbi0yLjMuMlxuICAgKlxuICAgKiBBbnkgYXR0ZW1wdCB0byBicmV3IGNvZmZlZSB3aXRoIGEgdGVhcG90IHNob3VsZCByZXN1bHQgaW4gdGhlIGVycm9yIGNvZGUgXCI0MTggSSdtIGEgdGVhcG90XCIuIFRoZSByZXN1bHRpbmcgZW50aXR5IGJvZHkgTUFZIGJlIHNob3J0IGFuZCBzdG91dC5cbiAgICovXG4gIHwgNDE4XG4gIC8qKlxuICAgKiBJTlNVRkZJQ0lFTlRfU1BBQ0VfT05fUkVTT1VSQ0VcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuNlxuICAgKlxuICAgKiBUaGUgNTA3IChJbnN1ZmZpY2llbnQgU3RvcmFnZSkgc3RhdHVzIGNvZGUgbWVhbnMgdGhlIG1ldGhvZCBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoZSByZXNvdXJjZSBiZWNhdXNlIHRoZSBzZXJ2ZXIgaXMgdW5hYmxlIHRvIHN0b3JlIHRoZSByZXByZXNlbnRhdGlvbiBuZWVkZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSByZXF1ZXN0LiBUaGlzIGNvbmRpdGlvbiBpcyBjb25zaWRlcmVkIHRvIGJlIHRlbXBvcmFyeS4gSWYgdGhlIHJlcXVlc3Qgd2hpY2ggcmVjZWl2ZWQgdGhpcyBzdGF0dXMgY29kZSB3YXMgdGhlIHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLCB0aGUgcmVxdWVzdCBNVVNUIE5PVCBiZSByZXBlYXRlZCB1bnRpbCBpdCBpcyByZXF1ZXN0ZWQgYnkgYSBzZXBhcmF0ZSB1c2VyIGFjdGlvbi5cbiAgICovXG4gIHwgNDE5XG4gIC8qKlxuICAgKiBJTlNVRkZJQ0lFTlRfU1RPUkFHRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC42XG4gICAqXG4gICAqIFRoZSBzZXJ2ZXIgaGFzIGFuIGludGVybmFsIGNvbmZpZ3VyYXRpb24gZXJyb3I6IHRoZSBjaG9zZW4gdmFyaWFudCByZXNvdXJjZSBpcyBjb25maWd1cmVkIHRvIGVuZ2FnZSBpbiB0cmFuc3BhcmVudCBjb250ZW50IG5lZ290aWF0aW9uIGl0c2VsZiwgYW5kIGlzIHRoZXJlZm9yZSBub3QgYSBwcm9wZXIgZW5kIHBvaW50IGluIHRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzLlxuICAgKi9cbiAgfCA1MDdcbiAgLyoqXG4gICAqIElOVEVSTkFMX1NFUlZFUl9FUlJPUlxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuMVxuICAgKlxuICAgKiBUaGUgc2VydmVyIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgY29uZGl0aW9uIHRoYXQgcHJldmVudGVkIGl0IGZyb20gZnVsZmlsbGluZyB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHwgNTAwXG4gIC8qKlxuICAgKiBMRU5HVEhfUkVRVUlSRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjEwXG4gICAqXG4gICAqIFRoZSBzZXJ2ZXIgcmVqZWN0ZWQgdGhlIHJlcXVlc3QgYmVjYXVzZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGZpZWxkIGlzIG5vdCBkZWZpbmVkIGFuZCB0aGUgc2VydmVyIHJlcXVpcmVzIGl0LlxuICAgKi9cbiAgfCA0MTFcbiAgLyoqXG4gICAqIExPQ0tFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC40XG4gICAqXG4gICAqIFRoZSByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkIGlzIGxvY2tlZC5cbiAgICovXG4gIHwgNDIzXG4gIC8qKlxuICAgKiBNRVRIT0RfRkFJTFVSRVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9yZmNkaWZmP2RpZmZ0eXBlPS0taHdkaWZmJnVybDI9ZHJhZnQtaWV0Zi13ZWJkYXYtcHJvdG9jb2wtMDYudHh0XG4gICAqXG4gICAqIEEgZGVwcmVjYXRlZCByZXNwb25zZSB1c2VkIGJ5IHRoZSBTcHJpbmcgRnJhbWV3b3JrIHdoZW4gYSBtZXRob2QgaGFzIGZhaWxlZC5cbiAgICovXG4gIHwgNDIwXG4gIC8qKlxuICAgKiBNRVRIT0RfTk9UX0FMTE9XRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjVcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgbWV0aG9kIGlzIGtub3duIGJ5IHRoZSBzZXJ2ZXIgYnV0IGhhcyBiZWVuIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgdXNlZC4gRm9yIGV4YW1wbGUsIGFuIEFQSSBtYXkgZm9yYmlkIERFTEVURS1pbmcgYSByZXNvdXJjZS4gVGhlIHR3byBtYW5kYXRvcnkgbWV0aG9kcywgR0VUIGFuZCBIRUFELCBtdXN0IG5ldmVyIGJlIGRpc2FibGVkIGFuZCBzaG91bGQgbm90IHJldHVybiB0aGlzIGVycm9yIGNvZGUuXG4gICAqL1xuICB8IDQwNVxuICAvKipcbiAgICogTU9WRURfUEVSTUFORU5UTFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjJcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHRoYXQgVVJJIG9mIHJlcXVlc3RlZCByZXNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkLiBQcm9iYWJseSwgbmV3IFVSSSB3b3VsZCBiZSBnaXZlbiBpbiB0aGUgcmVzcG9uc2UuXG4gICAqL1xuICB8IDMwMVxuICAvKipcbiAgICogTU9WRURfVEVNUE9SQVJJTFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjNcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHRoYXQgVVJJIG9mIHJlcXVlc3RlZCByZXNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkIHRlbXBvcmFyaWx5LiBOZXcgY2hhbmdlcyBpbiB0aGUgVVJJIG1pZ2h0IGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB0aGlzIHNhbWUgVVJJIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSBjbGllbnQgaW4gZnV0dXJlIHJlcXVlc3RzLlxuICAgKi9cbiAgfCAzMDJcbiAgLyoqXG4gICAqIE1VTFRJX1NUQVRVU1xuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC4yXG4gICAqXG4gICAqIEEgTXVsdGktU3RhdHVzIHJlc3BvbnNlIGNvbnZleXMgaW5mb3JtYXRpb24gYWJvdXQgbXVsdGlwbGUgcmVzb3VyY2VzIGluIHNpdHVhdGlvbnMgd2hlcmUgbXVsdGlwbGUgc3RhdHVzIGNvZGVzIG1pZ2h0IGJlIGFwcHJvcHJpYXRlLlxuICAgKi9cbiAgfCAyMDdcbiAgLyoqXG4gICAqIE1VTFRJUExFX0NIT0lDRVNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjFcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgaGFzIG1vcmUgdGhhbiBvbmUgcG9zc2libGUgcmVzcG9uc2VzLiBVc2VyLWFnZW50IG9yIHVzZXIgc2hvdWxkIGNob29zZSBvbmUgb2YgdGhlbS4gVGhlcmUgaXMgbm8gc3RhbmRhcmRpemVkIHdheSB0byBjaG9vc2Ugb25lIG9mIHRoZSByZXNwb25zZXMuXG4gICAqL1xuICB8IDMwMFxuICAvKipcbiAgICogTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1ODUjc2VjdGlvbi02XG4gICAqXG4gICAqIFRoZSA1MTEgc3RhdHVzIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2Vzcy5cbiAgICovXG4gIHwgNTExXG4gIC8qKlxuICAgKiBOT19DT05URU5UXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy41XG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGNvbnRlbnQgdG8gc2VuZCBmb3IgdGhpcyByZXF1ZXN0LCBidXQgdGhlIGhlYWRlcnMgbWF5IGJlIHVzZWZ1bC4gVGhlIHVzZXItYWdlbnQgbWF5IHVwZGF0ZSBpdHMgY2FjaGVkIGhlYWRlcnMgZm9yIHRoaXMgcmVzb3VyY2Ugd2l0aCB0aGUgbmV3IG9uZXMuXG4gICAqL1xuICB8IDIwNFxuICAvKipcbiAgICogTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT05cbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi4zLjRcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHJldHVybmVkIG1ldGEtaW5mb3JtYXRpb24gc2V0IGlzIG5vdCBleGFjdCBzZXQgYXMgYXZhaWxhYmxlIGZyb20gdGhlIG9yaWdpbiBzZXJ2ZXIsIGJ1dCBjb2xsZWN0ZWQgZnJvbSBhIGxvY2FsIG9yIGEgdGhpcmQgcGFydHkgY29weS4gRXhjZXB0IHRoaXMgY29uZGl0aW9uLCAyMDAgT0sgcmVzcG9uc2Ugc2hvdWxkIGJlIHByZWZlcnJlZCBpbnN0ZWFkIG9mIHRoaXMgcmVzcG9uc2UuXG4gICAqL1xuICB8IDIwM1xuICAvKipcbiAgICogTk9UX0FDQ0VQVEFCTEVcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjZcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBpcyBzZW50IHdoZW4gdGhlIHdlYiBzZXJ2ZXIsIGFmdGVyIHBlcmZvcm1pbmcgc2VydmVyLWRyaXZlbiBjb250ZW50IG5lZ290aWF0aW9uLCBkb2Vzbid0IGZpbmQgYW55IGNvbnRlbnQgZm9sbG93aW5nIHRoZSBjcml0ZXJpYSBnaXZlbiBieSB0aGUgdXNlciBhZ2VudC5cbiAgICovXG4gIHwgNDA2XG4gIC8qKlxuICAgKiBOT1RfRk9VTkRcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjRcbiAgICpcbiAgICogVGhlIHNlcnZlciBjYW4gbm90IGZpbmQgcmVxdWVzdGVkIHJlc291cmNlLiBJbiB0aGUgYnJvd3NlciwgdGhpcyBtZWFucyB0aGUgVVJMIGlzIG5vdCByZWNvZ25pemVkLiBJbiBhbiBBUEksIHRoaXMgY2FuIGFsc28gbWVhbiB0aGF0IHRoZSBlbmRwb2ludCBpcyB2YWxpZCBidXQgdGhlIHJlc291cmNlIGl0c2VsZiBkb2VzIG5vdCBleGlzdC4gU2VydmVycyBtYXkgYWxzbyBzZW5kIHRoaXMgcmVzcG9uc2UgaW5zdGVhZCBvZiA0MDMgdG8gaGlkZSB0aGUgZXhpc3RlbmNlIG9mIGEgcmVzb3VyY2UgZnJvbSBhbiB1bmF1dGhvcml6ZWQgY2xpZW50LiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgcHJvYmFibHkgdGhlIG1vc3QgZmFtb3VzIG9uZSBkdWUgdG8gaXRzIGZyZXF1ZW50IG9jY3VycmVuY2Ugb24gdGhlIHdlYi5cbiAgICovXG4gIHwgNDA0XG4gIC8qKlxuICAgKiBOT1RfSU1QTEVNRU5URURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjJcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIGhhbmRsZWQuIFRoZSBvbmx5IG1ldGhvZHMgdGhhdCBzZXJ2ZXJzIGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IChhbmQgdGhlcmVmb3JlIHRoYXQgbXVzdCBub3QgcmV0dXJuIHRoaXMgY29kZSkgYXJlIEdFVCBhbmQgSEVBRC5cbiAgICovXG4gIHwgNTAxXG4gIC8qKlxuICAgKiBOT1RfTU9ESUZJRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMyI3NlY3Rpb24tNC4xXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCBmb3IgY2FjaGluZyBwdXJwb3Nlcy4gSXQgaXMgdGVsbGluZyB0byBjbGllbnQgdGhhdCByZXNwb25zZSBoYXMgbm90IGJlZW4gbW9kaWZpZWQuIFNvLCBjbGllbnQgY2FuIGNvbnRpbnVlIHRvIHVzZSBzYW1lIGNhY2hlZCB2ZXJzaW9uIG9mIHJlc3BvbnNlLlxuICAgKi9cbiAgfCAzMDRcbiAgLyoqXG4gICAqIE9LXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4xXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBzdWNjZWVkZWQuIFRoZSBtZWFuaW5nIG9mIGEgc3VjY2VzcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBIVFRQIG1ldGhvZDpcbiAgICogR0VUOiBUaGUgcmVzb3VyY2UgaGFzIGJlZW4gZmV0Y2hlZCBhbmQgaXMgdHJhbnNtaXR0ZWQgaW4gdGhlIG1lc3NhZ2UgYm9keS5cbiAgICogSEVBRDogVGhlIGVudGl0eSBoZWFkZXJzIGFyZSBpbiB0aGUgbWVzc2FnZSBib2R5LlxuICAgKiBQT1NUOiBUaGUgcmVzb3VyY2UgZGVzY3JpYmluZyB0aGUgcmVzdWx0IG9mIHRoZSBhY3Rpb24gaXMgdHJhbnNtaXR0ZWQgaW4gdGhlIG1lc3NhZ2UgYm9keS5cbiAgICogVFJBQ0U6IFRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgdGhlIHJlcXVlc3QgbWVzc2FnZSBhcyByZWNlaXZlZCBieSB0aGUgc2VydmVyXG4gICAqL1xuICB8IDIwMFxuICAvKipcbiAgICogUEFSVElBTF9DT05URU5UXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMyNzZWN0aW9uLTQuMVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgdXNlZCBiZWNhdXNlIG9mIHJhbmdlIGhlYWRlciBzZW50IGJ5IHRoZSBjbGllbnQgdG8gc2VwYXJhdGUgZG93bmxvYWQgaW50byBtdWx0aXBsZSBzdHJlYW1zLlxuICAgKi9cbiAgfCAyMDZcbiAgLyoqXG4gICAqIFBBWU1FTlRfUkVRVUlSRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjJcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBJbml0aWFsIGFpbSBmb3IgY3JlYXRpbmcgdGhpcyBjb2RlIHdhcyB1c2luZyBpdCBmb3IgZGlnaXRhbCBwYXltZW50IHN5c3RlbXMgaG93ZXZlciB0aGlzIGlzIG5vdCB1c2VkIGN1cnJlbnRseS5cbiAgICovXG4gIHwgNDAyXG4gIC8qKlxuICAgKiBQRVJNQU5FTlRfUkVESVJFQ1RcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTM4I3NlY3Rpb24tM1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhlIHJlc291cmNlIGlzIG5vdyBwZXJtYW5lbnRseSBsb2NhdGVkIGF0IGFub3RoZXIgVVJJLCBzcGVjaWZpZWQgYnkgdGhlIExvY2F0aW9uOiBIVFRQIFJlc3BvbnNlIGhlYWRlci4gVGhpcyBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSAzMDEgTW92ZWQgUGVybWFuZW50bHkgSFRUUCByZXNwb25zZSBjb2RlLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgdXNlciBhZ2VudCBtdXN0IG5vdCBjaGFuZ2UgdGhlIEhUVFAgbWV0aG9kIHVzZWQ6IGlmIGEgUE9TVCB3YXMgdXNlZCBpbiB0aGUgZmlyc3QgcmVxdWVzdCwgYSBQT1NUIG11c3QgYmUgdXNlZCBpbiB0aGUgc2Vjb25kIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwOFxuICAvKipcbiAgICogUFJFQ09ORElUSU9OX0ZBSUxFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzIjc2VjdGlvbi00LjJcbiAgICpcbiAgICogVGhlIGNsaWVudCBoYXMgaW5kaWNhdGVkIHByZWNvbmRpdGlvbnMgaW4gaXRzIGhlYWRlcnMgd2hpY2ggdGhlIHNlcnZlciBkb2VzIG5vdCBtZWV0LlxuICAgKi9cbiAgfCA0MTJcbiAgLyoqXG4gICAqIFBSRUNPTkRJVElPTl9SRVFVSVJFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1ODUjc2VjdGlvbi0zXG4gICAqXG4gICAqIFRoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsLiBJbnRlbmRlZCB0byBwcmV2ZW50IHRoZSAnbG9zdCB1cGRhdGUnIHByb2JsZW0sIHdoZXJlIGEgY2xpZW50IEdFVHMgYSByZXNvdXJjZSdzIHN0YXRlLCBtb2RpZmllcyBpdCwgYW5kIFBVVHMgaXQgYmFjayB0byB0aGUgc2VydmVyLCB3aGVuIG1lYW53aGlsZSBhIHRoaXJkIHBhcnR5IGhhcyBtb2RpZmllZCB0aGUgc3RhdGUgb24gdGhlIHNlcnZlciwgbGVhZGluZyB0byBhIGNvbmZsaWN0LlxuICAgKi9cbiAgfCA0MjhcbiAgLyoqXG4gICAqIFBST0NFU1NJTkdcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuMVxuICAgKlxuICAgKiBUaGlzIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIHNlcnZlciBoYXMgcmVjZWl2ZWQgYW5kIGlzIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QsIGJ1dCBubyByZXNwb25zZSBpcyBhdmFpbGFibGUgeWV0LlxuICAgKi9cbiAgfCAxMDJcbiAgLyoqXG4gICAqIFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMlxuICAgKlxuICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gNDAxIGJ1dCBhdXRoZW50aWNhdGlvbiBpcyBuZWVkZWQgdG8gYmUgZG9uZSBieSBhIHByb3h5LlxuICAgKi9cbiAgfCA0MDdcbiAgLyoqXG4gICAqIFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTg1I3NlY3Rpb24tNVxuICAgKlxuICAgKiBUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4gVGhlIHJlcXVlc3QgTUFZIGJlIHJlc3VibWl0dGVkIGFmdGVyIHJlZHVjaW5nIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGhlYWRlciBmaWVsZHMuXG4gICAqL1xuICB8IDQzMVxuICAvKipcbiAgICogUkVRVUVTVF9USU1FT1VUXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS43XG4gICAqXG4gICAqIFRoaXMgcmVzcG9uc2UgaXMgc2VudCBvbiBhbiBpZGxlIGNvbm5lY3Rpb24gYnkgc29tZSBzZXJ2ZXJzLCBldmVuIHdpdGhvdXQgYW55IHByZXZpb3VzIHJlcXVlc3QgYnkgdGhlIGNsaWVudC4gSXQgbWVhbnMgdGhhdCB0aGUgc2VydmVyIHdvdWxkIGxpa2UgdG8gc2h1dCBkb3duIHRoaXMgdW51c2VkIGNvbm5lY3Rpb24uIFRoaXMgcmVzcG9uc2UgaXMgdXNlZCBtdWNoIG1vcmUgc2luY2Ugc29tZSBicm93c2VycywgbGlrZSBDaHJvbWUsIEZpcmVmb3ggMjcrLCBvciBJRTksIHVzZSBIVFRQIHByZS1jb25uZWN0aW9uIG1lY2hhbmlzbXMgdG8gc3BlZWQgdXAgc3VyZmluZy4gQWxzbyBub3RlIHRoYXQgc29tZSBzZXJ2ZXJzIG1lcmVseSBzaHV0IGRvd24gdGhlIGNvbm5lY3Rpb24gd2l0aG91dCBzZW5kaW5nIHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHwgNDA4XG4gIC8qKlxuICAgKiBSRVFVRVNUX1RPT19MT05HXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xMVxuICAgKlxuICAgKiBSZXF1ZXN0IGVudGl0eSBpcyBsYXJnZXIgdGhhbiBsaW1pdHMgZGVmaW5lZCBieSBzZXJ2ZXI7IHRoZSBzZXJ2ZXIgbWlnaHQgY2xvc2UgdGhlIGNvbm5lY3Rpb24gb3IgcmV0dXJuIGFuIFJldHJ5LUFmdGVyIGhlYWRlciBmaWVsZC5cbiAgICovXG4gIHwgNDEzXG4gIC8qKlxuICAgKiBSRVFVRVNUX1VSSV9UT09fTE9OR1xuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMTJcbiAgICpcbiAgICogVGhlIFVSSSByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCBpcyBsb25nZXIgdGhhbiB0aGUgc2VydmVyIGlzIHdpbGxpbmcgdG8gaW50ZXJwcmV0LlxuICAgKi9cbiAgfCA0MTRcbiAgLyoqXG4gICAqIFJFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEVcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMzI3NlY3Rpb24tNC40XG4gICAqXG4gICAqIFRoZSByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIFJhbmdlIGhlYWRlciBmaWVsZCBpbiB0aGUgcmVxdWVzdCBjYW4ndCBiZSBmdWxmaWxsZWQ7IGl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmFuZ2UgaXMgb3V0c2lkZSB0aGUgc2l6ZSBvZiB0aGUgdGFyZ2V0IFVSSSdzIGRhdGEuXG4gICAqL1xuICB8IDQxNlxuICAvKipcbiAgICogUkVTRVRfQ09OVEVOVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjMuNlxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgc2VudCBhZnRlciBhY2NvbXBsaXNoaW5nIHJlcXVlc3QgdG8gdGVsbCB1c2VyIGFnZW50IHJlc2V0IGRvY3VtZW50IHZpZXcgd2hpY2ggc2VudCB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICB8IDIwNVxuICAvKipcbiAgICogU0VFX09USEVSXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNC40XG4gICAqXG4gICAqIFNlcnZlciBzZW50IHRoaXMgcmVzcG9uc2UgdG8gZGlyZWN0aW5nIGNsaWVudCB0byBnZXQgcmVxdWVzdGVkIHJlc291cmNlIHRvIGFub3RoZXIgVVJJIHdpdGggYW4gR0VUIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwM1xuICAvKipcbiAgICogU0VSVklDRV9VTkFWQUlMQUJMRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuNFxuICAgKlxuICAgKiBUaGUgc2VydmVyIGlzIG5vdCByZWFkeSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuIENvbW1vbiBjYXVzZXMgYXJlIGEgc2VydmVyIHRoYXQgaXMgZG93biBmb3IgbWFpbnRlbmFuY2Ugb3IgdGhhdCBpcyBvdmVybG9hZGVkLiBOb3RlIHRoYXQgdG9nZXRoZXIgd2l0aCB0aGlzIHJlc3BvbnNlLCBhIHVzZXItZnJpZW5kbHkgcGFnZSBleHBsYWluaW5nIHRoZSBwcm9ibGVtIHNob3VsZCBiZSBzZW50LiBUaGlzIHJlc3BvbnNlcyBzaG91bGQgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IGNvbmRpdGlvbnMgYW5kIHRoZSBSZXRyeS1BZnRlcjogSFRUUCBoZWFkZXIgc2hvdWxkLCBpZiBwb3NzaWJsZSwgY29udGFpbiB0aGUgZXN0aW1hdGVkIHRpbWUgYmVmb3JlIHRoZSByZWNvdmVyeSBvZiB0aGUgc2VydmljZS4gVGhlIHdlYm1hc3RlciBtdXN0IGFsc28gdGFrZSBjYXJlIGFib3V0IHRoZSBjYWNoaW5nLXJlbGF0ZWQgaGVhZGVycyB0aGF0IGFyZSBzZW50IGFsb25nIHdpdGggdGhpcyByZXNwb25zZSwgYXMgdGhlc2UgdGVtcG9yYXJ5IGNvbmRpdGlvbiByZXNwb25zZXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGNhY2hlZC5cbiAgICovXG4gIHwgNTAzXG4gIC8qKlxuICAgKiBTV0lUQ0hJTkdfUFJPVE9DT0xTXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMi4yXG4gICAqXG4gICAqIFRoaXMgY29kZSBpcyBzZW50IGluIHJlc3BvbnNlIHRvIGFuIFVwZ3JhZGUgcmVxdWVzdCBoZWFkZXIgYnkgdGhlIGNsaWVudCwgYW5kIGluZGljYXRlcyB0aGUgcHJvdG9jb2wgdGhlIHNlcnZlciBpcyBzd2l0Y2hpbmcgdG9vLlxuICAgKi9cbiAgfCAxMDFcbiAgLyoqXG4gICAqIFRFTVBPUkFSWV9SRURJUkVDVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuN1xuICAgKlxuICAgKiBTZXJ2ZXIgc2VudCB0aGlzIHJlc3BvbnNlIHRvIGRpcmVjdGluZyBjbGllbnQgdG8gZ2V0IHJlcXVlc3RlZCByZXNvdXJjZSB0byBhbm90aGVyIFVSSSB3aXRoIHNhbWUgbWV0aG9kIHRoYXQgdXNlZCBwcmlvciByZXF1ZXN0LiBUaGlzIGhhcyB0aGUgc2FtZSBzZW1hbnRpYyB0aGFuIHRoZSAzMDIgRm91bmQgSFRUUCByZXNwb25zZSBjb2RlLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgdXNlciBhZ2VudCBtdXN0IG5vdCBjaGFuZ2UgdGhlIEhUVFAgbWV0aG9kIHVzZWQ6IGlmIGEgUE9TVCB3YXMgdXNlZCBpbiB0aGUgZmlyc3QgcmVxdWVzdCwgYSBQT1NUIG11c3QgYmUgdXNlZCBpbiB0aGUgc2Vjb25kIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwN1xuICAvKipcbiAgICogVE9PX01BTllfUkVRVUVTVFNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTg1I3NlY3Rpb24tNFxuICAgKlxuICAgKiBUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyBpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lIChcInJhdGUgbGltaXRpbmdcIikuXG4gICAqL1xuICB8IDQyOVxuICAvKipcbiAgICogVU5BVVRIT1JJWkVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMVxuICAgKlxuICAgKiBBbHRob3VnaCB0aGUgSFRUUCBzdGFuZGFyZCBzcGVjaWZpZXMgXCJ1bmF1dGhvcml6ZWRcIiwgc2VtYW50aWNhbGx5IHRoaXMgcmVzcG9uc2UgbWVhbnMgXCJ1bmF1dGhlbnRpY2F0ZWRcIi4gVGhhdCBpcywgdGhlIGNsaWVudCBtdXN0IGF1dGhlbnRpY2F0ZSBpdHNlbGYgdG8gZ2V0IHRoZSByZXF1ZXN0ZWQgcmVzcG9uc2UuXG4gICAqL1xuICB8IDQwMVxuICAvKipcbiAgICogVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NzI1XG4gICAqXG4gICAqIFRoZSB1c2VyLWFnZW50IHJlcXVlc3RlZCBhIHJlc291cmNlIHRoYXQgY2Fubm90IGxlZ2FsbHkgYmUgcHJvdmlkZWQsIHN1Y2ggYXMgYSB3ZWIgcGFnZSBjZW5zb3JlZCBieSBhIGdvdmVybm1lbnQuXG4gICAqL1xuICB8IDQ1MVxuICAvKipcbiAgICogVU5QUk9DRVNTQUJMRV9FTlRJVFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuM1xuICAgKlxuICAgKiBUaGUgcmVxdWVzdCB3YXMgd2VsbC1mb3JtZWQgYnV0IHdhcyB1bmFibGUgdG8gYmUgZm9sbG93ZWQgZHVlIHRvIHNlbWFudGljIGVycm9ycy5cbiAgICovXG4gIHwgNDIyXG4gIC8qKlxuICAgKiBVTlNVUFBPUlRFRF9NRURJQV9UWVBFXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xM1xuICAgKlxuICAgKiBUaGUgbWVkaWEgZm9ybWF0IG9mIHRoZSByZXF1ZXN0ZWQgZGF0YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIsIHNvIHRoZSBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgfCA0MTVcbiAgLyoqXG4gICAqIFVTRV9QUk9YWVxuICAgKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuNlxuICAgKlxuICAgKiBXYXMgZGVmaW5lZCBpbiBhIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIEhUVFAgc3BlY2lmaWNhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IGEgcmVxdWVzdGVkIHJlc3BvbnNlIG11c3QgYmUgYWNjZXNzZWQgYnkgYSBwcm94eS4gSXQgaGFzIGJlZW4gZGVwcmVjYXRlZCBkdWUgdG8gc2VjdXJpdHkgY29uY2VybnMgcmVnYXJkaW5nIGluLWJhbmQgY29uZmlndXJhdGlvbiBvZiBhIHByb3h5LlxuICAgKi9cbiAgfCAzMDVcbiAgLyoqXG4gICAqIE1JU0RJUkVDVEVEX1JFUVVFU1RcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzU0MCNzZWN0aW9uLTkuMS4yXG4gICAqXG4gICAqIERlZmluZWQgaW4gdGhlIHNwZWNpZmljYXRpb24gb2YgSFRUUC8yIHRvIGluZGljYXRlIHRoYXQgYSBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcHJvZHVjZSBhIHJlc3BvbnNlIGZvciB0aGUgY29tYmluYXRpb24gb2Ygc2NoZW1lIGFuZCBhdXRob3JpdHkgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgVVJJLlxuICAgKi9cbiAgfCA0MjE7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgUHJvYmxlbSBEb2N1bWVudHMsIHdoaWNoIGluY2x1ZGVzIHRoZSBub24tZXh0ZW5zaW9uIGZpZWxkc1xuICovXG5leHBvcnQgdHlwZSBCYXNlUHJvYmxlbURvY3VtZW50UHJvcGVydGllcyA9IHtcbiAgLyoqXG4gICAqIEEgVVJJIHJlZmVyZW5jZSBbe0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiBSRkMzOTg2fV0gdGhhdCBpZGVudGlmaWVzIHRoZVxuICAgKiBwcm9ibGVtIHR5cGUuICBUaGlzIHNwZWNpZmljYXRpb24gZW5jb3VyYWdlcyB0aGF0LCB3aGVuXG4gICAqIGRlcmVmZXJlbmNlZCwgaXQgcHJvdmlkZSBodW1hbi1yZWFkYWJsZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICogcHJvYmxlbSB0eXBlIChlLmcuLCB1c2luZyBIVE1MIFt7QGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3ODA3I3JlZi1XM0MuUkVDLWh0bWw1LTIwMTQxMDI4IFczQy5SRUMtaHRtbDUtMjAxNDEwMjh9XSkuICBXaGVuXG4gICAqIHRoaXMgbWVtYmVyIGlzIG5vdCBwcmVzZW50LCBpdHMgdmFsdWUgaXMgYXNzdW1lZCB0byBiZVxuICAgKiBcImFib3V0OmJsYW5rXCIuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBzaG9ydCwgaHVtYW4tcmVhZGFibGUgc3VtbWFyeSBvZiB0aGUgcHJvYmxlbVxuICAgKiB0eXBlLiAgSXQgU0hPVUxEIE5PVCBjaGFuZ2UgZnJvbSBvY2N1cnJlbmNlIHRvIG9jY3VycmVuY2Ugb2YgdGhlXG4gICAqIHByb2JsZW0sIGV4Y2VwdCBmb3IgcHVycG9zZXMgb2YgbG9jYWxpemF0aW9uIChlLmcuLCB1c2luZ1xuICAgKiBwcm9hY3RpdmUgY29udGVudCBuZWdvdGlhdGlvbjsgc2VlIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzEjc2VjdGlvbi0zLjQgW1JGQzcyMzFdLCBTZWN0aW9uIDMuNH0pLlxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgSFRUUCBzdGF0dXMgY29kZSAoe0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYgW1JGQzcyMzFdLCBTZWN0aW9uIDZ9KVxuICAgKiBnZW5lcmF0ZWQgYnkgdGhlIG9yaWdpbiBzZXJ2ZXIgZm9yIHRoaXMgb2NjdXJyZW5jZSBvZiB0aGUgcHJvYmxlbS5cbiAgICovXG4gIHN0YXR1cz86IFN0YXR1c0NvZGU7XG4gIC8qKlxuICAgKiBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uIHNwZWNpZmljIHRvIHRoaXMgb2NjdXJyZW5jZSBvZiB0aGUgcHJvYmxlbS5cbiAgICovXG4gIGRldGFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgVVJJIHJlZmVyZW5jZSB0aGF0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljXG4gICAqIG9jY3VycmVuY2Ugb2YgdGhlIHByb2JsZW0uICBJdCBtYXkgb3IgbWF5IG5vdCB5aWVsZCBmdXJ0aGVyXG4gICAqIGluZm9ybWF0aW9uIGlmIGRlcmVmZXJlbmNlZC5cbiAgICovXG4gIGluc3RhbmNlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBUaGUgUHJvYmxlbSBEb2N1bWVudCB3aXRoIGV4dGVuc2lvbnNcbiAqXG4gKiBOb3RlIHRoZSB1c2Ugb2YgT21pdCwgdGhpcyBhbGxvd3MgYXV0by1jb21wbGV0aW9uIG9mIHRoZSBiYXNlIGZpZWxkc1xuICovXG5leHBvcnQgdHlwZSBQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzID0gT21pdDxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGtleW9mIEJhc2VQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzXG4+ICZcbiAgQmFzZVByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXM7XG5cbi8qKlxuICpcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBSRkM3ODA3IFwicHJvYmxlbSBkZXRhaWxcIiwgYSB3YXkgdG8gY2FycnkgbWFjaGluZS1cbiAqIHJlYWRhYmxlIGRldGFpbHMgb2YgZXJyb3JzIGluIGEgSFRUUCByZXNwb25zZSB0byBhdm9pZCB0aGUgbmVlZCB0b1xuICogZGVmaW5lIG5ldyBlcnJvciByZXNwb25zZSBmb3JtYXRzIGZvciBIVFRQIEFQSXMuXG4gKlxuICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzgwN1xuICpcbiAqIENvbnN1bWVycyBNVVNUIHVzZSB0aGUgXCJ0eXBlXCIgc3RyaW5nIGFzIHRoZSBwcmltYXJ5IGlkZW50aWZpZXIgZm9yXG4gKiB0aGUgcHJvYmxlbSB0eXBlOyB0aGUgXCJ0aXRsZVwiIHN0cmluZyBpcyBhZHZpc29yeSBhbmQgaW5jbHVkZWQgb25seVxuICogZm9yIHVzZXJzIHdobyBhcmUgbm90IGF3YXJlIG9mIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSBhbmQgZG8gbm90XG4gKiBoYXZlIHRoZSBhYmlsaXR5IHRvIGRpc2NvdmVyIHRoZW0gKGUuZy4sIG9mZmxpbmUgbG9nIGFuYWx5c2lzKS5cbiAqIENvbnN1bWVycyBTSE9VTEQgTk9UIGF1dG9tYXRpY2FsbHkgZGVyZWZlcmVuY2UgdGhlIHR5cGUgVVJJLlxuICpcbiAqIFRoZSBcInN0YXR1c1wiIG1lbWJlciwgaWYgcHJlc2VudCwgaXMgb25seSBhZHZpc29yeTsgaXQgY29udmV5cyB0aGVcbiAqIEhUVFAgc3RhdHVzIGNvZGUgdXNlZCBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHRoZSBjb25zdW1lci5cbiAqIEdlbmVyYXRvcnMgTVVTVCB1c2UgdGhlIHNhbWUgc3RhdHVzIGNvZGUgaW4gdGhlIGFjdHVhbCBIVFRQIHJlc3BvbnNlLFxuICogdG8gYXNzdXJlIHRoYXQgZ2VuZXJpYyBIVFRQIHNvZnR3YXJlIHRoYXQgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGlzXG4gKiBmb3JtYXQgc3RpbGwgYmVoYXZlcyBjb3JyZWN0bHkuICBTZWUgU2VjdGlvbiA1IGZvciBmdXJ0aGVyIGNhdmVhdHNcbiAqIHJlZ2FyZGluZyBpdHMgdXNlLlxuICpcbiAqIENvbnN1bWVycyBjYW4gdXNlIHRoZSBzdGF0dXMgbWVtYmVyIHRvIGRldGVybWluZSB3aGF0IHRoZSBvcmlnaW5hbFxuICogc3RhdHVzIGNvZGUgdXNlZCBieSB0aGUgZ2VuZXJhdG9yIHdhcywgaW4gY2FzZXMgd2hlcmUgaXQgaGFzIGJlZW5cbiAqIGNoYW5nZWQgKGUuZy4sIGJ5IGFuIGludGVybWVkaWFyeSBvciBjYWNoZSksIGFuZCB3aGVuIG1lc3NhZ2UgYm9kaWVzXG4gKiBwZXJzaXN0IHdpdGhvdXQgSFRUUCBpbmZvcm1hdGlvbi4gIEdlbmVyaWMgSFRUUCBzb2Z0d2FyZSB3aWxsIHN0aWxsXG4gKiB1c2UgdGhlIEhUVFAgc3RhdHVzIGNvZGUuXG4gKlxuICogVGhlIFwiZGV0YWlsXCIgbWVtYmVyLCBpZiBwcmVzZW50LCBvdWdodCB0byBmb2N1cyBvbiBoZWxwaW5nIHRoZSBjbGllbnRcbiAqIGNvcnJlY3QgdGhlIHByb2JsZW0sIHJhdGhlciB0aGFuIGdpdmluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uXG4gKlxuICogQ29uc3VtZXJzIFNIT1VMRCBOT1QgcGFyc2UgdGhlIFwiZGV0YWlsXCIgbWVtYmVyIGZvciBpbmZvcm1hdGlvbjtcbiAqIGV4dGVuc2lvbnMgYXJlIG1vcmUgc3VpdGFibGUgYW5kIGxlc3MgZXJyb3ItcHJvbmUgd2F5cyB0byBvYnRhaW4gc3VjaFxuICogaW5mb3JtYXRpb24uXG4gKlxuICogTm90ZSB0aGF0IGJvdGgge0BsaW5rIEJhc2VQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzLnR5cGUgdHlwZX0gYW5kIHtAbGluayBCYXNlUHJvYmxlbURvY3VtZW50UHJvcGVydGllcy5pbnN0YW5jZSBpbnN0YW5jZX0gYWNjZXB0IHJlbGF0aXZlIFVSSXM7IHRoaXMgbWVhbnNcbiAqIHRoYXQgdGhleSBtdXN0IGJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCdzIGJhc2UgVVJJLCBhc1xuICogcGVyIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01IFtSRkMzOTg2XSwgU2VjdGlvbiA1fS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2JsZW1Eb2N1bWVudCBpbXBsZW1lbnRzIFByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXMge1xuICBkZXRhaWw/OiBzdHJpbmc7XG4gIGluc3RhbmNlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBTdGF0dXNDb2RlO1xuICB0aXRsZT86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgW2s6IHN0cmluZ106IHVua25vd247XG4gIC8qKlxuICAgKlxuICAgKiBjb25zdHJ1Y3QgYSBuZXcgUHJvYmxlbURvY3VtZW50IGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGE6IFByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICB9XG59XG4iXX0=
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb2NBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBYSxlQUFlO0lBTzFCOzs7O09BSUc7SUFDSCxZQUFZLElBQStCO1FBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQWZELDBDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIdHRwIFN0YXR1cyBDb2RlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmV0dHltdWNoYnJ5Y2UvaHR0cC1zdGF0dXMtY29kZXMvYmxvYi9tYXN0ZXIvc3JjL3N0YXR1cy1jb2Rlcy50cyB1bmRlciBNSVQgTGljZW5zZVxuICogSWYgeW91IGtub3cgaG93IHRvIGNvbnZlcnQgbnVtZXJpYyBlbnVtIHZhbHVlcyB0byBhIHVuaW9uIHR5cGUsIHBsZWFzZSBzdWJtaXQgYSBQUi5cbiAqL1xudHlwZSBTdGF0dXNDb2RlID1cbiAgLyoqXG4gICAqIEFDQ0VQVEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4zXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCBub3QgeWV0IGFjdGVkIHVwb24uIEl0IGlzIG5vbi1jb21taXR0YWwsIG1lYW5pbmcgdGhhdCB0aGVyZSBpcyBubyB3YXkgaW4gSFRUUCB0byBsYXRlciBzZW5kIGFuIGFzeW5jaHJvbm91cyByZXNwb25zZSBpbmRpY2F0aW5nIHRoZSBvdXRjb21lIG9mIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuIEl0IGlzIGludGVuZGVkIGZvciBjYXNlcyB3aGVyZSBhbm90aGVyIHByb2Nlc3Mgb3Igc2VydmVyIGhhbmRsZXMgdGhlIHJlcXVlc3QsIG9yIGZvciBiYXRjaCBwcm9jZXNzaW5nLlxuICAgKi9cbiAgfCAyMDJcbiAgLyoqXG4gICAqIEJBRF9HQVRFV0FZXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNi4zXG4gICAqXG4gICAqIFRoaXMgZXJyb3IgcmVzcG9uc2UgbWVhbnMgdGhhdCB0aGUgc2VydmVyLCB3aGlsZSB3b3JraW5nIGFzIGEgZ2F0ZXdheSB0byBnZXQgYSByZXNwb25zZSBuZWVkZWQgdG8gaGFuZGxlIHRoZSByZXF1ZXN0LCBnb3QgYW4gaW52YWxpZCByZXNwb25zZS5cbiAgICovXG4gIHwgNTAyXG4gIC8qKlxuICAgKiBCQURfUkVRVUVTVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIG1lYW5zIHRoYXQgc2VydmVyIGNvdWxkIG5vdCB1bmRlcnN0YW5kIHRoZSByZXF1ZXN0IGR1ZSB0byBpbnZhbGlkIHN5bnRheC5cbiAgICovXG4gIHwgNDAwXG4gIC8qKlxuICAgKiBDT05GTElDVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuOFxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGlzIHNlbnQgd2hlbiBhIHJlcXVlc3QgY29uZmxpY3RzIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNDA5XG4gIC8qKlxuICAgKiBDT05USU5VRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjIuMVxuICAgKlxuICAgKiBUaGlzIGludGVyaW0gcmVzcG9uc2UgaW5kaWNhdGVzIHRoYXQgZXZlcnl0aGluZyBzbyBmYXIgaXMgT0sgYW5kIHRoYXQgdGhlIGNsaWVudCBzaG91bGQgY29udGludWUgd2l0aCB0aGUgcmVxdWVzdCBvciBpZ25vcmUgaXQgaWYgaXQgaXMgYWxyZWFkeSBmaW5pc2hlZC5cbiAgICovXG4gIHwgMTAwXG4gIC8qKlxuICAgKiBDUkVBVEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4yXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBzdWNjZWVkZWQgYW5kIGEgbmV3IHJlc291cmNlIGhhcyBiZWVuIGNyZWF0ZWQgYXMgYSByZXN1bHQgb2YgaXQuIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSByZXNwb25zZSBzZW50IGFmdGVyIGEgUFVUIHJlcXVlc3QuXG4gICAqL1xuICB8IDIwMVxuICAvKipcbiAgICogRVhQRUNUQVRJT05fRkFJTEVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xNFxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgbWVhbnMgdGhlIGV4cGVjdGF0aW9uIGluZGljYXRlZCBieSB0aGUgRXhwZWN0IHJlcXVlc3QgaGVhZGVyIGZpZWxkIGNhbid0IGJlIG1ldCBieSB0aGUgc2VydmVyLlxuICAgKi9cbiAgfCA0MTdcbiAgLyoqXG4gICAqIEZBSUxFRF9ERVBFTkRFTkNZXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjUxOCNzZWN0aW9uLTEwLjVcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgZmFpbGVkIGR1ZSB0byBmYWlsdXJlIG9mIGEgcHJldmlvdXMgcmVxdWVzdC5cbiAgICovXG4gIHwgNDI0XG4gIC8qKlxuICAgKiBGT1JCSURERU5cbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjNcbiAgICpcbiAgICogVGhlIGNsaWVudCBkb2VzIG5vdCBoYXZlIGFjY2VzcyByaWdodHMgdG8gdGhlIGNvbnRlbnQsIGkuZS4gdGhleSBhcmUgdW5hdXRob3JpemVkLCBzbyBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRvIGdpdmUgcHJvcGVyIHJlc3BvbnNlLiBVbmxpa2UgNDAxLCB0aGUgY2xpZW50J3MgaWRlbnRpdHkgaXMga25vd24gdG8gdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNDAzXG4gIC8qKlxuICAgKiBHQVRFV0FZX1RJTUVPVVRcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjVcbiAgICpcbiAgICogVGhpcyBlcnJvciByZXNwb25zZSBpcyBnaXZlbiB3aGVuIHRoZSBzZXJ2ZXIgaXMgYWN0aW5nIGFzIGEgZ2F0ZXdheSBhbmQgY2Fubm90IGdldCBhIHJlc3BvbnNlIGluIHRpbWUuXG4gICAqL1xuICB8IDUwNFxuICAvKipcbiAgICogR09ORVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuOVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIHdvdWxkIGJlIHNlbnQgd2hlbiB0aGUgcmVxdWVzdGVkIGNvbnRlbnQgaGFzIGJlZW4gcGVybWFuZW50bHkgZGVsZXRlZCBmcm9tIHNlcnZlciwgd2l0aCBubyBmb3J3YXJkaW5nIGFkZHJlc3MuIENsaWVudHMgYXJlIGV4cGVjdGVkIHRvIHJlbW92ZSB0aGVpciBjYWNoZXMgYW5kIGxpbmtzIHRvIHRoZSByZXNvdXJjZS4gVGhlIEhUVFAgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRoaXMgc3RhdHVzIGNvZGUgdG8gYmUgdXNlZCBmb3IgXCJsaW1pdGVkLXRpbWUsIHByb21vdGlvbmFsIHNlcnZpY2VzXCIuIEFQSXMgc2hvdWxkIG5vdCBmZWVsIGNvbXBlbGxlZCB0byBpbmRpY2F0ZSByZXNvdXJjZXMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZCB3aXRoIHRoaXMgc3RhdHVzIGNvZGUuXG4gICAqL1xuICB8IDQxMFxuICAvKipcbiAgICogSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjZcbiAgICpcbiAgICogVGhlIEhUVFAgdmVyc2lvbiB1c2VkIGluIHRoZSByZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci5cbiAgICovXG4gIHwgNTA1XG4gIC8qKlxuICAgKiBJTV9BX1RFQVBPVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIzMjQjc2VjdGlvbi0yLjMuMlxuICAgKlxuICAgKiBBbnkgYXR0ZW1wdCB0byBicmV3IGNvZmZlZSB3aXRoIGEgdGVhcG90IHNob3VsZCByZXN1bHQgaW4gdGhlIGVycm9yIGNvZGUgXCI0MTggSSdtIGEgdGVhcG90XCIuIFRoZSByZXN1bHRpbmcgZW50aXR5IGJvZHkgTUFZIGJlIHNob3J0IGFuZCBzdG91dC5cbiAgICovXG4gIHwgNDE4XG4gIC8qKlxuICAgKiBJTlNVRkZJQ0lFTlRfU1BBQ0VfT05fUkVTT1VSQ0VcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuNlxuICAgKlxuICAgKiBUaGUgNTA3IChJbnN1ZmZpY2llbnQgU3RvcmFnZSkgc3RhdHVzIGNvZGUgbWVhbnMgdGhlIG1ldGhvZCBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIG9uIHRoZSByZXNvdXJjZSBiZWNhdXNlIHRoZSBzZXJ2ZXIgaXMgdW5hYmxlIHRvIHN0b3JlIHRoZSByZXByZXNlbnRhdGlvbiBuZWVkZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlIHRoZSByZXF1ZXN0LiBUaGlzIGNvbmRpdGlvbiBpcyBjb25zaWRlcmVkIHRvIGJlIHRlbXBvcmFyeS4gSWYgdGhlIHJlcXVlc3Qgd2hpY2ggcmVjZWl2ZWQgdGhpcyBzdGF0dXMgY29kZSB3YXMgdGhlIHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLCB0aGUgcmVxdWVzdCBNVVNUIE5PVCBiZSByZXBlYXRlZCB1bnRpbCBpdCBpcyByZXF1ZXN0ZWQgYnkgYSBzZXBhcmF0ZSB1c2VyIGFjdGlvbi5cbiAgICovXG4gIHwgNDE5XG4gIC8qKlxuICAgKiBJTlNVRkZJQ0lFTlRfU1RPUkFHRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC42XG4gICAqXG4gICAqIFRoZSBzZXJ2ZXIgaGFzIGFuIGludGVybmFsIGNvbmZpZ3VyYXRpb24gZXJyb3I6IHRoZSBjaG9zZW4gdmFyaWFudCByZXNvdXJjZSBpcyBjb25maWd1cmVkIHRvIGVuZ2FnZSBpbiB0cmFuc3BhcmVudCBjb250ZW50IG5lZ290aWF0aW9uIGl0c2VsZiwgYW5kIGlzIHRoZXJlZm9yZSBub3QgYSBwcm9wZXIgZW5kIHBvaW50IGluIHRoZSBuZWdvdGlhdGlvbiBwcm9jZXNzLlxuICAgKi9cbiAgfCA1MDdcbiAgLyoqXG4gICAqIElOVEVSTkFMX1NFUlZFUl9FUlJPUlxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuMVxuICAgKlxuICAgKiBUaGUgc2VydmVyIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgY29uZGl0aW9uIHRoYXQgcHJldmVudGVkIGl0IGZyb20gZnVsZmlsbGluZyB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHwgNTAwXG4gIC8qKlxuICAgKiBMRU5HVEhfUkVRVUlSRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjEwXG4gICAqXG4gICAqIFRoZSBzZXJ2ZXIgcmVqZWN0ZWQgdGhlIHJlcXVlc3QgYmVjYXVzZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGZpZWxkIGlzIG5vdCBkZWZpbmVkIGFuZCB0aGUgc2VydmVyIHJlcXVpcmVzIGl0LlxuICAgKi9cbiAgfCA0MTFcbiAgLyoqXG4gICAqIExPQ0tFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC40XG4gICAqXG4gICAqIFRoZSByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkIGlzIGxvY2tlZC5cbiAgICovXG4gIHwgNDIzXG4gIC8qKlxuICAgKiBNRVRIT0RfRkFJTFVSRVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9yZmNkaWZmP2RpZmZ0eXBlPS0taHdkaWZmJnVybDI9ZHJhZnQtaWV0Zi13ZWJkYXYtcHJvdG9jb2wtMDYudHh0XG4gICAqXG4gICAqIEEgZGVwcmVjYXRlZCByZXNwb25zZSB1c2VkIGJ5IHRoZSBTcHJpbmcgRnJhbWV3b3JrIHdoZW4gYSBtZXRob2QgaGFzIGZhaWxlZC5cbiAgICovXG4gIHwgNDIwXG4gIC8qKlxuICAgKiBNRVRIT0RfTk9UX0FMTE9XRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjVcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgbWV0aG9kIGlzIGtub3duIGJ5IHRoZSBzZXJ2ZXIgYnV0IGhhcyBiZWVuIGRpc2FibGVkIGFuZCBjYW5ub3QgYmUgdXNlZC4gRm9yIGV4YW1wbGUsIGFuIEFQSSBtYXkgZm9yYmlkIERFTEVURS1pbmcgYSByZXNvdXJjZS4gVGhlIHR3byBtYW5kYXRvcnkgbWV0aG9kcywgR0VUIGFuZCBIRUFELCBtdXN0IG5ldmVyIGJlIGRpc2FibGVkIGFuZCBzaG91bGQgbm90IHJldHVybiB0aGlzIGVycm9yIGNvZGUuXG4gICAqL1xuICB8IDQwNVxuICAvKipcbiAgICogTU9WRURfUEVSTUFORU5UTFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjJcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHRoYXQgVVJJIG9mIHJlcXVlc3RlZCByZXNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkLiBQcm9iYWJseSwgbmV3IFVSSSB3b3VsZCBiZSBnaXZlbiBpbiB0aGUgcmVzcG9uc2UuXG4gICAqL1xuICB8IDMwMVxuICAvKipcbiAgICogTU9WRURfVEVNUE9SQVJJTFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjNcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHRoYXQgVVJJIG9mIHJlcXVlc3RlZCByZXNvdXJjZSBoYXMgYmVlbiBjaGFuZ2VkIHRlbXBvcmFyaWx5LiBOZXcgY2hhbmdlcyBpbiB0aGUgVVJJIG1pZ2h0IGJlIG1hZGUgaW4gdGhlIGZ1dHVyZS4gVGhlcmVmb3JlLCB0aGlzIHNhbWUgVVJJIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSBjbGllbnQgaW4gZnV0dXJlIHJlcXVlc3RzLlxuICAgKi9cbiAgfCAzMDJcbiAgLyoqXG4gICAqIE1VTFRJX1NUQVRVU1xuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1MTgjc2VjdGlvbi0xMC4yXG4gICAqXG4gICAqIEEgTXVsdGktU3RhdHVzIHJlc3BvbnNlIGNvbnZleXMgaW5mb3JtYXRpb24gYWJvdXQgbXVsdGlwbGUgcmVzb3VyY2VzIGluIHNpdHVhdGlvbnMgd2hlcmUgbXVsdGlwbGUgc3RhdHVzIGNvZGVzIG1pZ2h0IGJlIGFwcHJvcHJpYXRlLlxuICAgKi9cbiAgfCAyMDdcbiAgLyoqXG4gICAqIE1VTFRJUExFX0NIT0lDRVNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi40LjFcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgaGFzIG1vcmUgdGhhbiBvbmUgcG9zc2libGUgcmVzcG9uc2VzLiBVc2VyLWFnZW50IG9yIHVzZXIgc2hvdWxkIGNob29zZSBvbmUgb2YgdGhlbS4gVGhlcmUgaXMgbm8gc3RhbmRhcmRpemVkIHdheSB0byBjaG9vc2Ugb25lIG9mIHRoZSByZXNwb25zZXMuXG4gICAqL1xuICB8IDMwMFxuICAvKipcbiAgICogTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1ODUjc2VjdGlvbi02XG4gICAqXG4gICAqIFRoZSA1MTEgc3RhdHVzIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2Vzcy5cbiAgICovXG4gIHwgNTExXG4gIC8qKlxuICAgKiBOT19DT05URU5UXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy41XG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGNvbnRlbnQgdG8gc2VuZCBmb3IgdGhpcyByZXF1ZXN0LCBidXQgdGhlIGhlYWRlcnMgbWF5IGJlIHVzZWZ1bC4gVGhlIHVzZXItYWdlbnQgbWF5IHVwZGF0ZSBpdHMgY2FjaGVkIGhlYWRlcnMgZm9yIHRoaXMgcmVzb3VyY2Ugd2l0aCB0aGUgbmV3IG9uZXMuXG4gICAqL1xuICB8IDIwNFxuICAvKipcbiAgICogTk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT05cbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi4zLjRcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIG1lYW5zIHJldHVybmVkIG1ldGEtaW5mb3JtYXRpb24gc2V0IGlzIG5vdCBleGFjdCBzZXQgYXMgYXZhaWxhYmxlIGZyb20gdGhlIG9yaWdpbiBzZXJ2ZXIsIGJ1dCBjb2xsZWN0ZWQgZnJvbSBhIGxvY2FsIG9yIGEgdGhpcmQgcGFydHkgY29weS4gRXhjZXB0IHRoaXMgY29uZGl0aW9uLCAyMDAgT0sgcmVzcG9uc2Ugc2hvdWxkIGJlIHByZWZlcnJlZCBpbnN0ZWFkIG9mIHRoaXMgcmVzcG9uc2UuXG4gICAqL1xuICB8IDIwM1xuICAvKipcbiAgICogTk9UX0FDQ0VQVEFCTEVcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjZcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBpcyBzZW50IHdoZW4gdGhlIHdlYiBzZXJ2ZXIsIGFmdGVyIHBlcmZvcm1pbmcgc2VydmVyLWRyaXZlbiBjb250ZW50IG5lZ290aWF0aW9uLCBkb2Vzbid0IGZpbmQgYW55IGNvbnRlbnQgZm9sbG93aW5nIHRoZSBjcml0ZXJpYSBnaXZlbiBieSB0aGUgdXNlciBhZ2VudC5cbiAgICovXG4gIHwgNDA2XG4gIC8qKlxuICAgKiBOT1RfRk9VTkRcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjRcbiAgICpcbiAgICogVGhlIHNlcnZlciBjYW4gbm90IGZpbmQgcmVxdWVzdGVkIHJlc291cmNlLiBJbiB0aGUgYnJvd3NlciwgdGhpcyBtZWFucyB0aGUgVVJMIGlzIG5vdCByZWNvZ25pemVkLiBJbiBhbiBBUEksIHRoaXMgY2FuIGFsc28gbWVhbiB0aGF0IHRoZSBlbmRwb2ludCBpcyB2YWxpZCBidXQgdGhlIHJlc291cmNlIGl0c2VsZiBkb2VzIG5vdCBleGlzdC4gU2VydmVycyBtYXkgYWxzbyBzZW5kIHRoaXMgcmVzcG9uc2UgaW5zdGVhZCBvZiA0MDMgdG8gaGlkZSB0aGUgZXhpc3RlbmNlIG9mIGEgcmVzb3VyY2UgZnJvbSBhbiB1bmF1dGhvcml6ZWQgY2xpZW50LiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgcHJvYmFibHkgdGhlIG1vc3QgZmFtb3VzIG9uZSBkdWUgdG8gaXRzIGZyZXF1ZW50IG9jY3VycmVuY2Ugb24gdGhlIHdlYi5cbiAgICovXG4gIHwgNDA0XG4gIC8qKlxuICAgKiBOT1RfSU1QTEVNRU5URURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi42LjJcbiAgICpcbiAgICogVGhlIHJlcXVlc3QgbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciBhbmQgY2Fubm90IGJlIGhhbmRsZWQuIFRoZSBvbmx5IG1ldGhvZHMgdGhhdCBzZXJ2ZXJzIGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IChhbmQgdGhlcmVmb3JlIHRoYXQgbXVzdCBub3QgcmV0dXJuIHRoaXMgY29kZSkgYXJlIEdFVCBhbmQgSEVBRC5cbiAgICovXG4gIHwgNTAxXG4gIC8qKlxuICAgKiBOT1RfTU9ESUZJRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMyI3NlY3Rpb24tNC4xXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCBmb3IgY2FjaGluZyBwdXJwb3Nlcy4gSXQgaXMgdGVsbGluZyB0byBjbGllbnQgdGhhdCByZXNwb25zZSBoYXMgbm90IGJlZW4gbW9kaWZpZWQuIFNvLCBjbGllbnQgY2FuIGNvbnRpbnVlIHRvIHVzZSBzYW1lIGNhY2hlZCB2ZXJzaW9uIG9mIHJlc3BvbnNlLlxuICAgKi9cbiAgfCAzMDRcbiAgLyoqXG4gICAqIE9LXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMy4xXG4gICAqXG4gICAqIFRoZSByZXF1ZXN0IGhhcyBzdWNjZWVkZWQuIFRoZSBtZWFuaW5nIG9mIGEgc3VjY2VzcyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBIVFRQIG1ldGhvZDpcbiAgICogR0VUOiBUaGUgcmVzb3VyY2UgaGFzIGJlZW4gZmV0Y2hlZCBhbmQgaXMgdHJhbnNtaXR0ZWQgaW4gdGhlIG1lc3NhZ2UgYm9keS5cbiAgICogSEVBRDogVGhlIGVudGl0eSBoZWFkZXJzIGFyZSBpbiB0aGUgbWVzc2FnZSBib2R5LlxuICAgKiBQT1NUOiBUaGUgcmVzb3VyY2UgZGVzY3JpYmluZyB0aGUgcmVzdWx0IG9mIHRoZSBhY3Rpb24gaXMgdHJhbnNtaXR0ZWQgaW4gdGhlIG1lc3NhZ2UgYm9keS5cbiAgICogVFJBQ0U6IFRoZSBtZXNzYWdlIGJvZHkgY29udGFpbnMgdGhlIHJlcXVlc3QgbWVzc2FnZSBhcyByZWNlaXZlZCBieSB0aGUgc2VydmVyXG4gICAqL1xuICB8IDIwMFxuICAvKipcbiAgICogUEFSVElBTF9DT05URU5UXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMyNzZWN0aW9uLTQuMVxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgdXNlZCBiZWNhdXNlIG9mIHJhbmdlIGhlYWRlciBzZW50IGJ5IHRoZSBjbGllbnQgdG8gc2VwYXJhdGUgZG93bmxvYWQgaW50byBtdWx0aXBsZSBzdHJlYW1zLlxuICAgKi9cbiAgfCAyMDZcbiAgLyoqXG4gICAqIFBBWU1FTlRfUkVRVUlSRURcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNi41LjJcbiAgICpcbiAgICogVGhpcyByZXNwb25zZSBjb2RlIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBJbml0aWFsIGFpbSBmb3IgY3JlYXRpbmcgdGhpcyBjb2RlIHdhcyB1c2luZyBpdCBmb3IgZGlnaXRhbCBwYXltZW50IHN5c3RlbXMgaG93ZXZlciB0aGlzIGlzIG5vdCB1c2VkIGN1cnJlbnRseS5cbiAgICovXG4gIHwgNDAyXG4gIC8qKlxuICAgKiBQRVJNQU5FTlRfUkVESVJFQ1RcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NTM4I3NlY3Rpb24tM1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHRoYXQgdGhlIHJlc291cmNlIGlzIG5vdyBwZXJtYW5lbnRseSBsb2NhdGVkIGF0IGFub3RoZXIgVVJJLCBzcGVjaWZpZWQgYnkgdGhlIExvY2F0aW9uOiBIVFRQIFJlc3BvbnNlIGhlYWRlci4gVGhpcyBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSAzMDEgTW92ZWQgUGVybWFuZW50bHkgSFRUUCByZXNwb25zZSBjb2RlLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgdXNlciBhZ2VudCBtdXN0IG5vdCBjaGFuZ2UgdGhlIEhUVFAgbWV0aG9kIHVzZWQ6IGlmIGEgUE9TVCB3YXMgdXNlZCBpbiB0aGUgZmlyc3QgcmVxdWVzdCwgYSBQT1NUIG11c3QgYmUgdXNlZCBpbiB0aGUgc2Vjb25kIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwOFxuICAvKipcbiAgICogUFJFQ09ORElUSU9OX0ZBSUxFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzIjc2VjdGlvbi00LjJcbiAgICpcbiAgICogVGhlIGNsaWVudCBoYXMgaW5kaWNhdGVkIHByZWNvbmRpdGlvbnMgaW4gaXRzIGhlYWRlcnMgd2hpY2ggdGhlIHNlcnZlciBkb2VzIG5vdCBtZWV0LlxuICAgKi9cbiAgfCA0MTJcbiAgLyoqXG4gICAqIFBSRUNPTkRJVElPTl9SRVFVSVJFRFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY1ODUjc2VjdGlvbi0zXG4gICAqXG4gICAqIFRoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsLiBJbnRlbmRlZCB0byBwcmV2ZW50IHRoZSAnbG9zdCB1cGRhdGUnIHByb2JsZW0sIHdoZXJlIGEgY2xpZW50IEdFVHMgYSByZXNvdXJjZSdzIHN0YXRlLCBtb2RpZmllcyBpdCwgYW5kIFBVVHMgaXQgYmFjayB0byB0aGUgc2VydmVyLCB3aGVuIG1lYW53aGlsZSBhIHRoaXJkIHBhcnR5IGhhcyBtb2RpZmllZCB0aGUgc3RhdGUgb24gdGhlIHNlcnZlciwgbGVhZGluZyB0byBhIGNvbmZsaWN0LlxuICAgKi9cbiAgfCA0MjhcbiAgLyoqXG4gICAqIFBST0NFU1NJTkdcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuMVxuICAgKlxuICAgKiBUaGlzIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlIHNlcnZlciBoYXMgcmVjZWl2ZWQgYW5kIGlzIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QsIGJ1dCBubyByZXNwb25zZSBpcyBhdmFpbGFibGUgeWV0LlxuICAgKi9cbiAgfCAxMDJcbiAgLyoqXG4gICAqIFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMlxuICAgKlxuICAgKiBUaGlzIGlzIHNpbWlsYXIgdG8gNDAxIGJ1dCBhdXRoZW50aWNhdGlvbiBpcyBuZWVkZWQgdG8gYmUgZG9uZSBieSBhIHByb3h5LlxuICAgKi9cbiAgfCA0MDdcbiAgLyoqXG4gICAqIFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTg1I3NlY3Rpb24tNVxuICAgKlxuICAgKiBUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4gVGhlIHJlcXVlc3QgTUFZIGJlIHJlc3VibWl0dGVkIGFmdGVyIHJlZHVjaW5nIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IGhlYWRlciBmaWVsZHMuXG4gICAqL1xuICB8IDQzMVxuICAvKipcbiAgICogUkVRVUVTVF9USU1FT1VUXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS43XG4gICAqXG4gICAqIFRoaXMgcmVzcG9uc2UgaXMgc2VudCBvbiBhbiBpZGxlIGNvbm5lY3Rpb24gYnkgc29tZSBzZXJ2ZXJzLCBldmVuIHdpdGhvdXQgYW55IHByZXZpb3VzIHJlcXVlc3QgYnkgdGhlIGNsaWVudC4gSXQgbWVhbnMgdGhhdCB0aGUgc2VydmVyIHdvdWxkIGxpa2UgdG8gc2h1dCBkb3duIHRoaXMgdW51c2VkIGNvbm5lY3Rpb24uIFRoaXMgcmVzcG9uc2UgaXMgdXNlZCBtdWNoIG1vcmUgc2luY2Ugc29tZSBicm93c2VycywgbGlrZSBDaHJvbWUsIEZpcmVmb3ggMjcrLCBvciBJRTksIHVzZSBIVFRQIHByZS1jb25uZWN0aW9uIG1lY2hhbmlzbXMgdG8gc3BlZWQgdXAgc3VyZmluZy4gQWxzbyBub3RlIHRoYXQgc29tZSBzZXJ2ZXJzIG1lcmVseSBzaHV0IGRvd24gdGhlIGNvbm5lY3Rpb24gd2l0aG91dCBzZW5kaW5nIHRoaXMgbWVzc2FnZS5cbiAgICovXG4gIHwgNDA4XG4gIC8qKlxuICAgKiBSRVFVRVNUX1RPT19MT05HXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xMVxuICAgKlxuICAgKiBSZXF1ZXN0IGVudGl0eSBpcyBsYXJnZXIgdGhhbiBsaW1pdHMgZGVmaW5lZCBieSBzZXJ2ZXI7IHRoZSBzZXJ2ZXIgbWlnaHQgY2xvc2UgdGhlIGNvbm5lY3Rpb24gb3IgcmV0dXJuIGFuIFJldHJ5LUFmdGVyIGhlYWRlciBmaWVsZC5cbiAgICovXG4gIHwgNDEzXG4gIC8qKlxuICAgKiBSRVFVRVNUX1VSSV9UT09fTE9OR1xuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjUuMTJcbiAgICpcbiAgICogVGhlIFVSSSByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCBpcyBsb25nZXIgdGhhbiB0aGUgc2VydmVyIGlzIHdpbGxpbmcgdG8gaW50ZXJwcmV0LlxuICAgKi9cbiAgfCA0MTRcbiAgLyoqXG4gICAqIFJFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEVcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMzI3NlY3Rpb24tNC40XG4gICAqXG4gICAqIFRoZSByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIFJhbmdlIGhlYWRlciBmaWVsZCBpbiB0aGUgcmVxdWVzdCBjYW4ndCBiZSBmdWxmaWxsZWQ7IGl0J3MgcG9zc2libGUgdGhhdCB0aGUgcmFuZ2UgaXMgb3V0c2lkZSB0aGUgc2l6ZSBvZiB0aGUgdGFyZ2V0IFVSSSdzIGRhdGEuXG4gICAqL1xuICB8IDQxNlxuICAvKipcbiAgICogUkVTRVRfQ09OVEVOVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjMuNlxuICAgKlxuICAgKiBUaGlzIHJlc3BvbnNlIGNvZGUgaXMgc2VudCBhZnRlciBhY2NvbXBsaXNoaW5nIHJlcXVlc3QgdG8gdGVsbCB1c2VyIGFnZW50IHJlc2V0IGRvY3VtZW50IHZpZXcgd2hpY2ggc2VudCB0aGlzIHJlcXVlc3QuXG4gICAqL1xuICB8IDIwNVxuICAvKipcbiAgICogU0VFX09USEVSXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNC40XG4gICAqXG4gICAqIFNlcnZlciBzZW50IHRoaXMgcmVzcG9uc2UgdG8gZGlyZWN0aW5nIGNsaWVudCB0byBnZXQgcmVxdWVzdGVkIHJlc291cmNlIHRvIGFub3RoZXIgVVJJIHdpdGggYW4gR0VUIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwM1xuICAvKipcbiAgICogU0VSVklDRV9VTkFWQUlMQUJMRVxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjYuNFxuICAgKlxuICAgKiBUaGUgc2VydmVyIGlzIG5vdCByZWFkeSB0byBoYW5kbGUgdGhlIHJlcXVlc3QuIENvbW1vbiBjYXVzZXMgYXJlIGEgc2VydmVyIHRoYXQgaXMgZG93biBmb3IgbWFpbnRlbmFuY2Ugb3IgdGhhdCBpcyBvdmVybG9hZGVkLiBOb3RlIHRoYXQgdG9nZXRoZXIgd2l0aCB0aGlzIHJlc3BvbnNlLCBhIHVzZXItZnJpZW5kbHkgcGFnZSBleHBsYWluaW5nIHRoZSBwcm9ibGVtIHNob3VsZCBiZSBzZW50LiBUaGlzIHJlc3BvbnNlcyBzaG91bGQgYmUgdXNlZCBmb3IgdGVtcG9yYXJ5IGNvbmRpdGlvbnMgYW5kIHRoZSBSZXRyeS1BZnRlcjogSFRUUCBoZWFkZXIgc2hvdWxkLCBpZiBwb3NzaWJsZSwgY29udGFpbiB0aGUgZXN0aW1hdGVkIHRpbWUgYmVmb3JlIHRoZSByZWNvdmVyeSBvZiB0aGUgc2VydmljZS4gVGhlIHdlYm1hc3RlciBtdXN0IGFsc28gdGFrZSBjYXJlIGFib3V0IHRoZSBjYWNoaW5nLXJlbGF0ZWQgaGVhZGVycyB0aGF0IGFyZSBzZW50IGFsb25nIHdpdGggdGhpcyByZXNwb25zZSwgYXMgdGhlc2UgdGVtcG9yYXJ5IGNvbmRpdGlvbiByZXNwb25zZXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGNhY2hlZC5cbiAgICovXG4gIHwgNTAzXG4gIC8qKlxuICAgKiBTV0lUQ0hJTkdfUFJPVE9DT0xTXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuMi4yXG4gICAqXG4gICAqIFRoaXMgY29kZSBpcyBzZW50IGluIHJlc3BvbnNlIHRvIGFuIFVwZ3JhZGUgcmVxdWVzdCBoZWFkZXIgYnkgdGhlIGNsaWVudCwgYW5kIGluZGljYXRlcyB0aGUgcHJvdG9jb2wgdGhlIHNlcnZlciBpcyBzd2l0Y2hpbmcgdG9vLlxuICAgKi9cbiAgfCAxMDFcbiAgLyoqXG4gICAqIFRFTVBPUkFSWV9SRURJUkVDVFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuN1xuICAgKlxuICAgKiBTZXJ2ZXIgc2VudCB0aGlzIHJlc3BvbnNlIHRvIGRpcmVjdGluZyBjbGllbnQgdG8gZ2V0IHJlcXVlc3RlZCByZXNvdXJjZSB0byBhbm90aGVyIFVSSSB3aXRoIHNhbWUgbWV0aG9kIHRoYXQgdXNlZCBwcmlvciByZXF1ZXN0LiBUaGlzIGhhcyB0aGUgc2FtZSBzZW1hbnRpYyB0aGFuIHRoZSAzMDIgRm91bmQgSFRUUCByZXNwb25zZSBjb2RlLCB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCB0aGUgdXNlciBhZ2VudCBtdXN0IG5vdCBjaGFuZ2UgdGhlIEhUVFAgbWV0aG9kIHVzZWQ6IGlmIGEgUE9TVCB3YXMgdXNlZCBpbiB0aGUgZmlyc3QgcmVxdWVzdCwgYSBQT1NUIG11c3QgYmUgdXNlZCBpbiB0aGUgc2Vjb25kIHJlcXVlc3QuXG4gICAqL1xuICB8IDMwN1xuICAvKipcbiAgICogVE9PX01BTllfUkVRVUVTVFNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2NTg1I3NlY3Rpb24tNFxuICAgKlxuICAgKiBUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyBpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lIChcInJhdGUgbGltaXRpbmdcIikuXG4gICAqL1xuICB8IDQyOVxuICAvKipcbiAgICogVU5BVVRIT1JJWkVEXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNSNzZWN0aW9uLTMuMVxuICAgKlxuICAgKiBBbHRob3VnaCB0aGUgSFRUUCBzdGFuZGFyZCBzcGVjaWZpZXMgXCJ1bmF1dGhvcml6ZWRcIiwgc2VtYW50aWNhbGx5IHRoaXMgcmVzcG9uc2UgbWVhbnMgXCJ1bmF1dGhlbnRpY2F0ZWRcIi4gVGhhdCBpcywgdGhlIGNsaWVudCBtdXN0IGF1dGhlbnRpY2F0ZSBpdHNlbGYgdG8gZ2V0IHRoZSByZXF1ZXN0ZWQgcmVzcG9uc2UuXG4gICAqL1xuICB8IDQwMVxuICAvKipcbiAgICogVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlNcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NzI1XG4gICAqXG4gICAqIFRoZSB1c2VyLWFnZW50IHJlcXVlc3RlZCBhIHJlc291cmNlIHRoYXQgY2Fubm90IGxlZ2FsbHkgYmUgcHJvdmlkZWQsIHN1Y2ggYXMgYSB3ZWIgcGFnZSBjZW5zb3JlZCBieSBhIGdvdmVybm1lbnQuXG4gICAqL1xuICB8IDQ1MVxuICAvKipcbiAgICogVU5QUk9DRVNTQUJMRV9FTlRJVFlcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTE4I3NlY3Rpb24tMTAuM1xuICAgKlxuICAgKiBUaGUgcmVxdWVzdCB3YXMgd2VsbC1mb3JtZWQgYnV0IHdhcyB1bmFibGUgdG8gYmUgZm9sbG93ZWQgZHVlIHRvIHNlbWFudGljIGVycm9ycy5cbiAgICovXG4gIHwgNDIyXG4gIC8qKlxuICAgKiBVTlNVUFBPUlRFRF9NRURJQV9UWVBFXG4gICAqIE9mZmljaWFsIERvY3VtZW50YXRpb24gQCBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYuNS4xM1xuICAgKlxuICAgKiBUaGUgbWVkaWEgZm9ybWF0IG9mIHRoZSByZXF1ZXN0ZWQgZGF0YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIsIHNvIHRoZSBzZXJ2ZXIgaXMgcmVqZWN0aW5nIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgfCA0MTVcbiAgLyoqXG4gICAqIFVTRV9QUk9YWVxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiBPZmZpY2lhbCBEb2N1bWVudGF0aW9uIEAgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02LjQuNlxuICAgKlxuICAgKiBXYXMgZGVmaW5lZCBpbiBhIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIEhUVFAgc3BlY2lmaWNhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IGEgcmVxdWVzdGVkIHJlc3BvbnNlIG11c3QgYmUgYWNjZXNzZWQgYnkgYSBwcm94eS4gSXQgaGFzIGJlZW4gZGVwcmVjYXRlZCBkdWUgdG8gc2VjdXJpdHkgY29uY2VybnMgcmVnYXJkaW5nIGluLWJhbmQgY29uZmlndXJhdGlvbiBvZiBhIHByb3h5LlxuICAgKi9cbiAgfCAzMDVcbiAgLyoqXG4gICAqIE1JU0RJUkVDVEVEX1JFUVVFU1RcbiAgICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzU0MCNzZWN0aW9uLTkuMS4yXG4gICAqXG4gICAqIERlZmluZWQgaW4gdGhlIHNwZWNpZmljYXRpb24gb2YgSFRUUC8yIHRvIGluZGljYXRlIHRoYXQgYSBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcHJvZHVjZSBhIHJlc3BvbnNlIGZvciB0aGUgY29tYmluYXRpb24gb2Ygc2NoZW1lIGFuZCBhdXRob3JpdHkgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgVVJJLlxuICAgKi9cbiAgfCA0MjE7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgUHJvYmxlbSBEb2N1bWVudHMsIHdoaWNoIGluY2x1ZGVzIHRoZSBub24tZXh0ZW5zaW9uIGZpZWxkc1xuICovXG5leHBvcnQgdHlwZSBCYXNlUHJvYmxlbURvY3VtZW50UHJvcGVydGllcyA9IHtcbiAgLyoqXG4gICAqIEEgVVJJIHJlZmVyZW5jZSBbe0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiBSRkMzOTg2fV0gdGhhdCBpZGVudGlmaWVzIHRoZVxuICAgKiBwcm9ibGVtIHR5cGUuICBUaGlzIHNwZWNpZmljYXRpb24gZW5jb3VyYWdlcyB0aGF0LCB3aGVuXG4gICAqIGRlcmVmZXJlbmNlZCwgaXQgcHJvdmlkZSBodW1hbi1yZWFkYWJsZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICogcHJvYmxlbSB0eXBlIChlLmcuLCB1c2luZyBIVE1MIFt7QGxpbmsgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3ODA3I3JlZi1XM0MuUkVDLWh0bWw1LTIwMTQxMDI4IFczQy5SRUMtaHRtbDUtMjAxNDEwMjh9XSkuICBXaGVuXG4gICAqIHRoaXMgbWVtYmVyIGlzIG5vdCBwcmVzZW50LCBpdHMgdmFsdWUgaXMgYXNzdW1lZCB0byBiZVxuICAgKiBcImFib3V0OmJsYW5rXCIuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBzaG9ydCwgaHVtYW4tcmVhZGFibGUgc3VtbWFyeSBvZiB0aGUgcHJvYmxlbVxuICAgKiB0eXBlLiAgSXQgU0hPVUxEIE5PVCBjaGFuZ2UgZnJvbSBvY2N1cnJlbmNlIHRvIG9jY3VycmVuY2Ugb2YgdGhlXG4gICAqIHByb2JsZW0sIGV4Y2VwdCBmb3IgcHVycG9zZXMgb2YgbG9jYWxpemF0aW9uIChlLmcuLCB1c2luZ1xuICAgKiBwcm9hY3RpdmUgY29udGVudCBuZWdvdGlhdGlvbjsgc2VlIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzEjc2VjdGlvbi0zLjQgW1JGQzcyMzFdLCBTZWN0aW9uIDMuNH0pLlxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgSFRUUCBzdGF0dXMgY29kZSAoe0BsaW5rIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYgW1JGQzcyMzFdLCBTZWN0aW9uIDZ9KVxuICAgKiBnZW5lcmF0ZWQgYnkgdGhlIG9yaWdpbiBzZXJ2ZXIgZm9yIHRoaXMgb2NjdXJyZW5jZSBvZiB0aGUgcHJvYmxlbS5cbiAgICovXG4gIHN0YXR1cz86IFN0YXR1c0NvZGU7XG4gIC8qKlxuICAgKiBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uIHNwZWNpZmljIHRvIHRoaXMgb2NjdXJyZW5jZSBvZiB0aGUgcHJvYmxlbS5cbiAgICovXG4gIGRldGFpbD86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgVVJJIHJlZmVyZW5jZSB0aGF0IGlkZW50aWZpZXMgdGhlIHNwZWNpZmljXG4gICAqIG9jY3VycmVuY2Ugb2YgdGhlIHByb2JsZW0uICBJdCBtYXkgb3IgbWF5IG5vdCB5aWVsZCBmdXJ0aGVyXG4gICAqIGluZm9ybWF0aW9uIGlmIGRlcmVmZXJlbmNlZC5cbiAgICovXG4gIGluc3RhbmNlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBUaGUgUHJvYmxlbSBEb2N1bWVudCB3aXRoIGV4dGVuc2lvbnNcbiAqXG4gKiBOb3RlIHRoZSB1c2Ugb2YgT21pdCwgdGhpcyBhbGxvd3MgYXV0by1jb21wbGV0aW9uIG9mIHRoZSBiYXNlIGZpZWxkc1xuICovXG5leHBvcnQgdHlwZSBQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzID0gT21pdDxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGtleW9mIEJhc2VQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzXG4+ICZcbiAgQmFzZVByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXM7XG5cbi8qKlxuICpcbiAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBSRkM3ODA3IFwicHJvYmxlbSBkZXRhaWxcIiwgYSB3YXkgdG8gY2FycnkgbWFjaGluZS1cbiAqIHJlYWRhYmxlIGRldGFpbHMgb2YgZXJyb3JzIGluIGEgSFRUUCByZXNwb25zZSB0byBhdm9pZCB0aGUgbmVlZCB0b1xuICogZGVmaW5lIG5ldyBlcnJvciByZXNwb25zZSBmb3JtYXRzIGZvciBIVFRQIEFQSXMuXG4gKlxuICogT2ZmaWNpYWwgRG9jdW1lbnRhdGlvbiBAIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzgwN1xuICpcbiAqIENvbnN1bWVycyBNVVNUIHVzZSB0aGUgXCJ0eXBlXCIgc3RyaW5nIGFzIHRoZSBwcmltYXJ5IGlkZW50aWZpZXIgZm9yXG4gKiB0aGUgcHJvYmxlbSB0eXBlOyB0aGUgXCJ0aXRsZVwiIHN0cmluZyBpcyBhZHZpc29yeSBhbmQgaW5jbHVkZWQgb25seVxuICogZm9yIHVzZXJzIHdobyBhcmUgbm90IGF3YXJlIG9mIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSBhbmQgZG8gbm90XG4gKiBoYXZlIHRoZSBhYmlsaXR5IHRvIGRpc2NvdmVyIHRoZW0gKGUuZy4sIG9mZmxpbmUgbG9nIGFuYWx5c2lzKS5cbiAqIENvbnN1bWVycyBTSE9VTEQgTk9UIGF1dG9tYXRpY2FsbHkgZGVyZWZlcmVuY2UgdGhlIHR5cGUgVVJJLlxuICpcbiAqIFRoZSBcInN0YXR1c1wiIG1lbWJlciwgaWYgcHJlc2VudCwgaXMgb25seSBhZHZpc29yeTsgaXQgY29udmV5cyB0aGVcbiAqIEhUVFAgc3RhdHVzIGNvZGUgdXNlZCBmb3IgdGhlIGNvbnZlbmllbmNlIG9mIHRoZSBjb25zdW1lci5cbiAqIEdlbmVyYXRvcnMgTVVTVCB1c2UgdGhlIHNhbWUgc3RhdHVzIGNvZGUgaW4gdGhlIGFjdHVhbCBIVFRQIHJlc3BvbnNlLFxuICogdG8gYXNzdXJlIHRoYXQgZ2VuZXJpYyBIVFRQIHNvZnR3YXJlIHRoYXQgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGlzXG4gKiBmb3JtYXQgc3RpbGwgYmVoYXZlcyBjb3JyZWN0bHkuICBTZWUgU2VjdGlvbiA1IGZvciBmdXJ0aGVyIGNhdmVhdHNcbiAqIHJlZ2FyZGluZyBpdHMgdXNlLlxuICpcbiAqIENvbnN1bWVycyBjYW4gdXNlIHRoZSBzdGF0dXMgbWVtYmVyIHRvIGRldGVybWluZSB3aGF0IHRoZSBvcmlnaW5hbFxuICogc3RhdHVzIGNvZGUgdXNlZCBieSB0aGUgZ2VuZXJhdG9yIHdhcywgaW4gY2FzZXMgd2hlcmUgaXQgaGFzIGJlZW5cbiAqIGNoYW5nZWQgKGUuZy4sIGJ5IGFuIGludGVybWVkaWFyeSBvciBjYWNoZSksIGFuZCB3aGVuIG1lc3NhZ2UgYm9kaWVzXG4gKiBwZXJzaXN0IHdpdGhvdXQgSFRUUCBpbmZvcm1hdGlvbi4gIEdlbmVyaWMgSFRUUCBzb2Z0d2FyZSB3aWxsIHN0aWxsXG4gKiB1c2UgdGhlIEhUVFAgc3RhdHVzIGNvZGUuXG4gKlxuICogVGhlIFwiZGV0YWlsXCIgbWVtYmVyLCBpZiBwcmVzZW50LCBvdWdodCB0byBmb2N1cyBvbiBoZWxwaW5nIHRoZSBjbGllbnRcbiAqIGNvcnJlY3QgdGhlIHByb2JsZW0sIHJhdGhlciB0aGFuIGdpdmluZyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uXG4gKlxuICogQ29uc3VtZXJzIFNIT1VMRCBOT1QgcGFyc2UgdGhlIFwiZGV0YWlsXCIgbWVtYmVyIGZvciBpbmZvcm1hdGlvbjtcbiAqIGV4dGVuc2lvbnMgYXJlIG1vcmUgc3VpdGFibGUgYW5kIGxlc3MgZXJyb3ItcHJvbmUgd2F5cyB0byBvYnRhaW4gc3VjaFxuICogaW5mb3JtYXRpb24uXG4gKlxuICogTm90ZSB0aGF0IGJvdGgge0BsaW5rIEJhc2VQcm9ibGVtRG9jdW1lbnRQcm9wZXJ0aWVzLnR5cGUgdHlwZX0gYW5kIHtAbGluayBCYXNlUHJvYmxlbURvY3VtZW50UHJvcGVydGllcy5pbnN0YW5jZSBpbnN0YW5jZX0gYWNjZXB0IHJlbGF0aXZlIFVSSXM7IHRoaXMgbWVhbnNcbiAqIHRoYXQgdGhleSBtdXN0IGJlIHJlc29sdmVkIHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCdzIGJhc2UgVVJJLCBhc1xuICogcGVyIHtAbGluayBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01IFtSRkMzOTg2XSwgU2VjdGlvbiA1fS5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2JsZW1Eb2N1bWVudCBpbXBsZW1lbnRzIFByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXMge1xuICBkZXRhaWw/OiBzdHJpbmc7XG4gIGluc3RhbmNlPzogc3RyaW5nO1xuICBzdGF0dXM/OiBTdGF0dXNDb2RlO1xuICB0aXRsZT86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgW2s6IHN0cmluZ106IHVua25vd247XG4gIC8qKlxuICAgKlxuICAgKiBjb25zdHJ1Y3QgYSBuZXcgUHJvYmxlbURvY3VtZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSBkYXRhIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGE6IFByb2JsZW1Eb2N1bWVudFByb3BlcnRpZXMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRhdGEpO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"scripts": {
|
|
9
9
|
"build": "npm run compile && npm run test && npm run package",
|
|
10
10
|
"compile": "tsc --build",
|
|
11
|
-
"eslint": "eslint --
|
|
12
|
-
"eslint:json": "eslint --no-
|
|
11
|
+
"eslint": "eslint --fix src test",
|
|
12
|
+
"eslint:json": "eslint --no-error-on-unmatched-pattern \"**/*.json\"",
|
|
13
13
|
"package": "mkdir -p dist/js && npm pack --pack-destination dist/js",
|
|
14
14
|
"prepare": "husky",
|
|
15
15
|
"spellcheck": "cspell lint --gitignore --dot --show-suggestions -e \".git/**\" \"**\"",
|
|
@@ -28,29 +28,26 @@
|
|
|
28
28
|
"@commitlint/cli": "^20",
|
|
29
29
|
"@commitlint/config-conventional": "^20",
|
|
30
30
|
"@types/http-status-codes": "^1.2.0",
|
|
31
|
-
"@types/jest": "^
|
|
31
|
+
"@types/jest": "^30",
|
|
32
32
|
"@types/node": "^22",
|
|
33
|
-
"@typescript-eslint/eslint-plugin": "^5",
|
|
34
|
-
"@typescript-eslint/parser": "^5",
|
|
35
33
|
"cspell": "*",
|
|
36
34
|
"dry-aged-deps": "^2.6.0",
|
|
37
|
-
"eslint": "^
|
|
38
|
-
"eslint-config-prettier": "^
|
|
39
|
-
"eslint-
|
|
40
|
-
"eslint-
|
|
41
|
-
"eslint-plugin-
|
|
42
|
-
"eslint-plugin-jsdoc": "^39.3.2",
|
|
43
|
-
"eslint-plugin-jsonc": "^2.3.0",
|
|
44
|
-
"eslint-plugin-no-secrets": "^0.8.9",
|
|
35
|
+
"eslint": "^10",
|
|
36
|
+
"eslint-config-prettier": "^10",
|
|
37
|
+
"eslint-plugin-jsdoc": "^62",
|
|
38
|
+
"eslint-plugin-jsonc": "^3",
|
|
39
|
+
"eslint-plugin-no-secrets": "^2",
|
|
45
40
|
"eslint-plugin-prettier": "^5",
|
|
46
|
-
"eslint-plugin-unicorn": "^
|
|
41
|
+
"eslint-plugin-unicorn": "^63",
|
|
42
|
+
"jsonc-eslint-parser": "^3",
|
|
43
|
+
"typescript-eslint": "^8",
|
|
47
44
|
"http-status-codes": "^2.2.0",
|
|
48
45
|
"husky": "^9",
|
|
49
|
-
"jest": "^
|
|
50
|
-
"jest-junit": "^
|
|
46
|
+
"jest": "^29",
|
|
47
|
+
"jest-junit": "^16",
|
|
51
48
|
"json-schema": "^0.4.0",
|
|
52
49
|
"prettier": "^3",
|
|
53
|
-
"ts-jest": "^
|
|
50
|
+
"ts-jest": "^29",
|
|
54
51
|
"typescript": "^5"
|
|
55
52
|
},
|
|
56
53
|
"keywords": [
|
|
@@ -63,7 +60,7 @@
|
|
|
63
60
|
"publishConfig": {
|
|
64
61
|
"access": "public"
|
|
65
62
|
},
|
|
66
|
-
"version": "0.0.
|
|
63
|
+
"version": "0.0.56",
|
|
67
64
|
"bugs": {
|
|
68
65
|
"url": "https://github.com/mountain-pass/problem-document/issues"
|
|
69
66
|
},
|
|
@@ -109,10 +106,13 @@
|
|
|
109
106
|
]
|
|
110
107
|
],
|
|
111
108
|
"preset": "ts-jest",
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
|
|
109
|
+
"transform": {
|
|
110
|
+
"^.+\\.tsx?$": [
|
|
111
|
+
"ts-jest",
|
|
112
|
+
{
|
|
113
|
+
"tsconfig": "tsconfig.dev.json"
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
118
|
"types": "lib/index.d.ts",
|
package/.eslintignore
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
.commitlintrc.json
|
|
2
|
-
.cspell.json
|
|
3
|
-
.eslintignore
|
|
4
|
-
.eslintrc-json.json
|
|
5
|
-
.eslintrc.json
|
|
6
|
-
.gitattributes
|
|
7
|
-
.github/pull_request_template.md
|
|
8
|
-
.github/workflows/auto-approve.yml
|
|
9
|
-
.github/workflows/build.yml
|
|
10
|
-
.github/workflows/pull-request-lint.yml
|
|
11
|
-
.github/workflows/release.yml
|
|
12
|
-
.github/workflows/upgrade-main.yml
|
|
13
|
-
.gitignore
|
|
14
|
-
.husky/commit-msg
|
|
15
|
-
.husky/pre-commit
|
|
16
|
-
.husky/pre-push
|
|
17
|
-
.npmignore
|
|
18
|
-
.prettierignore
|
|
19
|
-
.prettierrc.json
|
|
20
|
-
.vscode/extensions.json
|
|
21
|
-
.vscode/settings.json
|
|
22
|
-
CODE_OF_CONDUCT.md
|
|
23
|
-
LICENSE
|
|
24
|
-
package.json
|
|
25
|
-
tsconfig.dev.json
|
|
26
|
-
tsconfig.json
|
package/.eslintrc-json.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"env": {
|
|
3
|
-
"jest": true,
|
|
4
|
-
"node": true
|
|
5
|
-
},
|
|
6
|
-
"root": true,
|
|
7
|
-
"plugins": [
|
|
8
|
-
"prettier",
|
|
9
|
-
"no-secrets"
|
|
10
|
-
],
|
|
11
|
-
"extends": [
|
|
12
|
-
"plugin:jsonc/recommended-with-jsonc",
|
|
13
|
-
"plugin:jsonc/prettier"
|
|
14
|
-
],
|
|
15
|
-
"ignorePatterns": [
|
|
16
|
-
"*.js",
|
|
17
|
-
"!.projenrc.ts",
|
|
18
|
-
"*.d.ts",
|
|
19
|
-
"node_modules/",
|
|
20
|
-
"*.generated.ts",
|
|
21
|
-
"coverage"
|
|
22
|
-
],
|
|
23
|
-
"rules": {
|
|
24
|
-
"no-secrets/no-secrets": "error"
|
|
25
|
-
}
|
|
26
|
-
}
|