@angular/compiler-cli 9.0.3 → 9.0.7

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.
Files changed (71) hide show
  1. package/ngcc/index.d.ts +2 -2
  2. package/ngcc/index.js +4 -3
  3. package/ngcc/main-ngcc.js +4 -3
  4. package/ngcc/src/dependencies/dependency_resolver.d.ts +7 -1
  5. package/ngcc/src/dependencies/dependency_resolver.js +20 -6
  6. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.d.ts +3 -2
  7. package/ngcc/src/entry_point_finder/directory_walker_entry_point_finder.js +36 -21
  8. package/ngcc/src/entry_point_finder/targeted_entry_point_finder.js +15 -10
  9. package/ngcc/src/execution/api.d.ts +2 -4
  10. package/ngcc/src/execution/api.js +1 -1
  11. package/ngcc/src/execution/cluster/executor.d.ts +2 -2
  12. package/ngcc/src/execution/cluster/executor.js +1 -1
  13. package/ngcc/src/execution/cluster/master.js +15 -8
  14. package/ngcc/src/execution/single_process_executor.d.ts +13 -7
  15. package/ngcc/src/execution/single_process_executor.js +55 -38
  16. package/ngcc/src/execution/utils.js +1 -1
  17. package/ngcc/src/host/commonjs_host.js +2 -7
  18. package/ngcc/src/host/delegating_host.d.ts +44 -0
  19. package/ngcc/src/host/delegating_host.js +146 -0
  20. package/ngcc/src/host/esm5_host.js +1 -7
  21. package/ngcc/src/host/umd_host.js +2 -7
  22. package/ngcc/src/locking/lock_file.d.ts +29 -0
  23. package/ngcc/src/locking/lock_file.js +17 -0
  24. package/ngcc/src/locking/lock_file_with_child_process/index.d.ts +41 -0
  25. package/ngcc/src/locking/lock_file_with_child_process/index.js +91 -0
  26. package/ngcc/src/locking/lock_file_with_child_process/unlocker.d.ts +2 -0
  27. package/ngcc/src/locking/lock_file_with_child_process/unlocker.js +44 -0
  28. package/ngcc/src/locking/lock_file_with_child_process/util.d.ts +17 -0
  29. package/ngcc/src/locking/lock_file_with_child_process/util.js +42 -0
  30. package/ngcc/src/locking/sync_locker.d.ts +36 -0
  31. package/ngcc/src/locking/sync_locker.js +67 -0
  32. package/ngcc/src/logging/console_logger.d.ts +3 -9
  33. package/ngcc/src/logging/console_logger.js +16 -15
  34. package/ngcc/src/logging/logger.d.ts +7 -0
  35. package/ngcc/src/logging/logger.js +8 -1
  36. package/ngcc/src/main.js +32 -24
  37. package/ngcc/src/packages/build_marker.d.ts +1 -1
  38. package/ngcc/src/packages/build_marker.js +1 -1
  39. package/ngcc/src/packages/configuration.d.ts +8 -0
  40. package/ngcc/src/packages/configuration.js +2 -2
  41. package/ngcc/src/packages/entry_point.d.ts +26 -2
  42. package/ngcc/src/packages/entry_point.js +34 -24
  43. package/ngcc/src/packages/transformer.js +8 -4
  44. package/ngcc/src/rendering/dts_renderer.js +2 -2
  45. package/ngcc/src/rendering/renderer.js +2 -2
  46. package/ngcc/src/rendering/source_maps.d.ts +2 -1
  47. package/ngcc/src/rendering/source_maps.js +24 -13
  48. package/ngcc/src/sourcemaps/segment_marker.d.ts +7 -15
  49. package/ngcc/src/sourcemaps/segment_marker.js +12 -41
  50. package/ngcc/src/sourcemaps/source_file.d.ts +31 -4
  51. package/ngcc/src/sourcemaps/source_file.js +130 -37
  52. package/package.json +2 -2
  53. package/src/ngtsc/annotations/src/directive.js +3 -2
  54. package/src/ngtsc/core/api/index.d.ts +11 -0
  55. package/src/ngtsc/core/api/index.js +20 -0
  56. package/src/ngtsc/core/api/src/interfaces.d.ts +65 -0
  57. package/src/ngtsc/core/api/src/interfaces.js +20 -0
  58. package/src/ngtsc/core/api/src/options.d.ts +32 -0
  59. package/src/ngtsc/core/api/src/options.js +20 -0
  60. package/src/ngtsc/core/{api.d.ts → api/src/public_options.d.ts} +14 -81
  61. package/src/ngtsc/core/api/src/public_options.js +20 -0
  62. package/src/ngtsc/diagnostics/src/error_code.d.ts +9 -0
  63. package/src/ngtsc/diagnostics/src/error_code.js +10 -1
  64. package/src/ngtsc/scope/src/local.js +50 -47
  65. package/src/ngtsc/typecheck/src/oob.d.ts +10 -0
  66. package/src/ngtsc/typecheck/src/oob.js +14 -1
  67. package/src/ngtsc/typecheck/src/type_check_block.js +11 -2
  68. package/src/version.js +1 -1
  69. package/ngcc/src/execution/lock_file.d.ts +0 -43
  70. package/ngcc/src/execution/lock_file.js +0 -129
  71. package/src/ngtsc/core/api.js +0 -20
package/src/version.js CHANGED
@@ -22,6 +22,6 @@
22
22
  * Entry point for all public APIs of the common package.
23
23
  */
24
24
  var compiler_1 = require("@angular/compiler");
25
- exports.VERSION = new compiler_1.Version('9.0.3');
25
+ exports.VERSION = new compiler_1.Version('9.0.7');
26
26
  });
