Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@abp/utils

Package Overview
Dependencies
Maintainers
2
Versions
181
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@abp/utils - npm Package Compare versions

Comparing version 2.5.0 to 2.6.0

2

dist/abp-utils.metadata.json

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"ListNode":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":9,"character":21,"context":{"typeName":"T"},"module":"./lib/linked-list"}]}]}},"LinkedList":{"__symbolic":"class","arity":1,"members":{"attach":[{"__symbolic":"method"}],"attachMany":[{"__symbolic":"method"}],"detach":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"addMany":[{"__symbolic":"method"}],"addAfter":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addBefore":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addByIndex":[{"__symbolic":"method"}],"addHead":[{"__symbolic":"method"}],"addTail":[{"__symbolic":"method"}],"addManyAfter":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addManyBefore":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addManyByIndex":[{"__symbolic":"method"}],"addManyHead":[{"__symbolic":"method"}],"addManyTail":[{"__symbolic":"method"}],"drop":[{"__symbolic":"method"}],"dropMany":[{"__symbolic":"method"}],"dropByIndex":[{"__symbolic":"method"}],"dropByValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"dropByValueAll":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"dropHead":[{"__symbolic":"method"}],"dropTail":[{"__symbolic":"method"}],"dropManyByIndex":[{"__symbolic":"method"}],"dropManyHead":[{"__symbolic":"method"}],"dropManyTail":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"findIndex":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"indexOf":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"toArray":[{"__symbolic":"method"}],"toNodeArray":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"ListMapperFn":{"__symbolic":"interface"},"ListComparisonFn":{"__symbolic":"interface"},"ListIteratorFn":{"__symbolic":"interface"}},"origins":{"ListNode":"./lib/linked-list","LinkedList":"./lib/linked-list","ListMapperFn":"./lib/linked-list","ListComparisonFn":"./lib/linked-list","ListIteratorFn":"./lib/linked-list"},"importAs":"@abp/utils"}
{"__symbolic":"module","version":4,"metadata":{"ListNode":{"__symbolic":"class","arity":1,"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"error","message":"Could not resolve type","line":7,"character":37,"context":{"typeName":"T"},"module":"./lib/linked-list"}]}]}},"LinkedList":{"__symbolic":"class","arity":1,"members":{"attach":[{"__symbolic":"method"}],"attachMany":[{"__symbolic":"method"}],"detach":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"addMany":[{"__symbolic":"method"}],"addAfter":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addBefore":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addByIndex":[{"__symbolic":"method"}],"addHead":[{"__symbolic":"method"}],"addTail":[{"__symbolic":"method"}],"addManyAfter":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addManyBefore":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addManyByIndex":[{"__symbolic":"method"}],"addManyHead":[{"__symbolic":"method"}],"addManyTail":[{"__symbolic":"method"}],"drop":[{"__symbolic":"method"}],"dropMany":[{"__symbolic":"method"}],"dropByIndex":[{"__symbolic":"method"}],"dropByValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"dropByValueAll":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"dropHead":[{"__symbolic":"method"}],"dropTail":[{"__symbolic":"method"}],"dropManyByIndex":[{"__symbolic":"method"}],"dropManyHead":[{"__symbolic":"method"}],"dropManyTail":[{"__symbolic":"method"}],"find":[{"__symbolic":"method"}],"findIndex":[{"__symbolic":"method"}],"forEach":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"indexOf":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"toArray":[{"__symbolic":"method"}],"toNodeArray":[{"__symbolic":"method"}],"toString":[{"__symbolic":"method"}]}},"ListMapperFn":{"__symbolic":"interface"},"ListComparisonFn":{"__symbolic":"interface"},"ListIteratorFn":{"__symbolic":"interface"}},"origins":{"ListNode":"./lib/linked-list","LinkedList":"./lib/linked-list","ListMapperFn":"./lib/linked-list","ListComparisonFn":"./lib/linked-list","ListIteratorFn":"./lib/linked-list"},"importAs":"@abp/utils"}

