@aws-cdk/aws-bedrock-agentcore-alpha 2.222.0-alpha.0 → 2.223.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +122 -156
- package/.jsii.tabl.json.gz +0 -0
- package/agentcore/memory/memory-strategy.d.ts +1 -3
- package/agentcore/memory/memory-strategy.js +2 -2
- package/agentcore/memory/memory.d.ts +6 -13
- package/agentcore/memory/memory.js +3 -3
- package/agentcore/memory/strategies/managed-strategy.d.ts +0 -3
- package/agentcore/memory/strategies/managed-strategy.js +2 -2
- package/agentcore/memory/strategies/self-managed-strategy.d.ts +4 -12
- package/agentcore/memory/strategies/self-managed-strategy.js +2 -2
- package/agentcore/network/network-configuration.js +4 -4
- package/agentcore/runtime/runtime-artifact.js +1 -1
- package/agentcore/runtime/runtime-authorizer-configuration.js +1 -1
- package/agentcore/runtime/runtime-base.js +1 -1
- package/agentcore/runtime/runtime-endpoint-base.js +1 -1
- package/agentcore/runtime/runtime-endpoint.js +1 -1
- package/agentcore/runtime/runtime.js +1 -1
- package/agentcore/tools/browser.js +2 -2
- package/agentcore/tools/code-interpreter.js +2 -2
- package/package.json +9 -9
package/.jsii.tabl.json.gz
CHANGED
|
Binary file
|
|
@@ -58,13 +58,11 @@ export declare enum MemoryStrategyType {
|
|
|
58
58
|
export interface MemoryStrategyCommonProps {
|
|
59
59
|
/**
|
|
60
60
|
* The name for the strategy
|
|
61
|
-
* @required - Yes
|
|
62
61
|
*/
|
|
63
62
|
readonly name: string;
|
|
64
63
|
/**
|
|
65
64
|
* The description of the strategy
|
|
66
|
-
* @default No description
|
|
67
|
-
* @required - No
|
|
65
|
+
* @default - No description
|
|
68
66
|
*/
|
|
69
67
|
readonly description?: string;
|
|
70
68
|
}
|
|
@@ -53,7 +53,7 @@ var MemoryStrategyType;
|
|
|
53
53
|
* @see https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/memory-strategies.html
|
|
54
54
|
*/
|
|
55
55
|
class MemoryStrategy {
|
|
56
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.
|
|
56
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryStrategy", version: "2.223.0-alpha.0" };
|
|
57
57
|
/**
|
|
58
58
|
* Default strategies for organizing and extracting memory data, each optimized for specific use cases.
|
|
59
59
|
* This strategy compresses conversations into concise overviews, preserving essential context and key insights for quick recall.
|
|
@@ -171,4 +171,4 @@ class MemoryStrategy {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
exports.MemoryStrategy = MemoryStrategy;
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVtb3J5LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZUEsZ0JBQWdCO0FBQ2hCLG9FQUE0RjtBQUM1Riw4RUFBeUc7QUFFekc7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUN4Qzs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUV6Qzs7R0FFRztBQUNILElBQVksa0JBa0JYO0FBbEJELFdBQVksa0JBQWtCO0lBQzVCOztPQUVHO0lBQ0gscURBQStCLENBQUE7SUFDL0I7OztPQUdHO0lBQ0gsMkNBQXFCLENBQUE7SUFDckI7O09BRUc7SUFDSCx5REFBbUMsQ0FBQTtJQUNuQzs7T0FFRztJQUNILHVDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFsQlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUFrQjdCO0FBcUREOzsrRUFFK0U7QUFDL0U7Ozs7OztHQU1HO0FBQ0gsTUFBYSxjQUFjOztJQUN6Qjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyx5QkFBeUI7UUFDckMsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRTtZQUNqRSxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLFdBQVcsRUFBRSxzRUFBc0U7WUFDbkYsVUFBVSxFQUFFLENBQUMsc0VBQXNFLENBQUM7U0FDckYsQ0FBQyxDQUFDO0tBQ0o7SUFDRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0I7UUFDaEMsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtZQUM1RCxJQUFJLEVBQUUsNkJBQTZCO1lBQ25DLFdBQVcsRUFDWCxrSEFBa0g7WUFDbEgsVUFBVSxFQUFFLENBQUMsaURBQWlELENBQUM7U0FDaEUsQ0FBQyxDQUFDO0tBQ0o7SUFDRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQywwQkFBMEI7UUFDdEMsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRTtZQUNuRSxJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLFdBQVcsRUFBRSxnSEFBZ0g7WUFDN0gsVUFBVSxFQUFFLENBQUMsaURBQWlELENBQUM7U0FDaEUsQ0FBQyxDQUFDO0tBQ0o7SUFDRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQTRCOzs7Ozs7Ozs7O1FBQ3RELE9BQU8sSUFBSSx3Q0FBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkU7SUFDRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBNEI7Ozs7Ozs7Ozs7UUFDNUQsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM5RTtJQUNEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUE0Qjs7Ozs7Ozs7OztRQUMzRCxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzVFO0lBQ0Q7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBZ0M7Ozs7Ozs7Ozs7UUFDN0Qsd0RBQXdEO1FBQ3hELE9BQU8sSUFBSSxpREFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDekU7O0FBaEZILHdDQWlGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuLy8gSW50ZXJuYWwgbGlic1xuaW1wb3J0IHsgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LCBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyB9IGZyb20gJy4vc3RyYXRlZ2llcy9tYW5hZ2VkLXN0cmF0ZWd5JztcbmltcG9ydCB7IFNlbGZNYW5hZ2VkTWVtb3J5U3RyYXRlZ3ksIFNlbGZNYW5hZ2VkU3RyYXRlZ3lQcm9wcyB9IGZyb20gJy4vc3RyYXRlZ2llcy9zZWxmLW1hbmFnZWQtc3RyYXRlZ3knO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUQU5UU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBNaW5pbXVtIGxlbmd0aCBmb3IgbWVtb3J5IHN0cmF0ZWd5IG5hbWVcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgTUVNT1JZX05BTUVfTUlOX0xFTkdUSCA9IDE7XG4vKipcbiAqIE1heGltdW0gbGVuZ3RoIGZvciBtZW1vcnkgc3RyYXRlZ3kgbmFtZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBNRU1PUllfTkFNRV9NQVhfTEVOR1RIID0gNDg7XG5cbi8qKlxuICogTG9uZy10ZXJtIG1lbW9yeSBleHRyYWN0aW9uIHN0cmF0ZWd5IHR5cGVzLlxuICovXG5leHBvcnQgZW51bSBNZW1vcnlTdHJhdGVneVR5cGUge1xuICAvKipcbiAgICogU3VtbWFyaXphdGlvbiBzdHJhdGVneSAtIGV4dHJhY3RzIGNvbmNpc2Ugc3VtbWFyaWVzIHRvIHByZXNlcnZlIGNyaXRpY2FsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0c1xuICAgKi9cbiAgU1VNTUFSSVpBVElPTiA9ICdTVU1NQVJJWkFUSU9OJyxcbiAgLyoqXG4gICAqIFNlbWFudGljIG1lbW9yeSBzdHJhdGVneSAtIGV4dHJhY3RzIGdlbmVyYWwgZmFjdHVhbCBrbm93bGVkZ2UsIGNvbmNlcHRzIGFuZCBtZWFuaW5ncyBmcm9tIHJhdyBjb252ZXJzYXRpb25zXG4gICAqIHVzaW5nIHZlY3RvciBlbWJlZGRpbmdzIGZvciBzaW1pbGFyaXR5IHNlYXJjaC5cbiAgICovXG4gIFNFTUFOVElDID0gJ1NFTUFOVElDJyxcbiAgLyoqXG4gICAqIFVzZXIgcHJlZmVyZW5jZXMgc3RyYXRlZ3kgLSBleHRyYWN0cyB1c2VyIGJlaGF2aW9yIHBhdHRlcm5zIGZyb20gcmF3IGNvbnZlcnNhdGlvbnMuXG4gICAqL1xuICBVU0VSX1BSRUZFUkVOQ0UgPSAnVVNFUl9QUkVGRVJFTkNFJyxcbiAgLyoqXG4gICAqIEN1c3RvbWl6ZSBtZW1vcnkgcHJvY2Vzc2luZyB0aHJvdWdoIGN1c3RvbSBmb3VuZGF0aW9uIG1vZGVsIGFuZCBwcm9tcHQgdGVtcGxhdGVzLlxuICAgKi9cbiAgQ1VTVE9NID0gJ0NVU1RPTScsXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBjb21tb24gZm9yIGFueSBtZW1vcnkgc3RyYXRlZ3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlTdHJhdGVneUNvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGUgc3RyYXRlZ3lcbiAgICogQHJlcXVpcmVkIC0gWWVzXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIHN0cmF0ZWd5XG4gICAqIEBkZWZhdWx0IE5vIGRlc2NyaXB0aW9uXG4gICAqIEByZXF1aXJlZCAtIE5vXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW50ZXJmYWNlIGZvciBNZW1vcnkgc3RyYXRlZ2llc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElNZW1vcnlTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWVtb3J5IHN0cmF0ZWd5XG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIG1lbW9yeSBzdHJhdGVneVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBtZW1vcnkgc3RyYXRlZ3lcbiAgICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5VHlwZTogTWVtb3J5U3RyYXRlZ3lUeXBlO1xuICAvKipcbiAgICogUmVuZGVycyBpbnRlcm5hbCBhdHRyaWJ1dGVzIHRvIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICByZW5kZXIoKTogYmVkcm9ja2FnZW50Y29yZS5DZm5NZW1vcnkuTWVtb3J5U3RyYXRlZ3lQcm9wZXJ0eTtcbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHRoZSByb2xlXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIGdyYW50ZWUgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG9cbiAgICogQHJldHVybnMgVGhlIEdyYW50IG9iamVjdCBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHwgdW5kZWZpbmVkO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhY3RvcnlcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogRmFjdG9yeSBjbGFzcyBmb3IgY3JlYXRpbmcgbWVtb3J5IHN0cmF0ZWdpZXNcbiAqIElmIHlvdSBuZWVkIGxvbmctdGVybSBtZW1vcnkgZm9yIGNvbnRleHQgcmVjYWxsIGFjcm9zcyBzZXNzaW9ucywgeW91IGNhbiBzZXR1cCBtZW1vcnkgZXh0cmFjdGlvbiBzdHJhdGVnaWVzIHRvIGV4dHJhY3QgdGhlIHJlbGV2YW50IG1lbW9yeSBmcm9tIHRoZSByYXcgZXZlbnRzLlxuICogVXNlIGJ1aWx0LWluIHN0cmF0ZWdpZXMgZm9yIHF1aWNrIHNldHVwLCB1c2UgYnVpbHQtaW4gc3RyYXRlZ2llcyB3aXRoIG92ZXJyaWRlIHRvIHNwZWNpZnkgbW9kZWxzIGFuZCBwcm9tcHQgdGVtcGxhdGVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9tZW1vcnktc3RyYXRlZ2llcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBNZW1vcnlTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHN0cmF0ZWdpZXMgZm9yIG9yZ2FuaXppbmcgYW5kIGV4dHJhY3RpbmcgbWVtb3J5IGRhdGEsIGVhY2ggb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqIFRoaXMgc3RyYXRlZ3kgY29tcHJlc3NlcyBjb252ZXJzYXRpb25zIGludG8gY29uY2lzZSBvdmVydmlld3MsIHByZXNlcnZpbmcgZXNzZW50aWFsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0cyBmb3IgcXVpY2sgcmVjYWxsLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXJzIGNvbmZ1c2VkIGJ5IGNsb3VkIHNldHVwIGR1cmluZyBvbmJvYXJkaW5nLlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdCdWlsdEluU3VtbWFyaXphdGlvbigpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5TVU1NQVJJWkFUSU9OLCB7XG4gICAgICBuYW1lOiAnc3VtbWFyeV9idWlsdGluX2Nka0dlbjAwMDEnLFxuICAgICAgZGVzY3JpcHRpb246ICdTdW1tYXJpemUgaW50ZXJhY3Rpb25zIHRvIHByZXNlcnZlIGNyaXRpY2FsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0cycsXG4gICAgICBuYW1lc3BhY2VzOiBbJy9zdHJhdGVnaWVzL3ttZW1vcnlTdHJhdGVneUlkfS9hY3RvcnMve2FjdG9ySWR9L3Nlc3Npb25zL3tzZXNzaW9uSWR9J10sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIERlZmF1bHQgc3RyYXRlZ2llcyBmb3Igb3JnYW5pemluZyBhbmQgZXh0cmFjdGluZyBtZW1vcnkgZGF0YSwgZWFjaCBvcHRpbWl6ZWQgZm9yIHNwZWNpZmljIHVzZSBjYXNlcy5cbiAgICogRGlzdGlsbHMgZ2VuZXJhbCBmYWN0cywgY29uY2VwdHMsIGFuZCB1bmRlcmx5aW5nIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbmFsIGRhdGEsIHByZXNlbnRpbmcgdGhlIGluZm9ybWF0aW9uIGluIGEgY29udGV4dC1pbmRlcGVuZGVudCBmb3JtYXQuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogSW4tY29udGV4dCBsZWFybmluZyA9IHRhc2stc29sdmluZyB2aWEgZXhhbXBsZXMsIG5vIHRyYWluaW5nIG5lZWRlZC5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQnVpbHRJblNlbWFudGljKCk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLlNFTUFOVElDLCB7XG4gICAgICBuYW1lOiAnc2VtYW50aWNfYnVpbHRpbl9jZGtHZW4wMDAxJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0V4dHJhY3QgZ2VuZXJhbCBmYWN0dWFsIGtub3dsZWRnZSwgY29uY2VwdHMgYW5kIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbnMgaW4gYSBjb250ZXh0LWluZGVwZW5kZW50IGZvcm1hdC4nLFxuICAgICAgbmFtZXNwYWNlczogWycvc3RyYXRlZ2llcy97bWVtb3J5U3RyYXRlZ3lJZH0vYWN0b3JzL3thY3RvcklkfSddLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBEZWZhdWx0IHN0cmF0ZWdpZXMgZm9yIG9yZ2FuaXppbmcgYW5kIGV4dHJhY3RpbmcgbWVtb3J5IGRhdGEsIGVhY2ggb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqIENhcHR1cmVzIGluZGl2aWR1YWwgcHJlZmVyZW5jZXMsIGludGVyYWN0aW9uIHBhdHRlcm5zLCBhbmQgcGVyc29uYWxpemVkIHNldHRpbmdzIHRvIGVuaGFuY2UgZnV0dXJlIGV4cGVyaWVuY2VzLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgbmVlZHMgY2xlYXIgZ3VpZGFuY2Ugb24gY2xvdWQgc3RvcmFnZSBhY2NvdW50IGNvbm5lY3Rpb24gZHVyaW5nIG9uYm9hcmRpbmcuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ0J1aWx0SW5Vc2VyUHJlZmVyZW5jZSgpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0UsIHtcbiAgICAgIG5hbWU6ICdwcmVmZXJlbmNlX2J1aWx0aW5fY2RrR2VuMDAwMScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0NhcHR1cmUgaW5kaXZpZHVhbCBwcmVmZXJlbmNlcywgaW50ZXJhY3Rpb24gcGF0dGVybnMsIGFuZCBwZXJzb25hbGl6ZWQgc2V0dGluZ3MgdG8gZW5oYW5jZSBmdXR1cmUgZXhwZXJpZW5jZXMuJyxcbiAgICAgIG5hbWVzcGFjZXM6IFsnL3N0cmF0ZWdpZXMve21lbW9yeVN0cmF0ZWd5SWR9L2FjdG9ycy97YWN0b3JJZH0nXSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNlbWFudGljIG1lbW9yeSBzdHJhdGVneSB3aXRoIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuICAgKiBEaXN0aWxscyBnZW5lcmFsIGZhY3RzLCBjb25jZXB0cywgYW5kIHVuZGVybHlpbmcgbWVhbmluZ3MgZnJvbSByYXcgY29udmVyc2F0aW9uYWwgZGF0YSwgcHJlc2VudGluZyB0aGUgaW5mb3JtYXRpb24gaW4gYSBjb250ZXh0LWluZGVwZW5kZW50IGZvcm1hdC5cbiAgICogRXh0cmFjdGVkIG1lbW9yeSBleGFtcGxlOiBJbi1jb250ZXh0IGxlYXJuaW5nID0gdGFzay1zb2x2aW5nIHZpYSBleGFtcGxlcywgbm8gdHJhaW5pbmcgbmVlZGVkLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzZW1hbnRpYyBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1NlbWFudGljKGNvbmZpZzogTWFuYWdlZFN0cmF0ZWd5UHJvcHMpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5TRU1BTlRJQywgY29uZmlnKTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIHVzZXIgcHJlZmVyZW5jZSBtZW1vcnkgc3RyYXRlZ3kgd2l0aCBjdXN0b20gY29uZmlndXJhdGlvbi5cbiAgICogQ2FwdHVyZXMgaW5kaXZpZHVhbCBwcmVmZXJlbmNlcywgaW50ZXJhY3Rpb24gcGF0dGVybnMsIGFuZCBwZXJzb25hbGl6ZWQgc2V0dGluZ3MgdG8gZW5oYW5jZSBmdXR1cmUgZXhwZXJpZW5jZXMuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogVXNlciBuZWVkcyBjbGVhciBndWlkYW5jZSBvbiBjbG91ZCBzdG9yYWdlIGFjY291bnQgY29ubmVjdGlvbiBkdXJpbmcgb25ib2FyZGluZy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdXNlciBwcmVmZXJlbmNlIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nVXNlclByZWZlcmVuY2UoY29uZmlnOiBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLlVTRVJfUFJFRkVSRU5DRSwgY29uZmlnKTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIHN1bW1hcml6YXRpb24gbWVtb3J5IHN0cmF0ZWd5IHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb24uXG4gICAqIFRoaXMgc3RyYXRlZ3kgY29tcHJlc3NlcyBjb252ZXJzYXRpb25zIGludG8gY29uY2lzZSBvdmVydmlld3MsIHByZXNlcnZpbmcgZXNzZW50aWFsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0cyBmb3IgcXVpY2sgcmVjYWxsLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXJzIGNvbmZ1c2VkIGJ5IGNsb3VkIHNldHVwIGR1cmluZyBvbmJvYXJkaW5nLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdW1tYXJpemF0aW9uIG1lbW9yeSBzdHJhdGVneS5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nU3VtbWFyaXphdGlvbihjb25maWc6IE1hbmFnZWRTdHJhdGVneVByb3BzKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuU1VNTUFSSVpBVElPTiwgY29uZmlnKTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIHNlbGYtbWFuYWdlZCBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEEgc2VsZi1tYW5hZ2VkIHN0cmF0ZWd5IGdpdmVzIHlvdSBjb21wbGV0ZSBjb250cm9sIG92ZXIgeW91ciBtZW1vcnkgZXh0cmFjdGlvbiBhbmQgY29uc29saWRhdGlvbiBwaXBlbGluZXMuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNlbGYtbWFuYWdlZCBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgU2VsZk1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdTZWxmTWFuYWdlZChjb25maWc6IFNlbGZNYW5hZ2VkU3RyYXRlZ3lQcm9wcyk6IFNlbGZNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIC8vIFNjb3BlIGlzIHBhc3NlZCBmb3IgZnV0dXJlIHVzZSBpbiBwZXJtaXNzaW9uIGdyYW50aW5nXG4gICAgcmV0dXJuIG5ldyBTZWxmTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5DVVNUT00sIGNvbmZpZyk7XG4gIH1cbn1cbiJdfQ==
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVtb3J5LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZUEsZ0JBQWdCO0FBQ2hCLG9FQUE0RjtBQUM1Riw4RUFBeUc7QUFFekc7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUN4Qzs7O0dBR0c7QUFDVSxRQUFBLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUV6Qzs7R0FFRztBQUNILElBQVksa0JBa0JYO0FBbEJELFdBQVksa0JBQWtCO0lBQzVCOztPQUVHO0lBQ0gscURBQStCLENBQUE7SUFDL0I7OztPQUdHO0lBQ0gsMkNBQXFCLENBQUE7SUFDckI7O09BRUc7SUFDSCx5REFBbUMsQ0FBQTtJQUNuQzs7T0FFRztJQUNILHVDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFsQlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUFrQjdCO0FBbUREOzsrRUFFK0U7QUFDL0U7Ozs7OztHQU1HO0FBQ0gsTUFBYSxjQUFjOztJQUN6Qjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyx5QkFBeUI7UUFDckMsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRTtZQUNqRSxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLFdBQVcsRUFBRSxzRUFBc0U7WUFDbkYsVUFBVSxFQUFFLENBQUMsc0VBQXNFLENBQUM7U0FDckYsQ0FBQyxDQUFDO0tBQ0o7SUFDRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0I7UUFDaEMsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtZQUM1RCxJQUFJLEVBQUUsNkJBQTZCO1lBQ25DLFdBQVcsRUFDWCxrSEFBa0g7WUFDbEgsVUFBVSxFQUFFLENBQUMsaURBQWlELENBQUM7U0FDaEUsQ0FBQyxDQUFDO0tBQ0o7SUFDRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQywwQkFBMEI7UUFDdEMsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRTtZQUNuRSxJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLFdBQVcsRUFBRSxnSEFBZ0g7WUFDN0gsVUFBVSxFQUFFLENBQUMsaURBQWlELENBQUM7U0FDaEUsQ0FBQyxDQUFDO0tBQ0o7SUFDRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQTRCOzs7Ozs7Ozs7O1FBQ3RELE9BQU8sSUFBSSx3Q0FBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkU7SUFDRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsTUFBNEI7Ozs7Ozs7Ozs7UUFDNUQsT0FBTyxJQUFJLHdDQUFxQixDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUM5RTtJQUNEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUE0Qjs7Ozs7Ozs7OztRQUMzRCxPQUFPLElBQUksd0NBQXFCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzVFO0lBQ0Q7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBZ0M7Ozs7Ozs7Ozs7UUFDN0Qsd0RBQXdEO1FBQ3hELE9BQU8sSUFBSSxpREFBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDekU7O0FBaEZILHdDQWlGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuLy8gSW50ZXJuYWwgbGlic1xuaW1wb3J0IHsgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LCBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyB9IGZyb20gJy4vc3RyYXRlZ2llcy9tYW5hZ2VkLXN0cmF0ZWd5JztcbmltcG9ydCB7IFNlbGZNYW5hZ2VkTWVtb3J5U3RyYXRlZ3ksIFNlbGZNYW5hZ2VkU3RyYXRlZ3lQcm9wcyB9IGZyb20gJy4vc3RyYXRlZ2llcy9zZWxmLW1hbmFnZWQtc3RyYXRlZ3knO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUQU5UU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBNaW5pbXVtIGxlbmd0aCBmb3IgbWVtb3J5IHN0cmF0ZWd5IG5hbWVcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgTUVNT1JZX05BTUVfTUlOX0xFTkdUSCA9IDE7XG4vKipcbiAqIE1heGltdW0gbGVuZ3RoIGZvciBtZW1vcnkgc3RyYXRlZ3kgbmFtZVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBNRU1PUllfTkFNRV9NQVhfTEVOR1RIID0gNDg7XG5cbi8qKlxuICogTG9uZy10ZXJtIG1lbW9yeSBleHRyYWN0aW9uIHN0cmF0ZWd5IHR5cGVzLlxuICovXG5leHBvcnQgZW51bSBNZW1vcnlTdHJhdGVneVR5cGUge1xuICAvKipcbiAgICogU3VtbWFyaXphdGlvbiBzdHJhdGVneSAtIGV4dHJhY3RzIGNvbmNpc2Ugc3VtbWFyaWVzIHRvIHByZXNlcnZlIGNyaXRpY2FsIGNvbnRleHQgYW5kIGtleSBpbnNpZ2h0c1xuICAgKi9cbiAgU1VNTUFSSVpBVElPTiA9ICdTVU1NQVJJWkFUSU9OJyxcbiAgLyoqXG4gICAqIFNlbWFudGljIG1lbW9yeSBzdHJhdGVneSAtIGV4dHJhY3RzIGdlbmVyYWwgZmFjdHVhbCBrbm93bGVkZ2UsIGNvbmNlcHRzIGFuZCBtZWFuaW5ncyBmcm9tIHJhdyBjb252ZXJzYXRpb25zXG4gICAqIHVzaW5nIHZlY3RvciBlbWJlZGRpbmdzIGZvciBzaW1pbGFyaXR5IHNlYXJjaC5cbiAgICovXG4gIFNFTUFOVElDID0gJ1NFTUFOVElDJyxcbiAgLyoqXG4gICAqIFVzZXIgcHJlZmVyZW5jZXMgc3RyYXRlZ3kgLSBleHRyYWN0cyB1c2VyIGJlaGF2aW9yIHBhdHRlcm5zIGZyb20gcmF3IGNvbnZlcnNhdGlvbnMuXG4gICAqL1xuICBVU0VSX1BSRUZFUkVOQ0UgPSAnVVNFUl9QUkVGRVJFTkNFJyxcbiAgLyoqXG4gICAqIEN1c3RvbWl6ZSBtZW1vcnkgcHJvY2Vzc2luZyB0aHJvdWdoIGN1c3RvbSBmb3VuZGF0aW9uIG1vZGVsIGFuZCBwcm9tcHQgdGVtcGxhdGVzLlxuICAgKi9cbiAgQ1VTVE9NID0gJ0NVU1RPTScsXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBjb21tb24gZm9yIGFueSBtZW1vcnkgc3RyYXRlZ3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlTdHJhdGVneUNvbW1vblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGZvciB0aGUgc3RyYXRlZ3lcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgc3RyYXRlZ3lcbiAgICogQGRlZmF1bHQgLSBObyBkZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEludGVyZmFjZSBmb3IgTWVtb3J5IHN0cmF0ZWdpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTWVtb3J5U3RyYXRlZ3kge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG1lbW9yeSBzdHJhdGVneVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBtZW1vcnkgc3RyYXRlZ3lcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgbWVtb3J5IHN0cmF0ZWd5XG4gICAqL1xuICByZWFkb25seSBzdHJhdGVneVR5cGU6IE1lbW9yeVN0cmF0ZWd5VHlwZTtcbiAgLyoqXG4gICAqIFJlbmRlcnMgaW50ZXJuYWwgYXR0cmlidXRlcyB0byBDbG91ZEZvcm1hdGlvblxuICAgKi9cbiAgcmVuZGVyKCk6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuTWVtb3J5Lk1lbW9yeVN0cmF0ZWd5UHJvcGVydHk7XG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byB0aGUgcm9sZVxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBncmFudGVlIHRvIGdyYW50IHBlcm1pc3Npb25zIHRvXG4gICAqIEByZXR1cm5zIFRoZSBHcmFudCBvYmplY3QgZm9yIGNoYWluaW5nXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB8IHVuZGVmaW5lZDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWN0b3J5XG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIG1lbW9yeSBzdHJhdGVnaWVzXG4gKiBJZiB5b3UgbmVlZCBsb25nLXRlcm0gbWVtb3J5IGZvciBjb250ZXh0IHJlY2FsbCBhY3Jvc3Mgc2Vzc2lvbnMsIHlvdSBjYW4gc2V0dXAgbWVtb3J5IGV4dHJhY3Rpb24gc3RyYXRlZ2llcyB0byBleHRyYWN0IHRoZSByZWxldmFudCBtZW1vcnkgZnJvbSB0aGUgcmF3IGV2ZW50cy5cbiAqIFVzZSBidWlsdC1pbiBzdHJhdGVnaWVzIGZvciBxdWljayBzZXR1cCwgdXNlIGJ1aWx0LWluIHN0cmF0ZWdpZXMgd2l0aCBvdmVycmlkZSB0byBzcGVjaWZ5IG1vZGVscyBhbmQgcHJvbXB0IHRlbXBsYXRlcy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvbWVtb3J5LXN0cmF0ZWdpZXMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgTWVtb3J5U3RyYXRlZ3kge1xuICAvKipcbiAgICogRGVmYXVsdCBzdHJhdGVnaWVzIGZvciBvcmdhbml6aW5nIGFuZCBleHRyYWN0aW5nIG1lbW9yeSBkYXRhLCBlYWNoIG9wdGltaXplZCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKiBUaGlzIHN0cmF0ZWd5IGNvbXByZXNzZXMgY29udmVyc2F0aW9ucyBpbnRvIGNvbmNpc2Ugb3ZlcnZpZXdzLCBwcmVzZXJ2aW5nIGVzc2VudGlhbCBjb250ZXh0IGFuZCBrZXkgaW5zaWdodHMgZm9yIHF1aWNrIHJlY2FsbC5cbiAgICogRXh0cmFjdGVkIG1lbW9yeSBleGFtcGxlOiBVc2VycyBjb25mdXNlZCBieSBjbG91ZCBzZXR1cCBkdXJpbmcgb25ib2FyZGluZy5cbiAgICogQHJldHVybnMgQSBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nQnVpbHRJblN1bW1hcml6YXRpb24oKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuU1VNTUFSSVpBVElPTiwge1xuICAgICAgbmFtZTogJ3N1bW1hcnlfYnVpbHRpbl9jZGtHZW4wMDAxJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU3VtbWFyaXplIGludGVyYWN0aW9ucyB0byBwcmVzZXJ2ZSBjcml0aWNhbCBjb250ZXh0IGFuZCBrZXkgaW5zaWdodHMnLFxuICAgICAgbmFtZXNwYWNlczogWycvc3RyYXRlZ2llcy97bWVtb3J5U3RyYXRlZ3lJZH0vYWN0b3JzL3thY3RvcklkfS9zZXNzaW9ucy97c2Vzc2lvbklkfSddLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBEZWZhdWx0IHN0cmF0ZWdpZXMgZm9yIG9yZ2FuaXppbmcgYW5kIGV4dHJhY3RpbmcgbWVtb3J5IGRhdGEsIGVhY2ggb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gICAqIERpc3RpbGxzIGdlbmVyYWwgZmFjdHMsIGNvbmNlcHRzLCBhbmQgdW5kZXJseWluZyBtZWFuaW5ncyBmcm9tIHJhdyBjb252ZXJzYXRpb25hbCBkYXRhLCBwcmVzZW50aW5nIHRoZSBpbmZvcm1hdGlvbiBpbiBhIGNvbnRleHQtaW5kZXBlbmRlbnQgZm9ybWF0LlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IEluLWNvbnRleHQgbGVhcm5pbmcgPSB0YXNrLXNvbHZpbmcgdmlhIGV4YW1wbGVzLCBubyB0cmFpbmluZyBuZWVkZWQuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ0J1aWx0SW5TZW1hbnRpYygpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5TRU1BTlRJQywge1xuICAgICAgbmFtZTogJ3NlbWFudGljX2J1aWx0aW5fY2RrR2VuMDAwMScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdFeHRyYWN0IGdlbmVyYWwgZmFjdHVhbCBrbm93bGVkZ2UsIGNvbmNlcHRzIGFuZCBtZWFuaW5ncyBmcm9tIHJhdyBjb252ZXJzYXRpb25zIGluIGEgY29udGV4dC1pbmRlcGVuZGVudCBmb3JtYXQuJyxcbiAgICAgIG5hbWVzcGFjZXM6IFsnL3N0cmF0ZWdpZXMve21lbW9yeVN0cmF0ZWd5SWR9L2FjdG9ycy97YWN0b3JJZH0nXSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGVmYXVsdCBzdHJhdGVnaWVzIGZvciBvcmdhbml6aW5nIGFuZCBleHRyYWN0aW5nIG1lbW9yeSBkYXRhLCBlYWNoIG9wdGltaXplZCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKiBDYXB0dXJlcyBpbmRpdmlkdWFsIHByZWZlcmVuY2VzLCBpbnRlcmFjdGlvbiBwYXR0ZXJucywgYW5kIHBlcnNvbmFsaXplZCBzZXR0aW5ncyB0byBlbmhhbmNlIGZ1dHVyZSBleHBlcmllbmNlcy5cbiAgICogRXh0cmFjdGVkIG1lbW9yeSBleGFtcGxlOiBVc2VyIG5lZWRzIGNsZWFyIGd1aWRhbmNlIG9uIGNsb3VkIHN0b3JhZ2UgYWNjb3VudCBjb25uZWN0aW9uIGR1cmluZyBvbmJvYXJkaW5nLlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdCdWlsdEluVXNlclByZWZlcmVuY2UoKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuVVNFUl9QUkVGRVJFTkNFLCB7XG4gICAgICBuYW1lOiAncHJlZmVyZW5jZV9idWlsdGluX2Nka0dlbjAwMDEnLFxuICAgICAgZGVzY3JpcHRpb246ICdDYXB0dXJlIGluZGl2aWR1YWwgcHJlZmVyZW5jZXMsIGludGVyYWN0aW9uIHBhdHRlcm5zLCBhbmQgcGVyc29uYWxpemVkIHNldHRpbmdzIHRvIGVuaGFuY2UgZnV0dXJlIGV4cGVyaWVuY2VzLicsXG4gICAgICBuYW1lc3BhY2VzOiBbJy9zdHJhdGVnaWVzL3ttZW1vcnlTdHJhdGVneUlkfS9hY3RvcnMve2FjdG9ySWR9J10sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzZW1hbnRpYyBtZW1vcnkgc3RyYXRlZ3kgd2l0aCBjdXN0b20gY29uZmlndXJhdGlvbi5cbiAgICogRGlzdGlsbHMgZ2VuZXJhbCBmYWN0cywgY29uY2VwdHMsIGFuZCB1bmRlcmx5aW5nIG1lYW5pbmdzIGZyb20gcmF3IGNvbnZlcnNhdGlvbmFsIGRhdGEsIHByZXNlbnRpbmcgdGhlIGluZm9ybWF0aW9uIGluIGEgY29udGV4dC1pbmRlcGVuZGVudCBmb3JtYXQuXG4gICAqIEV4dHJhY3RlZCBtZW1vcnkgZXhhbXBsZTogSW4tY29udGV4dCBsZWFybmluZyA9IHRhc2stc29sdmluZyB2aWEgZXhhbXBsZXMsIG5vIHRyYWluaW5nIG5lZWRlZC5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2VtYW50aWMgbWVtb3J5IHN0cmF0ZWd5LlxuICAgKiBAcmV0dXJucyBBIE1hbmFnZWRNZW1vcnlTdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdXNpbmdTZW1hbnRpYyhjb25maWc6IE1hbmFnZWRTdHJhdGVneVByb3BzKTogTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICByZXR1cm4gbmV3IE1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuU0VNQU5USUMsIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1c2VyIHByZWZlcmVuY2UgbWVtb3J5IHN0cmF0ZWd5IHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb24uXG4gICAqIENhcHR1cmVzIGluZGl2aWR1YWwgcHJlZmVyZW5jZXMsIGludGVyYWN0aW9uIHBhdHRlcm5zLCBhbmQgcGVyc29uYWxpemVkIHNldHRpbmdzIHRvIGVuaGFuY2UgZnV0dXJlIGV4cGVyaWVuY2VzLlxuICAgKiBFeHRyYWN0ZWQgbWVtb3J5IGV4YW1wbGU6IFVzZXIgbmVlZHMgY2xlYXIgZ3VpZGFuY2Ugb24gY2xvdWQgc3RvcmFnZSBhY2NvdW50IGNvbm5lY3Rpb24gZHVyaW5nIG9uYm9hcmRpbmcuXG4gICAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHVzZXIgcHJlZmVyZW5jZSBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1VzZXJQcmVmZXJlbmNlKGNvbmZpZzogTWFuYWdlZFN0cmF0ZWd5UHJvcHMpOiBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5KE1lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0UsIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdW1tYXJpemF0aW9uIG1lbW9yeSBzdHJhdGVneSB3aXRoIGN1c3RvbSBjb25maWd1cmF0aW9uLlxuICAgKiBUaGlzIHN0cmF0ZWd5IGNvbXByZXNzZXMgY29udmVyc2F0aW9ucyBpbnRvIGNvbmNpc2Ugb3ZlcnZpZXdzLCBwcmVzZXJ2aW5nIGVzc2VudGlhbCBjb250ZXh0IGFuZCBrZXkgaW5zaWdodHMgZm9yIHF1aWNrIHJlY2FsbC5cbiAgICogRXh0cmFjdGVkIG1lbW9yeSBleGFtcGxlOiBVc2VycyBjb25mdXNlZCBieSBjbG91ZCBzZXR1cCBkdXJpbmcgb25ib2FyZGluZy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc3VtbWFyaXphdGlvbiBtZW1vcnkgc3RyYXRlZ3kuXG4gICAqIEByZXR1cm5zIEEgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB1c2luZ1N1bW1hcml6YXRpb24oY29uZmlnOiBNYW5hZ2VkU3RyYXRlZ3lQcm9wcyk6IE1hbmFnZWRNZW1vcnlTdHJhdGVneSB7XG4gICAgcmV0dXJuIG5ldyBNYW5hZ2VkTWVtb3J5U3RyYXRlZ3koTWVtb3J5U3RyYXRlZ3lUeXBlLlNVTU1BUklaQVRJT04sIGNvbmZpZyk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzZWxmLW1hbmFnZWQgbWVtb3J5IHN0cmF0ZWd5LlxuICAgKiBBIHNlbGYtbWFuYWdlZCBzdHJhdGVneSBnaXZlcyB5b3UgY29tcGxldGUgY29udHJvbCBvdmVyIHlvdXIgbWVtb3J5IGV4dHJhY3Rpb24gYW5kIGNvbnNvbGlkYXRpb24gcGlwZWxpbmVzLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzZWxmLW1hbmFnZWQgbWVtb3J5IHN0cmF0ZWd5LlxuICAgKiBAcmV0dXJucyBBIFNlbGZNYW5hZ2VkTWVtb3J5U3RyYXRlZ3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHVzaW5nU2VsZk1hbmFnZWQoY29uZmlnOiBTZWxmTWFuYWdlZFN0cmF0ZWd5UHJvcHMpOiBTZWxmTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IHtcbiAgICAvLyBTY29wZSBpcyBwYXNzZWQgZm9yIGZ1dHVyZSB1c2UgaW4gcGVybWlzc2lvbiBncmFudGluZ1xuICAgIHJldHVybiBuZXcgU2VsZk1hbmFnZWRNZW1vcnlTdHJhdGVneShNZW1vcnlTdHJhdGVneVR5cGUuQ1VTVE9NLCBjb25maWcpO1xuICB9XG59XG4iXX0=
|
|
@@ -316,52 +316,45 @@ export interface MemoryProps {
|
|
|
316
316
|
* Valid characters are a-z, A-Z, 0-9, _ (underscore)
|
|
317
317
|
* The name must start with a letter and can be up to 48 characters long
|
|
318
318
|
* Pattern: [a-zA-Z][a-zA-Z0-9_]{0,47}
|
|
319
|
-
* @required - No
|
|
320
319
|
*/
|
|
321
320
|
readonly memoryName: string;
|
|
322
321
|
/**
|
|
323
322
|
* Short-term memory expiration in days (between 7 and 365).
|
|
324
323
|
* Sets the short-term (raw event) memory retention.
|
|
325
324
|
* Events older than the specified duration will expire and no longer be stored.
|
|
326
|
-
* @default 90
|
|
327
|
-
* @required - No
|
|
325
|
+
* @default - 90 days
|
|
328
326
|
*/
|
|
329
327
|
readonly expirationDuration?: Duration;
|
|
330
328
|
/**
|
|
331
329
|
* Optional description for the memory
|
|
332
330
|
* Valid characters are a-z, A-Z, 0-9, _ (underscore), - (hyphen) and spaces
|
|
333
331
|
* The description can have up to 200 characters
|
|
334
|
-
* @default No description
|
|
335
|
-
* @required - No
|
|
332
|
+
* @default - No description
|
|
336
333
|
*/
|
|
337
334
|
readonly description?: string;
|
|
338
335
|
/**
|
|
339
336
|
* Custom KMS key to use for encryption.
|
|
340
|
-
* @default Your data is encrypted with a key that AWS owns and manages for you
|
|
341
|
-
* @required - No
|
|
337
|
+
* @default - Your data is encrypted with a key that AWS owns and manages for you
|
|
342
338
|
*/
|
|
343
339
|
readonly kmsKey?: kms.IKey;
|
|
344
340
|
/**
|
|
345
341
|
* If you need long-term memory for context recall across sessions,
|
|
346
342
|
* you can setup memory extraction strategies to extract the relevant memory from the raw events.
|
|
347
|
-
* @default No extraction strategies (short term memory only)
|
|
348
|
-
* @required - No
|
|
343
|
+
* @default - No extraction strategies (short term memory only)
|
|
349
344
|
*/
|
|
350
345
|
readonly memoryStrategies?: IMemoryStrategy[];
|
|
351
346
|
/**
|
|
352
347
|
* The IAM role that provides permissions for the memory to access AWS services
|
|
353
348
|
* when using custom strategies.
|
|
354
349
|
*
|
|
355
|
-
* @default A new role will be created.
|
|
356
|
-
* @required - No
|
|
350
|
+
* @default - A new role will be created.
|
|
357
351
|
*/
|
|
358
352
|
readonly executionRole?: iam.IRole;
|
|
359
353
|
/**
|
|
360
354
|
* Tags (optional)
|
|
361
355
|
* A list of key:value pairs of tags to apply to this memory resource
|
|
362
356
|
*
|
|
363
|
-
* @default
|
|
364
|
-
* @required - No
|
|
357
|
+
* @default - no tags
|
|
365
358
|
*/
|
|
366
359
|
readonly tags?: {
|
|
367
360
|
[key: string]: string;
|
|
@@ -99,7 +99,7 @@ const MEMORY_EXPIRATION_DAYS_MAX = 365;
|
|
|
99
99
|
* Contains methods and attributes valid for Memories either created with CDK or imported.
|
|
100
100
|
*/
|
|
101
101
|
class MemoryBase extends aws_cdk_lib_1.Resource {
|
|
102
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryBase", version: "2.
|
|
102
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.MemoryBase", version: "2.223.0-alpha.0" };
|
|
103
103
|
constructor(scope, id) {
|
|
104
104
|
super(scope, id);
|
|
105
105
|
}
|
|
@@ -352,7 +352,7 @@ let Memory = (() => {
|
|
|
352
352
|
Memory = _classThis = _classDescriptor.value;
|
|
353
353
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
354
354
|
}
|
|
355
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Memory", version: "2.
|
|
355
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.Memory", version: "2.223.0-alpha.0" };
|
|
356
356
|
/** Uniquely identifies this class. */
|
|
357
357
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-bedrock-agentcore-alpha.Memory';
|
|
358
358
|
/**
|
|
@@ -658,4 +658,4 @@ let Memory = (() => {
|
|
|
658
658
|
return Memory = _classThis;
|
|
659
659
|
})();
|
|
660
660
|
exports.Memory = Memory;
|
|
661
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVtb3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsNkNBQWtGO0FBR2xGLDJFQUE2RTtBQUM3RSwrREFNb0M7QUFDcEMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRzFFLG1DQUFzQztBQUN0Qyw2REFBdUc7QUFFdkc7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUVsQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUVoQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUVsQzs7O0dBR0c7QUFDSCxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUNyQzs7O0dBR0c7QUFDSCxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQWlIdkM7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDSCxNQUFzQixVQUFXLFNBQVEsc0JBQVE7O0lBYS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDbEI7SUFDRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDakQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUM5QixPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDOUIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUNEOzs7Ozs7O09BT0c7SUFDSCxV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TSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEFybiwgQXJuRm9ybWF0LCBEdXJhdGlvbiwgSVJlc291cmNlLCBMYXp5LCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElDb25zdHJ1Y3QsIENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBDZm5NZW1vcnksIENmbk1lbW9yeVByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHtcbiAgRGltZW5zaW9uc01hcCxcbiAgTWV0cmljLFxuICBNZXRyaWNPcHRpb25zLFxuICBNZXRyaWNQcm9wcyxcbiAgU3RhdHMsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG4vLyBJbnRlcm5hbCBMaWJzXG5pbXBvcnQgeyBJTWVtb3J5U3RyYXRlZ3kgfSBmcm9tICcuL21lbW9yeS1zdHJhdGVneSc7XG5pbXBvcnQgeyBNZW1vcnlQZXJtcyB9IGZyb20gJy4vcGVybXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVGaWVsZFBhdHRlcm4sIHZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgsIHRocm93SWZJbnZhbGlkIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUQU5UU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBNaW5pbXVtIGxlbmd0aCBmb3IgYnJvd3NlciBuYW1lXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX05BTUVfTUlOX0xFTkdUSCA9IDE7XG5cbi8qKlxuICogTWF4aW11bSBsZW5ndGggZm9yIGJyb3dzZXIgbmFtZVxuICogQGludGVybmFsXG4gKi9cbmNvbnN0IE1FTU9SWV9OQU1FX01BWF9MRU5HVEggPSA0ODtcblxuLyoqXG4gKiBNaW5pbXVtIGxlbmd0aCBmb3IgYnJvd3NlciB0YWdzXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX1RBR19NSU5fTEVOR1RIID0gMTtcblxuLyoqXG4gKiBNYXhpbXVtIGxlbmd0aCBmb3IgYnJvd3NlciB0YWdzXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX1RBR19NQVhfTEVOR1RIID0gMjU2O1xuXG4vKipcbiAqIE1pbmltdW0gbGVuZ3RoIGZvciBtZW1vcnkgZXhwaXJhdGlvbiBkYXlzXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX0VYUElSQVRJT05fREFZU19NSU4gPSA3O1xuLyoqXG4gKiBNYXhpbXVtIGxlbmd0aCBmb3IgbWVtb3J5IGV4cGlyYXRpb24gZGF5c1xuICogQGludGVybmFsXG4gKi9cbmNvbnN0IE1FTU9SWV9FWFBJUkFUSU9OX0RBWVNfTUFYID0gMzY1O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEludGVyZmFjZSBmb3IgTWVtb3J5IHJlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElNZW1vcnkgZXh0ZW5kcyBJUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIG1lbW9yeSByZXNvdXJjZVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBtZW1vcnlBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgbWVtb3J5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgdGhlIG1lbW9yeSB0byBhY2Nlc3MgQVdTIHNlcnZpY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcbiAgLyoqXG4gICAqIEN1c3RvbSBLTVMga2V5IGZvciBlbmNyeXB0aW9uIChpZiBwcm92aWRlZClcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbWVtb3J5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBtZW1vcnkgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgbWVtb3J5IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byB3cml0ZSBjb250ZW50IHRvIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgY29udGVudHMgb2YgdGhpcyBtZW1vcnkuXG4gICAqIEJvdGggU2hvcnQtVGVybSBNZW1vcnkgKFNUTSkgYW5kIExvbmctVGVybSBNZW1vcnkgKExUTSkuXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGNvbnRlbnRzIG9mIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnRSZWFkU2hvcnRUZXJtTWVtb3J5KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byByZWFkIHRoZSBMb25nLVRlcm0gTWVtb3J5IChMVE0pIGNvbnRlbnRzIG9mIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnRSZWFkTG9uZ1Rlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBjb250ZW50IG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnREZWxldGUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBTaG9ydC1UZXJtIE1lbW9yeSAoU1RNKSBjb250ZW50IG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnREZWxldGVTaG9ydFRlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBMb25nLVRlcm0gTWVtb3J5IChMVE0pIGNvbnRlbnQgb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBncmFudERlbGV0ZUxvbmdUZXJtTWVtb3J5KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgdGhlIGNvbnRyb2wgcGxhbmUgb2YgdGhpcyBtZW1vcnkuXG4gICAqL1xuICBncmFudEFkbWluKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byBkbyBldmVyeSBhY3Rpb24gb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBncmFudEZ1bGxBY2Nlc3MoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBtZW1vcnkuXG4gICAqL1xuICBtZXRyaWMobWV0cmljTmFtZTogc3RyaW5nLCBkaW1lbnNpb25zOiBEaW1lbnNpb25zTWFwLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyByZWxhdGVkIHRvIHRoZSBBUEkgb3BlcmF0aW9uIHBlcmZvcm1lZCBvbiB0aGlzIG1lbW9yeS5cbiAgICovXG4gIG1ldHJpY0ZvckFwaU9wZXJhdGlvbihtZXRyaWNOYW1lOiBzdHJpbmcsIG9wZXJhdGlvbjogc3RyaW5nLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgbWVhc3VyaW5nIHRoZSBsYXRlbmN5IG9mIGEgc3BlY2lmaWMgQVBJIG9wZXJhdGlvbiBwZXJmb3JtZWQgb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5Rm9yQXBpT3BlcmF0aW9uKG9wZXJhdGlvbjogc3RyaW5nLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIEFQSSByZXF1ZXN0cyBtYWRlIGZvciBhIHNwZWNpZmljIG1lbW9yeSBvcGVyYXRpb24uXG4gICAqL1xuICBtZXRyaWNJbnZvY2F0aW9uc0ZvckFwaU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBlcnJvcnMgZm9yIGEgc3BlY2lmaWMgQVBJIG9wZXJhdGlvbiBwZXJmb3JtZWQgb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBtZXRyaWNFcnJvcnNGb3JBcGlPcGVyYXRpb24ob3BlcmF0aW9uOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY3JlYXRlZCBtZW1vcnkgZXZlbnRzIGFuZCBtZW1vcnkgcmVjb3Jkcy5cbiAgICovXG4gIG1ldHJpY0V2ZW50Q3JlYXRpb25Db3VudChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgQUJTVFJBQ1QgQkFTRSBDTEFTU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhIE1lbW9yeS5cbiAqIENvbnRhaW5zIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXMgdmFsaWQgZm9yIE1lbW9yaWVzIGVpdGhlciBjcmVhdGVkIHdpdGggQ0RLIG9yIGltcG9ydGVkLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWVtb3J5QmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSU1lbW9yeSB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBtZW1vcnlBcm46IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG1lbW9yeUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIC8qKlxuICAgKiBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudHMgSUFNIGFjdGlvbnMgdG8gdGhlIElBTSBQcmluY2lwYWxcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgSUFNIHByaW5jaXBhbCB0byBncmFudCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcGFyYW0gYWN0aW9ucyAtIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLm1lbW9yeUFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byB3cml0ZSBjb250ZW50IHRvIHNob3J0LXRlcm0gbWVtb3J5LlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG9cbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IGdyYW50IGNvbmZpZ3VyYXRpb246XG4gICAqIC0gYWN0aW9uczogWydiZWRyb2NrLWFnZW50Y29yZTpDcmVhdGVFdmVudCddIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudFdyaXRlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAuLi5NZW1vcnlQZXJtcy5TVE0uV1JJVEVfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVtb3J5LlxuICAgKiBCb3RoIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGFuZCBMb25nLVRlcm0gTWVtb3J5IChMVE0pLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG9cbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IGdyYW50IGNvbmZpZ3VyYXRpb246XG4gICAqIC0gYWN0aW9uczogWydiZWRyb2NrLWFnZW50Y29yZTpHZXRNZW1vcnlSZWNvcmQnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOlJldHJpZXZlTWVtb3J5UmVjb3JkcycsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdE1lbW9yeVJlY29yZHMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RBY3RvcnMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RTZXNzaW9uc10gb24gdGhpcy5tZW1vcnlBcm5cbiAgICogQHJldHVybnMgQW4gSUFNIEdyYW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uTWVtb3J5UGVybXMuUkVBRF9QRVJNUyk7XG4gIH1cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgU2hvcnQtVGVybSBNZW1vcnkgKFNUTSkgY29udGVudHMgb2YgdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkdldEV2ZW50JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0RXZlbnRzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0QWN0b3JzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0U2Vzc2lvbnMnLF0gb24gdGhpcy5tZW1vcnlBcm5cbiAgICogQHJldHVybnMgQW4gSUFNIEdyYW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50UmVhZFNob3J0VGVybU1lbW9yeShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uTWVtb3J5UGVybXMuU1RNLlJFQURfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIExvbmctVGVybSBNZW1vcnkgKExUTSkgY29udGVudHMgb2YgdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkdldE1lbW9yeVJlY29yZCcsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6UmV0cmlldmVNZW1vcnlSZWNvcmRzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0TWVtb3J5UmVjb3JkcycsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdEFjdG9ycycsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdFNlc3Npb25zJyxdIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudFJlYWRMb25nVGVybU1lbW9yeShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uTWVtb3J5UGVybXMuTFRNLlJFQURfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBjb250ZW50IG9uIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBCb3RoIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGFuZCBMb25nLVRlcm0gTWVtb3J5IChMVE0pLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IGRlbGV0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkRlbGV0ZUV2ZW50JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVNZW1vcnlSZWNvcmQnXSBvbiB0aGlzLm1lbW9yeUFyblxuICAgKiBAcmV0dXJucyBBbiBJQU0gR3JhbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZ3JhbnRlZCBwZXJtaXNzaW9uc1xuICAgKi9cbiAgZ3JhbnREZWxldGUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLkRFTEVURV9QRVJNUyk7XG4gIH1cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gZGVsZXRlIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGNvbnRlbnQgb24gdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgZGVsZXRlIHBlcm1pc3Npb25zIHRvXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBncmFudCBjb25maWd1cmF0aW9uOlxuICAgKiAtIGFjdGlvbnM6IFsnYmVkcm9jay1hZ2VudGNvcmU6RGVsZXRlRXZlbnQnXSBvbiB0aGlzLm1lbW9yeUFyblxuICAgKiBAcmV0dXJucyBBbiBJQU0gR3JhbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZ3JhbnRlZCBwZXJtaXNzaW9uc1xuICAgKi9cbiAgZ3JhbnREZWxldGVTaG9ydFRlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLlNUTS5ERUxFVEVfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBMb25nLVRlcm0gTWVtb3J5IChMVE0pIGNvbnRlbnQgb24gdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgZGVsZXRlIHBlcm1pc3Npb25zIHRvXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBncmFudCBjb25maWd1cmF0aW9uOlxuICAgKiAtIGFjdGlvbnM6IFsnYmVkcm9jay1hZ2VudGNvcmU6RGVsZXRlTWVtb3J5UmVjb3JkJ10gb24gdGhpcy5tZW1vcnlBcm5cbiAgICogQHJldHVybnMgQW4gSUFNIEdyYW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50RGVsZXRlTG9uZ1Rlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLkxUTS5ERUxFVEVfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIG1hbmFnZSB0aGUgY29udHJvbCBwbGFuZSBvZiB0aGlzIG1lbW9yeS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgSUFNIHByaW5jaXBhbCB0byBncmFudCBhZG1pbiBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkNyZWF0ZU1lbW9yeScsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0TWVtb3J5JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVNZW1vcnknLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOlVwZGF0ZU1lbW9yeSddIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudEFkbWluKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAuLi5NZW1vcnlQZXJtcy5BRE1JTl9QRVJNUyk7XG4gIH1cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gZG8gZXZlcnkgYWN0aW9uIG9uIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IGZ1bGwgYWNjZXNzIHBlcm1pc3Npb25zIHRvXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBncmFudCBjb25maWd1cmF0aW9uOlxuICAgKiAtIGFjdGlvbnM6IFsnYmVkcm9jay1hZ2VudGNvcmU6Q3JlYXRlRXZlbnQnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkdldEV2ZW50JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVFdmVudCcsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0TWVtb3J5UmVjb3JkJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpSZXRyaWV2ZU1lbW9yeVJlY29yZHMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RNZW1vcnlSZWNvcmRzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0QWN0b3JzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0U2Vzc2lvbnMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkNyZWF0ZU1lbW9yeScsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0TWVtb3J5JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVNZW1vcnknLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOlVwZGF0ZU1lbW9yeSddIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudEZ1bGxBY2Nlc3MoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLkZVTExfQUNDRVNTX1BFUk1TKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBNZXRyaWNzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgbWV0cmljIHdpbGwgYmUgY2FsY3VsYXRlZCBhcyBhIHN1bSBvdmVyIGEgcGVyaW9kIG9mIDUgbWludXRlcy5cbiAgICogWW91IGNhbiBjdXN0b21pemUgdGhpcyBieSB1c2luZyB0aGUgYHN0YXRpc3RpY2AgYW5kIGBwZXJpb2RgIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgZGltZW5zaW9uczogRGltZW5zaW9uc01hcCwgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICBjb25zdCBtZXRyaWNQcm9wczogTWV0cmljUHJvcHMgPSB7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvQmVkcm9jay1BZ2VudENvcmUnLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgLi4uZGltZW5zaW9ucywgUmVzb3VyY2U6IHRoaXMubWVtb3J5QXJuIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZU1ldHJpYyhtZXRyaWNQcm9wcyk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZ2l2ZW4gbmFtZWQgbWV0cmljIHJlbGF0ZWQgdG8gdGhlIEFQSSBvcGVyYXRpb24gcGVyZm9ybWVkIG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ZvckFwaU9wZXJhdGlvbihcbiAgICBtZXRyaWNOYW1lOiBzdHJpbmcsXG4gICAgb3BlcmF0aW9uOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBNZXRyaWNPcHRpb25zLFxuICApOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhtZXRyaWNOYW1lLCB7IE9wZXJhdGlvbjogb3BlcmF0aW9uIH0sIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiBhIHNwZWNpZmljIEFQSSBvcGVyYXRpb24gcGVyZm9ybWVkIG9uIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBUaGUgbGF0ZW5jeSBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdG90YWwgdGltZSBlbGFwc2VkIGJldHdlZW4gcmVjZWl2aW5nIHRoZSByZXF1ZXN0IGFuZCBzZW5kaW5nXG4gICAqIHRoZSBmaW5hbCByZXNwb25zZSB0b2tlbiwgbWVhc3VyaW5nIGNvbXBsZXRlIGVuZC10by1lbmQgcHJvY2Vzc2luZyB0aW1lLlxuICAgKlxuICAgKiBGb3IgbWVtb3J5IGNyZWF0aW9uIGV2ZW50cyBzcGVjaWZpY2FsbHksIHRoaXMgbWVhc3VyZXMgdGhlIHRpbWUgZnJvbSB0aGUgbGFzdCBDcmVhdGVFdmVudFxuICAgKiB0aGF0IG1ldCBzdHJhdGVneSBjcml0ZXJpYSB1bnRpbCBtZW1vcnkgc3RvcmFnZSBpcyBjb21wbGV0ZWQuXG4gICAqXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTGF0ZW5jeUZvckFwaU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGb3JBcGlPcGVyYXRpb24oJ0xhdGVuY3knLCBvcGVyYXRpb24sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBBUEkgcmVxdWVzdHMgbWFkZSBmb3IgYSBzcGVjaWZpYyBtZW1vcnkgb3BlcmF0aW9uIGxpa2VcbiAgICogYENyZWF0ZUV2ZW50YCwgYExpc3RFdmVudHNgLCBgUmV0cmlldmVNZW1vcnlSZWNvcmRzYCAuLi5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNJbnZvY2F0aW9uc0ZvckFwaU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGb3JBcGlPcGVyYXRpb24oJ0ludm9jYXRpb25zJywgb3BlcmF0aW9uLCB7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGVycm9ycyBmb3IgYSBzcGVjaWZpYyBBUEkgb3BlcmF0aW9uIHBlcmZvcm1lZCBvbiB0aGlzIG1lbW9yeS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNFcnJvcnNGb3JBcGlPcGVyYXRpb24ob3BlcmF0aW9uOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRm9yQXBpT3BlcmF0aW9uKCdFcnJvcnMnLCBvcGVyYXRpb24sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHNob3J0LXRlcm0gbWVtb3J5IGV2ZW50cy5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNFdmVudENyZWF0aW9uQ291bnQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0NyZWF0aW9uQ291bnQnLCB7IEl0ZW1UeXBlOiAnRXZlbnQnIH0sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGxvbmctdGVybSBtZW1vcnkgcmVjb3Jkc1xuICAgKiBjcmVhdGVkIGJ5IHRoZSBsb25nLXRlcm0gZXh0cmFjdGlvbiBzdHJhdGVnaWVzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY01lbW9yeVJlY29yZENyZWF0aW9uQ291bnQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoXG4gICAgICAnQ3JlYXRpb25Db3VudCcsXG4gICAgICB7IEl0ZW1UeXBlOiAnTWVtb3J5UmVjb3Jkc0V4dHJhY3RlZCcgfSxcbiAgICAgIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0sXG4gICAgKTtcbiAgfVxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIGNyZWF0ZSBhIG1ldHJpYy5cbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlTWV0cmljKHByb3BzOiBNZXRyaWNQcm9wcykge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcmVnaW9uOiBwcm9wcz8ucmVnaW9uID8/IHRoaXMuc3RhY2sucmVnaW9uLFxuICAgICAgYWNjb3VudDogcHJvcHM/LmFjY291bnQgPz8gdGhpcy5zdGFjay5hY2NvdW50LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgUFJPUFMgRk9SIE5FVyBDT05TVFJVQ1RcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBNZW1vcnkgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWVtb3J5XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpXG4gICAqIFRoZSBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY2FuIGJlIHVwIHRvIDQ4IGNoYXJhY3RlcnMgbG9uZ1xuICAgKiBQYXR0ZXJuOiBbYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fVxuICAgKiBAcmVxdWlyZWQgLSBOb1xuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogU2hvcnQtdGVybSBtZW1vcnkgZXhwaXJhdGlvbiBpbiBkYXlzIChiZXR3ZWVuIDcgYW5kIDM2NSkuXG4gICAqIFNldHMgdGhlIHNob3J0LXRlcm0gKHJhdyBldmVudCkgbWVtb3J5IHJldGVudGlvbi5cbiAgICogRXZlbnRzIG9sZGVyIHRoYW4gdGhlIHNwZWNpZmllZCBkdXJhdGlvbiB3aWxsIGV4cGlyZSBhbmQgbm8gbG9uZ2VyIGJlIHN0b3JlZC5cbiAgICogQGRlZmF1bHQgOTBcbiAgICogQHJlcXVpcmVkIC0gTm9cbiAgICovXG4gIHJlYWRvbmx5IGV4cGlyYXRpb25EdXJhdGlvbj86IER1cmF0aW9uO1xuICAvKipcbiAgICogT3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBtZW1vcnlcbiAgICogVmFsaWQgY2hhcmFjdGVycyBhcmUgYS16LCBBLVosIDAtOSwgXyAodW5kZXJzY29yZSksIC0gKGh5cGhlbikgYW5kIHNwYWNlc1xuICAgKiBUaGUgZGVzY3JpcHRpb24gY2FuIGhhdmUgdXAgdG8gMjAwIGNoYXJhY3RlcnNcbiAgICogQGRlZmF1bHQgTm8gZGVzY3JpcHRpb25cbiAgICogQHJlcXVpcmVkIC0gTm9cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIEtNUyBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW9uLlxuICAgKiBAZGVmYXVsdCBZb3VyIGRhdGEgaXMgZW5jcnlwdGVkIHdpdGggYSBrZXkgdGhhdCBBV1Mgb3ducyBhbmQgbWFuYWdlcyBmb3IgeW91XG4gICAqIEByZXF1aXJlZCAtIE5vXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcbiAgLyoqXG4gICAqIElmIHlvdSBuZWVkIGxvbmctdGVybSBtZW1vcnkgZm9yIGNvbnRleHQgcmVjYWxsIGFjcm9zcyBzZXNzaW9ucyxcbiAgICogeW91IGNhbiBzZXR1cCBtZW1vcnkgZXh0cmFjdGlvbiBzdHJhdGVnaWVzIHRvIGV4dHJhY3QgdGhlIHJlbGV2YW50IG1lbW9yeSBmcm9tIHRoZSByYXcgZXZlbnRzLlxuICAgKiBAZGVmYXVsdCBObyBleHRyYWN0aW9uIHN0cmF0ZWdpZXMgKHNob3J0IHRlcm0gbWVtb3J5IG9ubHkpXG4gICAqIEByZXF1aXJlZCAtIE5vXG4gICAqL1xuICByZWFkb25seSBtZW1vcnlTdHJhdGVnaWVzPzogSU1lbW9yeVN0cmF0ZWd5W107XG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgdGhlIG1lbW9yeSB0byBhY2Nlc3MgQVdTIHNlcnZpY2VzXG4gICAqIHdoZW4gdXNpbmcgY3VzdG9tIHN0cmF0ZWdpZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKiBAcmVxdWlyZWQgLSBOb1xuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcbiAgLyoqXG4gICAqIFRhZ3MgKG9wdGlvbmFsKVxuICAgKiBBIGxpc3Qgb2Yga2V5OnZhbHVlIHBhaXJzIG9mIHRhZ3MgdG8gYXBwbHkgdG8gdGhpcyBtZW1vcnkgcmVzb3VyY2VcbiAgICpcbiAgICogQGRlZmF1bHQge30gbm8gdGFnc1xuICAgKiBAcmVxdWlyZWQgLSBOb1xuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgIEFUVFJTIEZPUiBJTVBPUlRFRCBDT05TVFJVQ1RcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogQXR0cmlidXRlcyBmb3Igc3BlY2lmeWluZyBhbiBpbXBvcnRlZCBNZW1vcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVtb3J5QXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBtZW1vcnkuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgSUFNIHJvbGUgYXNzb2NpYXRlZCB0byB0aGUgbWVtb3J5LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByb2xlQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgbWVtb3J5IHdhcyBsYXN0IHVwZGF0ZWQuXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZCAtIE5vIGxhc3QgdXBkYXRlZCB0aW1lc3RhbXAgaXMgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIEtNUyBlbmNyeXB0aW9uIGtleSBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZW1vcnlcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gQW4gQVdTIG1hbmFnZWQga2V5IGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleUFybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIG1lbW9yeS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gTm8gc3RhdHVzIGlzIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY3JlYXRlZCB0aW1lc3RhbXAgb2YgdGhlIG1lbW9yeS5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gTm8gY3JlYXRlZCB0aW1lc3RhbXAgaXMgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIExvbmctdGVybSBtZW1vcnkgc3RvcmUgZm9yIGV4dHJhY3RlZCBpbnNpZ2h0cyBsaWtlIHVzZXIgcHJlZmVyZW5jZXMsIHNlbWFudGljIGZhY3RzIGFuZCBzdW1tYXJpZXMuXG4gKiBFbmFibGVzIGtub3dsZWRnZSByZXRlbnRpb24gYWNyb3NzIHNlc3Npb25zIGJ5IHN0b3JpbmcgdXNlciBwcmVmZXJlbmNlcyAoZS5nLiBjb2Rpbmcgc3R5bGUpLFxuICogc2VtYW50aWMgZmFjdHMgKGUuZy4gbGVhcm5lZCBpbmZvKSBhbmQgaW50ZXJhY3Rpb24gc3VtbWFyaWVzIGZvciBjb250ZXh0IG9wdGltaXphdGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9iZWRyb2NrLWFnZW50Y29yZS9sYXRlc3QvZGV2Z3VpZGUvbWVtb3J5Lmh0bWxcbiAqIEByZXNvdXJjZSBBV1M6OkJlZHJvY2tBZ2VudENvcmU6Ok1lbW9yeVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgTWVtb3J5IGV4dGVuZHMgTWVtb3J5QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWJlZHJvY2stYWdlbnRjb3JlLWFscGhhLk1lbW9yeSc7XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBNZXRob2QgZm9yIGltcG9ydGluZyBhbiBleGlzdGluZyBCZWRyb2NrIEFnZW50Q29yZSBNZW1vcnkuXG4gICAqL1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBNZW1vcnkgcmVmZXJlbmNlIGZyb20gYW4gZXhpc3RpbmcgbWVtb3J5J3MgYXR0cmlidXRlcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgLSBJZGVudGlmaWVyIG9mIHRoZSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGF0dHJzIC0gQXR0cmlidXRlcyBvZiB0aGUgZXhpc3RpbmcgYnJvd3NlciBjdXN0b21cbiAgICogQHJldHVybnMgQW4gSUJyb3dzZXJDdXN0b20gcmVmZXJlbmNlIHRvIHRoZSBleGlzdGluZyBicm93c2VyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NZW1vcnlBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBNZW1vcnlBdHRyaWJ1dGVzKTogSU1lbW9yeSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgTWVtb3J5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbWVtb3J5QXJuID0gYXR0cnMubWVtb3J5QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG1lbW9yeUlkID0gQXJuLnNwbGl0KGF0dHJzLm1lbW9yeUFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZSE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZSA9IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHNjb3BlLCBgJHtpZH1Sb2xlYCwgYXR0cnMucm9sZUFybik7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkga21zS2V5ID0gYXR0cnMua21zS2V5QXJuID8ga21zLktleS5mcm9tS2V5QXJuKHNjb3BlLCBgJHtpZH1LZXlgLCBhdHRycy5rbXNLZXlBcm4pIDogdW5kZWZpbmVkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdCA9IGF0dHJzLnVwZGF0ZWRBdDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IHRoaXMuZXhlY3V0aW9uUm9sZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdGF0dXMgPSBhdHRycy5zdGF0dXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0ID0gYXR0cnMuY3JlYXRlZEF0O1xuXG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcblxuICAgICAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gdGhpcy5leGVjdXRpb25Sb2xlIHx8IG5ldyBpYW0uVW5rbm93blByaW5jaXBhbCh7IHJlc291cmNlOiB0aGlzIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBuZXcgTWVtb3J5XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBBdHRyaWJ1dGVzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgbWVtb3J5IHJlc291cmNlLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWVtb3J5QXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWVtb3J5LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWVtb3J5TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBtZW1vcnkuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtZW1vcnlJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGV4cGlyYXRpb24gZGF5cyBvZiB0aGUgbWVtb3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4cGlyYXRpb25EdXJhdGlvbj86IER1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIGZhaWx1cmUgcmVhc29uIG9mIHRoZSBicm93c2VyXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmYWlsdXJlUmVhc29uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBtZW1vcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgb2YgdGhlIG1lbW9yeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbWVtb3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjcmVhdGVkIHRpbWVzdGFtcCBvZiB0aGUgbWVtb3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB1cGRhdGVkIGF0IHRpbWVzdGFtcCBvZiB0aGUgbWVtb3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHVwZGF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRhZ3MgYXBwbGllZCB0byB0aGlzIGJyb3dzZXIgcmVzb3VyY2VcbiAgICogQSBtYXAgb2Yga2V5LXZhbHVlIHBhaXJzIGZvciByZXNvdXJjZSB0YWdnaW5nXG4gICAqIEBkZWZhdWx0IC0gTm8gdGFncyBhcHBsaWVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBtZW1vcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIC8qKlxuICAgKiBUaGUgbWVtb3J5IHN0cmF0ZWdpZXMgdXNlZCBieSB0aGUgbWVtb3J5LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWVtb3J5U3RyYXRlZ2llczogSU1lbW9yeVN0cmF0ZWd5W10gPSBbXTtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEludGVybmFsIE9ubHlcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHByaXZhdGUgcmVhZG9ubHkgX19yZXNvdXJjZTogQ2ZuTWVtb3J5O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBDT05TVFJVQ1RPUlxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1lbW9yeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFNldCBwcm9wZXJ0aWVzIGFuZCBkZWZhdWx0c1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHRoaXMubWVtb3J5TmFtZSA9IHByb3BzLm1lbW9yeU5hbWU7XG4gICAgdGhpcy5leHBpcmF0aW9uRHVyYXRpb24gPSBwcm9wcy5leHBpcmF0aW9uRHVyYXRpb24gPz8gRHVyYXRpb24uZGF5cyg5MCk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHByb3BzLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMua21zS2V5ID0gcHJvcHMua21zS2V5O1xuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9IHByb3BzLmV4ZWN1dGlvblJvbGUgPz8gdGhpcy5fY3JlYXRlTWVtb3J5Um9sZSgpO1xuICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwgPSB0aGlzLmV4ZWN1dGlvblJvbGU7XG4gICAgdGhpcy50YWdzID0gcHJvcHMudGFncztcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFBlcm1pc3Npb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gRm9yIEtNUyBwZXJtaXNzaW9ucyBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9zdG9yYWdlLWVuY3J5cHRpb24uaHRtbFxuICAgIGlmICh0aGlzLmttc0tleSkge1xuICAgICAgdGhpcy5rbXNLZXkuZ3JhbnQodGhpcy5leGVjdXRpb25Sb2xlLFxuICAgICAgICAna21zOkNyZWF0ZUdyYW50JyxcbiAgICAgICAgJ2ttczpEZWNyeXB0JyxcbiAgICAgICAgJ2ttczpEZXNjcmliZUtleScsXG4gICAgICAgICdrbXM6R2VuZXJhdGVEYXRhS2V5JyxcbiAgICAgICAgJ2ttczpHZW5lcmF0ZURhdGFLZXlXaXRob3V0UGxhaW50ZXh0JyxcbiAgICAgICAgJ2ttczpSZUVuY3J5cHQqJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGlvbnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIFZhbGlkYXRlIG1lbW9yeSBuYW1lXG4gICAgdGhyb3dJZkludmFsaWQodGhpcy5fdmFsaWRhdGVNZW1vcnlOYW1lLCB0aGlzLm1lbW9yeU5hbWUsIHRoaXMpO1xuXG4gICAgLy8gVmFsaWRhdGUgZXhwaXJhdGlvbiBkdXJhdGlvblxuICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlTWVtb3J5RXhwaXJhdGlvbkRheXMsIHRoaXMuZXhwaXJhdGlvbkR1cmF0aW9uLnRvRGF5cygpKTtcblxuICAgIC8vIFZhbGlkYXRlIG1lbW9yeSB0YWdzXG4gICAgdGhyb3dJZkludmFsaWQodGhpcy5fdmFsaWRhdGVNZW1vcnlUYWdzLCB0aGlzLnRhZ3MsIHRoaXMpO1xuXG4gICAgLy8gTWVtb3J5IHN0cmF0ZWdpZXMgYXJlIGFscmVhZHkgdmFsaWRhdGVkIHdoZW4gYnVpbGRpbmcgdGhlbSwgc28gbm8gbmVlZCB0byB2YWxpZGF0ZSB0aGVtIGhlcmVcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIENGTiBQcm9wcyAtIFdpdGggTGF6eSBzdXBwb3J0XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3QgY2ZuUHJvcHM6IENmbk1lbW9yeVByb3BzID0ge1xuICAgICAgbmFtZTogdGhpcy5tZW1vcnlOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBldmVudEV4cGlyeUR1cmF0aW9uOiB0aGlzLmV4cGlyYXRpb25EdXJhdGlvbi50b0RheXMoKSxcbiAgICAgIGVuY3J5cHRpb25LZXlBcm46IHRoaXMua21zS2V5Py5rZXlBcm4sXG4gICAgICBtZW1vcnlFeGVjdXRpb25Sb2xlQXJuOiB0aGlzLmV4ZWN1dGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICBtZW1vcnlTdHJhdGVnaWVzOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuX3JlbmRlck1lbW9yeVN0cmF0ZWdpZXMoKSB9LCB7IG9taXRFbXB0eUFycmF5OiB0cnVlIH0pLFxuICAgICAgdGFnczogdGhpcy50YWdzLFxuICAgIH07XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBDRk4gUmVzb3VyY2VcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLl9fcmVzb3VyY2UgPSBuZXcgQ2ZuTWVtb3J5KHRoaXMsICdNZW1vcnknLCBjZm5Qcm9wcyk7XG5cbiAgICB0aGlzLm1lbW9yeUlkID0gdGhpcy5fX3Jlc291cmNlLmF0dHJNZW1vcnlJZDtcbiAgICB0aGlzLm1lbW9yeUFybiA9IHRoaXMuX19yZXNvdXJjZS5hdHRyTWVtb3J5QXJuO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5fX3Jlc291cmNlLmF0dHJTdGF0dXM7XG4gICAgdGhpcy51cGRhdGVkQXQgPSB0aGlzLl9fcmVzb3VyY2UuYXR0clVwZGF0ZWRBdDtcbiAgICB0aGlzLmNyZWF0ZWRBdCA9IHRoaXMuX19yZXNvdXJjZS5hdHRyQ3JlYXRlZEF0O1xuICAgIHRoaXMuZmFpbHVyZVJlYXNvbiA9IHRoaXMuX19yZXNvdXJjZS5hdHRyRmFpbHVyZVJlYXNvbjtcblxuICAgIC8vIEFkZCBtZW1vcnkgc3RyYXRlZ2llcyB0byB0aGUgbWVtb3J5XG4gICAgZm9yIChjb25zdCBzdHJhdGVneSBvZiBwcm9wcy5tZW1vcnlTdHJhdGVnaWVzID8/IFtdKSB7dGhpcy5hZGRNZW1vcnlTdHJhdGVneShzdHJhdGVneSk7fVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhFTFBFUiBNRVRIT0RTIC0gYWRkWCgpXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQWRkIG1lbW9yeSBzdHJhdGVneSB0byB0aGUgbWVtb3J5LlxuICAgKiBAZGVmYXVsdCAtIE5vIG1lbW9yeSBzdHJhdGVnaWVzLlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZE1lbW9yeVN0cmF0ZWd5KG1lbW9yeVN0cmF0ZWd5OiBJTWVtb3J5U3RyYXRlZ3kpIHtcbiAgICAvLyBBZGQgdGhlIG1lbW9yeSBzdHJhdGVneSB0byB0aGUgbWVtb3J5XG4gICAgdGhpcy5tZW1vcnlTdHJhdGVnaWVzLnB1c2gobWVtb3J5U3RyYXRlZ3kpO1xuXG4gICAgLy8gR3JhbnQgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIHRvIHRoZSBleGVjdXRpb24gcm9sZVxuICAgIGNvbnN0IGdyYW50ID0gbWVtb3J5U3RyYXRlZ3kuZ3JhbnQodGhpcy5leGVjdXRpb25Sb2xlIGFzIGlhbS5JUm9sZSk7XG4gICAgZ3JhbnQ/LmFwcGx5QmVmb3JlKHRoaXMuX19yZXNvdXJjZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBleGVjdXRpb24gcm9sZSBuZWVkZWQgZm9yIHRoZSBtZW1vcnkgdG8gYWNjZXNzIEFXUyBzZXJ2aWNlc1xuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCByb2xlXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlTWVtb3J5Um9sZSgpOiBpYW0uSVJvbGUge1xuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ1NlcnZpY2VSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2JlZHJvY2stYWdlbnRjb3JlLmFtYXpvbmF3cy5jb20nKSxcbiAgICB9KTtcblxuICAgIHJldHVybiByb2xlO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFZBTElEQVRPUlNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1lbW9yeSB0YWdzIGZvcm1hdFxuICAgKiBAcGFyYW0gdGFncyBUaGUgdGFncyBvYmplY3QgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlTWVtb3J5VGFncyA9ICh0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgc2NvcGU/OiBJQ29uc3RydWN0KTogc3RyaW5nW10gPT4ge1xuICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKCF0YWdzKSB7XG4gICAgICByZXR1cm4gZXJyb3JzOyAvLyBUYWdzIGFyZSBvcHRpb25hbFxuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGVhY2ggdGFnIGtleSBhbmQgdmFsdWVcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0YWdzKSkge1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCh7XG4gICAgICAgIHZhbHVlOiBrZXksXG4gICAgICAgIGZpZWxkTmFtZTogJ1RhZyBrZXknLFxuICAgICAgICBtaW5MZW5ndGg6IE1FTU9SWV9UQUdfTUlOX0xFTkdUSCxcbiAgICAgICAgbWF4TGVuZ3RoOiBNRU1PUllfVEFHX01BWF9MRU5HVEgsXG4gICAgICB9LCBzY29wZSkpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcga2V5IHBhdHRlcm46IF5bYS16QS1aMC05XFxzLl86Lz0rQC1dKiRcbiAgICAgIGNvbnN0IHZhbGlkS2V5UGF0dGVybiA9IC9eW2EtekEtWjAtOVxccy5fOi89K0AtXSokLztcbiAgICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlRmllbGRQYXR0ZXJuKGtleSwgJ1RhZyBrZXknLCB2YWxpZEtleVBhdHRlcm4sIHVuZGVmaW5lZCwgc2NvcGUpKTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGFnIHZhbHVlXG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBmaWVsZE5hbWU6ICdUYWcgdmFsdWUnLFxuICAgICAgICBtaW5MZW5ndGg6IE1FTU9SWV9UQUdfTUlOX0xFTkdUSCxcbiAgICAgICAgbWF4TGVuZ3RoOiBNRU1PUllfVEFHX01BWF9MRU5HVEgsXG4gICAgICB9LCBzY29wZSkpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcgdmFsdWUgcGF0dGVybjogXlthLXpBLVowLTlcXHMuXzovPStALV0qJFxuICAgICAgY29uc3QgdmFsaWRWYWx1ZVBhdHRlcm4gPSAvXlthLXpBLVowLTlcXHMuXzovPStALV0qJC87XG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZUZpZWxkUGF0dGVybih2YWx1ZSwgJ1RhZyB2YWx1ZScsIHZhbGlkVmFsdWVQYXR0ZXJuLCB1bmRlZmluZWQsIHNjb3BlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZW1vcnkgbmFtZSBmb3JtYXRcbiAgICogQHBhcmFtIG5hbWUgVGhlIG1lbW9yeSBuYW1lIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZU1lbW9yeU5hbWUgPSAobmFtZTogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSA9PiB7XG4gICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgoe1xuICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICBmaWVsZE5hbWU6ICdNZW1vcnkgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IE1FTU9SWV9OQU1FX01JTl9MRU5HVEgsXG4gICAgICBtYXhMZW5ndGg6IE1FTU9SWV9OQU1FX01BWF9MRU5HVEgsXG4gICAgfSwgc2NvcGUpKTtcblxuICAgIC8vIENoZWNrIGlmIG5hbWUgbWF0Y2hlcyB0aGUgQVdTIEFQSSBwYXR0ZXJuOiBbYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fVxuICAgIC8vIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgdXAgdG8gNDcgbGV0dGVycywgbnVtYmVycywgb3IgdW5kZXJzY29yZXNcbiAgICBjb25zdCB2YWxpZE5hbWVQYXR0ZXJuID0gL15bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSQvO1xuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlRmllbGRQYXR0ZXJuKG5hbWUsICdNZW1vcnkgbmFtZScsIHZhbGlkTmFtZVBhdHRlcm4sIHVuZGVmaW5lZCwgc2NvcGUpKTtcblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbWVtb3J5IGV4cGlyYXRpb24gZGF5c1xuICAgKiBAcGFyYW0gZXhwaXJhdGlvbkRheXMgVGhlIG1lbW9yeSBleHBpcmF0aW9uIGRheXMgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlTWVtb3J5RXhwaXJhdGlvbkRheXMgPSAoZXhwaXJhdGlvbkRheXM6IG51bWJlcik6IHN0cmluZ1tdID0+IHtcbiAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGV4cGlyYXRpb25EYXlzIDwgTUVNT1JZX0VYUElSQVRJT05fREFZU19NSU4gfHwgZXhwaXJhdGlvbkRheXMgPiBNRU1PUllfRVhQSVJBVElPTl9EQVlTX01BWCkge1xuICAgICAgZXJyb3JzLnB1c2goYE1lbW9yeSBleHBpcmF0aW9uIGRheXMgbXVzdCBiZSBiZXR3ZWVuICR7TUVNT1JZX0VYUElSQVRJT05fREFZU19NSU59IGFuZCAke01FTU9SWV9FWFBJUkFUSU9OX0RBWVNfTUFYfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH07XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFJFTkRFUkVSU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgbWVtb3J5IHN0cmF0ZWdpZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIE1lbW9yeVN0cmF0ZWd5UHJvcGVydHkgb2JqZWN0cyBpbiBDbG91ZEZvcm1hdGlvbiBmb3JtYXQsIG9yIHVuZGVmaW5lZCBpZiBubyBzdHJhdGVnaWVzIGFyZSBkZWZpbmVkXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIGlmIG5vIHN0cmF0ZWdpZXMgYXJlIGRlZmluZWQgb3IgYXJyYXkgaXMgZW1wdHlcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJNZW1vcnlTdHJhdGVnaWVzKCk6IGJlZHJvY2thZ2VudGNvcmUuQ2ZuTWVtb3J5Lk1lbW9yeVN0cmF0ZWd5UHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLm1lbW9yeVN0cmF0ZWdpZXMgfHwgdGhpcy5tZW1vcnlTdHJhdGVnaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tZW1vcnlTdHJhdGVnaWVzLm1hcChtcyA9PiBtcy5yZW5kZXIoKSk7XG4gIH1cbn1cbiJdfQ==
|
|
661
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVtb3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsNkNBQWtGO0FBR2xGLDJFQUE2RTtBQUM3RSwrREFNb0M7QUFDcEMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRzFFLG1DQUFzQztBQUN0Qyw2REFBdUc7QUFFdkc7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUVsQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUVoQzs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUVsQzs7O0dBR0c7QUFDSCxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUNyQzs7O0dBR0c7QUFDSCxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQztBQWlIdkM7OytFQUUrRTtBQUMvRTs7O0dBR0c7QUFDSCxNQUFzQixVQUFXLFNBQVEsc0JBQVE7O0lBYS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDbEI7SUFDRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDakQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUM5QixPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDOUIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUNEOzs7Ozs7O09BT0c7SUFDSCxV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TSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IEFybiwgQXJuRm9ybWF0LCBEdXJhdGlvbiwgSVJlc291cmNlLCBMYXp5LCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElDb25zdHJ1Y3QsIENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgYmVkcm9ja2FnZW50Y29yZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYmVkcm9ja2FnZW50Y29yZSc7XG5pbXBvcnQgeyBDZm5NZW1vcnksIENmbk1lbW9yeVByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHtcbiAgRGltZW5zaW9uc01hcCxcbiAgTWV0cmljLFxuICBNZXRyaWNPcHRpb25zLFxuICBNZXRyaWNQcm9wcyxcbiAgU3RhdHMsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG4vLyBJbnRlcm5hbCBMaWJzXG5pbXBvcnQgeyBJTWVtb3J5U3RyYXRlZ3kgfSBmcm9tICcuL21lbW9yeS1zdHJhdGVneSc7XG5pbXBvcnQgeyBNZW1vcnlQZXJtcyB9IGZyb20gJy4vcGVybXMnO1xuaW1wb3J0IHsgdmFsaWRhdGVGaWVsZFBhdHRlcm4sIHZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgsIHRocm93SWZJbnZhbGlkIH0gZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcnMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUQU5UU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBNaW5pbXVtIGxlbmd0aCBmb3IgYnJvd3NlciBuYW1lXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX05BTUVfTUlOX0xFTkdUSCA9IDE7XG5cbi8qKlxuICogTWF4aW11bSBsZW5ndGggZm9yIGJyb3dzZXIgbmFtZVxuICogQGludGVybmFsXG4gKi9cbmNvbnN0IE1FTU9SWV9OQU1FX01BWF9MRU5HVEggPSA0ODtcblxuLyoqXG4gKiBNaW5pbXVtIGxlbmd0aCBmb3IgYnJvd3NlciB0YWdzXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX1RBR19NSU5fTEVOR1RIID0gMTtcblxuLyoqXG4gKiBNYXhpbXVtIGxlbmd0aCBmb3IgYnJvd3NlciB0YWdzXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX1RBR19NQVhfTEVOR1RIID0gMjU2O1xuXG4vKipcbiAqIE1pbmltdW0gbGVuZ3RoIGZvciBtZW1vcnkgZXhwaXJhdGlvbiBkYXlzXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgTUVNT1JZX0VYUElSQVRJT05fREFZU19NSU4gPSA3O1xuLyoqXG4gKiBNYXhpbXVtIGxlbmd0aCBmb3IgbWVtb3J5IGV4cGlyYXRpb24gZGF5c1xuICogQGludGVybmFsXG4gKi9cbmNvbnN0IE1FTU9SWV9FWFBJUkFUSU9OX0RBWVNfTUFYID0gMzY1O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEludGVyZmFjZSBmb3IgTWVtb3J5IHJlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElNZW1vcnkgZXh0ZW5kcyBJUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIG1lbW9yeSByZXNvdXJjZVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBtZW1vcnlBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgbWVtb3J5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgdGhhdCBwcm92aWRlcyBwZXJtaXNzaW9ucyBmb3IgdGhlIG1lbW9yeSB0byBhY2Nlc3MgQVdTIHNlcnZpY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcbiAgLyoqXG4gICAqIEN1c3RvbSBLTVMga2V5IGZvciBlbmNyeXB0aW9uIChpZiBwcm92aWRlZClcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbWVtb3J5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRpbWVzdGFtcCB3aGVuIHRoZSBtZW1vcnkgd2FzIGxhc3QgdXBkYXRlZFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaW1lc3RhbXAgd2hlbiB0aGUgbWVtb3J5IHdhcyBjcmVhdGVkXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IHN0cmluZztcbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBhY3Rpb25zIG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byB3cml0ZSBjb250ZW50IHRvIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgY29udGVudHMgb2YgdGhpcyBtZW1vcnkuXG4gICAqIEJvdGggU2hvcnQtVGVybSBNZW1vcnkgKFNUTSkgYW5kIExvbmctVGVybSBNZW1vcnkgKExUTSkuXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGNvbnRlbnRzIG9mIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnRSZWFkU2hvcnRUZXJtTWVtb3J5KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byByZWFkIHRoZSBMb25nLVRlcm0gTWVtb3J5IChMVE0pIGNvbnRlbnRzIG9mIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnRSZWFkTG9uZ1Rlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBjb250ZW50IG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnREZWxldGUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBTaG9ydC1UZXJtIE1lbW9yeSAoU1RNKSBjb250ZW50IG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgZ3JhbnREZWxldGVTaG9ydFRlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBMb25nLVRlcm0gTWVtb3J5IChMVE0pIGNvbnRlbnQgb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBncmFudERlbGV0ZUxvbmdUZXJtTWVtb3J5KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byBtYW5hZ2UgdGhlIGNvbnRyb2wgcGxhbmUgb2YgdGhpcyBtZW1vcnkuXG4gICAqL1xuICBncmFudEFkbWluKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byBkbyBldmVyeSBhY3Rpb24gb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBncmFudEZ1bGxBY2Nlc3MoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIE1ldHJpY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBtZW1vcnkuXG4gICAqL1xuICBtZXRyaWMobWV0cmljTmFtZTogc3RyaW5nLCBkaW1lbnNpb25zOiBEaW1lbnNpb25zTWFwLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyByZWxhdGVkIHRvIHRoZSBBUEkgb3BlcmF0aW9uIHBlcmZvcm1lZCBvbiB0aGlzIG1lbW9yeS5cbiAgICovXG4gIG1ldHJpY0ZvckFwaU9wZXJhdGlvbihtZXRyaWNOYW1lOiBzdHJpbmcsIG9wZXJhdGlvbjogc3RyaW5nLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgbWVhc3VyaW5nIHRoZSBsYXRlbmN5IG9mIGEgc3BlY2lmaWMgQVBJIG9wZXJhdGlvbiBwZXJmb3JtZWQgb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5Rm9yQXBpT3BlcmF0aW9uKG9wZXJhdGlvbjogc3RyaW5nLCBwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIEFQSSByZXF1ZXN0cyBtYWRlIGZvciBhIHNwZWNpZmljIG1lbW9yeSBvcGVyYXRpb24uXG4gICAqL1xuICBtZXRyaWNJbnZvY2F0aW9uc0ZvckFwaU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljO1xuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBlcnJvcnMgZm9yIGEgc3BlY2lmaWMgQVBJIG9wZXJhdGlvbiBwZXJmb3JtZWQgb24gdGhpcyBtZW1vcnkuXG4gICAqL1xuICBtZXRyaWNFcnJvcnNGb3JBcGlPcGVyYXRpb24ob3BlcmF0aW9uOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYztcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1ldHJpYyBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY3JlYXRlZCBtZW1vcnkgZXZlbnRzIGFuZCBtZW1vcnkgcmVjb3Jkcy5cbiAgICovXG4gIG1ldHJpY0V2ZW50Q3JlYXRpb25Db3VudChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWM7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgQUJTVFJBQ1QgQkFTRSBDTEFTU1xuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhIE1lbW9yeS5cbiAqIENvbnRhaW5zIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXMgdmFsaWQgZm9yIE1lbW9yaWVzIGVpdGhlciBjcmVhdGVkIHdpdGggQ0RLIG9yIGltcG9ydGVkLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTWVtb3J5QmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSU1lbW9yeSB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBtZW1vcnlBcm46IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG1lbW9yeUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB1cGRhdGVkQXQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkga21zS2V5Pzoga21zLklLZXk7XG4gIC8qKlxuICAgKiBUaGUgcHJpbmNpcGFsIHRvIGdyYW50IHBlcm1pc3Npb25zIHRvXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudHMgSUFNIGFjdGlvbnMgdG8gdGhlIElBTSBQcmluY2lwYWxcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgSUFNIHByaW5jaXBhbCB0byBncmFudCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcGFyYW0gYWN0aW9ucyAtIFRoZSBhY3Rpb25zIHRvIGdyYW50XG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLm1lbW9yeUFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogR3JhbnQgdGhlIGdpdmVuIHByaW5jaXBhbCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byB3cml0ZSBjb250ZW50IHRvIHNob3J0LXRlcm0gbWVtb3J5LlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG9cbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IGdyYW50IGNvbmZpZ3VyYXRpb246XG4gICAqIC0gYWN0aW9uczogWydiZWRyb2NrLWFnZW50Y29yZTpDcmVhdGVFdmVudCddIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudFdyaXRlKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAuLi5NZW1vcnlQZXJtcy5TVE0uV1JJVEVfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoaXMgbWVtb3J5LlxuICAgKiBCb3RoIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGFuZCBMb25nLVRlcm0gTWVtb3J5IChMVE0pLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG9cbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IGdyYW50IGNvbmZpZ3VyYXRpb246XG4gICAqIC0gYWN0aW9uczogWydiZWRyb2NrLWFnZW50Y29yZTpHZXRNZW1vcnlSZWNvcmQnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOlJldHJpZXZlTWVtb3J5UmVjb3JkcycsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdE1lbW9yeVJlY29yZHMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RBY3RvcnMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RTZXNzaW9uc10gb24gdGhpcy5tZW1vcnlBcm5cbiAgICogQHJldHVybnMgQW4gSUFNIEdyYW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uTWVtb3J5UGVybXMuUkVBRF9QRVJNUyk7XG4gIH1cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgU2hvcnQtVGVybSBNZW1vcnkgKFNUTSkgY29udGVudHMgb2YgdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkdldEV2ZW50JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0RXZlbnRzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0QWN0b3JzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0U2Vzc2lvbnMnLF0gb24gdGhpcy5tZW1vcnlBcm5cbiAgICogQHJldHVybnMgQW4gSUFNIEdyYW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50UmVhZFNob3J0VGVybU1lbW9yeShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uTWVtb3J5UGVybXMuU1RNLlJFQURfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIExvbmctVGVybSBNZW1vcnkgKExUTSkgY29udGVudHMgb2YgdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkdldE1lbW9yeVJlY29yZCcsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6UmV0cmlldmVNZW1vcnlSZWNvcmRzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0TWVtb3J5UmVjb3JkcycsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdEFjdG9ycycsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6TGlzdFNlc3Npb25zJyxdIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudFJlYWRMb25nVGVybU1lbW9yeShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgLi4uTWVtb3J5UGVybXMuTFRNLlJFQURfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBjb250ZW50IG9uIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBCb3RoIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGFuZCBMb25nLVRlcm0gTWVtb3J5IChMVE0pLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IGRlbGV0ZSBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkRlbGV0ZUV2ZW50JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVNZW1vcnlSZWNvcmQnXSBvbiB0aGlzLm1lbW9yeUFyblxuICAgKiBAcmV0dXJucyBBbiBJQU0gR3JhbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZ3JhbnRlZCBwZXJtaXNzaW9uc1xuICAgKi9cbiAgZ3JhbnREZWxldGUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLkRFTEVURV9QRVJNUyk7XG4gIH1cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gZGVsZXRlIFNob3J0LVRlcm0gTWVtb3J5IChTVE0pIGNvbnRlbnQgb24gdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgZGVsZXRlIHBlcm1pc3Npb25zIHRvXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBncmFudCBjb25maWd1cmF0aW9uOlxuICAgKiAtIGFjdGlvbnM6IFsnYmVkcm9jay1hZ2VudGNvcmU6RGVsZXRlRXZlbnQnXSBvbiB0aGlzLm1lbW9yeUFyblxuICAgKiBAcmV0dXJucyBBbiBJQU0gR3JhbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZ3JhbnRlZCBwZXJtaXNzaW9uc1xuICAgKi9cbiAgZ3JhbnREZWxldGVTaG9ydFRlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLlNUTS5ERUxFVEVfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBMb25nLVRlcm0gTWVtb3J5IChMVE0pIGNvbnRlbnQgb24gdGhpcyBtZW1vcnkuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIElBTSBwcmluY2lwYWwgdG8gZ3JhbnQgZGVsZXRlIHBlcm1pc3Npb25zIHRvXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBncmFudCBjb25maWd1cmF0aW9uOlxuICAgKiAtIGFjdGlvbnM6IFsnYmVkcm9jay1hZ2VudGNvcmU6RGVsZXRlTWVtb3J5UmVjb3JkJ10gb24gdGhpcy5tZW1vcnlBcm5cbiAgICogQHJldHVybnMgQW4gSUFNIEdyYW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGdyYW50ZWQgcGVybWlzc2lvbnNcbiAgICovXG4gIGdyYW50RGVsZXRlTG9uZ1Rlcm1NZW1vcnkoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLkxUTS5ERUxFVEVfUEVSTVMpO1xuICB9XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgZ2l2ZW4gcHJpbmNpcGFsIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIG1hbmFnZSB0aGUgY29udHJvbCBwbGFuZSBvZiB0aGlzIG1lbW9yeS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgSUFNIHByaW5jaXBhbCB0byBncmFudCBhZG1pbiBwZXJtaXNzaW9ucyB0b1xuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgZ3JhbnQgY29uZmlndXJhdGlvbjpcbiAgICogLSBhY3Rpb25zOiBbJ2JlZHJvY2stYWdlbnRjb3JlOkNyZWF0ZU1lbW9yeScsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0TWVtb3J5JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVNZW1vcnknLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOlVwZGF0ZU1lbW9yeSddIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudEFkbWluKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAuLi5NZW1vcnlQZXJtcy5BRE1JTl9QRVJNUyk7XG4gIH1cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBnaXZlbiBwcmluY2lwYWwgaWRlbnRpdHkgcGVybWlzc2lvbnMgdG8gZG8gZXZlcnkgYWN0aW9uIG9uIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBJQU0gcHJpbmNpcGFsIHRvIGdyYW50IGZ1bGwgYWNjZXNzIHBlcm1pc3Npb25zIHRvXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBncmFudCBjb25maWd1cmF0aW9uOlxuICAgKiAtIGFjdGlvbnM6IFsnYmVkcm9jay1hZ2VudGNvcmU6Q3JlYXRlRXZlbnQnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkdldEV2ZW50JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVFdmVudCcsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0TWVtb3J5UmVjb3JkJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpSZXRyaWV2ZU1lbW9yeVJlY29yZHMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkxpc3RNZW1vcnlSZWNvcmRzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0QWN0b3JzJyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpMaXN0U2Vzc2lvbnMnLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOkNyZWF0ZU1lbW9yeScsXG4gICAgICAnYmVkcm9jay1hZ2VudGNvcmU6R2V0TWVtb3J5JyxcbiAgICAgICdiZWRyb2NrLWFnZW50Y29yZTpEZWxldGVNZW1vcnknLFxuICAgICAgJ2JlZHJvY2stYWdlbnRjb3JlOlVwZGF0ZU1lbW9yeSddIG9uIHRoaXMubWVtb3J5QXJuXG4gICAqIEByZXR1cm5zIEFuIElBTSBHcmFudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBncmFudGVkIHBlcm1pc3Npb25zXG4gICAqL1xuICBncmFudEZ1bGxBY2Nlc3MoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsIC4uLk1lbW9yeVBlcm1zLkZVTExfQUNDRVNTX1BFUk1TKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBNZXRyaWNzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgbWV0cmljIHdpbGwgYmUgY2FsY3VsYXRlZCBhcyBhIHN1bSBvdmVyIGEgcGVyaW9kIG9mIDUgbWludXRlcy5cbiAgICogWW91IGNhbiBjdXN0b21pemUgdGhpcyBieSB1c2luZyB0aGUgYHN0YXRpc3RpY2AgYW5kIGBwZXJpb2RgIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgZGltZW5zaW9uczogRGltZW5zaW9uc01hcCwgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICBjb25zdCBtZXRyaWNQcm9wczogTWV0cmljUHJvcHMgPSB7XG4gICAgICBuYW1lc3BhY2U6ICdBV1MvQmVkcm9jay1BZ2VudENvcmUnLFxuICAgICAgbWV0cmljTmFtZSxcbiAgICAgIGRpbWVuc2lvbnNNYXA6IHsgLi4uZGltZW5zaW9ucywgUmVzb3VyY2U6IHRoaXMubWVtb3J5QXJuIH0sXG4gICAgICAuLi5wcm9wcyxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyZU1ldHJpYyhtZXRyaWNQcm9wcyk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZ2l2ZW4gbmFtZWQgbWV0cmljIHJlbGF0ZWQgdG8gdGhlIEFQSSBvcGVyYXRpb24gcGVyZm9ybWVkIG9uIHRoaXMgbWVtb3J5LlxuICAgKi9cbiAgcHVibGljIG1ldHJpY0ZvckFwaU9wZXJhdGlvbihcbiAgICBtZXRyaWNOYW1lOiBzdHJpbmcsXG4gICAgb3BlcmF0aW9uOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBNZXRyaWNPcHRpb25zLFxuICApOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhtZXRyaWNOYW1lLCB7IE9wZXJhdGlvbjogb3BlcmF0aW9uIH0sIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIG1lYXN1cmluZyB0aGUgbGF0ZW5jeSBvZiBhIHNwZWNpZmljIEFQSSBvcGVyYXRpb24gcGVyZm9ybWVkIG9uIHRoaXMgbWVtb3J5LlxuICAgKlxuICAgKiBUaGUgbGF0ZW5jeSBtZXRyaWMgcmVwcmVzZW50cyB0aGUgdG90YWwgdGltZSBlbGFwc2VkIGJldHdlZW4gcmVjZWl2aW5nIHRoZSByZXF1ZXN0IGFuZCBzZW5kaW5nXG4gICAqIHRoZSBmaW5hbCByZXNwb25zZSB0b2tlbiwgbWVhc3VyaW5nIGNvbXBsZXRlIGVuZC10by1lbmQgcHJvY2Vzc2luZyB0aW1lLlxuICAgKlxuICAgKiBGb3IgbWVtb3J5IGNyZWF0aW9uIGV2ZW50cyBzcGVjaWZpY2FsbHksIHRoaXMgbWVhc3VyZXMgdGhlIHRpbWUgZnJvbSB0aGUgbGFzdCBDcmVhdGVFdmVudFxuICAgKiB0aGF0IG1ldCBzdHJhdGVneSBjcml0ZXJpYSB1bnRpbCBtZW1vcnkgc3RvcmFnZSBpcyBjb21wbGV0ZWQuXG4gICAqXG4gICAqL1xuICBwdWJsaWMgbWV0cmljTGF0ZW5jeUZvckFwaU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGb3JBcGlPcGVyYXRpb24oJ0xhdGVuY3knLCBvcGVyYXRpb24sIHsgc3RhdGlzdGljOiBTdGF0cy5BVkVSQUdFLCAuLi5wcm9wcyB9KTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJuIGEgbWV0cmljIGNvbnRhaW5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBBUEkgcmVxdWVzdHMgbWFkZSBmb3IgYSBzcGVjaWZpYyBtZW1vcnkgb3BlcmF0aW9uIGxpa2VcbiAgICogYENyZWF0ZUV2ZW50YCwgYExpc3RFdmVudHNgLCBgUmV0cmlldmVNZW1vcnlSZWNvcmRzYCAuLi5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNJbnZvY2F0aW9uc0ZvckFwaU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGb3JBcGlPcGVyYXRpb24oJ0ludm9jYXRpb25zJywgb3BlcmF0aW9uLCB7XG4gICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGVycm9ycyBmb3IgYSBzcGVjaWZpYyBBUEkgb3BlcmF0aW9uIHBlcmZvcm1lZCBvbiB0aGlzIG1lbW9yeS5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNFcnJvcnNGb3JBcGlPcGVyYXRpb24ob3BlcmF0aW9uOiBzdHJpbmcsIHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRm9yQXBpT3BlcmF0aW9uKCdFcnJvcnMnLCBvcGVyYXRpb24sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIHNob3J0LXRlcm0gbWVtb3J5IGV2ZW50cy5cbiAgICovXG4gIHB1YmxpYyBtZXRyaWNFdmVudENyZWF0aW9uQ291bnQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoJ0NyZWF0aW9uQ291bnQnLCB7IEl0ZW1UeXBlOiAnRXZlbnQnIH0sIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0pO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtZXRyaWMgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGxvbmctdGVybSBtZW1vcnkgcmVjb3Jkc1xuICAgKiBjcmVhdGVkIGJ5IHRoZSBsb25nLXRlcm0gZXh0cmFjdGlvbiBzdHJhdGVnaWVzLlxuICAgKi9cbiAgcHVibGljIG1ldHJpY01lbW9yeVJlY29yZENyZWF0aW9uQ291bnQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoXG4gICAgICAnQ3JlYXRpb25Db3VudCcsXG4gICAgICB7IEl0ZW1UeXBlOiAnTWVtb3J5UmVjb3Jkc0V4dHJhY3RlZCcgfSxcbiAgICAgIHsgc3RhdGlzdGljOiBTdGF0cy5TVU0sIC4uLnByb3BzIH0sXG4gICAgKTtcbiAgfVxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIGNyZWF0ZSBhIG1ldHJpYy5cbiAgICovXG4gIHByaXZhdGUgY29uZmlndXJlTWV0cmljKHByb3BzOiBNZXRyaWNQcm9wcykge1xuICAgIHJldHVybiBuZXcgTWV0cmljKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcmVnaW9uOiBwcm9wcz8ucmVnaW9uID8/IHRoaXMuc3RhY2sucmVnaW9uLFxuICAgICAgYWNjb3VudDogcHJvcHM/LmFjY291bnQgPz8gdGhpcy5zdGFjay5hY2NvdW50LFxuICAgIH0pO1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgUFJPUFMgRk9SIE5FVyBDT05TVFJVQ1RcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBNZW1vcnkgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWVtb3J5XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpXG4gICAqIFRoZSBuYW1lIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY2FuIGJlIHVwIHRvIDQ4IGNoYXJhY3RlcnMgbG9uZ1xuICAgKiBQYXR0ZXJuOiBbYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fVxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogU2hvcnQtdGVybSBtZW1vcnkgZXhwaXJhdGlvbiBpbiBkYXlzIChiZXR3ZWVuIDcgYW5kIDM2NSkuXG4gICAqIFNldHMgdGhlIHNob3J0LXRlcm0gKHJhdyBldmVudCkgbWVtb3J5IHJldGVudGlvbi5cbiAgICogRXZlbnRzIG9sZGVyIHRoYW4gdGhlIHNwZWNpZmllZCBkdXJhdGlvbiB3aWxsIGV4cGlyZSBhbmQgbm8gbG9uZ2VyIGJlIHN0b3JlZC5cbiAgICogQGRlZmF1bHQgLSA5MCBkYXlzXG4gICAqL1xuICByZWFkb25seSBleHBpcmF0aW9uRHVyYXRpb24/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIGZvciB0aGUgbWVtb3J5XG4gICAqIFZhbGlkIGNoYXJhY3RlcnMgYXJlIGEteiwgQS1aLCAwLTksIF8gKHVuZGVyc2NvcmUpLCAtIChoeXBoZW4pIGFuZCBzcGFjZXNcbiAgICogVGhlIGRlc2NyaXB0aW9uIGNhbiBoYXZlIHVwIHRvIDIwMCBjaGFyYWN0ZXJzXG4gICAqIEBkZWZhdWx0IC0gTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogQ3VzdG9tIEtNUyBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW9uLlxuICAgKiBAZGVmYXVsdCAtIFlvdXIgZGF0YSBpcyBlbmNyeXB0ZWQgd2l0aCBhIGtleSB0aGF0IEFXUyBvd25zIGFuZCBtYW5hZ2VzIGZvciB5b3VcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuICAvKipcbiAgICogSWYgeW91IG5lZWQgbG9uZy10ZXJtIG1lbW9yeSBmb3IgY29udGV4dCByZWNhbGwgYWNyb3NzIHNlc3Npb25zLFxuICAgKiB5b3UgY2FuIHNldHVwIG1lbW9yeSBleHRyYWN0aW9uIHN0cmF0ZWdpZXMgdG8gZXh0cmFjdCB0aGUgcmVsZXZhbnQgbWVtb3J5IGZyb20gdGhlIHJhdyBldmVudHMuXG4gICAqIEBkZWZhdWx0IC0gTm8gZXh0cmFjdGlvbiBzdHJhdGVnaWVzIChzaG9ydCB0ZXJtIG1lbW9yeSBvbmx5KVxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5U3RyYXRlZ2llcz86IElNZW1vcnlTdHJhdGVneVtdO1xuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgcHJvdmlkZXMgcGVybWlzc2lvbnMgZm9yIHRoZSBtZW1vcnkgdG8gYWNjZXNzIEFXUyBzZXJ2aWNlc1xuICAgKiB3aGVuIHVzaW5nIGN1c3RvbSBzdHJhdGVnaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgbmV3IHJvbGUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcbiAgLyoqXG4gICAqIFRhZ3MgKG9wdGlvbmFsKVxuICAgKiBBIGxpc3Qgb2Yga2V5OnZhbHVlIHBhaXJzIG9mIHRhZ3MgdG8gYXBwbHkgdG8gdGhpcyBtZW1vcnkgcmVzb3VyY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogICAgICAgICAgICAgICAgICAgICAgQVRUUlMgRk9SIElNUE9SVEVEIENPTlNUUlVDVFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBdHRyaWJ1dGVzIGZvciBzcGVjaWZ5aW5nIGFuIGltcG9ydGVkIE1lbW9yeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZW1vcnlBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIG1lbW9yeS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5QXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBJQU0gcm9sZSBhc3NvY2lhdGVkIHRvIHRoZSBtZW1vcnkuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJvbGVBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBtZW1vcnkgd2FzIGxhc3QgdXBkYXRlZC5cbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIC0gTm8gbGFzdCB1cGRhdGVkIHRpbWVzdGFtcCBpcyBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdXBkYXRlZEF0Pzogc3RyaW5nO1xuICAvKipcbiAgICogT3B0aW9uYWwgS01TIGVuY3J5cHRpb24ga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1lbW9yeVxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBBbiBBV1MgbWFuYWdlZCBrZXkgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkga21zS2V5QXJuPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbWVtb3J5LlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBObyBzdGF0dXMgaXMgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjcmVhdGVkIHRpbWVzdGFtcCBvZiB0aGUgbWVtb3J5LlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBObyBjcmVhdGVkIHRpbWVzdGFtcCBpcyBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogTG9uZy10ZXJtIG1lbW9yeSBzdG9yZSBmb3IgZXh0cmFjdGVkIGluc2lnaHRzIGxpa2UgdXNlciBwcmVmZXJlbmNlcywgc2VtYW50aWMgZmFjdHMgYW5kIHN1bW1hcmllcy5cbiAqIEVuYWJsZXMga25vd2xlZGdlIHJldGVudGlvbiBhY3Jvc3Mgc2Vzc2lvbnMgYnkgc3RvcmluZyB1c2VyIHByZWZlcmVuY2VzIChlLmcuIGNvZGluZyBzdHlsZSksXG4gKiBzZW1hbnRpYyBmYWN0cyAoZS5nLiBsZWFybmVkIGluZm8pIGFuZCBpbnRlcmFjdGlvbiBzdW1tYXJpZXMgZm9yIGNvbnRleHQgb3B0aW1pemF0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2JlZHJvY2stYWdlbnRjb3JlL2xhdGVzdC9kZXZndWlkZS9tZW1vcnkuaHRtbFxuICogQHJlc291cmNlIEFXUzo6QmVkcm9ja0FnZW50Q29yZTo6TWVtb3J5XG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBNZW1vcnkgZXh0ZW5kcyBNZW1vcnlCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtYmVkcm9jay1hZ2VudGNvcmUtYWxwaGEuTWVtb3J5JztcblxuICAvKipcbiAgICogU3RhdGljIE1ldGhvZCBmb3IgaW1wb3J0aW5nIGFuIGV4aXN0aW5nIEJlZHJvY2sgQWdlbnRDb3JlIE1lbW9yeS5cbiAgICovXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIE1lbW9yeSByZWZlcmVuY2UgZnJvbSBhbiBleGlzdGluZyBtZW1vcnkncyBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCAtIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gYXR0cnMgLSBBdHRyaWJ1dGVzIG9mIHRoZSBleGlzdGluZyBicm93c2VyIGN1c3RvbVxuICAgKiBAcmV0dXJucyBBbiBJQnJvd3NlckN1c3RvbSByZWZlcmVuY2UgdG8gdGhlIGV4aXN0aW5nIGJyb3dzZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU1lbW9yeUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IE1lbW9yeUF0dHJpYnV0ZXMpOiBJTWVtb3J5IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBNZW1vcnlCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBtZW1vcnlBcm4gPSBhdHRycy5tZW1vcnlBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbWVtb3J5SWQgPSBBcm4uc3BsaXQoYXR0cnMubWVtb3J5QXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lITtcbiAgICAgIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlID0gaWFtLlJvbGUuZnJvbVJvbGVBcm4oc2NvcGUsIGAke2lkfVJvbGVgLCBhdHRycy5yb2xlQXJuKTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBrbXNLZXkgPSBhdHRycy5rbXNLZXlBcm4gPyBrbXMuS2V5LmZyb21LZXlBcm4oc2NvcGUsIGAke2lkfUtleWAsIGF0dHJzLmttc0tleUFybikgOiB1bmRlZmluZWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0ID0gYXR0cnMudXBkYXRlZEF0O1xuICAgICAgcHVibGljIHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsID0gdGhpcy5leGVjdXRpb25Sb2xlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IGF0dHJzLnN0YXR1cztcbiAgICAgIHB1YmxpYyByZWFkb25seSBjcmVhdGVkQXQgPSBhdHRycy5jcmVhdGVkQXQ7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGkpO1xuXG4gICAgICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwgPSB0aGlzLmV4ZWN1dGlvblJvbGUgfHwgbmV3IGlhbS5Vbmtub3duUHJpbmNpcGFsKHsgcmVzb3VyY2U6IHRoaXMgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIG5ldyBNZW1vcnlcbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEF0dHJpYnV0ZXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBtZW1vcnkgcmVzb3VyY2UuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtZW1vcnlBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBtZW1vcnkuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtZW1vcnlOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIG1lbW9yeS5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG1lbW9yeUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZXhwaXJhdGlvbiBkYXlzIG9mIHRoZSBtZW1vcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhwaXJhdGlvbkR1cmF0aW9uPzogRHVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgZmFpbHVyZSByZWFzb24gb2YgdGhlIGJyb3dzZXJcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZhaWx1cmVSZWFzb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIG1lbW9yeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSBvZiB0aGUgbWVtb3J5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBtZW1vcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNyZWF0ZWQgdGltZXN0YW1wIG9mIHRoZSBtZW1vcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRlZEF0Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHVwZGF0ZWQgYXQgdGltZXN0YW1wIG9mIHRoZSBtZW1vcnkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdXBkYXRlZEF0Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGFncyBhcHBsaWVkIHRvIHRoaXMgYnJvd3NlciByZXNvdXJjZVxuICAgKiBBIG1hcCBvZiBrZXktdmFsdWUgcGFpcnMgZm9yIHJlc291cmNlIHRhZ2dpbmdcbiAgICogQGRlZmF1bHQgLSBObyB0YWdzIGFwcGxpZWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIFRoZSBwcmluY2lwYWwgdG8gZ3JhbnQgcGVybWlzc2lvbnMgdG9cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbDogaWFtLklQcmluY2lwYWw7XG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhlIG1lbW9yeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcbiAgLyoqXG4gICAqIFRoZSBtZW1vcnkgc3RyYXRlZ2llcyB1c2VkIGJ5IHRoZSBtZW1vcnkuXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBtZW1vcnlTdHJhdGVnaWVzOiBJTWVtb3J5U3RyYXRlZ3lbXSA9IFtdO1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSW50ZXJuYWwgT25seVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcHJpdmF0ZSByZWFkb25seSBfX3Jlc291cmNlOiBDZm5NZW1vcnk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIENPTlNUUlVDVE9SXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWVtb3J5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU2V0IHByb3BlcnRpZXMgYW5kIGRlZmF1bHRzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5tZW1vcnlOYW1lID0gcHJvcHMubWVtb3J5TmFtZTtcbiAgICB0aGlzLmV4cGlyYXRpb25EdXJhdGlvbiA9IHByb3BzLmV4cGlyYXRpb25EdXJhdGlvbiA/PyBEdXJhdGlvbi5kYXlzKDkwKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5rbXNLZXkgPSBwcm9wcy5rbXNLZXk7XG4gICAgdGhpcy5leGVjdXRpb25Sb2xlID0gcHJvcHMuZXhlY3V0aW9uUm9sZSA/PyB0aGlzLl9jcmVhdGVNZW1vcnlSb2xlKCk7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXMuZXhlY3V0aW9uUm9sZTtcbiAgICB0aGlzLnRhZ3MgPSBwcm9wcy50YWdzO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gUGVybWlzc2lvbnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBGb3IgS01TIHBlcm1pc3Npb25zIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3N0b3JhZ2UtZW5jcnlwdGlvbi5odG1sXG4gICAgaWYgKHRoaXMua21zS2V5KSB7XG4gICAgICB0aGlzLmttc0tleS5ncmFudCh0aGlzLmV4ZWN1dGlvblJvbGUsXG4gICAgICAgICdrbXM6Q3JlYXRlR3JhbnQnLFxuICAgICAgICAna21zOkRlY3J5cHQnLFxuICAgICAgICAna21zOkRlc2NyaWJlS2V5JyxcbiAgICAgICAgJ2ttczpHZW5lcmF0ZURhdGFLZXknLFxuICAgICAgICAna21zOkdlbmVyYXRlRGF0YUtleVdpdGhvdXRQbGFpbnRleHQnLFxuICAgICAgICAna21zOlJlRW5jcnlwdConLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBWYWxpZGF0aW9uc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gVmFsaWRhdGUgbWVtb3J5IG5hbWVcbiAgICB0aHJvd0lmSW52YWxpZCh0aGlzLl92YWxpZGF0ZU1lbW9yeU5hbWUsIHRoaXMubWVtb3J5TmFtZSwgdGhpcyk7XG5cbiAgICAvLyBWYWxpZGF0ZSBleHBpcmF0aW9uIGR1cmF0aW9uXG4gICAgdGhyb3dJZkludmFsaWQodGhpcy5fdmFsaWRhdGVNZW1vcnlFeHBpcmF0aW9uRGF5cywgdGhpcy5leHBpcmF0aW9uRHVyYXRpb24udG9EYXlzKCkpO1xuXG4gICAgLy8gVmFsaWRhdGUgbWVtb3J5IHRhZ3NcbiAgICB0aHJvd0lmSW52YWxpZCh0aGlzLl92YWxpZGF0ZU1lbW9yeVRhZ3MsIHRoaXMudGFncywgdGhpcyk7XG5cbiAgICAvLyBNZW1vcnkgc3RyYXRlZ2llcyBhcmUgYWxyZWFkeSB2YWxpZGF0ZWQgd2hlbiBidWlsZGluZyB0aGVtLCBzbyBubyBuZWVkIHRvIHZhbGlkYXRlIHRoZW0gaGVyZVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQ0ZOIFByb3BzIC0gV2l0aCBMYXp5IHN1cHBvcnRcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBjZm5Qcm9wczogQ2ZuTWVtb3J5UHJvcHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLm1lbW9yeU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGV2ZW50RXhwaXJ5RHVyYXRpb246IHRoaXMuZXhwaXJhdGlvbkR1cmF0aW9uLnRvRGF5cygpLFxuICAgICAgZW5jcnlwdGlvbktleUFybjogdGhpcy5rbXNLZXk/LmtleUFybixcbiAgICAgIG1lbW9yeUV4ZWN1dGlvblJvbGVBcm46IHRoaXMuZXhlY3V0aW9uUm9sZT8ucm9sZUFybixcbiAgICAgIG1lbW9yeVN0cmF0ZWdpZXM6IExhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5fcmVuZGVyTWVtb3J5U3RyYXRlZ2llcygpIH0sIHsgb21pdEVtcHR5QXJyYXk6IHRydWUgfSksXG4gICAgICB0YWdzOiB0aGlzLnRhZ3MsXG4gICAgfTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIENGTiBSZXNvdXJjZVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHRoaXMuX19yZXNvdXJjZSA9IG5ldyBDZm5NZW1vcnkodGhpcywgJ01lbW9yeScsIGNmblByb3BzKTtcblxuICAgIHRoaXMubWVtb3J5SWQgPSB0aGlzLl9fcmVzb3VyY2UuYXR0ck1lbW9yeUlkO1xuICAgIHRoaXMubWVtb3J5QXJuID0gdGhpcy5fX3Jlc291cmNlLmF0dHJNZW1vcnlBcm47XG4gICAgdGhpcy5zdGF0dXMgPSB0aGlzLl9fcmVzb3VyY2UuYXR0clN0YXR1cztcbiAgICB0aGlzLnVwZGF0ZWRBdCA9IHRoaXMuX19yZXNvdXJjZS5hdHRyVXBkYXRlZEF0O1xuICAgIHRoaXMuY3JlYXRlZEF0ID0gdGhpcy5fX3Jlc291cmNlLmF0dHJDcmVhdGVkQXQ7XG4gICAgdGhpcy5mYWlsdXJlUmVhc29uID0gdGhpcy5fX3Jlc291cmNlLmF0dHJGYWlsdXJlUmVhc29uO1xuXG4gICAgLy8gQWRkIG1lbW9yeSBzdHJhdGVnaWVzIHRvIHRoZSBtZW1vcnlcbiAgICBmb3IgKGNvbnN0IHN0cmF0ZWd5IG9mIHByb3BzLm1lbW9yeVN0cmF0ZWdpZXMgPz8gW10pIHt0aGlzLmFkZE1lbW9yeVN0cmF0ZWd5KHN0cmF0ZWd5KTt9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gSEVMUEVSIE1FVEhPRFMgLSBhZGRYKClcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBZGQgbWVtb3J5IHN0cmF0ZWd5IHRvIHRoZSBtZW1vcnkuXG4gICAqIEBkZWZhdWx0IC0gTm8gbWVtb3J5IHN0cmF0ZWdpZXMuXG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkTWVtb3J5U3RyYXRlZ3kobWVtb3J5U3RyYXRlZ3k6IElNZW1vcnlTdHJhdGVneSkge1xuICAgIC8vIEFkZCB0aGUgbWVtb3J5IHN0cmF0ZWd5IHRvIHRoZSBtZW1vcnlcbiAgICB0aGlzLm1lbW9yeVN0cmF0ZWdpZXMucHVzaChtZW1vcnlTdHJhdGVneSk7XG5cbiAgICAvLyBHcmFudCBuZWNlc3NhcnkgcGVybWlzc2lvbnMgdG8gdGhlIGV4ZWN1dGlvbiByb2xlXG4gICAgY29uc3QgZ3JhbnQgPSBtZW1vcnlTdHJhdGVneS5ncmFudCh0aGlzLmV4ZWN1dGlvblJvbGUgYXMgaWFtLklSb2xlKTtcbiAgICBncmFudD8uYXBwbHlCZWZvcmUodGhpcy5fX3Jlc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGV4ZWN1dGlvbiByb2xlIG5lZWRlZCBmb3IgdGhlIG1lbW9yeSB0byBhY2Nlc3MgQVdTIHNlcnZpY2VzXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIHJvbGVcbiAgICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVNZW1vcnlSb2xlKCk6IGlhbS5JUm9sZSB7XG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnU2VydmljZVJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYmVkcm9jay1hZ2VudGNvcmUuYW1hem9uYXdzLmNvbScpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvbGU7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gVkFMSURBVE9SU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbWVtb3J5IHRhZ3MgZm9ybWF0XG4gICAqIEBwYXJhbSB0YWdzIFRoZSB0YWdzIG9iamVjdCB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVNZW1vcnlUYWdzID0gKHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSA9PiB7XG4gICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoIXRhZ3MpIHtcbiAgICAgIHJldHVybiBlcnJvcnM7IC8vIFRhZ3MgYXJlIG9wdGlvbmFsXG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZWFjaCB0YWcga2V5IGFuZCB2YWx1ZVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhZ3MpKSB7XG4gICAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKHtcbiAgICAgICAgdmFsdWU6IGtleSxcbiAgICAgICAgZmllbGROYW1lOiAnVGFnIGtleScsXG4gICAgICAgIG1pbkxlbmd0aDogTUVNT1JZX1RBR19NSU5fTEVOR1RILFxuICAgICAgICBtYXhMZW5ndGg6IE1FTU9SWV9UQUdfTUFYX0xFTkdUSCxcbiAgICAgIH0sIHNjb3BlKSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyBrZXkgcGF0dGVybjogXlthLXpBLVowLTlcXHMuXzovPStALV0qJFxuICAgICAgY29uc3QgdmFsaWRLZXlQYXR0ZXJuID0gL15bYS16QS1aMC05XFxzLl86Lz0rQC1dKiQvO1xuICAgICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVGaWVsZFBhdHRlcm4oa2V5LCAnVGFnIGtleScsIHZhbGlkS2V5UGF0dGVybiwgdW5kZWZpbmVkLCBzY29wZSkpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSB0YWcgdmFsdWVcbiAgICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgoe1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZTogJ1RhZyB2YWx1ZScsXG4gICAgICAgIG1pbkxlbmd0aDogTUVNT1JZX1RBR19NSU5fTEVOR1RILFxuICAgICAgICBtYXhMZW5ndGg6IE1FTU9SWV9UQUdfTUFYX0xFTkdUSCxcbiAgICAgIH0sIHNjb3BlKSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRhZyB2YWx1ZSBwYXR0ZXJuOiBeW2EtekEtWjAtOVxccy5fOi89K0AtXSokXG4gICAgICBjb25zdCB2YWxpZFZhbHVlUGF0dGVybiA9IC9eW2EtekEtWjAtOVxccy5fOi89K0AtXSokLztcbiAgICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlRmllbGRQYXR0ZXJuKHZhbHVlLCAnVGFnIHZhbHVlJywgdmFsaWRWYWx1ZVBhdHRlcm4sIHVuZGVmaW5lZCwgc2NvcGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1lbW9yeSBuYW1lIGZvcm1hdFxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbWVtb3J5IG5hbWUgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlTWVtb3J5TmFtZSA9IChuYW1lOiBzdHJpbmcsIHNjb3BlPzogSUNvbnN0cnVjdCk6IHN0cmluZ1tdID0+IHtcbiAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCh7XG4gICAgICB2YWx1ZTogbmFtZSxcbiAgICAgIGZpZWxkTmFtZTogJ01lbW9yeSBuYW1lJyxcbiAgICAgIG1pbkxlbmd0aDogTUVNT1JZX05BTUVfTUlOX0xFTkdUSCxcbiAgICAgIG1heExlbmd0aDogTUVNT1JZX05BTUVfTUFYX0xFTkdUSCxcbiAgICB9LCBzY29wZSkpO1xuXG4gICAgLy8gQ2hlY2sgaWYgbmFtZSBtYXRjaGVzIHRoZSBBV1MgQVBJIHBhdHRlcm46IFthLXpBLVpdW2EtekEtWjAtOV9dezAsNDd9XG4gICAgLy8gTXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyLCBmb2xsb3dlZCBieSB1cCB0byA0NyBsZXR0ZXJzLCBudW1iZXJzLCBvciB1bmRlcnNjb3Jlc1xuICAgIGNvbnN0IHZhbGlkTmFtZVBhdHRlcm4gPSAvXlthLXpBLVpdW2EtekEtWjAtOV9dezAsNDd9JC87XG4gICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVGaWVsZFBhdHRlcm4obmFtZSwgJ01lbW9yeSBuYW1lJywgdmFsaWROYW1lUGF0dGVybiwgdW5kZWZpbmVkLCBzY29wZSkpO1xuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZW1vcnkgZXhwaXJhdGlvbiBkYXlzXG4gICAqIEBwYXJhbSBleHBpcmF0aW9uRGF5cyBUaGUgbWVtb3J5IGV4cGlyYXRpb24gZGF5cyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVNZW1vcnlFeHBpcmF0aW9uRGF5cyA9IChleHBpcmF0aW9uRGF5czogbnVtYmVyKTogc3RyaW5nW10gPT4ge1xuICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAoZXhwaXJhdGlvbkRheXMgPCBNRU1PUllfRVhQSVJBVElPTl9EQVlTX01JTiB8fCBleHBpcmF0aW9uRGF5cyA+IE1FTU9SWV9FWFBJUkFUSU9OX0RBWVNfTUFYKSB7XG4gICAgICBlcnJvcnMucHVzaChgTWVtb3J5IGV4cGlyYXRpb24gZGF5cyBtdXN0IGJlIGJldHdlZW4gJHtNRU1PUllfRVhQSVJBVElPTl9EQVlTX01JTn0gYW5kICR7TUVNT1JZX0VYUElSQVRJT05fREFZU19NQVh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gUkVOREVSRVJTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogUmVuZGVyIHRoZSBtZW1vcnkgc3RyYXRlZ2llcy5cbiAgICpcbiAgICogQHJldHVybnMgQXJyYXkgb2YgTWVtb3J5U3RyYXRlZ3lQcm9wZXJ0eSBvYmplY3RzIGluIENsb3VkRm9ybWF0aW9uIGZvcm1hdCwgb3IgdW5kZWZpbmVkIGlmIG5vIHN0cmF0ZWdpZXMgYXJlIGRlZmluZWRcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgaWYgbm8gc3RyYXRlZ2llcyBhcmUgZGVmaW5lZCBvciBhcnJheSBpcyBlbXB0eVxuICAgKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS5cbiAgICovXG4gIHByaXZhdGUgX3JlbmRlck1lbW9yeVN0cmF0ZWdpZXMoKTogYmVkcm9ja2FnZW50Y29yZS5DZm5NZW1vcnkuTWVtb3J5U3RyYXRlZ3lQcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMubWVtb3J5U3RyYXRlZ2llcyB8fCB0aGlzLm1lbW9yeVN0cmF0ZWdpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm1lbW9yeVN0cmF0ZWdpZXMubWFwKG1zID0+IG1zLnJlbmRlcigpKTtcbiAgfVxufVxuIl19
|
|
@@ -42,7 +42,6 @@ export interface ManagedStrategyProps extends MemoryStrategyCommonProps {
|
|
|
42
42
|
* This configuration provides customization to how the model identifies
|
|
43
43
|
* and extracts relevant information for memory storage.
|
|
44
44
|
* @default - No custom extraction
|
|
45
|
-
* @required - No
|
|
46
45
|
*/
|
|
47
46
|
readonly customExtraction?: OverrideConfig;
|
|
48
47
|
/**
|
|
@@ -50,7 +49,6 @@ export interface ManagedStrategyProps extends MemoryStrategyCommonProps {
|
|
|
50
49
|
* This configuration provides customization to how the model identifies
|
|
51
50
|
* and extracts relevant information for memory storage.
|
|
52
51
|
* @default - No custom extraction
|
|
53
|
-
* @required - No
|
|
54
52
|
*/
|
|
55
53
|
readonly customConsolidation?: OverrideConfig;
|
|
56
54
|
/**
|
|
@@ -70,7 +68,6 @@ export interface ManagedStrategyProps extends MemoryStrategyCommonProps {
|
|
|
70
68
|
*
|
|
71
69
|
* After memory creation, this namespace might look like:
|
|
72
70
|
* /actor/actor-3afc5aa8fef9/strategy/summarization-fy5c5fwc7/session/session-qj7tpd1kvr8
|
|
73
|
-
* @required - Yes
|
|
74
71
|
*/
|
|
75
72
|
readonly namespaces: string[];
|
|
76
73
|
}
|
|
@@ -25,7 +25,7 @@ const PROMPT_MAX_LENGTH = 30000;
|
|
|
25
25
|
* with specific models and prompt templates.
|
|
26
26
|
*/
|
|
27
27
|
class ManagedMemoryStrategy {
|
|
28
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.
|
|
28
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-bedrock-agentcore-alpha.ManagedMemoryStrategy", version: "2.223.0-alpha.0" };
|
|
29
29
|
name;
|
|
30
30
|
description;
|
|
31
31
|
/**
|
|
@@ -206,4 +206,4 @@ class ManagedMemoryStrategy {
|
|
|
206
206
|
};
|
|
207
207
|
}
|
|
208
208
|
exports.ManagedMemoryStrategy = ManagedMemoryStrategy;
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hbmFnZWQtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSw2Q0FBNkM7QUFJN0Msd0RBQW9KO0FBQ3BKLDhEQUF3RztBQUV4Rzs7K0VBRStFO0FBQy9FOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBZ0VoQzs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBcUI7O0lBQ2hCLElBQUksQ0FBUztJQUNiLFdBQVcsQ0FBVTtJQUNyQzs7T0FFRztJQUNhLFVBQVUsQ0FBVztJQUNyQzs7T0FFRztJQUNhLHFCQUFxQixDQUFrQjtJQUN2RDs7T0FFRztJQUNhLGtCQUFrQixDQUFrQjtJQUNwQyxZQUFZLENBQXFCO0lBRWpEOzs7O09BSUc7SUFDSCxZQUFZLFlBQWdDLEVBQUUsS0FBMkI7Ozs7Ozs7K0NBdEI5RCxxQkFBcUI7Ozs7UUF1QjlCLHlEQUF5RDtRQUN6RCw4QkFBOEI7UUFDOUIseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUVqRCx5REFBeUQ7UUFDekQsY0FBYztRQUNkLHlEQUF5RDtRQUN6RCxJQUFBLG1DQUFjLEVBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMscUJB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TUFBTSxHQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsOENBQXlCLEVBQUM7WUFDdkMsS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTLEVBQUUsaUJBQWlCO1lBQzVCLFNBQVMsRUFBRSxpQkFBaUI7U0FDN0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNLLGlDQUFpQyxHQUFHLENBQUMsVUFBb0IsRUFBWSxFQUFFO1FBQzdFLElBQUksTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUUxQixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsNERBQTREO1lBQzVELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQzlCLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUMzQixTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFDakMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM3QyxFQUFFLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyw0REFBNEQsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQzs7QUF6TEosc0RBMExDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSUJlZHJvY2tJbnZva2FibGUgfSBmcm9tICdAYXdzLWNkay9hd3MtYmVkcm9jay1hbHBoYSc7XG5pbXBvcnQgeyBBcm4sIEFybkZvcm1hdCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHsgR3JhbnQsIElHcmFudGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IE1lbW9yeVN0cmF0ZWd5Q29tbW9uUHJvcHMsIElNZW1vcnlTdHJhdGVneSwgTWVtb3J5U3RyYXRlZ3lUeXBlLCBNRU1PUllfTkFNRV9NSU5fTEVOR1RILCBNRU1PUllfTkFNRV9NQVhfTEVOR1RIIH0gZnJvbSAnLi4vbWVtb3J5LXN0cmF0ZWd5JztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgsIHRocm93SWZJbnZhbGlkLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiB9IGZyb20gJy4uL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RBTlRTXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIE1pbmltdW0gbGVuZ3RoIGZvciBwcm9tcHRcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBQUk9NUFRfTUlOX0xFTkdUSCA9IDE7XG4vKipcbiAqIE1heGltdW0gbGVuZ3RoIGZvciBwcm9tcHRcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBQUk9NUFRfTUFYX0xFTkdUSCA9IDMwMDAwO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIG92ZXJyaWRpbmcgbW9kZWwgYW5kIHByb21wdCB0ZW1wbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJyaWRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBtb2RlbCB0byB1c2UgZm9yIGNvbnNvbGlkYXRpb24vZXh0cmFjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWw6IElCZWRyb2NrSW52b2thYmxlO1xuICAvKipcbiAgICogVGhlIHByb21wdCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHN5c3RlbSBwcm9tcHQgdG8gZGVmaW5lXG4gICAqIHRoZSBtb2RlbCdzIG1lbW9yeSBjb25zb2xpZGF0aW9uL2V4dHJhY3Rpb24gc3RyYXRlZ3kuXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiBwcm92aWRlcyBjdXN0b21pemF0aW9uIHRvIGhvdyB0aGUgbW9kZWwgaWRlbnRpZmllcyBhbmQgZXh0cmFjdHNcbiAgICogcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIG1lbW9yeSBzdG9yYWdlLiBZb3UgY2FuIHVzZSB0aGUgZGVmYXVsdCB1c2VyIHByb21wdCBvciBjcmVhdGUgYSBjdXN0b21pemVkIG9uZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3N5c3RlbS1wcm9tcHRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGFwcGVuZFRvUHJvbXB0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBhIG1lbW9yeSBzdHJhdGVneSB0aGF0IGNhbiBvdmVycmlkZVxuICogZXhpc3RpbmcgYnVpbHQtaW4gZGVmYXVsdCBwcm9tcHRzL21vZGVsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRTdHJhdGVneVByb3BzIGV4dGVuZHMgTWVtb3J5U3RyYXRlZ3lDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1c3RvbSBleHRyYWN0aW9uLlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgY3VzdG9taXphdGlvbiB0byBob3cgdGhlIG1vZGVsIGlkZW50aWZpZXNcbiAgICogYW5kIGV4dHJhY3RzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBtZW1vcnkgc3RvcmFnZS5cbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gZXh0cmFjdGlvblxuICAgKiBAcmVxdWlyZWQgLSBOb1xuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRXh0cmFjdGlvbj86IE92ZXJyaWRlQ29uZmlnO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXN0b20gY29uc29saWRhdGlvbi5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIHByb3ZpZGVzIGN1c3RvbWl6YXRpb24gdG8gaG93IHRoZSBtb2RlbCBpZGVudGlmaWVzXG4gICAqIGFuZCBleHRyYWN0cyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IgbWVtb3J5IHN0b3JhZ2UuXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGV4dHJhY3Rpb25cbiAgICogQHJlcXVpcmVkIC0gTm9cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNvbnNvbGlkYXRpb24/OiBPdmVycmlkZUNvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2VzIGZvciB0aGUgc3RyYXRlZ3lcbiAgICogUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBmb3Igb3JnYW5pemluZyBtZW1vcnkgZGF0YVxuICAgKiBVc2UgYSBoaWVyYXJjaGljYWwgZm9ybWF0IHNlcGFyYXRlZCBieSBmb3J3YXJkIHNsYXNoZXMgKC8pXG4gICAqXG4gICAqIFVzZSBhIGhpZXJhcmNoaWNhbCBmb3JtYXQgc2VwYXJhdGVkIGJ5IGZvcndhcmQgc2xhc2hlcyAoLykgdG8gb3JnYW5pemUgbmFtZXNwYWNlcyBsb2dpY2FsbHkuXG4gICAqIFlvdSBjYW4gaW5jbHVkZSB0aGVzZSBkZWZpbmVkIHZhcmlhYmxlczpcbiAgICpcbiAgICogLSB7c2Vzc2lvbklkfSAtIHRoZSB1c2VyIGlkZW50aWZpZXIgdG8gYmUgY3JlYXRlZCBpbiB0aGUgQ3JlYXRlRXZlbnQgQVBJXG4gICAqIC0ge21lbW9yeVN0cmF0ZWd5SWR9IC0gYW4gaWRlbnRpZmllciBmb3IgYW4gZXh0cmFjdGlvbiBzdHJhdGVneVxuICAgKiAtIHtzZXNzaW9uSWR9IC0gYW4gaWRlbnRpZmllciBmb3IgZWFjaCBzZXNzaW9uXG4gICAqXG4gICAqIEV4YW1wbGUgbmFtZXNwYWNlIHBhdGg6XG4gICAqIC9zdHJhdGVnaWVzL3ttZW1vcnlTdHJhdGVneUlkfS9hY3Rpb25zL3thY3Rpb25JZH0vc2Vzc2lvbnMve3Nlc3Npb25JZH1cbiAgICpcbiAgICogQWZ0ZXIgbWVtb3J5IGNyZWF0aW9uLCB0aGlzIG5hbWVzcGFjZSBtaWdodCBsb29rIGxpa2U6XG4gICAqIC9hY3Rvci9hY3Rvci0zYWZjNWFhOGZlZjkvc3RyYXRlZ3kvc3VtbWFyaXphdGlvbi1meTVjNWZ3Yzcvc2Vzc2lvbi9zZXNzaW9uLXFqN3RwZDFrdnI4XG4gICAqIEByZXF1aXJlZCAtIFllc1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFuYWdlZCBtZW1vcnkgc3RyYXRlZ3kgdGhhdCBoYW5kbGVzIGJvdGggYnVpbHQtaW4gYW5kIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb25zLlxuICogVGhpcyBzdHJhdGVneSBjYW4gYmUgdXNlZCBmb3IgcXVpY2sgc2V0dXAgd2l0aCBidWlsdC1pbiBkZWZhdWx0cyBvciBjdXN0b21pemVkXG4gKiB3aXRoIHNwZWNpZmljIG1vZGVscyBhbmQgcHJvbXB0IHRlbXBsYXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1hbmFnZWRNZW1vcnlTdHJhdGVneSBpbXBsZW1lbnRzIElNZW1vcnlTdHJhdGVneSB7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2VzIGZvciB0aGUgc3RyYXRlZ3lcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2VzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGNvbnNvbGlkYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uc29saWRhdGlvbk92ZXJyaWRlPzogT3ZlcnJpZGVDb25maWc7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1c3RvbSBleHRyYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4dHJhY3Rpb25PdmVycmlkZT86IE92ZXJyaWRlQ29uZmlnO1xuICBwdWJsaWMgcmVhZG9ubHkgc3RyYXRlZ3lUeXBlOiBNZW1vcnlTdHJhdGVneVR5cGU7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIHRvIGNyZWF0ZSBhIG5ldyBtYW5hZ2VkIG1lbW9yeSBzdHJhdGVneVxuICAgKiBAcGFyYW0gc3RyYXRlZ3lUeXBlIHRoZSBzdHJhdGVneSB0eXBlXG4gICAqIEBwYXJhbSBwcm9wcyB0aGUgcHJvcGVydGllcyBmb3IgdGhlIHN0cmF0ZWd5XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzdHJhdGVneVR5cGU6IE1lbW9yeVN0cmF0ZWd5VHlwZSwgcHJvcHM6IE1hbmFnZWRTdHJhdGVneVByb3BzKSB7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU2V0IHByb3BlcnRpZXMgYW5kIGRlZmF1bHRzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdGhpcy5uYW1lID0gcHJvcHMubmFtZTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5uYW1lc3BhY2VzID0gcHJvcHMubmFtZXNwYWNlcztcbiAgICB0aGlzLnN0cmF0ZWd5VHlwZSA9IHN0cmF0ZWd5VHlwZTtcbiAgICB0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZSA9IHByb3BzLmN1c3RvbUNvbnNvbGlkYXRpb247XG4gICAgdGhpcy5leHRyYWN0aW9uT3ZlcnJpZGUgPSBwcm9wcy5jdXN0b21FeHRyYWN0aW9uO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVmFsaWRhdGlvbnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aHJvd0lmSW52YWxpZCh0aGlzLl92YWxpZGF0ZVByb21wdCwgdGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGU/LmFwcGVuZFRvUHJvbXB0KTtcbiAgICB0aHJvd0lmSW52YWxpZCh0aGlzLl92YWxpZGF0ZVByb21wdCwgdGhpcy5leHRyYWN0aW9uT3ZlcnJpZGU/LmFwcGVuZFRvUHJvbXB0KTtcbiAgICB0aHJvd0lmSW52YWxpZCh0aGlzLl92YWxpZGF0ZU1lbW9yeVN0cmF0ZWd5TmFtZSwgdGhpcy5uYW1lKTtcbiAgICBpZiAodGhpcy5uYW1lc3BhY2VzKSB7XG4gICAgICB0aHJvd0lmSW52YWxpZCh0aGlzLl92YWxpZGF0ZU1lbW9yeVN0cmF0ZWd5TmFtZXNwYWNlcywgdGhpcy5uYW1lc3BhY2VzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgbmV0d29yayBjb25maWd1cmF0aW9uIGFzIGEgQ2xvdWRGb3JtYXRpb24gcHJvcGVydHkuXG4gICAqIEByZXR1cm5zIFRoZSBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0eSBmb3IgdGhlIG1lbW9yeSBzdHJhdGVneS5cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogYmVkcm9ja2FnZW50Y29yZS5DZm5NZW1vcnkuTWVtb3J5U3RyYXRlZ3lQcm9wZXJ0eSB7XG4gICAgLy8gSWYgbm8gb3ZlcnJpZGVzLCB1c2UgYnVpbHQtaW4gc3RyYXRlZ3kgZm9ybWF0XG4gICAgaWYgKCF0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZSAmJiAhdGhpcy5leHRyYWN0aW9uT3ZlcnJpZGUpIHtcbiAgICAgIGNvbnN0IGNmblN0cmF0ZWd5TWFwOiBSZWNvcmQ8TWVtb3J5U3RyYXRlZ3lUeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlVTRVJfUFJFRkVSRU5DRV06ICd1c2VyUHJlZmVyZW5jZU1lbW9yeVN0cmF0ZWd5JyxcbiAgICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5TRU1BTlRJQ106ICdzZW1hbnRpY01lbW9yeVN0cmF0ZWd5JyxcbiAgICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5TVU1NQVJJWkFUSU9OXTogJ3N1bW1hcnlNZW1vcnlTdHJhdGVneScsXG4gICAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuQ1VTVE9NXTogJ2N1c3RvbU1lbW9yeVN0cmF0ZWd5JyxcbiAgICAgIH07XG4gICAgICBjb25zdCBzdHJhdGVneUtleSA9IGNmblN0cmF0ZWd5TWFwW3RoaXMuc3RyYXRlZ3lUeXBlXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtzdHJhdGVneUtleV06IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgbmFtZXNwYWNlczogdGhpcy5uYW1lc3BhY2VzLFxuICAgICAgICAgIHR5cGU6IHRoaXMuc3RyYXRlZ3lUeXBlLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBvdmVycmlkZXMgYXJlIHByb3ZpZGVkLCB1c2UgY3VzdG9tIHN0cmF0ZWd5IGZvcm1hdFxuICAgIGNvbnN0IGNmblN0cmF0ZWd5TWFwOiBSZWNvcmQ8TWVtb3J5U3RyYXRlZ3lUeXBlLCBzdHJpbmc+ID0ge1xuICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5VU0VSX1BSRUZFUkVOQ0VdOiAndXNlclByZWZlcmVuY2VPdmVycmlkZScsXG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNFTUFOVElDXTogJ3NlbWFudGljT3ZlcnJpZGUnLFxuICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5TVU1NQVJJWkFUSU9OXTogJ3N1bW1hcnlPdmVycmlkZScsXG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLkNVU1RPTV06ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCBzdHJhdGVneUtleSA9IGNmblN0cmF0ZWd5TWFwW3RoaXMuc3RyYXRlZ3lUeXBlXTtcbiAgICByZXR1cm4ge1xuICAgICAgY3VzdG9tTWVtb3J5U3RyYXRlZ3k6IHtcbiAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgICAgbmFtZXNwYWNlczogdGhpcy5uYW1lc3BhY2VzLFxuICAgICAgICB0eXBlOiB0aGlzLnN0cmF0ZWd5VHlwZSxcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIFtzdHJhdGVneUtleV06IHtcbiAgICAgICAgICAgIC4uLih0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZSAmJiB7XG4gICAgICAgICAgICAgIGNvbnNvbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICBtb2RlbElkOiBBcm4uc3BsaXQodGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGUubW9kZWwuaW52b2thYmxlQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSlcbiAgICAgICAgICAgICAgICAgIC5yZXNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgYXBwZW5kVG9Qcm9tcHQ6IHRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlLmFwcGVuZFRvUHJvbXB0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4odGhpcy5leHRyYWN0aW9uT3ZlcnJpZGUgJiYge1xuICAgICAgICAgICAgICBleHRyYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgbW9kZWxJZDogQXJuLnNwbGl0KHRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlLm1vZGVsLmludm9rYWJsZUFybiwgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpXG4gICAgICAgICAgICAgICAgICAucmVzb3VyY2VOYW1lLFxuICAgICAgICAgICAgICAgIGFwcGVuZFRvUHJvbXB0OiB0aGlzLmV4dHJhY3Rpb25PdmVycmlkZS5hcHBlbmRUb1Byb21wdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnMgdG8gdGhlIHJvbGVcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgZ3JhbnRlZSB0byBncmFudCBwZXJtaXNzaW9ucyB0b1xuICAgKiBAcmV0dXJucyBUaGUgR3JhbnQgb2JqZWN0IGZvciBjaGFpbmluZ1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZ3JhbnQxID0gdGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGU/Lm1vZGVsLmdyYW50SW52b2tlKGdyYW50ZWUpO1xuICAgIGNvbnN0IGdyYW50MiA9IHRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlPy5tb2RlbC5ncmFudEludm9rZShncmFudGVlKTtcbiAgICByZXR1cm4gZ3JhbnQxICYmIGdyYW50MiA/IGdyYW50MS5jb21iaW5lKGdyYW50MikgOiBncmFudDEgfHwgZ3JhbnQyO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFZBTElEQVRPUlNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1lbW9yeSBzdHJhdGVneSBuYW1lXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lID0gKG5hbWU6IHN0cmluZywgc2NvcGU/OiBJQ29uc3RydWN0KTogc3RyaW5nW10gPT4ge1xuICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKHtcbiAgICAgIHZhbHVlOiBuYW1lLFxuICAgICAgZmllbGROYW1lOiAnTWVtb3J5IG5hbWUnLFxuICAgICAgbWluTGVuZ3RoOiBNRU1PUllfTkFNRV9NSU5fTEVOR1RILFxuICAgICAgbWF4TGVuZ3RoOiBNRU1PUllfTkFNRV9NQVhfTEVOR1RILFxuICAgIH0sIHNjb3BlKSk7XG5cbiAgICAvLyBDaGVjayBpZiBuYW1lIG1hdGNoZXMgdGhlIEFXUyBBUEkgcGF0dGVybjogW2EtekEtWl1bYS16QS1aMC05X117MCw0N31cbiAgICAvLyBNdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGZvbGxvd2VkIGJ5IHVwIHRvIDQ3IGxldHRlcnMsIG51bWJlcnMsIG9yIHVuZGVyc2NvcmVzXG4gICAgY29uc3QgdmFsaWROYW1lUGF0dGVybiA9IC9eW2EtekEtWl1bYS16QS1aMC05X117MCw0N30kLztcbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZUZpZWxkUGF0dGVybihuYW1lLCAnTWVtb3J5IG5hbWUnLCB2YWxpZE5hbWVQYXR0ZXJuLCB1bmRlZmluZWQsIHNjb3BlKSk7XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHByb21wdFxuICAgKiBAcGFyYW0gcHJvbXB0IC0gVGhlIHByb21wdCB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVQcm9tcHQgPSAocHJvbXB0Pzogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSA9PiB7XG4gICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoIXByb21wdCkge1xuICAgICAgcmV0dXJuIGVycm9ycztcbiAgICB9XG4gICAgZXJyb3JzLnB1c2goLi4udmFsaWRhdGVTdHJpbmdGaWVsZExlbmd0aCh7XG4gICAgICB2YWx1ZTogcHJvbXB0LFxuICAgICAgZmllbGROYW1lOiAnUHJvbXB0JyxcbiAgICAgIG1pbkxlbmd0aDogUFJPTVBUX01JTl9MRU5HVEgsXG4gICAgICBtYXhMZW5ndGg6IFBST01QVF9NQVhfTEVOR1RILFxuICAgIH0sIHNjb3BlKSk7XG4gICAgcmV0dXJuIGVycm9ycztcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBtZW1vcnkgc3RyYXRlZ3kgbmFtZXNwYWNlc1xuICAgKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFRoZSBuYW1lc3BhY2VzIHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZU1lbW9yeVN0cmF0ZWd5TmFtZXNwYWNlcyA9IChuYW1lc3BhY2VzOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+IHtcbiAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG5hbWVzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIG5hbWVzcGFjZXMpIHtcbiAgICAgIC8vIE9ubHkgY2hlY2sgZm9yIHRlbXBsYXRlIHZhcmlhYmxlcyBpbiBuYW1lc3BhY2UgZGVmaW5pdGlvblxuICAgICAgaWYgKG5hbWVzcGFjZS5pbmNsdWRlcygneycpICYmICEoXG4gICAgICAgIG5hbWVzcGFjZS5pbmNsdWRlcygne2FjdG9ySWR9JykgfHxcbiAgICAgICAgICAgIG5hbWVzcGFjZS5pbmNsdWRlcygne3Nlc3Npb25JZH0nKSB8fFxuICAgICAgICAgICAgbmFtZXNwYWNlLmluY2x1ZGVzKCd7bWVtb3J5U3RyYXRlZ3lJZH0nKVxuICAgICAgKSkge1xuICAgICAgICBlcnJvcnMucHVzaChgTmFtZXNwYWNlIHdpdGggdGVtcGxhdGVzIHNob3VsZCBjb250YWluIHZhbGlkIHZhcmlhYmxlczogJHtuYW1lc3BhY2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfTtcbn1cbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hbmFnZWQtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSw2Q0FBNkM7QUFJN0Msd0RBQW9KO0FBQ3BKLDhEQUF3RztBQUV4Rzs7K0VBRStFO0FBQy9FOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCOzs7R0FHRztBQUNILE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBNkRoQzs7OztHQUlHO0FBQ0gsTUFBYSxxQkFBcUI7O0lBQ2hCLElBQUksQ0FBUztJQUNiLFdBQVcsQ0FBVTtJQUNyQzs7T0FFRztJQUNhLFVBQVUsQ0FBVztJQUNyQzs7T0FFRztJQUNhLHFCQUFxQixDQUFrQjtJQUN2RDs7T0FFRztJQUNhLGtCQUFrQixDQUFrQjtJQUNwQyxZQUFZLENBQXFCO0lBRWpEOzs7O09BSUc7SUFDSCxZQUFZLFlBQWdDLEVBQUUsS0FBMkI7Ozs7Ozs7K0NBdEI5RCxxQkFBcUI7Ozs7UUF1QjlCLHlEQUF5RDtRQUN6RCw4QkFBOEI7UUFDOUIseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDdkQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUVqRCx5REFBeUQ7UUFDekQsY0FBYztRQUNkLHlEQUF5RDtRQUN6RCxJQUFBLG1DQUFjLEVBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMscUJB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TUFBTSxHQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsOENBQXlCLEVBQUM7WUFDdkMsS0FBSyxFQUFFLE1BQU07WUFDYixTQUFTLEVBQUUsUUFBUTtZQUNuQixTQUFTLEVBQUUsaUJBQWlCO1lBQzVCLFNBQVMsRUFBRSxpQkFBaUI7U0FDN0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNLLGlDQUFpQyxHQUFHLENBQUMsVUFBb0IsRUFBWSxFQUFFO1FBQzdFLElBQUksTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUUxQixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsNERBQTREO1lBQzVELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQzlCLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUMzQixTQUFTLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFDakMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM3QyxFQUFFLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyw0REFBNEQsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQzs7QUF6TEosc0RBMExDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgSUJlZHJvY2tJbnZva2FibGUgfSBmcm9tICdAYXdzLWNkay9hd3MtYmVkcm9jay1hbHBoYSc7XG5pbXBvcnQgeyBBcm4sIEFybkZvcm1hdCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGJlZHJvY2thZ2VudGNvcmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWJlZHJvY2thZ2VudGNvcmUnO1xuaW1wb3J0IHsgR3JhbnQsIElHcmFudGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IE1lbW9yeVN0cmF0ZWd5Q29tbW9uUHJvcHMsIElNZW1vcnlTdHJhdGVneSwgTWVtb3J5U3RyYXRlZ3lUeXBlLCBNRU1PUllfTkFNRV9NSU5fTEVOR1RILCBNRU1PUllfTkFNRV9NQVhfTEVOR1RIIH0gZnJvbSAnLi4vbWVtb3J5LXN0cmF0ZWd5JztcbmltcG9ydCB7IHZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgsIHRocm93SWZJbnZhbGlkLCB2YWxpZGF0ZUZpZWxkUGF0dGVybiB9IGZyb20gJy4uL3ZhbGlkYXRpb24taGVscGVycyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RBTlRTXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIE1pbmltdW0gbGVuZ3RoIGZvciBwcm9tcHRcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBQUk9NUFRfTUlOX0xFTkdUSCA9IDE7XG4vKipcbiAqIE1heGltdW0gbGVuZ3RoIGZvciBwcm9tcHRcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBQUk9NUFRfTUFYX0xFTkdUSCA9IDMwMDAwO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIG92ZXJyaWRpbmcgbW9kZWwgYW5kIHByb21wdCB0ZW1wbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJyaWRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBtb2RlbCB0byB1c2UgZm9yIGNvbnNvbGlkYXRpb24vZXh0cmFjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWw6IElCZWRyb2NrSW52b2thYmxlO1xuICAvKipcbiAgICogVGhlIHByb21wdCB0aGF0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIHN5c3RlbSBwcm9tcHQgdG8gZGVmaW5lXG4gICAqIHRoZSBtb2RlbCdzIG1lbW9yeSBjb25zb2xpZGF0aW9uL2V4dHJhY3Rpb24gc3RyYXRlZ3kuXG4gICAqIFRoaXMgY29uZmlndXJhdGlvbiBwcm92aWRlcyBjdXN0b21pemF0aW9uIHRvIGhvdyB0aGUgbW9kZWwgaWRlbnRpZmllcyBhbmQgZXh0cmFjdHNcbiAgICogcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIG1lbW9yeSBzdG9yYWdlLiBZb3UgY2FuIHVzZSB0aGUgZGVmYXVsdCB1c2VyIHByb21wdCBvciBjcmVhdGUgYSBjdXN0b21pemVkIG9uZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYmVkcm9jay1hZ2VudGNvcmUvbGF0ZXN0L2Rldmd1aWRlL3N5c3RlbS1wcm9tcHRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGFwcGVuZFRvUHJvbXB0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciBhIG1lbW9yeSBzdHJhdGVneSB0aGF0IGNhbiBvdmVycmlkZVxuICogZXhpc3RpbmcgYnVpbHQtaW4gZGVmYXVsdCBwcm9tcHRzL21vZGVsc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRTdHJhdGVneVByb3BzIGV4dGVuZHMgTWVtb3J5U3RyYXRlZ3lDb21tb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1c3RvbSBleHRyYWN0aW9uLlxuICAgKiBUaGlzIGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgY3VzdG9taXphdGlvbiB0byBob3cgdGhlIG1vZGVsIGlkZW50aWZpZXNcbiAgICogYW5kIGV4dHJhY3RzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvciBtZW1vcnkgc3RvcmFnZS5cbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gZXh0cmFjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRXh0cmFjdGlvbj86IE92ZXJyaWRlQ29uZmlnO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXN0b20gY29uc29saWRhdGlvbi5cbiAgICogVGhpcyBjb25maWd1cmF0aW9uIHByb3ZpZGVzIGN1c3RvbWl6YXRpb24gdG8gaG93IHRoZSBtb2RlbCBpZGVudGlmaWVzXG4gICAqIGFuZCBleHRyYWN0cyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IgbWVtb3J5IHN0b3JhZ2UuXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGV4dHJhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbUNvbnNvbGlkYXRpb24/OiBPdmVycmlkZUNvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2VzIGZvciB0aGUgc3RyYXRlZ3lcbiAgICogUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBmb3Igb3JnYW5pemluZyBtZW1vcnkgZGF0YVxuICAgKiBVc2UgYSBoaWVyYXJjaGljYWwgZm9ybWF0IHNlcGFyYXRlZCBieSBmb3J3YXJkIHNsYXNoZXMgKC8pXG4gICAqXG4gICAqIFVzZSBhIGhpZXJhcmNoaWNhbCBmb3JtYXQgc2VwYXJhdGVkIGJ5IGZvcndhcmQgc2xhc2hlcyAoLykgdG8gb3JnYW5pemUgbmFtZXNwYWNlcyBsb2dpY2FsbHkuXG4gICAqIFlvdSBjYW4gaW5jbHVkZSB0aGVzZSBkZWZpbmVkIHZhcmlhYmxlczpcbiAgICpcbiAgICogLSB7c2Vzc2lvbklkfSAtIHRoZSB1c2VyIGlkZW50aWZpZXIgdG8gYmUgY3JlYXRlZCBpbiB0aGUgQ3JlYXRlRXZlbnQgQVBJXG4gICAqIC0ge21lbW9yeVN0cmF0ZWd5SWR9IC0gYW4gaWRlbnRpZmllciBmb3IgYW4gZXh0cmFjdGlvbiBzdHJhdGVneVxuICAgKiAtIHtzZXNzaW9uSWR9IC0gYW4gaWRlbnRpZmllciBmb3IgZWFjaCBzZXNzaW9uXG4gICAqXG4gICAqIEV4YW1wbGUgbmFtZXNwYWNlIHBhdGg6XG4gICAqIC9zdHJhdGVnaWVzL3ttZW1vcnlTdHJhdGVneUlkfS9hY3Rpb25zL3thY3Rpb25JZH0vc2Vzc2lvbnMve3Nlc3Npb25JZH1cbiAgICpcbiAgICogQWZ0ZXIgbWVtb3J5IGNyZWF0aW9uLCB0aGlzIG5hbWVzcGFjZSBtaWdodCBsb29rIGxpa2U6XG4gICAqIC9hY3Rvci9hY3Rvci0zYWZjNWFhOGZlZjkvc3RyYXRlZ3kvc3VtbWFyaXphdGlvbi1meTVjNWZ3Yzcvc2Vzc2lvbi9zZXNzaW9uLXFqN3RwZDFrdnI4XG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2VzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBNYW5hZ2VkIG1lbW9yeSBzdHJhdGVneSB0aGF0IGhhbmRsZXMgYm90aCBidWlsdC1pbiBhbmQgb3ZlcnJpZGUgY29uZmlndXJhdGlvbnMuXG4gKiBUaGlzIHN0cmF0ZWd5IGNhbiBiZSB1c2VkIGZvciBxdWljayBzZXR1cCB3aXRoIGJ1aWx0LWluIGRlZmF1bHRzIG9yIGN1c3RvbWl6ZWRcbiAqIHdpdGggc3BlY2lmaWMgbW9kZWxzIGFuZCBwcm9tcHQgdGVtcGxhdGVzLlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZE1lbW9yeVN0cmF0ZWd5IGltcGxlbWVudHMgSU1lbW9yeVN0cmF0ZWd5IHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZXMgZm9yIHRoZSBzdHJhdGVneVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZXM6IHN0cmluZ1tdO1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXN0b20gY29uc29saWRhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25zb2xpZGF0aW9uT3ZlcnJpZGU/OiBPdmVycmlkZUNvbmZpZztcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGV4dHJhY3Rpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0cmFjdGlvbk92ZXJyaWRlPzogT3ZlcnJpZGVDb25maWc7XG4gIHB1YmxpYyByZWFkb25seSBzdHJhdGVneVR5cGU6IE1lbW9yeVN0cmF0ZWd5VHlwZTtcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IgdG8gY3JlYXRlIGEgbmV3IG1hbmFnZWQgbWVtb3J5IHN0cmF0ZWd5XG4gICAqIEBwYXJhbSBzdHJhdGVneVR5cGUgdGhlIHN0cmF0ZWd5IHR5cGVcbiAgICogQHBhcmFtIHByb3BzIHRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgc3RyYXRlZ3lcbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0cmF0ZWd5VHlwZTogTWVtb3J5U3RyYXRlZ3lUeXBlLCBwcm9wczogTWFuYWdlZFN0cmF0ZWd5UHJvcHMpIHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTZXQgcHJvcGVydGllcyBhbmQgZGVmYXVsdHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB0aGlzLm5hbWUgPSBwcm9wcy5uYW1lO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLm5hbWVzcGFjZXMgPSBwcm9wcy5uYW1lc3BhY2VzO1xuICAgIHRoaXMuc3RyYXRlZ3lUeXBlID0gc3RyYXRlZ3lUeXBlO1xuICAgIHRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlID0gcHJvcHMuY3VzdG9tQ29uc29saWRhdGlvbjtcbiAgICB0aGlzLmV4dHJhY3Rpb25PdmVycmlkZSA9IHByb3BzLmN1c3RvbUV4dHJhY3Rpb247XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBWYWxpZGF0aW9uc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlUHJvbXB0LCB0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZT8uYXBwZW5kVG9Qcm9tcHQpO1xuICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlUHJvbXB0LCB0aGlzLmV4dHJhY3Rpb25PdmVycmlkZT8uYXBwZW5kVG9Qcm9tcHQpO1xuICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lLCB0aGlzLm5hbWUpO1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZXMpIHtcbiAgICAgIHRocm93SWZJbnZhbGlkKHRoaXMuX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lc3BhY2VzLCB0aGlzLm5hbWVzcGFjZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYXMgYSBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0eS5cbiAgICogQHJldHVybnMgVGhlIENsb3VkRm9ybWF0aW9uIHByb3BlcnR5IGZvciB0aGUgbWVtb3J5IHN0cmF0ZWd5LlxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBiZWRyb2NrYWdlbnRjb3JlLkNmbk1lbW9yeS5NZW1vcnlTdHJhdGVneVByb3BlcnR5IHtcbiAgICAvLyBJZiBubyBvdmVycmlkZXMsIHVzZSBidWlsdC1pbiBzdHJhdGVneSBmb3JtYXRcbiAgICBpZiAoIXRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlICYmICF0aGlzLmV4dHJhY3Rpb25PdmVycmlkZSkge1xuICAgICAgY29uc3QgY2ZuU3RyYXRlZ3lNYXA6IFJlY29yZDxNZW1vcnlTdHJhdGVneVR5cGUsIHN0cmluZz4gPSB7XG4gICAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuVVNFUl9QUkVGRVJFTkNFXTogJ3VzZXJQcmVmZXJlbmNlTWVtb3J5U3RyYXRlZ3knLFxuICAgICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNFTUFOVElDXTogJ3NlbWFudGljTWVtb3J5U3RyYXRlZ3knLFxuICAgICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNVTU1BUklaQVRJT05dOiAnc3VtbWFyeU1lbW9yeVN0cmF0ZWd5JyxcbiAgICAgICAgW01lbW9yeVN0cmF0ZWd5VHlwZS5DVVNUT01dOiAnY3VzdG9tTWVtb3J5U3RyYXRlZ3knLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0cmF0ZWd5S2V5ID0gY2ZuU3RyYXRlZ3lNYXBbdGhpcy5zdHJhdGVneVR5cGVdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3N0cmF0ZWd5S2V5XToge1xuICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICBuYW1lc3BhY2VzOiB0aGlzLm5hbWVzcGFjZXMsXG4gICAgICAgICAgdHlwZTogdGhpcy5zdHJhdGVneVR5cGUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIElmIG92ZXJyaWRlcyBhcmUgcHJvdmlkZWQsIHVzZSBjdXN0b20gc3RyYXRlZ3kgZm9ybWF0XG4gICAgY29uc3QgY2ZuU3RyYXRlZ3lNYXA6IFJlY29yZDxNZW1vcnlTdHJhdGVneVR5cGUsIHN0cmluZz4gPSB7XG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlVTRVJfUFJFRkVSRU5DRV06ICd1c2VyUHJlZmVyZW5jZU92ZXJyaWRlJyxcbiAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuU0VNQU5USUNdOiAnc2VtYW50aWNPdmVycmlkZScsXG4gICAgICBbTWVtb3J5U3RyYXRlZ3lUeXBlLlNVTU1BUklaQVRJT05dOiAnc3VtbWFyeU92ZXJyaWRlJyxcbiAgICAgIFtNZW1vcnlTdHJhdGVneVR5cGUuQ1VTVE9NXTogJycsXG4gICAgfTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5S2V5ID0gY2ZuU3RyYXRlZ3lNYXBbdGhpcy5zdHJhdGVneVR5cGVdO1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21NZW1vcnlTdHJhdGVneToge1xuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICBuYW1lc3BhY2VzOiB0aGlzLm5hbWVzcGFjZXMsXG4gICAgICAgIHR5cGU6IHRoaXMuc3RyYXRlZ3lUeXBlLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgW3N0cmF0ZWd5S2V5XToge1xuICAgICAgICAgICAgLi4uKHRoaXMuY29uc29saWRhdGlvbk92ZXJyaWRlICYmIHtcbiAgICAgICAgICAgICAgY29uc29saWRhdGlvbjoge1xuICAgICAgICAgICAgICAgIG1vZGVsSWQ6IEFybi5zcGxpdCh0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZS5tb2RlbC5pbnZva2FibGVBcm4sIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKVxuICAgICAgICAgICAgICAgICAgLnJlc291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBhcHBlbmRUb1Byb21wdDogdGhpcy5jb25zb2xpZGF0aW9uT3ZlcnJpZGUuYXBwZW5kVG9Qcm9tcHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC4uLih0aGlzLmV4dHJhY3Rpb25PdmVycmlkZSAmJiB7XG4gICAgICAgICAgICAgIGV4dHJhY3Rpb246IHtcbiAgICAgICAgICAgICAgICBtb2RlbElkOiBBcm4uc3BsaXQodGhpcy5leHRyYWN0aW9uT3ZlcnJpZGUubW9kZWwuaW52b2thYmxlQXJuLCBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSlcbiAgICAgICAgICAgICAgICAgIC5yZXNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgYXBwZW5kVG9Qcm9tcHQ6IHRoaXMuZXh0cmFjdGlvbk92ZXJyaWRlLmFwcGVuZFRvUHJvbXB0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyB0byB0aGUgcm9sZVxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBncmFudGVlIHRvIGdyYW50IHBlcm1pc3Npb25zIHRvXG4gICAqIEByZXR1cm5zIFRoZSBHcmFudCBvYmplY3QgZm9yIGNoYWluaW5nXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBncmFudDEgPSB0aGlzLmNvbnNvbGlkYXRpb25PdmVycmlkZT8ubW9kZWwuZ3JhbnRJbnZva2UoZ3JhbnRlZSk7XG4gICAgY29uc3QgZ3JhbnQyID0gdGhpcy5leHRyYWN0aW9uT3ZlcnJpZGU/Lm1vZGVsLmdyYW50SW52b2tlKGdyYW50ZWUpO1xuICAgIHJldHVybiBncmFudDEgJiYgZ3JhbnQyID8gZ3JhbnQxLmNvbWJpbmUoZ3JhbnQyKSA6IGdyYW50MSB8fCBncmFudDI7XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gVkFMSURBVE9SU1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbWVtb3J5IHN0cmF0ZWd5IG5hbWVcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzLCBlbXB0eSBpZiB2YWxpZFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVNZW1vcnlTdHJhdGVneU5hbWUgPSAobmFtZTogc3RyaW5nLCBzY29wZT86IElDb25zdHJ1Y3QpOiBzdHJpbmdbXSA9PiB7XG4gICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlU3RyaW5nRmllbGRMZW5ndGgoe1xuICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICBmaWVsZE5hbWU6ICdNZW1vcnkgbmFtZScsXG4gICAgICBtaW5MZW5ndGg6IE1FTU9SWV9OQU1FX01JTl9MRU5HVEgsXG4gICAgICBtYXhMZW5ndGg6IE1FTU9SWV9OQU1FX01BWF9MRU5HVEgsXG4gICAgfSwgc2NvcGUpKTtcblxuICAgIC8vIENoZWNrIGlmIG5hbWUgbWF0Y2hlcyB0aGUgQVdTIEFQSSBwYXR0ZXJuOiBbYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fVxuICAgIC8vIE11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciwgZm9sbG93ZWQgYnkgdXAgdG8gNDcgbGV0dGVycywgbnVtYmVycywgb3IgdW5kZXJzY29yZXNcbiAgICBjb25zdCB2YWxpZE5hbWVQYXR0ZXJuID0gL15bYS16QS1aXVthLXpBLVowLTlfXXswLDQ3fSQvO1xuICAgIGVycm9ycy5wdXNoKC4uLnZhbGlkYXRlRmllbGRQYXR0ZXJuKG5hbWUsICdNZW1vcnkgbmFtZScsIHZhbGlkTmFtZVBhdHRlcm4sIHVuZGVmaW5lZCwgc2NvcGUpKTtcblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgcHJvbXB0XG4gICAqIEBwYXJhbSBwcm9tcHQgLSBUaGUgcHJvbXB0IHRvIHZhbGlkYXRlXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHZhbGlkYXRpb24gZXJyb3IgbWVzc2FnZXMsIGVtcHR5IGlmIHZhbGlkXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVByb21wdCA9IChwcm9tcHQ/OiBzdHJpbmcsIHNjb3BlPzogSUNvbnN0cnVjdCk6IHN0cmluZ1tdID0+IHtcbiAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICghcHJvbXB0KSB7XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cbiAgICBlcnJvcnMucHVzaCguLi52YWxpZGF0ZVN0cmluZ0ZpZWxkTGVuZ3RoKHtcbiAgICAgIHZhbHVlOiBwcm9tcHQsXG4gICAgICBmaWVsZE5hbWU6ICdQcm9tcHQnLFxuICAgICAgbWluTGVuZ3RoOiBQUk9NUFRfTUlOX0xFTkdUSCxcbiAgICAgIG1heExlbmd0aDogUFJPTVBUX01BWF9MRU5HVEgsXG4gICAgfSwgc2NvcGUpKTtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1lbW9yeSBzdHJhdGVneSBuYW1lc3BhY2VzXG4gICAqIEBwYXJhbSBuYW1lc3BhY2VzIC0gVGhlIG5hbWVzcGFjZXMgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcywgZW1wdHkgaWYgdmFsaWRcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlTWVtb3J5U3RyYXRlZ3lOYW1lc3BhY2VzID0gKG5hbWVzcGFjZXM6IHN0cmluZ1tdKTogc3RyaW5nW10gPT4ge1xuICAgIGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAobmFtZXNwYWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgbmFtZXNwYWNlcykge1xuICAgICAgLy8gT25seSBjaGVjayBmb3IgdGVtcGxhdGUgdmFyaWFibGVzIGluIG5hbWVzcGFjZSBkZWZpbml0aW9uXG4gICAgICBpZiAobmFtZXNwYWNlLmluY2x1ZGVzKCd7JykgJiYgIShcbiAgICAgICAgbmFtZXNwYWNlLmluY2x1ZGVzKCd7YWN0b3JJZH0nKSB8fFxuICAgICAgICAgICAgbmFtZXNwYWNlLmluY2x1ZGVzKCd7c2Vzc2lvbklkfScpIHx8XG4gICAgICAgICAgICBuYW1lc3BhY2UuaW5jbHVkZXMoJ3ttZW1vcnlTdHJhdGVneUlkfScpXG4gICAgICApKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKGBOYW1lc3BhY2Ugd2l0aCB0ZW1wbGF0ZXMgc2hvdWxkIGNvbnRhaW4gdmFsaWQgdmFyaWFibGVzOiAke25hbWVzcGFjZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9O1xufVxuIl19
|