27
27
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyLWNsaS9zcmMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVIOzs7O09BSUc7SUFFSCw4Q0FBMEM7SUFFN0IsUUFBQSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBjb21tb24gcGFja2FnZS5cbiAqL1xuXG5pbXBvcnQge1ZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==
@@ -1,43 +0,0 @@
1
- /// <amd-module name="@angular/compiler-cli/ngcc/src/execution/lock_file" />
2
- import { FileSystem } from '../../../src/ngtsc/file_system';
3
- /**
4
- * The LockFile is used to prevent more than one instance of ngcc executing at the same time.
5
- *
6
- * When ngcc starts executing, it creates a file in the `compiler-cli/ngcc` folder. If it finds one
7
- * is already there then it fails with a suitable error message.
8
- * When ngcc completes executing, it removes the file so that future ngcc executions can start.
9
- */
10
- export declare class LockFile {
11
- private fs;
12
- lockFilePath: import("@angular/compiler-cli/src/ngtsc/file_system/src/types").BrandedPath<"AbsoluteFsPath">;
13
- constructor(fs: FileSystem);
14
- /**
15
- * Run a function guarded by the lock file.
16
- *
17
- * Note that T can be a Promise. If so, we run the `remove()` call in the promise's `finally`
18
- * handler. Otherwise we run the `remove()` call in the `try...finally` block.
19
- *
20
- * @param fn The function to run.
21
- */
22
- lock<T>(fn: () => T): T;
23
- /**
24
- * Write a lock file to disk, or error if there is already one there.
25
- */
26
- protected create(): void;
27
- /**
28
- * Remove the lock file from disk.
29
- */
30
- protected remove(): void;
31
- protected addSignalHandlers(): void;
32
- protected removeSignalHandlers(): void;
33
- /**
34
- * This handle needs to be defined as a property rather than a method
35
- * so that it can be passed around as a bound function.
36
- */
37
- protected signalHandler: () => void;
38
- /**
39
- * This function wraps `process.exit()` which makes it easier to manage in unit tests,
40
- * since it is not possible to mock out `process.exit()` when it is called from signal handlers.
41
- */
42
- protected exit(code: number): void;
43
- }
@@ -1,129 +0,0 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
5
- }
6
- else if (typeof define === "function" && define.amd) {
7
- define("@angular/compiler-cli/ngcc/src/execution/lock_file", ["require", "exports", "process"], factory);
8
- }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- /**
13
- * @license
14
- * Copyright Google Inc. All Rights Reserved.
15
- *
16
- * Use of this source code is governed by an MIT-style license that can be
17
- * found in the LICENSE file at https://angular.io/license
18
- */
19
- var process = require("process");
20
- /**
21
- * The LockFile is used to prevent more than one instance of ngcc executing at the same time.
22
- *
23
- * When ngcc starts executing, it creates a file in the `compiler-cli/ngcc` folder. If it finds one
24
- * is already there then it fails with a suitable error message.
25
- * When ngcc completes executing, it removes the file so that future ngcc executions can start.
26
- */
27
- var LockFile = /** @class */ (function () {
28
- function LockFile(fs) {
29
- var _this = this;
30
- this.fs = fs;
31
- this.lockFilePath = this.fs.resolve(require.resolve('@angular/compiler-cli/ngcc'), '../__ngcc_lock_file__');
32
- /**
33
- * This handle needs to be defined as a property rather than a method
34
- * so that it can be passed around as a bound function.
35
- */
36
- this.signalHandler = function () {
37
- _this.remove();
38
- _this.exit(1);
39
- };
40
- }
41
- /**
42
- * Run a function guarded by the lock file.
43
- *
44
- * Note that T can be a Promise. If so, we run the `remove()` call in the promise's `finally`
45
- * handler. Otherwise we run the `remove()` call in the `try...finally` block.
46
- *
47
- * @param fn The function to run.
48
- */
49
- LockFile.prototype.lock = function (fn) {
50
- var _this = this;
51
- var isAsync = false;
52
- this.create();
53
- try {
54
- var result = fn();
55
- if (result instanceof Promise) {
56
- isAsync = true;
57
- // The cast is necessary because TS cannot deduce that T is now a promise here.
58
- return result.finally(function () { return _this.remove(); });
59
- }
60
- else {
61
- return result;
62
- }
63
- }
64
- finally {
65
- if (!isAsync) {
66
- this.remove();
67
- }
68
- }
69
- };
70
- /**
71
- * Write a lock file to disk, or error if there is already one there.
72
- */
73
- LockFile.prototype.create = function () {
74
- try {
75
- this.addSignalHandlers();
76
- // To avoid race conditions, we check for existence of the lockfile
77
- // by actually trying to create it exclusively
78
- this.fs.writeFile(this.lockFilePath, process.pid.toString(), /* exclusive */ true);
79
- }
80
- catch (e) {
81
- this.removeSignalHandlers();
82
- if (e.code !== 'EEXIST') {
83
- throw e;
84
- }
85
- // The lockfile already exists so raise a helpful error.
86
- // It is feasible that the lockfile was removed between the previous check for existence
87
- // and this file-read. If so then we still error but as gracefully as possible.
88
- var pid = void 0;
89
- try {
90
- pid = this.fs.readFile(this.lockFilePath);
91
- }
92
- catch (_a) {
93
- pid = '{unknown}';
94
- }
95
- throw new Error("ngcc is already running at process with id " + pid + ".\n" +
96
- "If you are running multiple builds in parallel then you should pre-process your node_modules via the command line ngcc tool before starting the builds;\n" +
97
- "See https://v9.angular.io/guide/ivy#speeding-up-ngcc-compilation.\n" +
98
- ("(If you are sure no ngcc process is running then you should delete the lockfile at " + this.lockFilePath + ".)"));
99
- }
100
- };
101
- /**
102
- * Remove the lock file from disk.
103
- */
104
- LockFile.prototype.remove = function () {
105
- this.removeSignalHandlers();
106
- if (this.fs.exists(this.lockFilePath)) {
107
- this.fs.removeFile(this.lockFilePath);
108
- }
109
- };
110
- LockFile.prototype.addSignalHandlers = function () {
111
- process.once('SIGINT', this.signalHandler);
112
- process.once('SIGHUP', this.signalHandler);
113
- };
114
- LockFile.prototype.removeSignalHandlers = function () {
115
- process.removeListener('SIGINT', this.signalHandler);
116
- process.removeListener('SIGHUP', this.signalHandler);
117
- };
118
- /**
119
- * This function wraps `process.exit()` which makes it easier to manage in unit tests,
120
- * since it is not possible to mock out `process.exit()` when it is called from signal handlers.
121
- */
122
- LockFile.prototype.exit = function (code) {
123
- process.exit(code);
124
- };
125
- return LockFile;
126
- }());
127
- exports.LockFile = LockFile;
128
- });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja19maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL25nY2Mvc3JjL2V4ZWN1dGlvbi9sb2NrX2ZpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7O09BTUc7SUFDSCxpQ0FBbUM7SUFHbkM7Ozs7OztPQU1HO0lBQ0g7UUFJRSxrQkFBb0IsRUFBYztZQUFsQyxpQkFBc0M7WUFBbEIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtZQUhsQyxpQkFBWSxHQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBb0Y1Rjs7O2VBR0c7WUFDTyxrQkFBYSxHQUNuQjtnQkFDRSxLQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2QsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLENBQUMsQ0FBQTtRQTFGZ0MsQ0FBQztRQUV0Qzs7Ozs7OztXQU9HO1FBQ0gsdUJBQUksR0FBSixVQUFRLEVBQVc7WUFBbkIsaUJBaUJDO1lBaEJDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxJQUFJO2dCQUNGLElBQU0sTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLE1BQU0sWUFBWSxPQUFPLEVBQUU7b0JBQzdCLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsK0VBQStFO29CQUMvRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxNQUFNLEVBQUUsRUFBYixDQUFhLENBQWlCLENBQUM7aUJBQzVEO3FCQUFNO29CQUNMLE9BQU8sTUFBTSxDQUFDO2lCQUNmO2FBQ0Y7b0JBQVM7Z0JBQ1IsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDWixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ2Y7YUFDRjtRQUNILENBQUM7UUFFRDs7V0FFRztRQUNPLHlCQUFNLEdBQWhCO1lBQ0UsSUFBSTtnQkFDRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsbUVBQW1FO2dCQUNuRSw4Q0FBOEM7Z0JBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEY7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtvQkFDdkIsTUFBTSxDQUFDLENBQUM7aUJBQ1Q7Z0JBRUQsd0RBQXdEO2dCQUN4RCx3RkFBd0Y7Z0JBQ3hGLCtFQUErRTtnQkFDL0UsSUFBSSxHQUFHLFNBQVEsQ0FBQztnQkFDaEIsSUFBSTtvQkFDRixHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUMzQztnQkFBQyxXQUFNO29CQUNOLEdBQUcsR0FBRyxXQUFXLENBQUM7aUJBQ25CO2dCQUVELE1BQU0sSUFBSSxLQUFLLENBQ1gsZ0RBQThDLEdBQUcsUUFBSztvQkFDdEQsMkpBQTJKO29CQUMzSixxRUFBcUU7cUJBQ3JFLHdGQUFzRixJQUFJLENBQUMsWUFBWSxPQUFJLENBQUEsQ0FBQyxDQUFDO2FBQ2xIO1FBQ0gsQ0FBQztRQUVEOztXQUVHO1FBQ08seUJBQU0sR0FBaEI7WUFDRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQztRQUVTLG9DQUFpQixHQUEzQjtZQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVTLHVDQUFvQixHQUE5QjtZQUNFLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQVlEOzs7V0FHRztRQUNPLHVCQUFJLEdBQWQsVUFBZSxJQUFZO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNILGVBQUM7SUFBRCxDQUFDLEFBdkdELElBdUdDO0lBdkdZLDRCQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICogYXMgcHJvY2VzcyBmcm9tICdwcm9jZXNzJztcbmltcG9ydCB7RmlsZVN5c3RlbX0gZnJvbSAnLi4vLi4vLi4vc3JjL25ndHNjL2ZpbGVfc3lzdGVtJztcblxuLyoqXG4gKiBUaGUgTG9ja0ZpbGUgaXMgdXNlZCB0byBwcmV2ZW50IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgbmdjYyBleGVjdXRpbmcgYXQgdGhlIHNhbWUgdGltZS5cbiAqXG4gKiBXaGVuIG5nY2Mgc3RhcnRzIGV4ZWN1dGluZywgaXQgY3JlYXRlcyBhIGZpbGUgaW4gdGhlIGBjb21waWxlci1jbGkvbmdjY2AgZm9sZGVyLiBJZiBpdCBmaW5kcyBvbmVcbiAqIGlzIGFscmVhZHkgdGhlcmUgdGhlbiBpdCBmYWlscyB3aXRoIGEgc3VpdGFibGUgZXJyb3IgbWVzc2FnZS5cbiAqIFdoZW4gbmdjYyBjb21wbGV0ZXMgZXhlY3V0aW5nLCBpdCByZW1vdmVzIHRoZSBmaWxlIHNvIHRoYXQgZnV0dXJlIG5nY2MgZXhlY3V0aW9ucyBjYW4gc3RhcnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2NrRmlsZSB7XG4gIGxvY2tGaWxlUGF0aCA9XG4gICAgICB0aGlzLmZzLnJlc29sdmUocmVxdWlyZS5yZXNvbHZlKCdAYW5ndWxhci9jb21waWxlci1jbGkvbmdjYycpLCAnLi4vX19uZ2NjX2xvY2tfZmlsZV9fJyk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmczogRmlsZVN5c3RlbSkge31cblxuICAvKipcbiAgICogUnVuIGEgZnVuY3Rpb24gZ3VhcmRlZCBieSB0aGUgbG9jayBmaWxlLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgVCBjYW4gYmUgYSBQcm9taXNlLiBJZiBzbywgd2UgcnVuIHRoZSBgcmVtb3ZlKClgIGNhbGwgaW4gdGhlIHByb21pc2UncyBgZmluYWxseWBcbiAgICogaGFuZGxlci4gT3RoZXJ3aXNlIHdlIHJ1biB0aGUgYHJlbW92ZSgpYCBjYWxsIGluIHRoZSBgdHJ5Li4uZmluYWxseWAgYmxvY2suXG4gICAqXG4gICAqIEBwYXJhbSBmbiBUaGUgZnVuY3Rpb24gdG8gcnVuLlxuICAgKi9cbiAgbG9jazxUPihmbjogKCkgPT4gVCk6IFQge1xuICAgIGxldCBpc0FzeW5jID0gZmFsc2U7XG4gICAgdGhpcy5jcmVhdGUoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZm4oKTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIGlzQXN5bmMgPSB0cnVlO1xuICAgICAgICAvLyBUaGUgY2FzdCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBUUyBjYW5ub3QgZGVkdWNlIHRoYXQgVCBpcyBub3cgYSBwcm9taXNlIGhlcmUuXG4gICAgICAgIHJldHVybiByZXN1bHQuZmluYWxseSgoKSA9PiB0aGlzLnJlbW92ZSgpKSBhcyB1bmtub3duIGFzIFQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoIWlzQXN5bmMpIHtcbiAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYSBsb2NrIGZpbGUgdG8gZGlzaywgb3IgZXJyb3IgaWYgdGhlcmUgaXMgYWxyZWFkeSBvbmUgdGhlcmUuXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmFkZFNpZ25hbEhhbmRsZXJzKCk7XG4gICAgICAvLyBUbyBhdm9pZCByYWNlIGNvbmRpdGlvbnMsIHdlIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgdGhlIGxvY2tmaWxlXG4gICAgICAvLyBieSBhY3R1YWxseSB0cnlpbmcgdG8gY3JlYXRlIGl0IGV4Y2x1c2l2ZWx5XG4gICAgICB0aGlzLmZzLndyaXRlRmlsZSh0aGlzLmxvY2tGaWxlUGF0aCwgcHJvY2Vzcy5waWQudG9TdHJpbmcoKSwgLyogZXhjbHVzaXZlICovIHRydWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlU2lnbmFsSGFuZGxlcnMoKTtcbiAgICAgIGlmIChlLmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBsb2NrZmlsZSBhbHJlYWR5IGV4aXN0cyBzbyByYWlzZSBhIGhlbHBmdWwgZXJyb3IuXG4gICAgICAvLyBJdCBpcyBmZWFzaWJsZSB0aGF0IHRoZSBsb2NrZmlsZSB3YXMgcmVtb3ZlZCBiZXR3ZWVuIHRoZSBwcmV2aW91cyBjaGVjayBmb3IgZXhpc3RlbmNlXG4gICAgICAvLyBhbmQgdGhpcyBmaWxlLXJlYWQuIElmIHNvIHRoZW4gd2Ugc3RpbGwgZXJyb3IgYnV0IGFzIGdyYWNlZnVsbHkgYXMgcG9zc2libGUuXG4gICAgICBsZXQgcGlkOiBzdHJpbmc7XG4gICAgICB0cnkge1xuICAgICAgICBwaWQgPSB0aGlzLmZzLnJlYWRGaWxlKHRoaXMubG9ja0ZpbGVQYXRoKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBwaWQgPSAne3Vua25vd259JztcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBuZ2NjIGlzIGFscmVhZHkgcnVubmluZyBhdCBwcm9jZXNzIHdpdGggaWQgJHtwaWR9LlxcbmAgK1xuICAgICAgICAgIGBJZiB5b3UgYXJlIHJ1bm5pbmcgbXVsdGlwbGUgYnVpbGRzIGluIHBhcmFsbGVsIHRoZW4geW91IHNob3VsZCBwcmUtcHJvY2VzcyB5b3VyIG5vZGVfbW9kdWxlcyB2aWEgdGhlIGNvbW1hbmQgbGluZSBuZ2NjIHRvb2wgYmVmb3JlIHN0YXJ0aW5nIHRoZSBidWlsZHM7XFxuYCArXG4gICAgICAgICAgYFNlZSBodHRwczovL3Y5LmFuZ3VsYXIuaW8vZ3VpZGUvaXZ5I3NwZWVkaW5nLXVwLW5nY2MtY29tcGlsYXRpb24uXFxuYCArXG4gICAgICAgICAgYChJZiB5b3UgYXJlIHN1cmUgbm8gbmdjYyBwcm9jZXNzIGlzIHJ1bm5pbmcgdGhlbiB5b3Ugc2hvdWxkIGRlbGV0ZSB0aGUgbG9ja2ZpbGUgYXQgJHt0aGlzLmxvY2tGaWxlUGF0aH0uKWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGxvY2sgZmlsZSBmcm9tIGRpc2suXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVtb3ZlKCkge1xuICAgIHRoaXMucmVtb3ZlU2lnbmFsSGFuZGxlcnMoKTtcbiAgICBpZiAodGhpcy5mcy5leGlzdHModGhpcy5sb2NrRmlsZVBhdGgpKSB7XG4gICAgICB0aGlzLmZzLnJlbW92ZUZpbGUodGhpcy5sb2NrRmlsZVBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRTaWduYWxIYW5kbGVycygpIHtcbiAgICBwcm9jZXNzLm9uY2UoJ1NJR0lOVCcsIHRoaXMuc2lnbmFsSGFuZGxlcik7XG4gICAgcHJvY2Vzcy5vbmNlKCdTSUdIVVAnLCB0aGlzLnNpZ25hbEhhbmRsZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVNpZ25hbEhhbmRsZXJzKCkge1xuICAgIHByb2Nlc3MucmVtb3ZlTGlzdGVuZXIoJ1NJR0lOVCcsIHRoaXMuc2lnbmFsSGFuZGxlcik7XG4gICAgcHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcignU0lHSFVQJywgdGhpcy5zaWduYWxIYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGhhbmRsZSBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGEgcHJvcGVydHkgcmF0aGVyIHRoYW4gYSBtZXRob2RcbiAgICogc28gdGhhdCBpdCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBhcyBhIGJvdW5kIGZ1bmN0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNpZ25hbEhhbmRsZXIgPVxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gd3JhcHMgYHByb2Nlc3MuZXhpdCgpYCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gbWFuYWdlIGluIHVuaXQgdGVzdHMsXG4gICAqIHNpbmNlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBtb2NrIG91dCBgcHJvY2Vzcy5leGl0KClgIHdoZW4gaXQgaXMgY2FsbGVkIGZyb20gc2lnbmFsIGhhbmRsZXJzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGV4aXQoY29kZTogbnVtYmVyKTogdm9pZCB7XG4gICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xuICB9XG59XG4iXX0=
@@ -1,20 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google Inc. All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- (function (factory) {
9
- if (typeof module === "object" && typeof module.exports === "object") {
10
- var v = factory(require, exports);
11
- if (v !== undefined) module.exports = v;
12
- }
13
- else if (typeof define === "function" && define.amd) {
14
- define("@angular/compiler-cli/src/ngtsc/core/api", ["require", "exports"], factory);
15
- }
16
- })(function (require, exports) {
17
- "use strict";
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXItY2xpL3NyYy9uZ3RzYy9jb3JlL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIEEgaG9zdCBiYWNrZWQgYnkgYSBidWlsZCBzeXN0ZW0gd2hpY2ggaGFzIGEgdW5pZmllZCB2aWV3IG9mIHRoZSBtb2R1bGUgbmFtZXNwYWNlLlxuICpcbiAqIFN1Y2ggYSBidWlsZCBzeXN0ZW0gc3VwcG9ydHMgdGhlIGBmaWxlTmFtZVRvTW9kdWxlTmFtZWAgbWV0aG9kIHByb3ZpZGVkIGJ5IGNlcnRhaW4gYnVpbGQgc3lzdGVtXG4gKiBpbnRlZ3JhdGlvbnMgKHN1Y2ggYXMgdGhlIGludGVncmF0aW9uIHdpdGggQmF6ZWwpLiBTZWUgdGhlIGRvY3Mgb24gYGZpbGVOYW1lVG9Nb2R1bGVOYW1lYCBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmlmaWVkTW9kdWxlc0hvc3Qge1xuICAvKipcbiAgICogQ29udmVydHMgYSBmaWxlIHBhdGggdG8gYSBtb2R1bGUgbmFtZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIGBpbXBvcnQgLi4uYC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHN1Y2ggYSBob3N0IG1pZ2h0IGRldGVybWluZSB0aGF0IGAvYWJzb2x1dGUvcGF0aC90by9tb25vcmVwby9saWIvaW1wb3J0ZWRGaWxlLnRzYFxuICAgKiBzaG91bGQgYmUgaW1wb3J0ZWQgdXNpbmcgYSBtb2R1bGUgc3BlY2lmaWVyIG9mIGBtb25vcmVwby9saWIvaW1wb3J0ZWRGaWxlYC5cbiAgICovXG4gIGZpbGVOYW1lVG9Nb2R1bGVOYW1lKGltcG9ydGVkRmlsZVBhdGg6IHN0cmluZywgY29udGFpbmluZ0ZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBob3N0IHdoaWNoIGFkZGl0aW9uYWxseSB0cmFja3MgYW5kIHByb2R1Y2VzIFwicmVzb3VyY2VzXCIgKEhUTUwgdGVtcGxhdGVzLCBDU1NcbiAqIGZpbGVzLCBldGMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlSG9zdCB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGZpbGUgcGF0aCBmb3IgYSByZXNvdXJjZSB0aGF0IGlzIHVzZWQgaW4gYSBzb3VyY2UgZmlsZSBvciBhbm90aGVyIHJlc291cmNlXG4gICAqIGludG8gYSBmaWxlcGF0aC5cbiAgICovXG4gIHJlc291cmNlTmFtZVRvRmlsZU5hbWUocmVzb3VyY2VOYW1lOiBzdHJpbmcsIGNvbnRhaW5pbmdGaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nfG51bGw7XG5cbiAgLyoqXG4gICAqIExvYWQgYSByZWZlcmVuY2VkIHJlc291cmNlIGVpdGhlciBzdGF0aWNhbGx5IG9yIGFzeW5jaHJvbm91c2x5LiBJZiB0aGUgaG9zdCByZXR1cm5zIGFcbiAgICogYFByb21pc2U8c3RyaW5nPmAgaXQgaXMgYXNzdW1lZCB0aGUgdXNlciBvZiB0aGUgY29ycmVzcG9uZGluZyBgUHJvZ3JhbWAgd2lsbCBjYWxsXG4gICAqIGBsb2FkTmdTdHJ1Y3R1cmVBc3luYygpYC4gUmV0dXJuaW5nICBgUHJvbWlzZTxzdHJpbmc+YCBvdXRzaWRlIGBsb2FkTmdTdHJ1Y3R1cmVBc3luYygpYCB3aWxsXG4gICAqIGNhdXNlIGEgZGlhZ25vc3RpY3MgZGlhZ25vc3RpYyBlcnJvciBvciBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duLlxuICAgKi9cbiAgcmVhZFJlc291cmNlKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz58c3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGFic29sdXRlIHBhdGhzIHRvIHRoZSBjaGFuZ2VkIGZpbGVzIHRoYXQgdHJpZ2dlcmVkIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uXG4gICAqIG9yIGB1bmRlZmluZWRgIGlmIHRoaXMgaXMgbm90IGFuIGluY3JlbWVudGFsIGJ1aWxkLlxuICAgKi9cbiAgZ2V0TW9kaWZpZWRSZXNvdXJjZUZpbGVzPygpOiBTZXQ8c3RyaW5nPnx1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQSBgdHMuQ29tcGlsZXJIb3N0YCBpbnRlcmZhY2Ugd2hpY2ggc3VwcG9ydHMgc29tZSBudW1iZXIgb2Ygb3B0aW9uYWwgbWV0aG9kcyBpbiBhZGRpdGlvbiB0byB0aGVcbiAqIGNvcmUgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkVHNDb21waWxlckhvc3QgZXh0ZW5kcyB0cy5Db21waWxlckhvc3QsIFBhcnRpYWw8UmVzb3VyY2VIb3N0PixcbiAgICBQYXJ0aWFsPFVuaWZpZWRNb2R1bGVzSG9zdD4ge31cblxuLyoqXG4gKiBPcHRpb25zIHN1cHBvcnRlZCBieSB0aGUgbGVnYWN5IFZpZXcgRW5naW5lIGNvbXBpbGVyLCB3aGljaCBhcmUgc3RpbGwgY29uc3VtZWQgYnkgdGhlIEFuZ3VsYXIgSXZ5XG4gKiBjb21waWxlciBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gKlxuICogVGhlc2UgYXJlIGV4cGVjdGVkIHRvIGJlIHJlbW92ZWQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExlZ2FjeU5nY09wdGlvbnMge1xuICAvKiogZ2VuZXJhdGUgYWxsIHBvc3NpYmxlIGdlbmVyYXRlZCBmaWxlcyAgKi9cbiAgYWxsb3dFbXB0eUNvZGVnZW5GaWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHlwZSBjaGVjayB0aGUgZW50aXJlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBUaGlzIGZsYWcgY3VycmVudGx5IGNvbnRyb2xzIGEgY291cGxlIGFzcGVjdHMgb2YgdGVtcGxhdGUgdHlwZS1jaGVja2luZywgaW5jbHVkaW5nXG4gICAqIHdoZXRoZXIgZW1iZWRkZWQgdmlld3MgYXJlIGNoZWNrZWQuXG4gICAqXG4gICAqIEZvciBtYXhpbXVtIHR5cGUtY2hlY2tpbmcsIHNldCB0aGlzIHRvIGB0cnVlYCwgYW5kIHNldCBgc3RyaWN0VGVtcGxhdGVzYCB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEl0IGlzIGFuIGVycm9yIGZvciB0aGlzIGZsYWcgdG8gYmUgYGZhbHNlYCwgd2hpbGUgYHN0cmljdFRlbXBsYXRlc2AgaXMgc2V0IHRvIGB0cnVlYC5cbiAgICovXG4gIGZ1bGxUZW1wbGF0ZVR5cGVDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBmbGF0IG1vZHVsZSBpbmRleCBvZiB0aGUgZ2l2ZW4gbmFtZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICogZmxhdCBtb2R1bGUgbWV0YWRhdGEuIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBmbGF0XG4gICAqIG1vZHVsZXMgc2ltaWxhciB0byBob3cgYEBhbmd1bGFyL2NvcmVgIGFuZCBgQGFuZ3VsYXIvY29tbW9uYCBhcmUgcGFja2FnZWQuXG4gICAqIFdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZCB0aGUgYHBhY2thZ2UuanNvbmAgZm9yIHRoZSBsaWJyYXJ5IHNob3VsZCByZWZlciB0byB0aGVcbiAgICogZ2VuZXJhdGVkIGZsYXQgbW9kdWxlIGluZGV4IGluc3RlYWQgb2YgdGhlIGxpYnJhcnkgaW5kZXggZmlsZS4gV2hlbiB1c2luZyB0aGlzXG4gICAqIG9wdGlvbiBvbmx5IG9uZSAubWV0YWRhdGEuanNvbiBmaWxlIGlzIHByb2R1Y2VkIHRoYXQgY29udGFpbnMgYWxsIHRoZSBtZXRhZGF0YVxuICAgKiBuZWNlc3NhcnkgZm9yIHN5bWJvbHMgZXhwb3J0ZWQgZnJvbSB0aGUgbGlicmFyeSBpbmRleC5cbiAgICogSW4gdGhlIGdlbmVyYXRlZCAubmdmYWN0b3J5LnRzIGZpbGVzIGZsYXQgbW9kdWxlIGluZGV4IGlzIHVzZWQgdG8gaW1wb3J0IHN5bWJvbHNcbiAgICogaW5jbHVkaW5nIGJvdGggdGhlIHB1YmxpYyBBUEkgZnJvbSB0aGUgbGlicmFyeSBpbmRleCBhcyB3ZWxsIGFzIHNocm93ZGVkIGludGVybmFsXG4gICAqIHN5bWJvbHMuXG4gICAqIEJ5IGRlZmF1bHQgdGhlIC50cyBmaWxlIHN1cHBsaWVkIGluIHRoZSBgZmlsZXNgIGZpZWxkIGlzIGFzc3VtZWQgdG8gYmUgdGhlXG4gICAqIGxpYnJhcnkgaW5kZXguIElmIG1vcmUgdGhhbiBvbmUgaXMgc3BlY2lmaWVkLCB1c2VzIGBsaWJyYXJ5SW5kZXhgIHRvIHNlbGVjdCB0aGVcbiAgICogZmlsZSB0byB1c2UuIElmIG1vcmUgdGhhbiBvbmUgLnRzIGZpbGUgaXMgc3VwcGxpZWQgYW5kIG5vIGBsaWJyYXJ5SW5kZXhgIGlzIHN1cHBsaWVkXG4gICAqIGFuIGVycm9yIGlzIHByb2R1Y2VkLlxuICAgKiBBIGZsYXQgbW9kdWxlIGluZGV4IC5kLnRzIGFuZCAuanMgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIGdpdmVuIGBmbGF0TW9kdWxlT3V0RmlsZWBcbiAgICogbmFtZSBpbiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgbGlicmFyeSBpbmRleCAuZC50cyBmaWxlIGlzIGVtaXR0ZWQuXG4gICAqIEZvciBleGFtcGxlLCBpZiBhIGxpYnJhcnkgdXNlcyBgcHVibGljX2FwaS50c2AgZmlsZSBhcyB0aGUgbGlicmFyeSBpbmRleCBvZiB0aGVcbiAgICogbW9kdWxlIHRoZSBgdHNjb25maWcuanNvbmAgYGZpbGVzYCBmaWVsZCB3b3VsZCBiZSBgW1wicHVibGljX2FwaS50c1wiXWAuIFRoZVxuICAgKiBgZmxhdE1vZHVsZU91dEZpbGVgIG9wdGlvbnMgY291bGQgdGhlbiBiZSBzZXQgdG8sIGZvciBleGFtcGxlIGBcImluZGV4LmpzXCJgLCB3aGljaFxuICAgKiBwcm9kdWNlcyBgaW5kZXguZC50c2AgYW5kICBgaW5kZXgubWV0YWRhdGEuanNvbmAgZmlsZXMuIFRoZSBsaWJyYXJ5J3NcbiAgICogYHBhY2thZ2UuanNvbmAncyBgbW9kdWxlYCBmaWVsZCB3b3VsZCBiZSBgXCJpbmRleC5qc1wiYCBhbmQgdGhlIGB0eXBpbmdzYCBmaWVsZCB3b3VsZFxuICAgKiBiZSBgXCJpbmRleC5kLnRzXCJgLlxuICAgKi9cbiAgZmxhdE1vZHVsZU91dEZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByZWZlcnJlZCBtb2R1bGUgaWQgdG8gdXNlIGZvciBpbXBvcnRpbmcgZmxhdCBtb2R1bGUuIFJlZmVyZW5jZXMgZ2VuZXJhdGVkIGJ5IGBuZ2NgXG4gICAqIHdpbGwgdXNlIHRoaXMgbW9kdWxlIG5hbWUgd2hlbiBpbXBvcnRpbmcgc3ltYm9scyBmcm9tIHRoZSBmbGF0IG1vZHVsZS4gVGhpcyBpcyBvbmx5XG4gICAqIG1lYW5pbmdmdWwgd2hlbiBgZmxhdE1vZHVsZU91dEZpbGVgIGlzIGFsc28gc3VwcGxpZWQuIEl0IGlzIG90aGVyd2lzZSBpZ25vcmVkLlxuICAgKi9cbiAgZmxhdE1vZHVsZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbHdheXMgcmVwb3J0IGVycm9ycyBhIHBhcmFtZXRlciBpcyBzdXBwbGllZCB3aG9zZSBpbmplY3Rpb24gdHlwZSBjYW5ub3RcbiAgICogYmUgZGV0ZXJtaW5lZC4gV2hlbiB0aGlzIHZhbHVlIG9wdGlvbiBpcyBub3QgcHJvdmlkZWQgb3IgaXMgYGZhbHNlYCwgY29uc3RydWN0b3JcbiAgICogcGFyYW1ldGVycyBvZiBjbGFzc2VzIG1hcmtlZCB3aXRoIGBASW5qZWN0YWJsZWAgd2hvc2UgdHlwZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2lsbFxuICAgKiBwcm9kdWNlIGEgd2FybmluZy4gV2l0aCB0aGlzIG9wdGlvbiBgdHJ1ZWAsIHRoZXkgcHJvZHVjZSBhbiBlcnJvci4gV2hlbiB0aGlzIG9wdGlvbiBpc1xuICAgKiBub3QgcHJvdmlkZWQgaXMgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBmYWxzZWAuXG4gICAqL1xuICBzdHJpY3RJbmplY3Rpb25QYXJhbWV0ZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZW1vdmUgYmxhbmsgdGV4dCBub2RlcyBmcm9tIGNvbXBpbGVkIHRlbXBsYXRlcy4gSXQgaXMgYGZhbHNlYCBieSBkZWZhdWx0IHN0YXJ0aW5nXG4gICAqIGZyb20gQW5ndWxhciA2LlxuICAgKi9cbiAgcHJlc2VydmVXaGl0ZXNwYWNlcz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyB3aGljaCB3ZXJlIGFkZGVkIHRvIHRoZSBBbmd1bGFyIEl2eSBjb21waWxlciB0byBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGhcbiAqIGV4aXN0aW5nIFZpZXcgRW5naW5lIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiBUaGVzZSBhcmUgZXhwZWN0ZWQgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdjQ29tcGF0aWJpbGl0eU9wdGlvbnMge1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBuZ3RzYyB3aWxsIGVtaXQgYC5uZ2ZhY3RvcnkuanNgIHNoaW1zIGZvciBlYWNoIGNvbXBpbGVkIGAudHNgIGZpbGUuXG4gICAqXG4gICAqIFRoZXNlIHNoaW1zIHN1cHBvcnQgbGVnYWN5IGltcG9ydHMgZnJvbSBgbmdmYWN0b3J5YCBmaWxlcywgYnkgZXhwb3J0aW5nIGEgZmFjdG9yeSBzaGltXG4gICAqIGZvciBlYWNoIGNvbXBvbmVudCBvciBOZ01vZHVsZSBpbiB0aGUgb3JpZ2luYWwgYC50c2AgZmlsZS5cbiAgICovXG4gIGdlbmVyYXRlTmdGYWN0b3J5U2hpbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIG5ndHNjIHdpbGwgZW1pdCBgLm5nc3VtbWFyeS5qc2Agc2hpbXMgZm9yIGVhY2ggY29tcGlsZWQgYC50c2AgZmlsZS5cbiAgICpcbiAgICogVGhlc2Ugc2hpbXMgc3VwcG9ydCBsZWdhY3kgaW1wb3J0cyBmcm9tIGBuZ3N1bW1hcnlgIGZpbGVzLCBieSBleHBvcnRpbmcgYW4gZW1wdHkgb2JqZWN0XG4gICAqIGZvciBlYWNoIE5nTW9kdWxlIGluIHRoZSBvcmlnaW5hbCBgLnRzYCBmaWxlLiBUaGUgb25seSBwdXJwb3NlIG9mIHN1bW1hcmllcyBpcyB0byBmZWVkIHRoZW0gdG9cbiAgICogYFRlc3RCZWRgLCB3aGljaCBpcyBhIG5vLW9wIGluIEl2eS5cbiAgICovXG4gIGdlbmVyYXRlTmdTdW1tYXJ5U2hpbXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUZWxscyB0aGUgY29tcGlsZXIgdG8gZ2VuZXJhdGUgZGVmaW5pdGlvbnMgdXNpbmcgdGhlIFJlbmRlcjMgc3R5bGUgY29kZSBnZW5lcmF0aW9uLlxuICAgKiBUaGlzIG9wdGlvbiBkZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqXG4gICAqIEFjY2VwdGFibGUgdmFsdWVzIGFyZSBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiBgZmFsc2VgIC0gcnVuIG5nYyBub3JtYWxseVxuICAgKiBgdHJ1ZWAgLSBydW4gdGhlIG5ndHNjIGNvbXBpbGVyIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBuZ2MgY29tcGlsZXJcbiAgICogYG5ndHNjYCAtIGFsaWFzIGZvciBgdHJ1ZWBcbiAgICovXG4gIGVuYWJsZUl2eT86IGJvb2xlYW58J25ndHNjJztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHJlbGF0ZWQgdG8gdGVtcGxhdGUgdHlwZS1jaGVja2luZyBhbmQgaXRzIHN0cmljdG5lc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaWN0VGVtcGxhdGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaW1wbGllcyBhbGwgdGVtcGxhdGUgc3RyaWN0bmVzcyBmbGFncyBiZWxvdyAodW5sZXNzIGluZGl2aWR1YWxseSBkaXNhYmxlZCkuXG4gICAqXG4gICAqIEhhcyBubyBlZmZlY3QgdW5sZXNzIGBmdWxsVGVtcGxhdGVUeXBlQ2hlY2tgIGlzIGFsc28gZW5hYmxlZC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdFRlbXBsYXRlcz86IGJvb2xlYW47XG5cblxuICAvKipcbiAgICogV2hldGhlciB0byBjaGVjayB0aGUgdHlwZSBvZiBhIGJpbmRpbmcgdG8gYSBkaXJlY3RpdmUvY29tcG9uZW50IGlucHV0IGFnYWluc3QgdGhlIHR5cGUgb2YgdGhlXG4gICAqIGZpZWxkIG9uIHRoZSBkaXJlY3RpdmUvY29tcG9uZW50LlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhpcyBpcyBgZmFsc2VgIHRoZW4gdGhlIGV4cHJlc3Npb24gYFtpbnB1dF09XCJleHByXCJgIHdpbGwgaGF2ZSBgZXhwcmAgdHlwZS1cbiAgICogY2hlY2tlZCwgYnV0IG5vdCB0aGUgYXNzaWdubWVudCBvZiB0aGUgcmVzdWx0aW5nIHR5cGUgdG8gdGhlIGBpbnB1dGAgcHJvcGVydHkgb2Ygd2hpY2hldmVyXG4gICAqIGRpcmVjdGl2ZSBvciBjb21wb25lbnQgaXMgcmVjZWl2aW5nIHRoZSBiaW5kaW5nLiBJZiBzZXQgdG8gYHRydWVgLCBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50XG4gICAqIGFyZSBjaGVja2VkLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLCBldmVuIGlmIFwiZnVsbFRlbXBsYXRlVHlwZUNoZWNrXCIgaXMgc2V0LlxuICAgKi9cbiAgc3RyaWN0SW5wdXRUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIHN0cmljdCBudWxsIHR5cGVzIGZvciBpbnB1dCBiaW5kaW5ncyBmb3IgZGlyZWN0aXZlcy5cbiAgICpcbiAgICogSWYgdGhpcyBpcyBgdHJ1ZWAsIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBjb21waWxlZCB3aXRoIFR5cGVTY3JpcHQncyBgc3RyaWN0TnVsbENoZWNrc2AgZW5hYmxlZFxuICAgKiB3aWxsIHByb2R1Y2UgdHlwZSBlcnJvcnMgZm9yIGJpbmRpbmdzIHdoaWNoIGNhbiBldmFsdWF0ZSB0byBgdW5kZWZpbmVkYCBvciBgbnVsbGAgd2hlcmUgdGhlXG4gICAqIGlucHV0cydzIHR5cGUgZG9lcyBub3QgaW5jbHVkZSBgdW5kZWZpbmVkYCBvciBgbnVsbGAgaW4gaXRzIHR5cGUuIElmIHNldCB0byBgZmFsc2VgLCBhbGxcbiAgICogYmluZGluZyBleHByZXNzaW9ucyBhcmUgd3JhcHBlZCBpbiBhIG5vbi1udWxsIGFzc2VydGlvbiBvcGVyYXRvciB0byBlZmZlY3RpdmVseSBkaXNhYmxlIHN0cmljdFxuICAgKiBudWxsIGNoZWNrcy5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC4gTm90ZSB0aGF0IGlmIGBzdHJpY3RJbnB1dFR5cGVzYCBpc1xuICAgKiBub3Qgc2V0LCBvciBzZXQgdG8gYGZhbHNlYCwgdGhpcyBmbGFnIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICBzdHJpY3ROdWxsSW5wdXRUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY2hlY2sgdGV4dCBhdHRyaWJ1dGVzIHRoYXQgaGFwcGVuIHRvIGJlIGNvbnN1bWVkIGJ5IGEgZGlyZWN0aXZlIG9yIGNvbXBvbmVudC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIGluIGEgdGVtcGxhdGUgY29udGFpbmluZyBgPGlucHV0IG1hdElucHV0IGRpc2FibGVkPmAgdGhlIGBkaXNhYmxlZGAgYXR0cmlidXRlIGVuZHNcbiAgICogdXAgYmVpbmcgY29uc3VtZWQgYXMgYW4gaW5wdXQgd2l0aCB0eXBlIGBib29sZWFuYCBieSB0aGUgYG1hdElucHV0YCBkaXJlY3RpdmUuIEF0IHJ1bnRpbWUsIHRoZVxuICAgKiBpbnB1dCB3aWxsIGJlIHNldCB0byB0aGUgYXR0cmlidXRlJ3Mgc3RyaW5nIHZhbHVlLCB3aGljaCBpcyBhbiBlbXB0eSBzdHJpbmcgZm9yIGF0dHJpYnV0ZXNcbiAgICogd2l0aG91dCBhIHZhbHVlLCBzbyB3aXRoIHRoaXMgZmxhZyBzZXQgdG8gYHRydWVgLCBhbiBlcnJvciB3b3VsZCBiZSByZXBvcnRlZC4gSWYgc2V0IHRvXG4gICAqIGBmYWxzZWAsIHRleHQgYXR0cmlidXRlcyB3aWxsIG5ldmVyIHJlcG9ydCBhbiBlcnJvci5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC4gTm90ZSB0aGF0IGlmIGBzdHJpY3RJbnB1dFR5cGVzYCBpc1xuICAgKiBub3Qgc2V0LCBvciBzZXQgdG8gYGZhbHNlYCwgdGhpcyBmbGFnIGhhcyBubyBlZmZlY3QuXG4gICAqL1xuICBzdHJpY3RBdHRyaWJ1dGVUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGEgc3RyaWN0IHR5cGUgZm9yIG51bGwtc2FmZSBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYGZhbHNlYCwgdGhlbiB0aGUgcmV0dXJuIHR5cGUgb2YgYGE/LmJgIG9yIGBhPygpYCB3aWxsIGJlIGBhbnlgLiBJZiBzZXQgdG8gYHRydWVgLFxuICAgKiB0aGVuIHRoZSByZXR1cm4gdHlwZSBvZiBgYT8uYmAgZm9yIGV4YW1wbGUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgdHlwZSBvZiB0aGUgdGVybmFyeVxuICAgKiBleHByZXNzaW9uIGBhICE9IG51bGwgPyBhLmIgOiBhYC5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdFNhZmVOYXZpZ2F0aW9uVHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluZmVyIHRoZSB0eXBlIG9mIGxvY2FsIHJlZmVyZW5jZXMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHRydWVgLCB0aGUgdHlwZSBvZiBhIGAjcmVmYCB2YXJpYWJsZSBvbiBhIERPTSBub2RlIGluIHRoZSB0ZW1wbGF0ZSB3aWxsIGJlXG4gICAqIGRldGVybWluZWQgYnkgdGhlIHR5cGUgb2YgYGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRgIGZvciB0aGUgZ2l2ZW4gRE9NIG5vZGUuIElmIHNldCB0byBgZmFsc2VgLFxuICAgKiB0aGUgdHlwZSBvZiBgcmVmYCBmb3IgRE9NIG5vZGVzIHdpbGwgYmUgYGFueWAuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuXG4gICAqL1xuICBzdHJpY3REb21Mb2NhbFJlZlR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmZlciB0aGUgdHlwZSBvZiB0aGUgYCRldmVudGAgdmFyaWFibGUgaW4gZXZlbnQgYmluZGluZ3MgZm9yIGRpcmVjdGl2ZSBvdXRwdXRzIG9yXG4gICAqIGFuaW1hdGlvbiBldmVudHMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHRydWVgLCB0aGUgdHlwZSBvZiBgJGV2ZW50YCB3aWxsIGJlIGluZmVycmVkIGJhc2VkIG9uIHRoZSBnZW5lcmljIHR5cGUgb2ZcbiAgICogYEV2ZW50RW1pdHRlcmAvYFN1YmplY3RgIG9mIHRoZSBvdXRwdXQuIElmIHNldCB0byBgZmFsc2VgLCB0aGUgYCRldmVudGAgdmFyaWFibGUgd2lsbCBiZSBvZlxuICAgKiB0eXBlIGBhbnlgLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBgZmFsc2VgLCBldmVuIGlmIFwiZnVsbFRlbXBsYXRlVHlwZUNoZWNrXCIgaXMgc2V0LlxuICAgKi9cbiAgc3RyaWN0T3V0cHV0RXZlbnRUeXBlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGAkZXZlbnRgIHZhcmlhYmxlIGluIGV2ZW50IGJpbmRpbmdzIHRvIERPTSBldmVudHMuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgYHRydWVgLCB0aGUgdHlwZSBvZiBgJGV2ZW50YCB3aWxsIGJlIGluZmVycmVkIGJhc2VkIG9uIFR5cGVTY3JpcHQnc1xuICAgKiBgSFRNTEVsZW1lbnRFdmVudE1hcGAsIHdpdGggYSBmYWxsYmFjayB0byB0aGUgbmF0aXZlIGBFdmVudGAgdHlwZS4gSWYgc2V0IHRvIGBmYWxzZWAsIHRoZVxuICAgKiBgJGV2ZW50YCB2YXJpYWJsZSB3aWxsIGJlIG9mIHR5cGUgYGFueWAuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAsIGV2ZW4gaWYgXCJmdWxsVGVtcGxhdGVUeXBlQ2hlY2tcIiBpcyBzZXQuXG4gICAqL1xuICBzdHJpY3REb21FdmVudFR5cGVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHRoZSBnZW5lcmljIHR5cGUgb2YgY29tcG9uZW50cyB3aGVuIHR5cGUtY2hlY2tpbmcgdGhlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBJZiBubyBjb21wb25lbnQgaGFzIGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXJzLCB0aGlzIHNldHRpbmcgaGFzIG5vIGVmZmVjdC5cbiAgICpcbiAgICogSWYgYSBjb21wb25lbnQgaGFzIGdlbmVyaWMgdHlwZSBwYXJhbWV0ZXJzIGFuZCB0aGlzIHNldHRpbmcgaXMgYHRydWVgLCB0aG9zZSBnZW5lcmljIHBhcmFtZXRlcnNcbiAgICogd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgY29udGV4dCB0eXBlIGZvciB0aGUgdGVtcGxhdGUuIElmIGBmYWxzZWAsIGFueSBnZW5lcmljIHBhcmFtZXRlcnMgd2lsbFxuICAgKiBiZSBzZXQgdG8gYGFueWAgaW4gdGhlIHRlbXBsYXRlIGNvbnRleHQgdHlwZS5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCwgZXZlbiBpZiBcImZ1bGxUZW1wbGF0ZVR5cGVDaGVja1wiIGlzIHNldC5cbiAgICovXG4gIHN0cmljdENvbnRleHRHZW5lcmljcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb2JqZWN0IG9yIGFycmF5IGxpdGVyYWxzIGRlZmluZWQgaW4gdGVtcGxhdGVzIHVzZSB0aGVpciBpbmZlcnJlZCB0eXBlLCBvciBhcmVcbiAgICogaW50ZXJwcmV0ZWQgYXMgYGFueWAuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIGBmYWxzZWAgdW5sZXNzIGBmdWxsVGVtcGxhdGVUeXBlQ2hlY2tgIG9yIGBzdHJpY3RUZW1wbGF0ZXNgIGFyZSBzZXQuXG4gICAqL1xuICBzdHJpY3RMaXRlcmFsVHlwZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgd2hpY2ggY29udHJvbCBiZWhhdmlvciB1c2VmdWwgZm9yIFwibW9ub3JlcG9cIiBidWlsZCBjYXNlcyB1c2luZyBCYXplbCAoc3VjaCBhcyB0aGVcbiAqIGludGVybmFsIEdvb2dsZSBtb25vcmVwbywgZzMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhemVsQW5kRzNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEVuYWJsZXMgdGhlIGdlbmVyYXRpb24gb2YgYWxpYXMgcmUtZXhwb3J0cyBvZiBkaXJlY3RpdmVzL3BpcGVzIHRoYXQgYXJlIHZpc2libGUgZnJvbSBhblxuICAgKiBOZ01vZHVsZSBmcm9tIHRoYXQgTmdNb2R1bGUncyBmaWxlLlxuICAgKlxuICAgKiBUaGlzIG9wdGlvbiBzaG91bGQgYmUgZGlzYWJsZWQgZm9yIGFwcGxpY2F0aW9uIGJ1aWxkcyBvciBmb3IgQW5ndWxhciBQYWNrYWdlIEZvcm1hdCBsaWJyYXJpZXNcbiAgICogKHdoZXJlIE5nTW9kdWxlcyBhbG9uZyB3aXRoIHRoZWlyIGRpcmVjdGl2ZXMvcGlwZXMgYXJlIGV4cG9ydGVkIHZpYSBhIHNpbmdsZSBlbnRyeXBvaW50KS5cbiAgICpcbiAgICogRm9yIG90aGVyIGxpYnJhcnkgY29tcGlsYXRpb25zIHdoaWNoIGFyZSBpbnRlbmRlZCB0byBiZSBwYXRoLW1hcHBlZCBpbnRvIGFuIGFwcGxpY2F0aW9uIGJ1aWxkXG4gICAqIChvciBhbm90aGVyIGxpYnJhcnkpLCBlbmFibGluZyB0aGlzIG9wdGlvbiBlbmFibGVzIHRoZSByZXN1bHRpbmcgZGVlcCBpbXBvcnRzIHRvIHdvcmtcbiAgICogY29ycmVjdGx5LlxuICAgKlxuICAgKiBBIGNvbnN1bWVyIG9mIHN1Y2ggYSBwYXRoLW1hcHBlZCBsaWJyYXJ5IHdpbGwgd3JpdGUgYW4gaW1wb3J0IGxpa2U6XG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHtMaWJNb2R1bGV9IGZyb20gJ2xpYi9kZWVwL3BhdGgvdG8vbW9kdWxlJztcbiAgICogYGBgXG4gICAqXG4gICAqIFRoZSBjb21waWxlciB3aWxsIGF0dGVtcHQgdG8gZ2VuZXJhdGUgaW1wb3J0cyBvZiBkaXJlY3RpdmVzL3BpcGVzIGZyb20gdGhhdCBzYW1lIG1vZHVsZVxuICAgKiBzcGVjaWZpZXIgKHRoZSBjb21waWxlciBkb2VzIG5vdCByZXdyaXRlIHRoZSB1c2VyJ3MgZ2l2ZW4gaW1wb3J0IHBhdGgsIHVubGlrZSBWaWV3IEVuZ2luZSkuXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHtMaWJEaXIsIExpYkNtcCwgTGliUGlwZX0gZnJvbSAnbGliL2RlZXAvcGF0aC90by9tb2R1bGUnO1xuICAgKiBgYGBcbiAgICpcbiAgICogSXQgd291bGQgYmUgYnVyZGVuc29tZSBmb3IgdXNlcnMgdG8gaGF2ZSB0byByZS1leHBvcnQgYWxsIGRpcmVjdGl2ZXMvcGlwZXMgYWxvbmdzaWRlIGVhY2hcbiAgICogTmdNb2R1bGUgdG8gc3VwcG9ydCB0aGlzIGltcG9ydCBtb2RlbC4gRW5hYmxpbmcgdGhpcyBvcHRpb24gdGVsbHMgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICAqIHByaXZhdGUgcmUtZXhwb3J0cyBhbG9uZ3NpZGUgdGhlIE5nTW9kdWxlIG9mIGFsbCB0aGUgZGlyZWN0aXZlcy9waXBlcyBpdCBtYWtlcyBhdmFpbGFibGUsIHRvXG4gICAqIHN1cHBvcnQgdGhlc2UgZnV0dXJlIGltcG9ydHMuXG4gICAqL1xuICBnZW5lcmF0ZURlZXBSZWV4cG9ydHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnNlcnQgSlNEb2MgdHlwZSBhbm5vdGF0aW9ucyBuZWVkZWQgYnkgQ2xvc3VyZSBDb21waWxlclxuICAgKi9cbiAgYW5ub3RhdGVGb3JDbG9zdXJlQ29tcGlsZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgcmVsYXRlZCB0byBpMThuIGNvbXBpbGF0aW9uIHN1cHBvcnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bk9wdGlvbnMge1xuICAvKipcbiAgICogTG9jYWxlIG9mIHRoZSBpbXBvcnRlZCB0cmFuc2xhdGlvbnNcbiAgICovXG4gIGkxOG5JbkxvY2FsZT86IHN0cmluZztcblxuICAvKipcbiAgICogUmVuZGVyIGAkbG9jYWxpemVgIG1lc3NhZ2VzIHdpdGggbGVnYWN5IGZvcm1hdCBpZHMuXG4gICAqXG4gICAqIFRoaXMgaXMgb25seSBhY3RpdmUgaWYgd2UgYXJlIGJ1aWxkaW5nIHdpdGggYGVuYWJsZUl2eTogdHJ1ZWAuXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBub3cgaXMgYHRydWVgLlxuICAgKlxuICAgKiBVc2UgdGhpcyBvcHRpb24gd2hlbiB1c2UgYXJlIHVzaW5nIHRoZSBgJGxvY2FsaXplYCBiYXNlZCBsb2NhbGl6YXRpb24gbWVzc2FnZXMgYnV0XG4gICAqIGhhdmUgbm90IG1pZ3JhdGVkIHRoZSB0cmFuc2xhdGlvbiBmaWxlcyB0byB1c2UgdGhlIG5ldyBgJGxvY2FsaXplYCBtZXNzYWdlIGlkIGZvcm1hdC5cbiAgICovXG4gIGVuYWJsZUkxOG5MZWdhY3lNZXNzYWdlSWRGb3JtYXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRyYW5zbGF0aW9uIHZhcmlhYmxlIG5hbWUgc2hvdWxkIGNvbnRhaW4gZXh0ZXJuYWwgbWVzc2FnZSBpZFxuICAgKiAodXNlZCBieSBDbG9zdXJlIENvbXBpbGVyJ3Mgb3V0cHV0IG9mIGBnb29nLmdldE1zZ2AgZm9yIHRyYW5zaXRpb24gcGVyaW9kKVxuICAgKi9cbiAgaTE4blVzZUV4dGVybmFsSWRzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBOb24tcHVibGljIG9wdGlvbnMgd2hpY2ggYXJlIHVzZWZ1bCBkdXJpbmcgdGVzdGluZyBvZiB0aGUgY29tcGlsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE9ubHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIHRoZSBDb21waWxlckhvc3QncyBmaWxlTmFtZVRvTW9kdWxlTmFtZSB1dGlsaXR5IChpZiBhdmFpbGFibGUpIHRvIGdlbmVyYXRlXG4gICAqIGltcG9ydCBtb2R1bGUgc3BlY2lmaWVycy4gVGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LCBhbmQgZXhpc3RzIHRvIHN1cHBvcnQgcnVubmluZyBuZ3RzY1xuICAgKiB3aXRoaW4gR29vZ2xlLiBUaGlzIG9wdGlvbiBpcyBpbnRlcm5hbCBhbmQgaXMgdXNlZCBieSB0aGUgbmdfbW9kdWxlLmJ6bCBydWxlIHRvIHN3aXRjaFxuICAgKiBiZWhhdmlvciBiZXR3ZWVuIEJhemVsIGFuZCBCbGF6ZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfdXNlSG9zdEZvckltcG9ydEdlbmVyYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUdXJuIG9uIHRlbXBsYXRlIHR5cGUtY2hlY2tpbmcgaW4gdGhlIEl2eSBjb21waWxlci5cbiAgICpcbiAgICogVGhpcyBpcyBhbiBpbnRlcm5hbCBmbGFnIGJlaW5nIHVzZWQgdG8gcm9sbCBvdXQgdGVtcGxhdGUgdHlwZS1jaGVja2luZyBpbiBuZ3RzYy4gVHVybmluZyBpdCBvblxuICAgKiBieSBkZWZhdWx0IGJlZm9yZSBpdCdzIHJlYWR5IG1pZ2h0IGJyZWFrIG90aGVyIHVzZXJzIGF0dGVtcHRpbmcgdG8gdGVzdCB0aGUgbmV3IGNvbXBpbGVyJ3NcbiAgICogYmVoYXZpb3IuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgaXZ5VGVtcGxhdGVUeXBlQ2hlY2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgbWVyZ2VkIGludGVyZmFjZSBvZiBhbGwgb2YgdGhlIHZhcmlvdXMgQW5ndWxhciBjb21waWxlciBvcHRpb25zLCBhcyB3ZWxsIGFzIHRoZSBzdGFuZGFyZFxuICogYHRzLkNvbXBpbGVyT3B0aW9uc2AuXG4gKlxuICogQWxzbyBpbmNsdWRlcyBhIGZldyBtaXNjZWxsYW5lb3VzIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmdDb21waWxlck9wdGlvbnMgZXh0ZW5kcyB0cy5Db21waWxlck9wdGlvbnMsIExlZ2FjeU5nY09wdGlvbnMsIEJhemVsQW5kRzNPcHRpb25zLFxuICAgIE5nY0NvbXBhdGliaWxpdHlPcHRpb25zLCBTdHJpY3RUZW1wbGF0ZU9wdGlvbnMsIFRlc3RPbmx5T3B0aW9ucywgSTE4bk9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgY29tcGlsZXIgc2hvdWxkIGF2b2lkIGdlbmVyYXRpbmcgY29kZSBmb3IgY2xhc3NlcyB0aGF0IGhhdmVuJ3QgYmVlbiBleHBvcnRlZC5cbiAgICogVGhpcyBpcyBvbmx5IGFjdGl2ZSB3aGVuIGJ1aWxkaW5nIHdpdGggYGVuYWJsZUl2eTogdHJ1ZWAuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIGNvbXBpbGVOb25FeHBvcnRlZENsYXNzZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlbW92ZSBibGFuayB0ZXh0IG5vZGVzIGZyb20gY29tcGlsZWQgdGVtcGxhdGVzLiBJdCBpcyBgZmFsc2VgIGJ5IGRlZmF1bHQgc3RhcnRpbmdcbiAgICogZnJvbSBBbmd1bGFyIDYuXG4gICAqL1xuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzYWJsZSBUeXBlU2NyaXB0IFZlcnNpb24gQ2hlY2suXG4gICAqL1xuICBkaXNhYmxlVHlwZVNjcmlwdFZlcnNpb25DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqIEFuIG9wdGlvbiB0byBlbmFibGUgbmd0c2MncyBpbnRlcm5hbCBwZXJmb3JtYW5jZSB0cmFjaW5nLlxuICAgKlxuICAgKiBUaGlzIHNob3VsZCBiZSBhIHBhdGggdG8gYSBKU09OIGZpbGUgd2hlcmUgdHJhY2UgaW5mb3JtYXRpb24gd2lsbCBiZSB3cml0dGVuLiBBbiBvcHRpb25hbCAndHM6J1xuICAgKiBwcmVmaXggd2lsbCBjYXVzZSB0aGUgdHJhY2UgdG8gYmUgd3JpdHRlbiB2aWEgdGhlIFRTIGhvc3QgaW5zdGVhZCBvZiBkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbVxuICAgKiAobm90IGFsbCBob3N0cyBzdXBwb3J0IHRoaXMgbW9kZSBvZiBvcGVyYXRpb24pLlxuICAgKlxuICAgKiBUaGlzIGlzIGN1cnJlbnRseSBub3QgZXhwb3NlZCB0byB1c2VycyBhcyB0aGUgdHJhY2UgZm9ybWF0IGlzIHN0aWxsIHVuc3RhYmxlLlxuICAgKi9cbiAgdHJhY2VQZXJmb3JtYW5jZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXp5Um91dGUge1xuICByb3V0ZTogc3RyaW5nO1xuICBtb2R1bGU6IHtuYW1lOiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmd9O1xuICByZWZlcmVuY2VkTW9kdWxlOiB7bmFtZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nfTtcbn1cbiJdfQ==