@@ -542,5 +542,5 @@ (function (global, factory) {

};
LinkedList.prototype.forEach = function (callback) {
LinkedList.prototype.forEach = function (iteratorFn) {
for (var node = this.first, position = 0; node; position++, node = node.next) {
callback(node, position, this);
iteratorFn(node, position, this);
}

@@ -547,0 +547,0 @@ };

@@ -256,5 +256,5 @@ /* tslint:disable:no-non-null-assertion */

}
forEach(callback) {
forEach(iteratorFn) {
for (let node = this.first, position = 0; node; position++, node = node.next) {
callback(node, position, this);
iteratorFn(node, position, this);
}

@@ -290,2 +290,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUUxQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxPQUFPLFFBQVE7SUFLbkIsWUFBWSxLQUFRO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBQXZCO1FBR1UsU0FBSSxHQUFHLENBQUMsQ0FBQztJQStYbkIsQ0FBQztJQTdYQyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFTyxNQUFNLENBQ1osS0FBUSxFQUNSLFlBQXFDLEVBQ3JDLFFBQWlDO1FBRWpDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO1FBQzdCLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3JCLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFVBQVUsQ0FDaEIsTUFBVyxFQUNYLFlBQXFDLEVBQ3JDLFFBQWlDO1FBRWpDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxFQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBTSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDcEMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFLLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUMzQixRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFOUIsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxNQUFNLENBQUMsSUFBaUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFRO1FBQ1YsT0FBTztZQUNMLEtBQUssRUFBRSxDQUFDLEdBQUcsTUFBd0MsRUFBRSxFQUFFLENBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDNUMsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUF3QyxFQUFFLEVBQUUsQ0FDdEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUM3QyxPQUFPLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUM7WUFDL0QsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQy9CLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFXO1FBQ2pCLE9BQU87WUFDTCxLQUFLLEVBQUUsQ0FBQyxHQUFHLE1BQXdDLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBd0MsRUFBRSxFQUFFLENBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7WUFDbEQsT0FBTyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1lBQ3BFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUNwQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7U0FDckMsQ0FBQztJQUNKLENBQUM7SUFJRCxRQUFRLENBQUMsS0FBUSxFQUFFLGFBQWtCLEVBQUUsWUFBaUMsT0FBTztRQUM3RSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUV6RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBSUQsU0FBUyxDQUFDLEtBQVEsRUFBRSxTQUFjLEVBQUUsWUFBaUMsT0FBTztRQUMxRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVqRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVEsRUFBRSxRQUFnQjtRQUNuQyxJQUFJLFFBQVEsR0FBRyxDQUFDO1lBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbkMsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0QsSUFBSSxRQUFRLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVE7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzs7WUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVE7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLElBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ2xCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUlELFlBQVksQ0FDVixNQUFXLEVBQ1gsYUFBa0IsRUFDbEIsWUFBaUMsT0FBTztRQUV4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUV6RSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBSUQsYUFBYSxDQUNYLE1BQVcsRUFDWCxTQUFjLEVBQ2QsWUFBaUMsT0FBTztRQUV4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVqRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQVcsRUFBRSxRQUFnQjtRQUMxQyxJQUFJLFFBQVEsR0FBRyxDQUFDO1lBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFeEMsSUFBSSxRQUFRLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBRWpDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQVc7UUFDckIsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFnQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN4RCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxXQUFXLENBQUMsTUFBVztRQUNyQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUk7UUFDRixPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDekQsT0FBTyxFQUFFLENBQUMsR0FBRyxNQUF3QyxFQUFFLEVBQUUsQ0FDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztZQUN0QyxVQUFVLEVBQUUsQ0FBQyxHQUFHLE1BQXdDLEVBQUUsRUFBRSxDQUMxRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1lBQ3pDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDLFFBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQztZQUNwRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDcEMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1NBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLElBQUksUUFBUSxHQUFHLENBQUM7WUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztRQUV4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRW5DLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEQsQ0FBQztJQUlELFdBQVcsQ0FBQyxLQUFVLEVBQUUsWUFBaUMsT0FBTztRQUM5RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV0RSxPQUFPLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBSUQsY0FBYyxDQUFDLEtBQVUsRUFBRSxZQUFpQyxPQUFPO1FBQ2pFLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsS0FBSyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3hGLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBRSxDQUFDLENBQUM7YUFDNUQ7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUV4QixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUV2QixJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQzs7Z0JBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBRTNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVaLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFdkIsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFFMUIsSUFBSSxJQUFJLENBQUMsSUFBSTtnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7O2dCQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztZQUU1QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFWixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTFCLElBQUksUUFBUSxHQUFHLENBQUM7WUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMxRCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsT0FBTyxLQUFLLEVBQUUsRUFBRTtZQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQVEsQ0FBRSxDQUFDLENBQUM7U0FDdEM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXlCO1FBQ3BDLElBQUksS0FBSyxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUUxQixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5DLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7UUFFbEMsT0FBTyxLQUFLLEVBQUU7WUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUcsQ0FBQyxDQUFDO1FBRWxELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBeUI7UUFDcEMsSUFBSSxLQUFLLElBQUksQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTFCLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxPQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUVsQyxPQUFPLEtBQUssRUFBRTtZQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRyxDQUFDLENBQUM7UUFFL0MsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQyxTQUE0QjtRQUMvQixLQUFLLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDeEYsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUM7Z0JBQUUsT0FBTyxPQUFPLENBQUM7U0FDeEQ7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQTRCO1FBQ3BDLEtBQUssSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN4RixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztnQkFBRSxPQUFPLFFBQVEsQ0FBQztTQUN6RDtRQUVELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxDQUFjLFFBQThCO1FBQ2pELEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM1RSxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsUUFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFJRCxPQUFPLENBQUMsS0FBVSxFQUFFLFlBQWlDLE9BQU87UUFDMUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFNUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV0RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsV0FBNEIsSUFBSSxDQUFDLFNBQVM7UUFDakQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoQixLQUFLLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDNUUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXHJcblxyXG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIExpc3ROb2RlPFQgPSBhbnk+IHtcclxuICByZWFkb25seSB2YWx1ZTogVDtcclxuICBuZXh0OiBMaXN0Tm9kZSB8IHVuZGVmaW5lZDtcclxuICBwcmV2aW91czogTGlzdE5vZGUgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGlua2VkTGlzdDxUID0gYW55PiB7XHJcbiAgcHJpdmF0ZSBmaXJzdDogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBsYXN0OiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIHNpemUgPSAwO1xyXG5cclxuICBnZXQgaGVhZCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5maXJzdDtcclxuICB9XHJcbiAgZ2V0IHRhaWwoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMubGFzdDtcclxuICB9XHJcbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXR0YWNoKFxyXG4gICAgdmFsdWU6IFQsXHJcbiAgICBwcmV2aW91c05vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxyXG4gICAgbmV4dE5vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxyXG4gICk6IExpc3ROb2RlPFQ+IHtcclxuICAgIGlmICghcHJldmlvdXNOb2RlKSByZXR1cm4gdGhpcy5hZGRIZWFkKHZhbHVlKTtcclxuXHJcbiAgICBpZiAoIW5leHROb2RlKSByZXR1cm4gdGhpcy5hZGRUYWlsKHZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBub2RlID0gbmV3IExpc3ROb2RlKHZhbHVlKTtcclxuICAgIG5vZGUucHJldmlvdXMgPSBwcmV2aW91c05vZGU7XHJcbiAgICBwcmV2aW91c05vZGUubmV4dCA9IG5vZGU7XHJcbiAgICBub2RlLm5leHQgPSBuZXh0Tm9kZTtcclxuICAgIG5leHROb2RlLnByZXZpb3VzID0gbm9kZTtcclxuXHJcbiAgICB0aGlzLnNpemUrKztcclxuXHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXR0YWNoTWFueShcclxuICAgIHZhbHVlczogVFtdLFxyXG4gICAgcHJldmlvdXNOb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcclxuICAgIG5leHROb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcclxuICApOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGlmICghdmFsdWVzLmxlbmd0aCkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGlmICghcHJldmlvdXNOb2RlKSByZXR1cm4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xyXG5cclxuICAgIGlmICghbmV4dE5vZGUpIHJldHVybiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XHJcblxyXG4gICAgY29uc3QgbGlzdCA9IG5ldyBMaW5rZWRMaXN0PFQ+KCk7XHJcbiAgICBsaXN0LmFkZE1hbnlUYWlsKHZhbHVlcyk7XHJcbiAgICBsaXN0LmZpcnN0IS5wcmV2aW91cyA9IHByZXZpb3VzTm9kZTtcclxuICAgIHByZXZpb3VzTm9kZS5uZXh0ID0gbGlzdC5maXJzdDtcclxuICAgIGxpc3QubGFzdCEubmV4dCA9IG5leHROb2RlO1xyXG4gICAgbmV4dE5vZGUucHJldmlvdXMgPSBsaXN0Lmxhc3Q7XHJcblxyXG4gICAgdGhpcy5zaXplICs9IHZhbHVlcy5sZW5ndGg7XHJcblxyXG4gICAgcmV0dXJuIGxpc3QudG9Ob2RlQXJyYXkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGV0YWNoKG5vZGU6IExpc3ROb2RlPFQ+KSB7XHJcbiAgICBpZiAoIW5vZGUucHJldmlvdXMpIHJldHVybiB0aGlzLmRyb3BIZWFkKCk7XHJcblxyXG4gICAgaWYgKCFub2RlLm5leHQpIHJldHVybiB0aGlzLmRyb3BUYWlsKCk7XHJcblxyXG4gICAgbm9kZS5wcmV2aW91cy5uZXh0ID0gbm9kZS5uZXh0O1xyXG4gICAgbm9kZS5uZXh0LnByZXZpb3VzID0gbm9kZS5wcmV2aW91cztcclxuXHJcbiAgICB0aGlzLnNpemUtLTtcclxuXHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIGFkZCh2YWx1ZTogVCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWZ0ZXI6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxyXG4gICAgICAgIHRoaXMuYWRkQWZ0ZXIuY2FsbCh0aGlzLCB2YWx1ZSwgLi4ucGFyYW1zKSxcclxuICAgICAgYmVmb3JlOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cclxuICAgICAgICB0aGlzLmFkZEJlZm9yZS5jYWxsKHRoaXMsIHZhbHVlLCAuLi5wYXJhbXMpLFxyXG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5hZGRCeUluZGV4KHZhbHVlLCBwb3NpdGlvbiksXHJcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuYWRkSGVhZCh2YWx1ZSksXHJcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuYWRkVGFpbCh2YWx1ZSksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueSh2YWx1ZXM6IFRbXSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWZ0ZXI6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxyXG4gICAgICAgIHRoaXMuYWRkTWFueUFmdGVyLmNhbGwodGhpcywgdmFsdWVzLCAuLi5wYXJhbXMpLFxyXG4gICAgICBiZWZvcmU6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxyXG4gICAgICAgIHRoaXMuYWRkTWFueUJlZm9yZS5jYWxsKHRoaXMsIHZhbHVlcywgLi4ucGFyYW1zKSxcclxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuYWRkTWFueUJ5SW5kZXgodmFsdWVzLCBwb3NpdGlvbiksXHJcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKSxcclxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGFkZEFmdGVyKHZhbHVlOiBULCBuZXh0VmFsdWU6IFQpOiBMaXN0Tm9kZTxUPjtcclxuICBhZGRBZnRlcih2YWx1ZTogVCwgcHJldmlvdXNWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPjtcclxuICBhZGRBZnRlcih2YWx1ZTogVCwgcHJldmlvdXNWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgcHJldmlvdXNWYWx1ZSkpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91cyA/IHRoaXMuYXR0YWNoKHZhbHVlLCBwcmV2aW91cywgcHJldmlvdXMubmV4dCkgOiB0aGlzLmFkZFRhaWwodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkQmVmb3JlKHZhbHVlOiBULCBuZXh0VmFsdWU6IFQpOiBMaXN0Tm9kZTxUPjtcclxuICBhZGRCZWZvcmUodmFsdWU6IFQsIG5leHRWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPjtcclxuICBhZGRCZWZvcmUodmFsdWU6IFQsIG5leHRWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBuZXh0VmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gbmV4dCA/IHRoaXMuYXR0YWNoKHZhbHVlLCBuZXh0LnByZXZpb3VzLCBuZXh0KSA6IHRoaXMuYWRkSGVhZCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhZGRCeUluZGV4KHZhbHVlOiBULCBwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gdGhpcy5zaXplO1xyXG4gICAgZWxzZSBpZiAocG9zaXRpb24gPj0gdGhpcy5zaXplKSByZXR1cm4gdGhpcy5hZGRUYWlsKHZhbHVlKTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPD0gMCkgcmV0dXJuIHRoaXMuYWRkSGVhZCh2YWx1ZSk7XHJcblxyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZ2V0KHBvc2l0aW9uKSE7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoKHZhbHVlLCBuZXh0LnByZXZpb3VzLCBuZXh0KTtcclxuICB9XHJcblxyXG4gIGFkZEhlYWQodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBjb25zdCBub2RlID0gbmV3IExpc3ROb2RlKHZhbHVlKTtcclxuXHJcbiAgICBub2RlLm5leHQgPSB0aGlzLmZpcnN0O1xyXG5cclxuICAgIGlmICh0aGlzLmZpcnN0KSB0aGlzLmZpcnN0LnByZXZpb3VzID0gbm9kZTtcclxuICAgIGVsc2UgdGhpcy5sYXN0ID0gbm9kZTtcclxuXHJcbiAgICB0aGlzLmZpcnN0ID0gbm9kZTtcclxuICAgIHRoaXMuc2l6ZSsrO1xyXG5cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkVGFpbCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+IHtcclxuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLmZpcnN0KSB7XHJcbiAgICAgIG5vZGUucHJldmlvdXMgPSB0aGlzLmxhc3Q7XHJcbiAgICAgIHRoaXMubGFzdCEubmV4dCA9IG5vZGU7XHJcbiAgICAgIHRoaXMubGFzdCA9IG5vZGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpcnN0ID0gbm9kZTtcclxuICAgICAgdGhpcy5sYXN0ID0gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNpemUrKztcclxuXHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIGFkZE1hbnlBZnRlcih2YWx1ZXM6IFRbXSwgcHJldmlvdXNWYWx1ZTogVCk6IExpc3ROb2RlPFQ+W107XHJcbiAgYWRkTWFueUFmdGVyKHZhbHVlczogVFtdLCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+W107XHJcbiAgYWRkTWFueUFmdGVyKFxyXG4gICAgdmFsdWVzOiBUW10sXHJcbiAgICBwcmV2aW91c1ZhbHVlOiBhbnksXHJcbiAgICBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlLFxyXG4gICk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgY29uc3QgcHJldmlvdXMgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgcHJldmlvdXNWYWx1ZSkpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91cyA/IHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIHByZXZpb3VzLCBwcmV2aW91cy5uZXh0KSA6IHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKTtcclxuICB9XHJcblxyXG4gIGFkZE1hbnlCZWZvcmUodmFsdWVzOiBUW10sIHByZXZpb3VzVmFsdWU6IFQpOiBMaXN0Tm9kZTxUPltdO1xyXG4gIGFkZE1hbnlCZWZvcmUodmFsdWVzOiBUW10sIG5leHRWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPltdO1xyXG4gIGFkZE1hbnlCZWZvcmUoXHJcbiAgICB2YWx1ZXM6IFRbXSxcclxuICAgIG5leHRWYWx1ZTogYW55LFxyXG4gICAgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSxcclxuICApOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgbmV4dFZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIG5leHQgPyB0aGlzLmF0dGFjaE1hbnkodmFsdWVzLCBuZXh0LnByZXZpb3VzLCBuZXh0KSA6IHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcclxuICB9XHJcblxyXG4gIGFkZE1hbnlCeUluZGV4KHZhbHVlczogVFtdLCBwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uIDw9IDApIHJldHVybiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKTtcclxuXHJcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5nZXQocG9zaXRpb24pITtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgbmV4dC5wcmV2aW91cywgbmV4dCk7XHJcbiAgfVxyXG5cclxuICBhZGRNYW55SGVhZCh2YWx1ZXM6IFRbXSk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgcmV0dXJuIHZhbHVlcy5yZWR1Y2VSaWdodDxMaXN0Tm9kZTxUPltdPigobm9kZXMsIHZhbHVlKSA9PiB7XHJcbiAgICAgIG5vZGVzLnVuc2hpZnQodGhpcy5hZGRIZWFkKHZhbHVlKSk7XHJcbiAgICAgIHJldHVybiBub2RlcztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIGFkZE1hbnlUYWlsKHZhbHVlczogVFtdKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICByZXR1cm4gdmFsdWVzLm1hcCh2YWx1ZSA9PiB0aGlzLmFkZFRhaWwodmFsdWUpKTtcclxuICB9XHJcblxyXG4gIGRyb3AoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5kcm9wQnlJbmRleChwb3NpdGlvbiksXHJcbiAgICAgIGJ5VmFsdWU6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxyXG4gICAgICAgIHRoaXMuZHJvcEJ5VmFsdWUuYXBwbHkodGhpcywgcGFyYW1zKSxcclxuICAgICAgYnlWYWx1ZUFsbDogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5kcm9wQnlWYWx1ZUFsbC5hcHBseSh0aGlzLCBwYXJhbXMpLFxyXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmRyb3BIZWFkKCksXHJcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuZHJvcFRhaWwoKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBkcm9wTWFueShjb3VudDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5kcm9wTWFueUJ5SW5kZXgoY291bnQsIHBvc2l0aW9uKSxcclxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5kcm9wTWFueUhlYWQoY291bnQpLFxyXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmRyb3BNYW55VGFpbChjb3VudCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZHJvcEJ5SW5kZXgocG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQocG9zaXRpb24pO1xyXG5cclxuICAgIHJldHVybiBjdXJyZW50ID8gdGhpcy5kZXRhY2goY3VycmVudCkgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wQnlWYWx1ZSh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkO1xyXG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkO1xyXG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZmluZEluZGV4KG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIHZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIHBvc2l0aW9uIDwgMCA/IHVuZGVmaW5lZCA6IHRoaXMuZHJvcEJ5SW5kZXgocG9zaXRpb24pO1xyXG4gIH1cclxuXHJcbiAgZHJvcEJ5VmFsdWVBbGwodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPltdO1xyXG4gIGRyb3BCeVZhbHVlQWxsKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+W107XHJcbiAgZHJvcEJ5VmFsdWVBbGwodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGN1cnJlbnQgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IGN1cnJlbnQ7IHBvc2l0aW9uKyssIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQpIHtcclxuICAgICAgaWYgKGNvbXBhcmVGbihjdXJyZW50LnZhbHVlLCB2YWx1ZSkpIHtcclxuICAgICAgICBkcm9wcGVkLnB1c2godGhpcy5kcm9wQnlJbmRleChwb3NpdGlvbiAtIGRyb3BwZWQubGVuZ3RoKSEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRyb3BwZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wSGVhZCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCBoZWFkID0gdGhpcy5maXJzdDtcclxuXHJcbiAgICBpZiAoaGVhZCkge1xyXG4gICAgICB0aGlzLmZpcnN0ID0gaGVhZC5uZXh0O1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlyc3QpIHRoaXMuZmlyc3QucHJldmlvdXMgPSB1bmRlZmluZWQ7XHJcbiAgICAgIGVsc2UgdGhpcy5sYXN0ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgdGhpcy5zaXplLS07XHJcblxyXG4gICAgICByZXR1cm4gaGVhZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZHJvcFRhaWwoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgdGFpbCA9IHRoaXMubGFzdDtcclxuXHJcbiAgICBpZiAodGFpbCkge1xyXG4gICAgICB0aGlzLmxhc3QgPSB0YWlsLnByZXZpb3VzO1xyXG5cclxuICAgICAgaWYgKHRoaXMubGFzdCkgdGhpcy5sYXN0Lm5leHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIGVsc2UgdGhpcy5maXJzdCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIHRoaXMuc2l6ZS0tO1xyXG5cclxuICAgICAgcmV0dXJuIHRhaWw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGRyb3BNYW55QnlJbmRleChjb3VudDogbnVtYmVyLCBwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uID0gTWF0aC5tYXgocG9zaXRpb24gKyB0aGlzLnNpemUsIDApO1xyXG4gICAgZWxzZSBpZiAocG9zaXRpb24gPj0gdGhpcy5zaXplKSByZXR1cm4gW107XHJcblxyXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplIC0gcG9zaXRpb24pO1xyXG5cclxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcclxuXHJcbiAgICB3aGlsZSAoY291bnQtLSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5nZXQocG9zaXRpb24pO1xyXG4gICAgICBkcm9wcGVkLnB1c2godGhpcy5kZXRhY2goY3VycmVudCEpISk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRyb3BwZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wTWFueUhlYWQoY291bnQ6IEV4Y2x1ZGU8bnVtYmVyLCAwPik6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcclxuXHJcbiAgICBjb3VudCA9IE1hdGgubWluKGNvdW50LCB0aGlzLnNpemUpO1xyXG5cclxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcclxuXHJcbiAgICB3aGlsZSAoY291bnQtLSkgZHJvcHBlZC51bnNoaWZ0KHRoaXMuZHJvcEhlYWQoKSEpO1xyXG5cclxuICAgIHJldHVybiBkcm9wcGVkO1xyXG4gIH1cclxuXHJcbiAgZHJvcE1hbnlUYWlsKGNvdW50OiBFeGNsdWRlPG51bWJlciwgMD4pOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XHJcblxyXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplKTtcclxuXHJcbiAgICBjb25zdCBkcm9wcGVkOiBMaXN0Tm9kZTxUPltdID0gW107XHJcblxyXG4gICAgd2hpbGUgKGNvdW50LS0pIGRyb3BwZWQucHVzaCh0aGlzLmRyb3BUYWlsKCkhKTtcclxuXHJcbiAgICByZXR1cm4gZHJvcHBlZDtcclxuICB9XHJcblxyXG4gIGZpbmQocHJlZGljYXRlOiBMaXN0SXRlcmF0b3JGbjxUPik6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGZvciAobGV0IGN1cnJlbnQgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IGN1cnJlbnQ7IHBvc2l0aW9uKyssIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQpIHtcclxuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50LCBwb3NpdGlvbiwgdGhpcykpIHJldHVybiBjdXJyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBmaW5kSW5kZXgocHJlZGljYXRlOiBMaXN0SXRlcmF0b3JGbjxUPik6IG51bWJlciB7XHJcbiAgICBmb3IgKGxldCBjdXJyZW50ID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBjdXJyZW50OyBwb3NpdGlvbisrLCBjdXJyZW50ID0gY3VycmVudC5uZXh0KSB7XHJcbiAgICAgIGlmIChwcmVkaWNhdGUoY3VycmVudCwgcG9zaXRpb24sIHRoaXMpKSByZXR1cm4gcG9zaXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgZm9yRWFjaDxSID0gYm9vbGVhbj4oY2FsbGJhY2s6IExpc3RJdGVyYXRvckZuPFQsIFI+KSB7XHJcbiAgICBmb3IgKGxldCBub2RlID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBub2RlOyBwb3NpdGlvbisrLCBub2RlID0gbm9kZS5uZXh0KSB7XHJcbiAgICAgIGNhbGxiYWNrKG5vZGUsIHBvc2l0aW9uLCB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldChwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZCgoXywgaW5kZXgpID0+IHBvc2l0aW9uID09PSBpbmRleCk7XHJcbiAgfVxyXG5cclxuICBpbmRleE9mKHZhbHVlOiBUKTogbnVtYmVyO1xyXG4gIGluZGV4T2YodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogbnVtYmVyO1xyXG4gIGluZGV4T2YodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcclxuICB9XHJcblxyXG4gIHRvQXJyYXkoKTogVFtdIHtcclxuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XHJcblxyXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlLnZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH1cclxuXHJcbiAgdG9Ob2RlQXJyYXkoKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBjb25zdCBhcnJheSA9IG5ldyBBcnJheSh0aGlzLnNpemUpO1xyXG5cclxuICAgIHRoaXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IChhcnJheVtpbmRleCFdID0gbm9kZSkpO1xyXG5cclxuICAgIHJldHVybiBhcnJheTtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKG1hcHBlckZuOiBMaXN0TWFwcGVyRm48VD4gPSBKU09OLnN0cmluZ2lmeSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50b0FycmF5KClcclxuICAgICAgLm1hcCh2YWx1ZSA9PiBtYXBwZXJGbih2YWx1ZSkpXHJcbiAgICAgIC5qb2luKCcgPC0+ICcpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2Fubm90IHVzZSBHZW5lcmF0b3IgdHlwZSBiZWNhdXNlIG9mIG5nLXBhY2thZ3JcclxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKTogYW55IHtcclxuICAgIGZvciAobGV0IG5vZGUgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IG5vZGU7IHBvc2l0aW9uKyssIG5vZGUgPSBub2RlLm5leHQpIHtcclxuICAgICAgeWllbGQgbm9kZS52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIExpc3RNYXBwZXJGbjxUID0gYW55PiA9ICh2YWx1ZTogVCkgPT4gYW55O1xyXG5cclxuZXhwb3J0IHR5cGUgTGlzdENvbXBhcmlzb25GbjxUID0gYW55PiA9ICh2YWx1ZTE6IFQsIHZhbHVlMjogYW55KSA9PiBib29sZWFuO1xyXG5cclxuZXhwb3J0IHR5cGUgTGlzdEl0ZXJhdG9yRm48VCA9IGFueSwgUiA9IGJvb2xlYW4+ID0gKFxyXG4gIG5vZGU6IExpc3ROb2RlPFQ+LFxyXG4gIGluZGV4PzogbnVtYmVyLFxyXG4gIGxpc3Q/OiBMaW5rZWRMaXN0LFxyXG4pID0+IFI7XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQztBQUUxQyxPQUFPLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFbkMsTUFBTSxPQUFPLFFBQVE7SUFHbkIsWUFBNEIsS0FBUTtRQUFSLFVBQUssR0FBTCxLQUFLLENBQUc7SUFBRyxDQUFDO0NBQ3pDO0FBRUQsTUFBTSxPQUFPLFVBQVU7SUFBdkI7UUFHVSxTQUFJLEdBQUcsQ0FBQyxDQUFDO0lBK1huQixDQUFDO0lBN1hDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVPLE1BQU0sQ0FDWixLQUFRLEVBQ1IsWUFBcUMsRUFDckMsUUFBaUM7UUFFakMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDN0IsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVosT0FBTyxJQUFJLENBQUM7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QUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM1RSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDbEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1ub24tbnVsbC1hc3NlcnRpb24gKi9cclxuXHJcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTGlzdE5vZGU8VCA9IGFueT4ge1xyXG4gIG5leHQ6IExpc3ROb2RlIHwgdW5kZWZpbmVkO1xyXG4gIHByZXZpb3VzOiBMaXN0Tm9kZSB8IHVuZGVmaW5lZDtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IFQpIHt9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PFQgPSBhbnk+IHtcclxuICBwcml2YXRlIGZpcnN0OiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGxhc3Q6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgc2l6ZSA9IDA7XHJcblxyXG4gIGdldCBoZWFkKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0O1xyXG4gIH1cclxuICBnZXQgdGFpbCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXN0O1xyXG4gIH1cclxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdHRhY2goXHJcbiAgICB2YWx1ZTogVCxcclxuICAgIHByZXZpb3VzTm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXHJcbiAgICBuZXh0Tm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXHJcbiAgKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgaWYgKCFwcmV2aW91c05vZGUpIHJldHVybiB0aGlzLmFkZEhlYWQodmFsdWUpO1xyXG5cclxuICAgIGlmICghbmV4dE5vZGUpIHJldHVybiB0aGlzLmFkZFRhaWwodmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xyXG4gICAgbm9kZS5wcmV2aW91cyA9IHByZXZpb3VzTm9kZTtcclxuICAgIHByZXZpb3VzTm9kZS5uZXh0ID0gbm9kZTtcclxuICAgIG5vZGUubmV4dCA9IG5leHROb2RlO1xyXG4gICAgbmV4dE5vZGUucHJldmlvdXMgPSBub2RlO1xyXG5cclxuICAgIHRoaXMuc2l6ZSsrO1xyXG5cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdHRhY2hNYW55KFxyXG4gICAgdmFsdWVzOiBUW10sXHJcbiAgICBwcmV2aW91c05vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxyXG4gICAgbmV4dE5vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxyXG4gICk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgaWYgKCF2YWx1ZXMubGVuZ3RoKSByZXR1cm4gW107XHJcblxyXG4gICAgaWYgKCFwcmV2aW91c05vZGUpIHJldHVybiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XHJcblxyXG4gICAgaWYgKCFuZXh0Tm9kZSkgcmV0dXJuIHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKTtcclxuXHJcbiAgICBjb25zdCBsaXN0ID0gbmV3IExpbmtlZExpc3Q8VD4oKTtcclxuICAgIGxpc3QuYWRkTWFueVRhaWwodmFsdWVzKTtcclxuICAgIGxpc3QuZmlyc3QhLnByZXZpb3VzID0gcHJldmlvdXNOb2RlO1xyXG4gICAgcHJldmlvdXNOb2RlLm5leHQgPSBsaXN0LmZpcnN0O1xyXG4gICAgbGlzdC5sYXN0IS5uZXh0ID0gbmV4dE5vZGU7XHJcbiAgICBuZXh0Tm9kZS5wcmV2aW91cyA9IGxpc3QubGFzdDtcclxuXHJcbiAgICB0aGlzLnNpemUgKz0gdmFsdWVzLmxlbmd0aDtcclxuXHJcbiAgICByZXR1cm4gbGlzdC50b05vZGVBcnJheSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZXRhY2gobm9kZTogTGlzdE5vZGU8VD4pIHtcclxuICAgIGlmICghbm9kZS5wcmV2aW91cykgcmV0dXJuIHRoaXMuZHJvcEhlYWQoKTtcclxuXHJcbiAgICBpZiAoIW5vZGUubmV4dCkgcmV0dXJuIHRoaXMuZHJvcFRhaWwoKTtcclxuXHJcbiAgICBub2RlLnByZXZpb3VzLm5leHQgPSBub2RlLm5leHQ7XHJcbiAgICBub2RlLm5leHQucHJldmlvdXMgPSBub2RlLnByZXZpb3VzO1xyXG5cclxuICAgIHRoaXMuc2l6ZS0tO1xyXG5cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkKHZhbHVlOiBUKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhZnRlcjogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5hZGRBZnRlci5jYWxsKHRoaXMsIHZhbHVlLCAuLi5wYXJhbXMpLFxyXG4gICAgICBiZWZvcmU6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxyXG4gICAgICAgIHRoaXMuYWRkQmVmb3JlLmNhbGwodGhpcywgdmFsdWUsIC4uLnBhcmFtcyksXHJcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmFkZEJ5SW5kZXgodmFsdWUsIHBvc2l0aW9uKSxcclxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRIZWFkKHZhbHVlKSxcclxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5hZGRUYWlsKHZhbHVlKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhZGRNYW55KHZhbHVlczogVFtdKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhZnRlcjogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5hZGRNYW55QWZ0ZXIuY2FsbCh0aGlzLCB2YWx1ZXMsIC4uLnBhcmFtcyksXHJcbiAgICAgIGJlZm9yZTogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5hZGRNYW55QmVmb3JlLmNhbGwodGhpcywgdmFsdWVzLCAuLi5wYXJhbXMpLFxyXG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5hZGRNYW55QnlJbmRleCh2YWx1ZXMsIHBvc2l0aW9uKSxcclxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpLFxyXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYWRkQWZ0ZXIodmFsdWU6IFQsIG5leHRWYWx1ZTogVCk6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEFmdGVyKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEFmdGVyKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzID8gdGhpcy5hdHRhY2godmFsdWUsIHByZXZpb3VzLCBwcmV2aW91cy5uZXh0KSA6IHRoaXMuYWRkVGFpbCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhZGRCZWZvcmUodmFsdWU6IFQsIG5leHRWYWx1ZTogVCk6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEJlZm9yZSh2YWx1ZTogVCwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEJlZm9yZSh2YWx1ZTogVCwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIG5leHRWYWx1ZSkpO1xyXG5cclxuICAgIHJldHVybiBuZXh0ID8gdGhpcy5hdHRhY2godmFsdWUsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRIZWFkKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFkZEJ5SW5kZXgodmFsdWU6IFQsIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XHJcbiAgICBlbHNlIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiB0aGlzLmFkZFRhaWwodmFsdWUpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA8PSAwKSByZXR1cm4gdGhpcy5hZGRIZWFkKHZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5nZXQocG9zaXRpb24pITtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hdHRhY2godmFsdWUsIG5leHQucHJldmlvdXMsIG5leHQpO1xyXG4gIH1cclxuXHJcbiAgYWRkSGVhZCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+IHtcclxuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xyXG5cclxuICAgIG5vZGUubmV4dCA9IHRoaXMuZmlyc3Q7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlyc3QpIHRoaXMuZmlyc3QucHJldmlvdXMgPSBub2RlO1xyXG4gICAgZWxzZSB0aGlzLmxhc3QgPSBub2RlO1xyXG5cclxuICAgIHRoaXMuZmlyc3QgPSBub2RlO1xyXG4gICAgdGhpcy5zaXplKys7XHJcblxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICBhZGRUYWlsKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlyc3QpIHtcclxuICAgICAgbm9kZS5wcmV2aW91cyA9IHRoaXMubGFzdDtcclxuICAgICAgdGhpcy5sYXN0IS5uZXh0ID0gbm9kZTtcclxuICAgICAgdGhpcy5sYXN0ID0gbm9kZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlyc3QgPSBub2RlO1xyXG4gICAgICB0aGlzLmxhc3QgPSBub2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2l6ZSsrO1xyXG5cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueUFmdGVyKHZhbHVlczogVFtdLCBwcmV2aW91c1ZhbHVlOiBUKTogTGlzdE5vZGU8VD5bXTtcclxuICBhZGRNYW55QWZ0ZXIodmFsdWVzOiBUW10sIHByZXZpb3VzVmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD5bXTtcclxuICBhZGRNYW55QWZ0ZXIoXHJcbiAgICB2YWx1ZXM6IFRbXSxcclxuICAgIHByZXZpb3VzVmFsdWU6IGFueSxcclxuICAgIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUsXHJcbiAgKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzID8gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgcHJldmlvdXMsIHByZXZpb3VzLm5leHQpIDogdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueUJlZm9yZSh2YWx1ZXM6IFRbXSwgcHJldmlvdXNWYWx1ZTogVCk6IExpc3ROb2RlPFQ+W107XHJcbiAgYWRkTWFueUJlZm9yZSh2YWx1ZXM6IFRbXSwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+W107XHJcbiAgYWRkTWFueUJlZm9yZShcclxuICAgIHZhbHVlczogVFtdLFxyXG4gICAgbmV4dFZhbHVlOiBhbnksXHJcbiAgICBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlLFxyXG4gICk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBuZXh0VmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gbmV4dCA/IHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueUJ5SW5kZXgodmFsdWVzOiBUW10sIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPD0gMCkgcmV0dXJuIHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPj0gdGhpcy5zaXplKSByZXR1cm4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xyXG5cclxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmdldChwb3NpdGlvbikhO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmF0dGFjaE1hbnkodmFsdWVzLCBuZXh0LnByZXZpb3VzLCBuZXh0KTtcclxuICB9XHJcblxyXG4gIGFkZE1hbnlIZWFkKHZhbHVlczogVFtdKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICByZXR1cm4gdmFsdWVzLnJlZHVjZVJpZ2h0PExpc3ROb2RlPFQ+W10+KChub2RlcywgdmFsdWUpID0+IHtcclxuICAgICAgbm9kZXMudW5zaGlmdCh0aGlzLmFkZEhlYWQodmFsdWUpKTtcclxuICAgICAgcmV0dXJuIG5vZGVzO1xyXG4gICAgfSwgW10pO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueVRhaWwodmFsdWVzOiBUW10pOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIHJldHVybiB2YWx1ZXMubWFwKHZhbHVlID0+IHRoaXMuYWRkVGFpbCh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgZHJvcCgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uKSxcclxuICAgICAgYnlWYWx1ZTogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5kcm9wQnlWYWx1ZS5hcHBseSh0aGlzLCBwYXJhbXMpLFxyXG4gICAgICBieVZhbHVlQWxsOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cclxuICAgICAgICB0aGlzLmRyb3BCeVZhbHVlQWxsLmFwcGx5KHRoaXMsIHBhcmFtcyksXHJcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuZHJvcEhlYWQoKSxcclxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5kcm9wVGFpbCgpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGRyb3BNYW55KGNvdW50OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmRyb3BNYW55QnlJbmRleChjb3VudCwgcG9zaXRpb24pLFxyXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmRyb3BNYW55SGVhZChjb3VudCksXHJcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuZHJvcE1hbnlUYWlsKGNvdW50KSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBkcm9wQnlJbmRleChwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gdGhpcy5zaXplO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChwb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnQgPyB0aGlzLmRldGFjaChjdXJyZW50KSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XHJcbiAgZHJvcEJ5VmFsdWUodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XHJcbiAgZHJvcEJ5VmFsdWUodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gcG9zaXRpb24gPCAwID8gdW5kZWZpbmVkIDogdGhpcy5kcm9wQnlJbmRleChwb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+W107XHJcbiAgZHJvcEJ5VmFsdWVBbGwodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD5bXTtcclxuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBjb25zdCBkcm9wcGVkOiBMaXN0Tm9kZTxUPltdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xyXG4gICAgICBpZiAoY29tcGFyZUZuKGN1cnJlbnQudmFsdWUsIHZhbHVlKSkge1xyXG4gICAgICAgIGRyb3BwZWQucHVzaCh0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uIC0gZHJvcHBlZC5sZW5ndGgpISk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZHJvcHBlZDtcclxuICB9XHJcblxyXG4gIGRyb3BIZWFkKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGhlYWQgPSB0aGlzLmZpcnN0O1xyXG5cclxuICAgIGlmIChoZWFkKSB7XHJcbiAgICAgIHRoaXMuZmlyc3QgPSBoZWFkLm5leHQ7XHJcblxyXG4gICAgICBpZiAodGhpcy5maXJzdCkgdGhpcy5maXJzdC5wcmV2aW91cyA9IHVuZGVmaW5lZDtcclxuICAgICAgZWxzZSB0aGlzLmxhc3QgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICB0aGlzLnNpemUtLTtcclxuXHJcbiAgICAgIHJldHVybiBoZWFkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wVGFpbCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCB0YWlsID0gdGhpcy5sYXN0O1xyXG5cclxuICAgIGlmICh0YWlsKSB7XHJcbiAgICAgIHRoaXMubGFzdCA9IHRhaWwucHJldmlvdXM7XHJcblxyXG4gICAgICBpZiAodGhpcy5sYXN0KSB0aGlzLmxhc3QubmV4dCA9IHVuZGVmaW5lZDtcclxuICAgICAgZWxzZSB0aGlzLmZpcnN0ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgdGhpcy5zaXplLS07XHJcblxyXG4gICAgICByZXR1cm4gdGFpbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZHJvcE1hbnlCeUluZGV4KGNvdW50OiBudW1iZXIsIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gPSBNYXRoLm1heChwb3NpdGlvbiArIHRoaXMuc2l6ZSwgMCk7XHJcbiAgICBlbHNlIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiBbXTtcclxuXHJcbiAgICBjb3VudCA9IE1hdGgubWluKGNvdW50LCB0aGlzLnNpemUgLSBwb3NpdGlvbik7XHJcblxyXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xyXG5cclxuICAgIHdoaWxlIChjb3VudC0tKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChwb3NpdGlvbik7XHJcbiAgICAgIGRyb3BwZWQucHVzaCh0aGlzLmRldGFjaChjdXJyZW50ISkhKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZHJvcHBlZDtcclxuICB9XHJcblxyXG4gIGRyb3BNYW55SGVhZChjb3VudDogRXhjbHVkZTxudW1iZXIsIDA+KTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSk7XHJcblxyXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xyXG5cclxuICAgIHdoaWxlIChjb3VudC0tKSBkcm9wcGVkLnVuc2hpZnQodGhpcy5kcm9wSGVhZCgpISk7XHJcblxyXG4gICAgcmV0dXJuIGRyb3BwZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wTWFueVRhaWwoY291bnQ6IEV4Y2x1ZGU8bnVtYmVyLCAwPik6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcclxuXHJcbiAgICBjb3VudCA9IE1hdGgubWluKGNvdW50LCB0aGlzLnNpemUpO1xyXG5cclxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcclxuXHJcbiAgICB3aGlsZSAoY291bnQtLSkgZHJvcHBlZC5wdXNoKHRoaXMuZHJvcFRhaWwoKSEpO1xyXG5cclxuICAgIHJldHVybiBkcm9wcGVkO1xyXG4gIH1cclxuXHJcbiAgZmluZChwcmVkaWNhdGU6IExpc3RJdGVyYXRvckZuPFQ+KTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xyXG4gICAgICBpZiAocHJlZGljYXRlKGN1cnJlbnQsIHBvc2l0aW9uLCB0aGlzKSkgcmV0dXJuIGN1cnJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZpbmRJbmRleChwcmVkaWNhdGU6IExpc3RJdGVyYXRvckZuPFQ+KTogbnVtYmVyIHtcclxuICAgIGZvciAobGV0IGN1cnJlbnQgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IGN1cnJlbnQ7IHBvc2l0aW9uKyssIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQpIHtcclxuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50LCBwb3NpdGlvbiwgdGhpcykpIHJldHVybiBwb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBmb3JFYWNoPFIgPSBib29sZWFuPihpdGVyYXRvckZuOiBMaXN0SXRlcmF0b3JGbjxULCBSPikge1xyXG4gICAgZm9yIChsZXQgbm9kZSA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgbm9kZTsgcG9zaXRpb24rKywgbm9kZSA9IG5vZGUubmV4dCkge1xyXG4gICAgICBpdGVyYXRvckZuKG5vZGUsIHBvc2l0aW9uLCB0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldChwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZmluZCgoXywgaW5kZXgpID0+IHBvc2l0aW9uID09PSBpbmRleCk7XHJcbiAgfVxyXG5cclxuICBpbmRleE9mKHZhbHVlOiBUKTogbnVtYmVyO1xyXG4gIGluZGV4T2YodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogbnVtYmVyO1xyXG4gIGluZGV4T2YodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcclxuICB9XHJcblxyXG4gIHRvQXJyYXkoKTogVFtdIHtcclxuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XHJcblxyXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlLnZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH1cclxuXHJcbiAgdG9Ob2RlQXJyYXkoKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBjb25zdCBhcnJheSA9IG5ldyBBcnJheSh0aGlzLnNpemUpO1xyXG5cclxuICAgIHRoaXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IChhcnJheVtpbmRleCFdID0gbm9kZSkpO1xyXG5cclxuICAgIHJldHVybiBhcnJheTtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKG1hcHBlckZuOiBMaXN0TWFwcGVyRm48VD4gPSBKU09OLnN0cmluZ2lmeSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50b0FycmF5KClcclxuICAgICAgLm1hcCh2YWx1ZSA9PiBtYXBwZXJGbih2YWx1ZSkpXHJcbiAgICAgIC5qb2luKCcgPC0+ICcpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ2Fubm90IHVzZSBHZW5lcmF0b3IgdHlwZSBiZWNhdXNlIG9mIG5nLXBhY2thZ3JcclxuICAqW1N5bWJvbC5pdGVyYXRvcl0oKTogYW55IHtcclxuICAgIGZvciAobGV0IG5vZGUgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IG5vZGU7IHBvc2l0aW9uKyssIG5vZGUgPSBub2RlLm5leHQpIHtcclxuICAgICAgeWllbGQgbm9kZS52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIExpc3RNYXBwZXJGbjxUID0gYW55PiA9ICh2YWx1ZTogVCkgPT4gYW55O1xyXG5cclxuZXhwb3J0IHR5cGUgTGlzdENvbXBhcmlzb25GbjxUID0gYW55PiA9ICh2YWx1ZTE6IFQsIHZhbHVlMjogYW55KSA9PiBib29sZWFuO1xyXG5cclxuZXhwb3J0IHR5cGUgTGlzdEl0ZXJhdG9yRm48VCA9IGFueSwgUiA9IGJvb2xlYW4+ID0gKFxyXG4gIG5vZGU6IExpc3ROb2RlPFQ+LFxyXG4gIGluZGV4PzogbnVtYmVyLFxyXG4gIGxpc3Q/OiBMaW5rZWRMaXN0LFxyXG4pID0+IFI7XHJcbiJdfQ==

@@ -323,5 +323,5 @@ /* tslint:disable:no-non-null-assertion */

};
LinkedList.prototype.forEach = function (callback) {
LinkedList.prototype.forEach = function (iteratorFn) {
for (var node = this.first, position = 0; node; position++, node = node.next) {
callback(node, position, this);
iteratorFn(node, position, this);
}

@@ -376,2 +376,2 @@ };

export { LinkedList };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQzs7QUFFMUMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRW5DO0lBS0Usa0JBQVksS0FBUTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBQ0gsZUFBQztBQUFELENBQUMsQUFSRCxJQVFDOztBQUVEO0lBQUE7UUFHVSxTQUFJLEdBQUcsQ0FBQyxDQUFDO0lBK1huQixDQUFDO0lBN1hDLHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsQ0FBQzs7O09BQUE7SUFDRCxzQkFBSSw0QkFBSTthQUFSO1lBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7OztPQUFBO0lBQ0Qsc0JBQUksOEJBQU07YUFBVjtZQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixDQUFDOzs7T0FBQTtJQUVPLDJCQUFNLEdBQWQsVUFDRSxLQUFRLEVBQ1IsWUFBcUMsRUFDckMsUUFBaUM7UUFFakMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsSUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFDN0IsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENB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a0Q7SUFDakQscUJBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFsQjs7Ozs7b0JBQ1csSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLENBQUM7Ozt5QkFBRSxJQUFJO29CQUM1QyxxQkFBTSxJQUFJLENBQUMsS0FBSyxFQUFBOztvQkFBaEIsU0FBZ0IsQ0FBQzs7O29CQUQ2QixRQUFRLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTs7Ozs7S0FHN0U7SUFDSCxpQkFBQztBQUFELENBQUMsQUFsWUQsSUFrWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1ub24tbnVsbC1hc3NlcnRpb24gKi9cclxuXHJcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTGlzdE5vZGU8VCA9IGFueT4ge1xyXG4gIHJlYWRvbmx5IHZhbHVlOiBUO1xyXG4gIG5leHQ6IExpc3ROb2RlIHwgdW5kZWZpbmVkO1xyXG4gIHByZXZpb3VzOiBMaXN0Tm9kZSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PFQgPSBhbnk+IHtcclxuICBwcml2YXRlIGZpcnN0OiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGxhc3Q6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgc2l6ZSA9IDA7XHJcblxyXG4gIGdldCBoZWFkKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmZpcnN0O1xyXG4gIH1cclxuICBnZXQgdGFpbCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5sYXN0O1xyXG4gIH1cclxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdHRhY2goXHJcbiAgICB2YWx1ZTogVCxcclxuICAgIHByZXZpb3VzTm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXHJcbiAgICBuZXh0Tm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXHJcbiAgKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgaWYgKCFwcmV2aW91c05vZGUpIHJldHVybiB0aGlzLmFkZEhlYWQodmFsdWUpO1xyXG5cclxuICAgIGlmICghbmV4dE5vZGUpIHJldHVybiB0aGlzLmFkZFRhaWwodmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xyXG4gICAgbm9kZS5wcmV2aW91cyA9IHByZXZpb3VzTm9kZTtcclxuICAgIHByZXZpb3VzTm9kZS5uZXh0ID0gbm9kZTtcclxuICAgIG5vZGUubmV4dCA9IG5leHROb2RlO1xyXG4gICAgbmV4dE5vZGUucHJldmlvdXMgPSBub2RlO1xyXG5cclxuICAgIHRoaXMuc2l6ZSsrO1xyXG5cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhdHRhY2hNYW55KFxyXG4gICAgdmFsdWVzOiBUW10sXHJcbiAgICBwcmV2aW91c05vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxyXG4gICAgbmV4dE5vZGU6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkLFxyXG4gICk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgaWYgKCF2YWx1ZXMubGVuZ3RoKSByZXR1cm4gW107XHJcblxyXG4gICAgaWYgKCFwcmV2aW91c05vZGUpIHJldHVybiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XHJcblxyXG4gICAgaWYgKCFuZXh0Tm9kZSkgcmV0dXJuIHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKTtcclxuXHJcbiAgICBjb25zdCBsaXN0ID0gbmV3IExpbmtlZExpc3Q8VD4oKTtcclxuICAgIGxpc3QuYWRkTWFueVRhaWwodmFsdWVzKTtcclxuICAgIGxpc3QuZmlyc3QhLnByZXZpb3VzID0gcHJldmlvdXNOb2RlO1xyXG4gICAgcHJldmlvdXNOb2RlLm5leHQgPSBsaXN0LmZpcnN0O1xyXG4gICAgbGlzdC5sYXN0IS5uZXh0ID0gbmV4dE5vZGU7XHJcbiAgICBuZXh0Tm9kZS5wcmV2aW91cyA9IGxpc3QubGFzdDtcclxuXHJcbiAgICB0aGlzLnNpemUgKz0gdmFsdWVzLmxlbmd0aDtcclxuXHJcbiAgICByZXR1cm4gbGlzdC50b05vZGVBcnJheSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZXRhY2gobm9kZTogTGlzdE5vZGU8VD4pIHtcclxuICAgIGlmICghbm9kZS5wcmV2aW91cykgcmV0dXJuIHRoaXMuZHJvcEhlYWQoKTtcclxuXHJcbiAgICBpZiAoIW5vZGUubmV4dCkgcmV0dXJuIHRoaXMuZHJvcFRhaWwoKTtcclxuXHJcbiAgICBub2RlLnByZXZpb3VzLm5leHQgPSBub2RlLm5leHQ7XHJcbiAgICBub2RlLm5leHQucHJldmlvdXMgPSBub2RlLnByZXZpb3VzO1xyXG5cclxuICAgIHRoaXMuc2l6ZS0tO1xyXG5cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkKHZhbHVlOiBUKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhZnRlcjogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5hZGRBZnRlci5jYWxsKHRoaXMsIHZhbHVlLCAuLi5wYXJhbXMpLFxyXG4gICAgICBiZWZvcmU6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxyXG4gICAgICAgIHRoaXMuYWRkQmVmb3JlLmNhbGwodGhpcywgdmFsdWUsIC4uLnBhcmFtcyksXHJcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmFkZEJ5SW5kZXgodmFsdWUsIHBvc2l0aW9uKSxcclxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRIZWFkKHZhbHVlKSxcclxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5hZGRUYWlsKHZhbHVlKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhZGRNYW55KHZhbHVlczogVFtdKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhZnRlcjogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5hZGRNYW55QWZ0ZXIuY2FsbCh0aGlzLCB2YWx1ZXMsIC4uLnBhcmFtcyksXHJcbiAgICAgIGJlZm9yZTogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5hZGRNYW55QmVmb3JlLmNhbGwodGhpcywgdmFsdWVzLCAuLi5wYXJhbXMpLFxyXG4gICAgICBieUluZGV4OiAocG9zaXRpb246IG51bWJlcikgPT4gdGhpcy5hZGRNYW55QnlJbmRleCh2YWx1ZXMsIHBvc2l0aW9uKSxcclxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpLFxyXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgYWRkQWZ0ZXIodmFsdWU6IFQsIG5leHRWYWx1ZTogVCk6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEFmdGVyKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEFmdGVyKHZhbHVlOiBULCBwcmV2aW91c1ZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzID8gdGhpcy5hdHRhY2godmFsdWUsIHByZXZpb3VzLCBwcmV2aW91cy5uZXh0KSA6IHRoaXMuYWRkVGFpbCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBhZGRCZWZvcmUodmFsdWU6IFQsIG5leHRWYWx1ZTogVCk6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEJlZm9yZSh2YWx1ZTogVCwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+O1xyXG4gIGFkZEJlZm9yZSh2YWx1ZTogVCwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIG5leHRWYWx1ZSkpO1xyXG5cclxuICAgIHJldHVybiBuZXh0ID8gdGhpcy5hdHRhY2godmFsdWUsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRIZWFkKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFkZEJ5SW5kZXgodmFsdWU6IFQsIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XHJcbiAgICBlbHNlIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiB0aGlzLmFkZFRhaWwodmFsdWUpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA8PSAwKSByZXR1cm4gdGhpcy5hZGRIZWFkKHZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5nZXQocG9zaXRpb24pITtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hdHRhY2godmFsdWUsIG5leHQucHJldmlvdXMsIG5leHQpO1xyXG4gIH1cclxuXHJcbiAgYWRkSGVhZCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+IHtcclxuICAgIGNvbnN0IG5vZGUgPSBuZXcgTGlzdE5vZGUodmFsdWUpO1xyXG5cclxuICAgIG5vZGUubmV4dCA9IHRoaXMuZmlyc3Q7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlyc3QpIHRoaXMuZmlyc3QucHJldmlvdXMgPSBub2RlO1xyXG4gICAgZWxzZSB0aGlzLmxhc3QgPSBub2RlO1xyXG5cclxuICAgIHRoaXMuZmlyc3QgPSBub2RlO1xyXG4gICAgdGhpcy5zaXplKys7XHJcblxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICBhZGRUYWlsKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmlyc3QpIHtcclxuICAgICAgbm9kZS5wcmV2aW91cyA9IHRoaXMubGFzdDtcclxuICAgICAgdGhpcy5sYXN0IS5uZXh0ID0gbm9kZTtcclxuICAgICAgdGhpcy5sYXN0ID0gbm9kZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlyc3QgPSBub2RlO1xyXG4gICAgICB0aGlzLmxhc3QgPSBub2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2l6ZSsrO1xyXG5cclxuICAgIHJldHVybiBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueUFmdGVyKHZhbHVlczogVFtdLCBwcmV2aW91c1ZhbHVlOiBUKTogTGlzdE5vZGU8VD5bXTtcclxuICBhZGRNYW55QWZ0ZXIodmFsdWVzOiBUW10sIHByZXZpb3VzVmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD5bXTtcclxuICBhZGRNYW55QWZ0ZXIoXHJcbiAgICB2YWx1ZXM6IFRbXSxcclxuICAgIHByZXZpb3VzVmFsdWU6IGFueSxcclxuICAgIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUsXHJcbiAgKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBwcmV2aW91c1ZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzID8gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgcHJldmlvdXMsIHByZXZpb3VzLm5leHQpIDogdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueUJlZm9yZSh2YWx1ZXM6IFRbXSwgcHJldmlvdXNWYWx1ZTogVCk6IExpc3ROb2RlPFQ+W107XHJcbiAgYWRkTWFueUJlZm9yZSh2YWx1ZXM6IFRbXSwgbmV4dFZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPik6IExpc3ROb2RlPFQ+W107XHJcbiAgYWRkTWFueUJlZm9yZShcclxuICAgIHZhbHVlczogVFtdLFxyXG4gICAgbmV4dFZhbHVlOiBhbnksXHJcbiAgICBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlLFxyXG4gICk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZmluZChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCBuZXh0VmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gbmV4dCA/IHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIG5leHQucHJldmlvdXMsIG5leHQpIDogdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueUJ5SW5kZXgodmFsdWVzOiBUW10sIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPD0gMCkgcmV0dXJuIHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPj0gdGhpcy5zaXplKSByZXR1cm4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xyXG5cclxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmdldChwb3NpdGlvbikhO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmF0dGFjaE1hbnkodmFsdWVzLCBuZXh0LnByZXZpb3VzLCBuZXh0KTtcclxuICB9XHJcblxyXG4gIGFkZE1hbnlIZWFkKHZhbHVlczogVFtdKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICByZXR1cm4gdmFsdWVzLnJlZHVjZVJpZ2h0PExpc3ROb2RlPFQ+W10+KChub2RlcywgdmFsdWUpID0+IHtcclxuICAgICAgbm9kZXMudW5zaGlmdCh0aGlzLmFkZEhlYWQodmFsdWUpKTtcclxuICAgICAgcmV0dXJuIG5vZGVzO1xyXG4gICAgfSwgW10pO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueVRhaWwodmFsdWVzOiBUW10pOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIHJldHVybiB2YWx1ZXMubWFwKHZhbHVlID0+IHRoaXMuYWRkVGFpbCh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgZHJvcCgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uKSxcclxuICAgICAgYnlWYWx1ZTogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5kcm9wQnlWYWx1ZS5hcHBseSh0aGlzLCBwYXJhbXMpLFxyXG4gICAgICBieVZhbHVlQWxsOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cclxuICAgICAgICB0aGlzLmRyb3BCeVZhbHVlQWxsLmFwcGx5KHRoaXMsIHBhcmFtcyksXHJcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuZHJvcEhlYWQoKSxcclxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5kcm9wVGFpbCgpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGRyb3BNYW55KGNvdW50OiBudW1iZXIpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmRyb3BNYW55QnlJbmRleChjb3VudCwgcG9zaXRpb24pLFxyXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmRyb3BNYW55SGVhZChjb3VudCksXHJcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuZHJvcE1hbnlUYWlsKGNvdW50KSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBkcm9wQnlJbmRleChwb3NpdGlvbjogbnVtYmVyKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gdGhpcy5zaXplO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChwb3NpdGlvbik7XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbnQgPyB0aGlzLmRldGFjaChjdXJyZW50KSA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGRyb3BCeVZhbHVlKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XHJcbiAgZHJvcEJ5VmFsdWUodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XHJcbiAgZHJvcEJ5VmFsdWUodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5maW5kSW5kZXgobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgdmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gcG9zaXRpb24gPCAwID8gdW5kZWZpbmVkIDogdGhpcy5kcm9wQnlJbmRleChwb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogVCk6IExpc3ROb2RlPFQ+W107XHJcbiAgZHJvcEJ5VmFsdWVBbGwodmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD5bXTtcclxuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBjb25zdCBkcm9wcGVkOiBMaXN0Tm9kZTxUPltdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xyXG4gICAgICBpZiAoY29tcGFyZUZuKGN1cnJlbnQudmFsdWUsIHZhbHVlKSkge1xyXG4gICAgICAgIGRyb3BwZWQucHVzaCh0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uIC0gZHJvcHBlZC5sZW5ndGgpISk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZHJvcHBlZDtcclxuICB9XHJcblxyXG4gIGRyb3BIZWFkKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGhlYWQgPSB0aGlzLmZpcnN0O1xyXG5cclxuICAgIGlmIChoZWFkKSB7XHJcbiAgICAgIHRoaXMuZmlyc3QgPSBoZWFkLm5leHQ7XHJcblxyXG4gICAgICBpZiAodGhpcy5maXJzdCkgdGhpcy5maXJzdC5wcmV2aW91cyA9IHVuZGVmaW5lZDtcclxuICAgICAgZWxzZSB0aGlzLmxhc3QgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICB0aGlzLnNpemUtLTtcclxuXHJcbiAgICAgIHJldHVybiBoZWFkO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wVGFpbCgpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICBjb25zdCB0YWlsID0gdGhpcy5sYXN0O1xyXG5cclxuICAgIGlmICh0YWlsKSB7XHJcbiAgICAgIHRoaXMubGFzdCA9IHRhaWwucHJldmlvdXM7XHJcblxyXG4gICAgICBpZiAodGhpcy5sYXN0KSB0aGlzLmxhc3QubmV4dCA9IHVuZGVmaW5lZDtcclxuICAgICAgZWxzZSB0aGlzLmZpcnN0ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgdGhpcy5zaXplLS07XHJcblxyXG4gICAgICByZXR1cm4gdGFpbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZHJvcE1hbnlCeUluZGV4KGNvdW50OiBudW1iZXIsIHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gPSBNYXRoLm1heChwb3NpdGlvbiArIHRoaXMuc2l6ZSwgMCk7XHJcbiAgICBlbHNlIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiBbXTtcclxuXHJcbiAgICBjb3VudCA9IE1hdGgubWluKGNvdW50LCB0aGlzLnNpemUgLSBwb3NpdGlvbik7XHJcblxyXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xyXG5cclxuICAgIHdoaWxlIChjb3VudC0tKSB7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldChwb3NpdGlvbik7XHJcbiAgICAgIGRyb3BwZWQucHVzaCh0aGlzLmRldGFjaChjdXJyZW50ISkhKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZHJvcHBlZDtcclxuICB9XHJcblxyXG4gIGRyb3BNYW55SGVhZChjb3VudDogRXhjbHVkZTxudW1iZXIsIDA+KTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSk7XHJcblxyXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xyXG5cclxuICAgIHdoaWxlIChjb3VudC0tKSBkcm9wcGVkLnVuc2hpZnQodGhpcy5kcm9wSGVhZCgpISk7XHJcblxyXG4gICAgcmV0dXJuIGRyb3BwZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wTWFueVRhaWwoY291bnQ6IEV4Y2x1ZGU8bnVtYmVyLCAwPik6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcclxuXHJcbiAgICBjb3VudCA9IE1hdGgubWluKGNvdW50LCB0aGlzLnNpemUpO1xyXG5cclxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcclxuXHJcbiAgICB3aGlsZSAoY291bnQtLSkgZHJvcHBlZC5wdXNoKHRoaXMuZHJvcFRhaWwoKSEpO1xyXG5cclxuICAgIHJldHVybiBkcm9wcGVkO1xyXG4gIH1cclxuXHJcbiAgZmluZChwcmVkaWNhdGU6IExpc3RJdGVyYXRvckZuPFQ+KTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xyXG4gICAgICBpZiAocHJlZGljYXRlKGN1cnJlbnQsIHBvc2l0aW9uLCB0aGlzKSkgcmV0dXJuIGN1cnJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZpbmRJbmRleChwcmVkaWNhdGU6IExpc3RJdGVyYXRvckZuPFQ+KTogbnVtYmVyIHtcclxuICAgIGZvciAobGV0IGN1cnJlbnQgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IGN1cnJlbnQ7IHBvc2l0aW9uKyssIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQpIHtcclxuICAgICAgaWYgKHByZWRpY2F0ZShjdXJyZW50LCBwb3NpdGlvbiwgdGhpcykpIHJldHVybiBwb3NpdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBmb3JFYWNoPFIgPSBib29sZWFuPihjYWxsYmFjazogTGlzdEl0ZXJhdG9yRm48VCwgUj4pIHtcclxuICAgIGZvciAobGV0IG5vZGUgPSB0aGlzLmZpcnN0LCBwb3NpdGlvbiA9IDA7IG5vZGU7IHBvc2l0aW9uKyssIG5vZGUgPSBub2RlLm5leHQpIHtcclxuICAgICAgY2FsbGJhY2sobm9kZSwgcG9zaXRpb24sIHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0KHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kKChfLCBpbmRleCkgPT4gcG9zaXRpb24gPT09IGluZGV4KTtcclxuICB9XHJcblxyXG4gIGluZGV4T2YodmFsdWU6IFQpOiBudW1iZXI7XHJcbiAgaW5kZXhPZih2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBudW1iZXI7XHJcbiAgaW5kZXhPZih2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbmRJbmRleChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCB2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgdG9BcnJheSgpOiBUW10ge1xyXG4gICAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkodGhpcy5zaXplKTtcclxuXHJcbiAgICB0aGlzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiAoYXJyYXlbaW5kZXghXSA9IG5vZGUudmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICB0b05vZGVBcnJheSgpOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XHJcblxyXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlKSk7XHJcblxyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcobWFwcGVyRm46IExpc3RNYXBwZXJGbjxUPiA9IEpTT04uc3RyaW5naWZ5KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKVxyXG4gICAgICAubWFwKHZhbHVlID0+IG1hcHBlckZuKHZhbHVlKSlcclxuICAgICAgLmpvaW4oJyA8LT4gJyk7XHJcbiAgfVxyXG5cclxuICAvLyBDYW5ub3QgdXNlIEdlbmVyYXRvciB0eXBlIGJlY2F1c2Ugb2YgbmctcGFja2FnclxyXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBhbnkge1xyXG4gICAgZm9yIChsZXQgbm9kZSA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgbm9kZTsgcG9zaXRpb24rKywgbm9kZSA9IG5vZGUubmV4dCkge1xyXG4gICAgICB5aWVsZCBub2RlLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTGlzdE1hcHBlckZuPFQgPSBhbnk+ID0gKHZhbHVlOiBUKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgdHlwZSBMaXN0Q29tcGFyaXNvbkZuPFQgPSBhbnk+ID0gKHZhbHVlMTogVCwgdmFsdWUyOiBhbnkpID0+IGJvb2xlYW47XHJcblxyXG5leHBvcnQgdHlwZSBMaXN0SXRlcmF0b3JGbjxUID0gYW55LCBSID0gYm9vbGVhbj4gPSAoXHJcbiAgbm9kZTogTGlzdE5vZGU8VD4sXHJcbiAgaW5kZXg/OiBudW1iZXIsXHJcbiAgbGlzdD86IExpbmtlZExpc3QsXHJcbikgPT4gUjtcclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxpc3QuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWJwL3V0aWxzLyIsInNvdXJjZXMiOlsibGliL2xpbmtlZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBDQUEwQzs7QUFFMUMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRW5DO0lBR0Usa0JBQTRCLEtBQVE7UUFBUixVQUFLLEdBQUwsS0FBSyxDQUFHO0lBQUcsQ0FBQztJQUMxQyxlQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7O0FBRUQ7SUFBQTtRQUdVLFNBQUksR0FBRyxDQUFDLENBQUM7SUErWG5CLENBQUM7SUE3WEMsc0JBQUksNEJBQUk7YUFBUjtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDOzs7T0FBQTtJQUNELHNCQUFJLDRCQUFJO2FBQVI7WUFDRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbkIsQ0FBQzs7O09BQUE7SUFDRCxzQkFBSSw4QkFBTTthQUFWO1lBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ25CLENBQUM7OztPQUFBO0lBRU8sMkJBQU0sR0FBZCxVQUNFLEtBQVEsRUFDUixZQUFxQyxFQUNyQyxRQUFpQztRQUVqQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQyxJQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztRQUM3QixZQUFZLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUV6QixJ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QkFBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQWxCOzs7OztvQkFDVyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEdBQUcsQ0FBQzs7O3lCQUFFLElBQUk7b0JBQzVDLHFCQUFNLElBQUksQ0FBQyxLQUFLLEVBQUE7O29CQUFoQixTQUFnQixDQUFDOzs7b0JBRDZCLFFBQVEsRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBOzs7OztLQUc3RTtJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQWxZRCxJQWtZQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlOm5vLW5vbi1udWxsLWFzc2VydGlvbiAqL1xyXG5cclxuaW1wb3J0IGNvbXBhcmUgZnJvbSAnanVzdC1jb21wYXJlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMaXN0Tm9kZTxUID0gYW55PiB7XHJcbiAgbmV4dDogTGlzdE5vZGUgfCB1bmRlZmluZWQ7XHJcbiAgcHJldmlvdXM6IExpc3ROb2RlIHwgdW5kZWZpbmVkO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB2YWx1ZTogVCkge31cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExpbmtlZExpc3Q8VCA9IGFueT4ge1xyXG4gIHByaXZhdGUgZmlyc3Q6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgbGFzdDogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBzaXplID0gMDtcclxuXHJcbiAgZ2V0IGhlYWQoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZmlyc3Q7XHJcbiAgfVxyXG4gIGdldCB0YWlsKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLmxhc3Q7XHJcbiAgfVxyXG4gIGdldCBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLnNpemU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGF0dGFjaChcclxuICAgIHZhbHVlOiBULFxyXG4gICAgcHJldmlvdXNOb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcclxuICAgIG5leHROb2RlOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCxcclxuICApOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBpZiAoIXByZXZpb3VzTm9kZSkgcmV0dXJuIHRoaXMuYWRkSGVhZCh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKCFuZXh0Tm9kZSkgcmV0dXJuIHRoaXMuYWRkVGFpbCh2YWx1ZSk7XHJcblxyXG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XHJcbiAgICBub2RlLnByZXZpb3VzID0gcHJldmlvdXNOb2RlO1xyXG4gICAgcHJldmlvdXNOb2RlLm5leHQgPSBub2RlO1xyXG4gICAgbm9kZS5uZXh0ID0gbmV4dE5vZGU7XHJcbiAgICBuZXh0Tm9kZS5wcmV2aW91cyA9IG5vZGU7XHJcblxyXG4gICAgdGhpcy5zaXplKys7XHJcblxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGF0dGFjaE1hbnkoXHJcbiAgICB2YWx1ZXM6IFRbXSxcclxuICAgIHByZXZpb3VzTm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXHJcbiAgICBuZXh0Tm9kZTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQsXHJcbiAgKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBpZiAoIXZhbHVlcy5sZW5ndGgpIHJldHVybiBbXTtcclxuXHJcbiAgICBpZiAoIXByZXZpb3VzTm9kZSkgcmV0dXJuIHRoaXMuYWRkTWFueUhlYWQodmFsdWVzKTtcclxuXHJcbiAgICBpZiAoIW5leHROb2RlKSByZXR1cm4gdGhpcy5hZGRNYW55VGFpbCh2YWx1ZXMpO1xyXG5cclxuICAgIGNvbnN0IGxpc3QgPSBuZXcgTGlua2VkTGlzdDxUPigpO1xyXG4gICAgbGlzdC5hZGRNYW55VGFpbCh2YWx1ZXMpO1xyXG4gICAgbGlzdC5maXJzdCEucHJldmlvdXMgPSBwcmV2aW91c05vZGU7XHJcbiAgICBwcmV2aW91c05vZGUubmV4dCA9IGxpc3QuZmlyc3Q7XHJcbiAgICBsaXN0Lmxhc3QhLm5leHQgPSBuZXh0Tm9kZTtcclxuICAgIG5leHROb2RlLnByZXZpb3VzID0gbGlzdC5sYXN0O1xyXG5cclxuICAgIHRoaXMuc2l6ZSArPSB2YWx1ZXMubGVuZ3RoO1xyXG5cclxuICAgIHJldHVybiBsaXN0LnRvTm9kZUFycmF5KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRldGFjaChub2RlOiBMaXN0Tm9kZTxUPikge1xyXG4gICAgaWYgKCFub2RlLnByZXZpb3VzKSByZXR1cm4gdGhpcy5kcm9wSGVhZCgpO1xyXG5cclxuICAgIGlmICghbm9kZS5uZXh0KSByZXR1cm4gdGhpcy5kcm9wVGFpbCgpO1xyXG5cclxuICAgIG5vZGUucHJldmlvdXMubmV4dCA9IG5vZGUubmV4dDtcclxuICAgIG5vZGUubmV4dC5wcmV2aW91cyA9IG5vZGUucHJldmlvdXM7XHJcblxyXG4gICAgdGhpcy5zaXplLS07XHJcblxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICBhZGQodmFsdWU6IFQpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFmdGVyOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cclxuICAgICAgICB0aGlzLmFkZEFmdGVyLmNhbGwodGhpcywgdmFsdWUsIC4uLnBhcmFtcyksXHJcbiAgICAgIGJlZm9yZTogKC4uLnBhcmFtczogW1RdIHwgW2FueSwgTGlzdENvbXBhcmlzb25GbjxUPl0pID0+XHJcbiAgICAgICAgdGhpcy5hZGRCZWZvcmUuY2FsbCh0aGlzLCB2YWx1ZSwgLi4ucGFyYW1zKSxcclxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuYWRkQnlJbmRleCh2YWx1ZSwgcG9zaXRpb24pLFxyXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmFkZEhlYWQodmFsdWUpLFxyXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmFkZFRhaWwodmFsdWUpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGFkZE1hbnkodmFsdWVzOiBUW10pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFmdGVyOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cclxuICAgICAgICB0aGlzLmFkZE1hbnlBZnRlci5jYWxsKHRoaXMsIHZhbHVlcywgLi4ucGFyYW1zKSxcclxuICAgICAgYmVmb3JlOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cclxuICAgICAgICB0aGlzLmFkZE1hbnlCZWZvcmUuY2FsbCh0aGlzLCB2YWx1ZXMsIC4uLnBhcmFtcyksXHJcbiAgICAgIGJ5SW5kZXg6IChwb3NpdGlvbjogbnVtYmVyKSA9PiB0aGlzLmFkZE1hbnlCeUluZGV4KHZhbHVlcywgcG9zaXRpb24pLFxyXG4gICAgICBoZWFkOiAoKSA9PiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyksXHJcbiAgICAgIHRhaWw6ICgpID0+IHRoaXMuYWRkTWFueVRhaWwodmFsdWVzKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhZGRBZnRlcih2YWx1ZTogVCwgbmV4dFZhbHVlOiBUKTogTGlzdE5vZGU8VD47XHJcbiAgYWRkQWZ0ZXIodmFsdWU6IFQsIHByZXZpb3VzVmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD47XHJcbiAgYWRkQWZ0ZXIodmFsdWU6IFQsIHByZXZpb3VzVmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+IHtcclxuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXMgPyB0aGlzLmF0dGFjaCh2YWx1ZSwgcHJldmlvdXMsIHByZXZpb3VzLm5leHQpIDogdGhpcy5hZGRUYWlsKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFkZEJlZm9yZSh2YWx1ZTogVCwgbmV4dFZhbHVlOiBUKTogTGlzdE5vZGU8VD47XHJcbiAgYWRkQmVmb3JlKHZhbHVlOiBULCBuZXh0VmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD47XHJcbiAgYWRkQmVmb3JlKHZhbHVlOiBULCBuZXh0VmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSk6IExpc3ROb2RlPFQ+IHtcclxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmZpbmQobm9kZSA9PiBjb21wYXJlRm4obm9kZS52YWx1ZSwgbmV4dFZhbHVlKSk7XHJcblxyXG4gICAgcmV0dXJuIG5leHQgPyB0aGlzLmF0dGFjaCh2YWx1ZSwgbmV4dC5wcmV2aW91cywgbmV4dCkgOiB0aGlzLmFkZEhlYWQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkQnlJbmRleCh2YWx1ZTogVCwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+IHtcclxuICAgIGlmIChwb3NpdGlvbiA8IDApIHBvc2l0aW9uICs9IHRoaXMuc2l6ZTtcclxuICAgIGVsc2UgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIHRoaXMuYWRkVGFpbCh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uIDw9IDApIHJldHVybiB0aGlzLmFkZEhlYWQodmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmdldChwb3NpdGlvbikhO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmF0dGFjaCh2YWx1ZSwgbmV4dC5wcmV2aW91cywgbmV4dCk7XHJcbiAgfVxyXG5cclxuICBhZGRIZWFkKHZhbHVlOiBUKTogTGlzdE5vZGU8VD4ge1xyXG4gICAgY29uc3Qgbm9kZSA9IG5ldyBMaXN0Tm9kZSh2YWx1ZSk7XHJcblxyXG4gICAgbm9kZS5uZXh0ID0gdGhpcy5maXJzdDtcclxuXHJcbiAgICBpZiAodGhpcy5maXJzdCkgdGhpcy5maXJzdC5wcmV2aW91cyA9IG5vZGU7XHJcbiAgICBlbHNlIHRoaXMubGFzdCA9IG5vZGU7XHJcblxyXG4gICAgdGhpcy5maXJzdCA9IG5vZGU7XHJcbiAgICB0aGlzLnNpemUrKztcclxuXHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIGFkZFRhaWwodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPiB7XHJcbiAgICBjb25zdCBub2RlID0gbmV3IExpc3ROb2RlKHZhbHVlKTtcclxuXHJcbiAgICBpZiAodGhpcy5maXJzdCkge1xyXG4gICAgICBub2RlLnByZXZpb3VzID0gdGhpcy5sYXN0O1xyXG4gICAgICB0aGlzLmxhc3QhLm5leHQgPSBub2RlO1xyXG4gICAgICB0aGlzLmxhc3QgPSBub2RlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maXJzdCA9IG5vZGU7XHJcbiAgICAgIHRoaXMubGFzdCA9IG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaXplKys7XHJcblxyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICBhZGRNYW55QWZ0ZXIodmFsdWVzOiBUW10sIHByZXZpb3VzVmFsdWU6IFQpOiBMaXN0Tm9kZTxUPltdO1xyXG4gIGFkZE1hbnlBZnRlcih2YWx1ZXM6IFRbXSwgcHJldmlvdXNWYWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPltdO1xyXG4gIGFkZE1hbnlBZnRlcihcclxuICAgIHZhbHVlczogVFtdLFxyXG4gICAgcHJldmlvdXNWYWx1ZTogYW55LFxyXG4gICAgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+ID0gY29tcGFyZSxcclxuICApOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIHByZXZpb3VzVmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gcHJldmlvdXMgPyB0aGlzLmF0dGFjaE1hbnkodmFsdWVzLCBwcmV2aW91cywgcHJldmlvdXMubmV4dCkgOiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBhZGRNYW55QmVmb3JlKHZhbHVlczogVFtdLCBwcmV2aW91c1ZhbHVlOiBUKTogTGlzdE5vZGU8VD5bXTtcclxuICBhZGRNYW55QmVmb3JlKHZhbHVlczogVFtdLCBuZXh0VmFsdWU6IGFueSwgY29tcGFyZUZuOiBMaXN0Q29tcGFyaXNvbkZuPFQ+KTogTGlzdE5vZGU8VD5bXTtcclxuICBhZGRNYW55QmVmb3JlKFxyXG4gICAgdmFsdWVzOiBUW10sXHJcbiAgICBuZXh0VmFsdWU6IGFueSxcclxuICAgIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUsXHJcbiAgKTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5maW5kKG5vZGUgPT4gY29tcGFyZUZuKG5vZGUudmFsdWUsIG5leHRWYWx1ZSkpO1xyXG5cclxuICAgIHJldHVybiBuZXh0ID8gdGhpcy5hdHRhY2hNYW55KHZhbHVlcywgbmV4dC5wcmV2aW91cywgbmV4dCkgOiB0aGlzLmFkZE1hbnlIZWFkKHZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICBhZGRNYW55QnlJbmRleCh2YWx1ZXM6IFRbXSwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgaWYgKHBvc2l0aW9uIDwgMCkgcG9zaXRpb24gKz0gdGhpcy5zaXplO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA8PSAwKSByZXR1cm4gdGhpcy5hZGRNYW55SGVhZCh2YWx1ZXMpO1xyXG5cclxuICAgIGlmIChwb3NpdGlvbiA+PSB0aGlzLnNpemUpIHJldHVybiB0aGlzLmFkZE1hbnlUYWlsKHZhbHVlcyk7XHJcblxyXG4gICAgY29uc3QgbmV4dCA9IHRoaXMuZ2V0KHBvc2l0aW9uKSE7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoTWFueSh2YWx1ZXMsIG5leHQucHJldmlvdXMsIG5leHQpO1xyXG4gIH1cclxuXHJcbiAgYWRkTWFueUhlYWQodmFsdWVzOiBUW10pOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIHJldHVybiB2YWx1ZXMucmVkdWNlUmlnaHQ8TGlzdE5vZGU8VD5bXT4oKG5vZGVzLCB2YWx1ZSkgPT4ge1xyXG4gICAgICBub2Rlcy51bnNoaWZ0KHRoaXMuYWRkSGVhZCh2YWx1ZSkpO1xyXG4gICAgICByZXR1cm4gbm9kZXM7XHJcbiAgICB9LCBbXSk7XHJcbiAgfVxyXG5cclxuICBhZGRNYW55VGFpbCh2YWx1ZXM6IFRbXSk6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgcmV0dXJuIHZhbHVlcy5tYXAodmFsdWUgPT4gdGhpcy5hZGRUYWlsKHZhbHVlKSk7XHJcbiAgfVxyXG5cclxuICBkcm9wKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuZHJvcEJ5SW5kZXgocG9zaXRpb24pLFxyXG4gICAgICBieVZhbHVlOiAoLi4ucGFyYW1zOiBbVF0gfCBbYW55LCBMaXN0Q29tcGFyaXNvbkZuPFQ+XSkgPT5cclxuICAgICAgICB0aGlzLmRyb3BCeVZhbHVlLmFwcGx5KHRoaXMsIHBhcmFtcyksXHJcbiAgICAgIGJ5VmFsdWVBbGw6ICguLi5wYXJhbXM6IFtUXSB8IFthbnksIExpc3RDb21wYXJpc29uRm48VD5dKSA9PlxyXG4gICAgICAgIHRoaXMuZHJvcEJ5VmFsdWVBbGwuYXBwbHkodGhpcywgcGFyYW1zKSxcclxuICAgICAgaGVhZDogKCkgPT4gdGhpcy5kcm9wSGVhZCgpLFxyXG4gICAgICB0YWlsOiAoKSA9PiB0aGlzLmRyb3BUYWlsKCksXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZHJvcE1hbnkoY291bnQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYnlJbmRleDogKHBvc2l0aW9uOiBudW1iZXIpID0+IHRoaXMuZHJvcE1hbnlCeUluZGV4KGNvdW50LCBwb3NpdGlvbiksXHJcbiAgICAgIGhlYWQ6ICgpID0+IHRoaXMuZHJvcE1hbnlIZWFkKGNvdW50KSxcclxuICAgICAgdGFpbDogKCkgPT4gdGhpcy5kcm9wTWFueVRhaWwoY291bnQpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGRyb3BCeUluZGV4KHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiArPSB0aGlzLnNpemU7XHJcblxyXG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0KHBvc2l0aW9uKTtcclxuXHJcbiAgICByZXR1cm4gY3VycmVudCA/IHRoaXMuZGV0YWNoKGN1cnJlbnQpIDogdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZHJvcEJ5VmFsdWUodmFsdWU6IFQpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcclxuICBkcm9wQnlWYWx1ZSh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZDtcclxuICBkcm9wQnlWYWx1ZSh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmZpbmRJbmRleChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCB2YWx1ZSkpO1xyXG5cclxuICAgIHJldHVybiBwb3NpdGlvbiA8IDAgPyB1bmRlZmluZWQgOiB0aGlzLmRyb3BCeUluZGV4KHBvc2l0aW9uKTtcclxuICB9XHJcblxyXG4gIGRyb3BCeVZhbHVlQWxsKHZhbHVlOiBUKTogTGlzdE5vZGU8VD5bXTtcclxuICBkcm9wQnlWYWx1ZUFsbCh2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBMaXN0Tm9kZTxUPltdO1xyXG4gIGRyb3BCeVZhbHVlQWxsKHZhbHVlOiBhbnksIGNvbXBhcmVGbjogTGlzdENvbXBhcmlzb25GbjxUPiA9IGNvbXBhcmUpOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGNvbnN0IGRyb3BwZWQ6IExpc3ROb2RlPFQ+W10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBjdXJyZW50ID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBjdXJyZW50OyBwb3NpdGlvbisrLCBjdXJyZW50ID0gY3VycmVudC5uZXh0KSB7XHJcbiAgICAgIGlmIChjb21wYXJlRm4oY3VycmVudC52YWx1ZSwgdmFsdWUpKSB7XHJcbiAgICAgICAgZHJvcHBlZC5wdXNoKHRoaXMuZHJvcEJ5SW5kZXgocG9zaXRpb24gLSBkcm9wcGVkLmxlbmd0aCkhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkcm9wcGVkO1xyXG4gIH1cclxuXHJcbiAgZHJvcEhlYWQoKTogTGlzdE5vZGU8VD4gfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgaGVhZCA9IHRoaXMuZmlyc3Q7XHJcblxyXG4gICAgaWYgKGhlYWQpIHtcclxuICAgICAgdGhpcy5maXJzdCA9IGhlYWQubmV4dDtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZpcnN0KSB0aGlzLmZpcnN0LnByZXZpb3VzID0gdW5kZWZpbmVkO1xyXG4gICAgICBlbHNlIHRoaXMubGFzdCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIHRoaXMuc2l6ZS0tO1xyXG5cclxuICAgICAgcmV0dXJuIGhlYWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGRyb3BUYWlsKCk6IExpc3ROb2RlPFQ+IHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IHRhaWwgPSB0aGlzLmxhc3Q7XHJcblxyXG4gICAgaWYgKHRhaWwpIHtcclxuICAgICAgdGhpcy5sYXN0ID0gdGFpbC5wcmV2aW91cztcclxuXHJcbiAgICAgIGlmICh0aGlzLmxhc3QpIHRoaXMubGFzdC5uZXh0ID0gdW5kZWZpbmVkO1xyXG4gICAgICBlbHNlIHRoaXMuZmlyc3QgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICB0aGlzLnNpemUtLTtcclxuXHJcbiAgICAgIHJldHVybiB0YWlsO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBkcm9wTWFueUJ5SW5kZXgoY291bnQ6IG51bWJlciwgcG9zaXRpb246IG51bWJlcik6IExpc3ROb2RlPFQ+W10ge1xyXG4gICAgaWYgKGNvdW50IDw9IDApIHJldHVybiBbXTtcclxuXHJcbiAgICBpZiAocG9zaXRpb24gPCAwKSBwb3NpdGlvbiA9IE1hdGgubWF4KHBvc2l0aW9uICsgdGhpcy5zaXplLCAwKTtcclxuICAgIGVsc2UgaWYgKHBvc2l0aW9uID49IHRoaXMuc2l6ZSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSAtIHBvc2l0aW9uKTtcclxuXHJcbiAgICBjb25zdCBkcm9wcGVkOiBMaXN0Tm9kZTxUPltdID0gW107XHJcblxyXG4gICAgd2hpbGUgKGNvdW50LS0pIHtcclxuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuZ2V0KHBvc2l0aW9uKTtcclxuICAgICAgZHJvcHBlZC5wdXNoKHRoaXMuZGV0YWNoKGN1cnJlbnQhKSEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkcm9wcGVkO1xyXG4gIH1cclxuXHJcbiAgZHJvcE1hbnlIZWFkKGNvdW50OiBFeGNsdWRlPG51bWJlciwgMD4pOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGlmIChjb3VudCA8PSAwKSByZXR1cm4gW107XHJcblxyXG4gICAgY291bnQgPSBNYXRoLm1pbihjb3VudCwgdGhpcy5zaXplKTtcclxuXHJcbiAgICBjb25zdCBkcm9wcGVkOiBMaXN0Tm9kZTxUPltdID0gW107XHJcblxyXG4gICAgd2hpbGUgKGNvdW50LS0pIGRyb3BwZWQudW5zaGlmdCh0aGlzLmRyb3BIZWFkKCkhKTtcclxuXHJcbiAgICByZXR1cm4gZHJvcHBlZDtcclxuICB9XHJcblxyXG4gIGRyb3BNYW55VGFpbChjb3VudDogRXhjbHVkZTxudW1iZXIsIDA+KTogTGlzdE5vZGU8VD5bXSB7XHJcbiAgICBpZiAoY291bnQgPD0gMCkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGNvdW50ID0gTWF0aC5taW4oY291bnQsIHRoaXMuc2l6ZSk7XHJcblxyXG4gICAgY29uc3QgZHJvcHBlZDogTGlzdE5vZGU8VD5bXSA9IFtdO1xyXG5cclxuICAgIHdoaWxlIChjb3VudC0tKSBkcm9wcGVkLnB1c2godGhpcy5kcm9wVGFpbCgpISk7XHJcblxyXG4gICAgcmV0dXJuIGRyb3BwZWQ7XHJcbiAgfVxyXG5cclxuICBmaW5kKHByZWRpY2F0ZTogTGlzdEl0ZXJhdG9yRm48VD4pOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICBmb3IgKGxldCBjdXJyZW50ID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBjdXJyZW50OyBwb3NpdGlvbisrLCBjdXJyZW50ID0gY3VycmVudC5uZXh0KSB7XHJcbiAgICAgIGlmIChwcmVkaWNhdGUoY3VycmVudCwgcG9zaXRpb24sIHRoaXMpKSByZXR1cm4gY3VycmVudDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZmluZEluZGV4KHByZWRpY2F0ZTogTGlzdEl0ZXJhdG9yRm48VD4pOiBudW1iZXIge1xyXG4gICAgZm9yIChsZXQgY3VycmVudCA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgY3VycmVudDsgcG9zaXRpb24rKywgY3VycmVudCA9IGN1cnJlbnQubmV4dCkge1xyXG4gICAgICBpZiAocHJlZGljYXRlKGN1cnJlbnQsIHBvc2l0aW9uLCB0aGlzKSkgcmV0dXJuIHBvc2l0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIGZvckVhY2g8UiA9IGJvb2xlYW4+KGl0ZXJhdG9yRm46IExpc3RJdGVyYXRvckZuPFQsIFI+KSB7XHJcbiAgICBmb3IgKGxldCBub2RlID0gdGhpcy5maXJzdCwgcG9zaXRpb24gPSAwOyBub2RlOyBwb3NpdGlvbisrLCBub2RlID0gbm9kZS5uZXh0KSB7XHJcbiAgICAgIGl0ZXJhdG9yRm4obm9kZSwgcG9zaXRpb24sIHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0KHBvc2l0aW9uOiBudW1iZXIpOiBMaXN0Tm9kZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kKChfLCBpbmRleCkgPT4gcG9zaXRpb24gPT09IGluZGV4KTtcclxuICB9XHJcblxyXG4gIGluZGV4T2YodmFsdWU6IFQpOiBudW1iZXI7XHJcbiAgaW5kZXhPZih2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4pOiBudW1iZXI7XHJcbiAgaW5kZXhPZih2YWx1ZTogYW55LCBjb21wYXJlRm46IExpc3RDb21wYXJpc29uRm48VD4gPSBjb21wYXJlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmZpbmRJbmRleChub2RlID0+IGNvbXBhcmVGbihub2RlLnZhbHVlLCB2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgdG9BcnJheSgpOiBUW10ge1xyXG4gICAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkodGhpcy5zaXplKTtcclxuXHJcbiAgICB0aGlzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiAoYXJyYXlbaW5kZXghXSA9IG5vZGUudmFsdWUpKTtcclxuXHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICB0b05vZGVBcnJheSgpOiBMaXN0Tm9kZTxUPltdIHtcclxuICAgIGNvbnN0IGFycmF5ID0gbmV3IEFycmF5KHRoaXMuc2l6ZSk7XHJcblxyXG4gICAgdGhpcy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4gKGFycmF5W2luZGV4IV0gPSBub2RlKSk7XHJcblxyXG4gICAgcmV0dXJuIGFycmF5O1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcobWFwcGVyRm46IExpc3RNYXBwZXJGbjxUPiA9IEpTT04uc3RyaW5naWZ5KTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRvQXJyYXkoKVxyXG4gICAgICAubWFwKHZhbHVlID0+IG1hcHBlckZuKHZhbHVlKSlcclxuICAgICAgLmpvaW4oJyA8LT4gJyk7XHJcbiAgfVxyXG5cclxuICAvLyBDYW5ub3QgdXNlIEdlbmVyYXRvciB0eXBlIGJlY2F1c2Ugb2YgbmctcGFja2FnclxyXG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBhbnkge1xyXG4gICAgZm9yIChsZXQgbm9kZSA9IHRoaXMuZmlyc3QsIHBvc2l0aW9uID0gMDsgbm9kZTsgcG9zaXRpb24rKywgbm9kZSA9IG5vZGUubmV4dCkge1xyXG4gICAgICB5aWVsZCBub2RlLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTGlzdE1hcHBlckZuPFQgPSBhbnk+ID0gKHZhbHVlOiBUKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgdHlwZSBMaXN0Q29tcGFyaXNvbkZuPFQgPSBhbnk+ID0gKHZhbHVlMTogVCwgdmFsdWUyOiBhbnkpID0+IGJvb2xlYW47XHJcblxyXG5leHBvcnQgdHlwZSBMaXN0SXRlcmF0b3JGbjxUID0gYW55LCBSID0gYm9vbGVhbj4gPSAoXHJcbiAgbm9kZTogTGlzdE5vZGU8VD4sXHJcbiAgaW5kZXg/OiBudW1iZXIsXHJcbiAgbGlzdD86IExpbmtlZExpc3QsXHJcbikgPT4gUjtcclxuIl19

@@ -257,5 +257,5 @@ import compare from 'just-compare';

}
forEach(callback) {
forEach(iteratorFn) {
for (let node = this.first, position = 0; node; position++, node = node.next) {
callback(node, position, this);
iteratorFn(node, position, this);
}

@@ -262,0 +262,0 @@ }

@@ -323,5 +323,5 @@ import { __spread, __generator } from 'tslib';

};
LinkedList.prototype.forEach = function (callback) {
LinkedList.prototype.forEach = function (iteratorFn) {
for (var node = this.first, position = 0; node; position++, node = node.next) {
callback(node, position, this);
iteratorFn(node, position, this);
}

@@ -328,0 +328,0 @@ };

@@ -69,3 +69,3 @@ export declare class ListNode<T = any> {

findIndex(predicate: ListIteratorFn<T>): number;
forEach<R = boolean>(callback: ListIteratorFn<T, R>): void;
forEach<R = boolean>(iteratorFn: ListIteratorFn<T, R>): void;
get(position: number): ListNode<T> | undefined;

@@ -72,0 +72,0 @@ indexOf(value: T): number;

{
"name": "@abp/utils",
"version": "2.5.0",
"version": "2.6.0",
"publishConfig": {

@@ -23,3 +23,3 @@ "access": "public"

},
"gitHead": "a9a36b8a4681df04377497addf94b15e6c521664"
"gitHead": "03238c9aa7d4090b7c6ae9cc8c790bc0545501eb"
}
{
"name": "@abp/utils",
"version": "2.5.0",
"version": "2.6.0",
"scripts": {

@@ -58,3 +58,3 @@ "prepublish": "yarn install --ignore-scripts && node prepublish.js",

},
"gitHead": "a9a36b8a4681df04377497addf94b15e6c521664"
"gitHead": "03238c9aa7d4090b7c6ae9cc8c790bc0545501eb"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc