@esotericsoftware/spine-core 4.2.62 → 4.2.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Animation.js +1 -1
- package/dist/AnimationState.js +1 -1
- package/dist/AssetManagerBase.js +1 -1
- package/dist/AtlasAttachmentLoader.js +1 -1
- package/dist/Bone.js +1 -1
- package/dist/IkConstraint.js +1 -1
- package/dist/PathConstraint.js +1 -1
- package/dist/PhysicsConstraint.js +1 -1
- package/dist/Skeleton.js +1 -1
- package/dist/SkeletonBinary.js +1 -1
- package/dist/SkeletonBounds.js +1 -1
- package/dist/SkeletonClipping.js +1 -1
- package/dist/SkeletonData.js +1 -1
- package/dist/SkeletonJson.js +1 -1
- package/dist/Skin.d.ts +1 -1
- package/dist/Skin.js +1 -1
- package/dist/Slot.js +1 -1
- package/dist/Texture.d.ts +8 -8
- package/dist/TextureAtlas.js +1 -1
- package/dist/TransformConstraint.js +1 -1
- package/dist/Triangulator.js +1 -1
- package/dist/Utils.js +1 -1
- package/dist/attachments/Attachment.js +1 -1
- package/dist/attachments/MeshAttachment.js +1 -1
- package/dist/attachments/RegionAttachment.js +1 -1
- package/dist/attachments/Sequence.js +1 -1
- package/dist/polyfills.js +1 -1
- package/package.json +1 -1
package/dist/Animation.js
CHANGED
|
@@ -2155,4 +2155,4 @@ export class SequenceTimeline extends Timeline {
|
|
|
2155
2155
|
slot.sequenceIndex = index;
|
|
2156
2156
|
}
|
|
2157
2157
|
}
|
|
2158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0FuaW1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sNkJBQTZCLENBQUM7QUFNM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUcxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0UsNkRBQTZEO0FBQzdELE1BQU0sT0FBTyxTQUFTO0lBQ3JCLG1GQUFtRjtJQUNuRixJQUFJLENBQVM7SUFDYixTQUFTLEdBQW9CLEVBQUUsQ0FBQztJQUNoQyxXQUFXLEdBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUV6Qyx1R0FBdUc7SUFDdkcsUUFBUSxDQUFTO0lBRWpCLFlBQWEsSUFBWSxFQUFFLFNBQTBCLEVBQUUsUUFBZ0I7UUFDdEUsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFFLFNBQTBCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMs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LEVBQUU7WUFDckIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDM0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQSxlQUFlLENBQUM7UUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzQixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM5RDtTQUNEO1FBQ0QsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENB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RUFBRSxDQUFDLENBQUEsS0FBSyxFQUFFLFNBQVMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ2xFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ3RGLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLEtBQUssRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUMxRixDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxLQUFLLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDMUYsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsTUFBTSxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQzVGLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLE1BQU0sRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUM1RixFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxNQUFNLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FB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R0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzlGLElBQUksR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNqRCxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxVQUFVLEVBQUUsRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxVQUFVLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQixFQUFFLElBQUksR0FBRyxDQUFDO1lBQ1YsRUFBRSxJQUFJLEdBQUcsQ0FBQztZQUNWLEdBQUcsSUFBSSxJQUFJLENBQUM7WUFDWixHQUFHLElBQUksSUFBSSxDQUFDO1lBQ1osQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDUjtJQUNGLENBQUM7SUFFRCxlQUFlLENBQUUsSUFBWSxFQUFFLEtBQWE7UUFDM0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxNQUFNLENB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Z0JBQ3ZCLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxLQUFLLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztnQkFDOUQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsV0FBVyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsR0FBRyxDQUFDLENBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxXQUFXLEdBQUcsQ0FBQyxDQUFBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsV0FBVyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxXQUFXLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEUsTUFBTTtZQUNQLEtBQUssQ0FBQyxDQUFBLFdBQVc7Z0JBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDakMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDakMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07WUFDUDtnQkFDQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxVQUFVLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDNUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDdEYsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQzFGLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLFVBQVUsRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxVQUFVLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDcEcsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsVUFBVSxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7U0FDckc7UUFFRCxJQUFJLEtBQUssSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQzVCLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDM0IsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDMUUsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDdEQsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDdEQsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMs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QUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzdDLElBQUksS0FBSyxJQUFJLEtBQUs7d0JBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQ3RDO2FBQ0Q7U0FDRDtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEp1bHkgMjgsIDIwMjMuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMywgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvclxuICogb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRIRVxuICogU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFZlcnRleEF0dGFjaG1lbnQsIEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9BdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBJa0NvbnN0cmFpbnQgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50IH0gZnJvbSBcIi4vUGF0aENvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBoeXNpY3MsIFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IFNsb3QgfSBmcm9tIFwiLi9TbG90LmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50IH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgU3RyaW5nU2V0LCBVdGlscywgTWF0aFV0aWxzLCBOdW1iZXJBcnJheUxpa2UgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi9FdmVudC5qc1wiO1xuaW1wb3J0IHsgSGFzVGV4dHVyZVJlZ2lvbiB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0hhc1RleHR1cmVSZWdpb24uanNcIjtcbmltcG9ydCB7IFNlcXVlbmNlTW9kZSwgU2VxdWVuY2VNb2RlVmFsdWVzIH0gZnJvbSBcIi4vYXR0YWNobWVudHMvU2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50IH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL1BoeXNpY3NDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgSW5oZXJpdCB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5cbi8qKiBBIHNpbXBsZSBjb250YWluZXIgZm9yIGEgbGlzdCBvZiB0aW1lbGluZXMgYW5kIGEgbmFtZS4gKi9cbmV4cG9ydCBjbGFzcyBBbmltYXRpb24ge1xuXHQvKiogVGhlIGFuaW1hdGlvbidzIG5hbWUsIHdoaWNoIGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIGFuaW1hdGlvbnMgaW4gdGhlIHNrZWxldG9uLiAqL1xuXHRuYW1lOiBzdHJpbmc7XG5cdHRpbWVsaW5lczogQXJyYXk8VGltZWxpbmU+ID0gW107XG5cdHRpbWVsaW5lSWRzOiBTdHJpbmdTZXQgPSBuZXcgU3RyaW5nU2V0KCk7XG5cblx0LyoqIFRoZSBkdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9uIGluIHNlY29uZHMsIHdoaWNoIGlzIHRoZSBoaWdoZXN0IHRpbWUgb2YgYWxsIGtleXMgaW4gdGhlIHRpbWVsaW5lLiAqL1xuXHRkdXJhdGlvbjogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcsIHRpbWVsaW5lczogQXJyYXk8VGltZWxpbmU+LCBkdXJhdGlvbjogbnVtYmVyKSB7XG5cdFx0aWYgKCFuYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLm5hbWUgPSBuYW1lO1xuXHRcdHRoaXMuc2V0VGltZWxpbmVzKHRpbWVsaW5lcyk7XG5cdFx0dGhpcy5kdXJhdGlvbiA9IGR1cmF0aW9uO1xuXHR9XG5cblx0c2V0VGltZWxpbmVzICh0aW1lbGluZXM6IEFycmF5PFRpbWVsaW5lPikge1xuXHRcdGlmICghdGltZWxpbmVzKSB0aHJvdyBuZXcgRXJyb3IoXCJ0aW1lbGluZXMgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHRoaXMudGltZWxpbmVzID0gdGltZWxpbmVzO1xuXHRcdHRoaXMudGltZWxpbmVJZHMuY2xlYXIoKTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHRpbWVsaW5lcy5sZW5ndGg7IGkrKylcblx0XHRcdHRoaXMudGltZWxpbmVJZHMuYWRkQWxsKHRpbWVsaW5lc1tpXS5nZXRQcm9wZXJ0eUlkcygpKTtcblx0fVxuXG5cdGhhc1RpbWVsaW5lIChpZHM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspXG5cdFx0XHRpZiAodGhpcy50aW1lbGluZUlkcy5jb250YWlucyhpZHNbaV0pKSByZXR1cm4gdHJ1ZTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKiogQXBwbGllcyBhbGwgdGhlIGFuaW1hdGlvbidzIHRpbWVsaW5lcyB0byB0aGUgc3BlY2lmaWVkIHNrZWxldG9uLlxuXHQgKlxuXHQgKiBTZWUgVGltZWxpbmUge0BsaW5rIFRpbWVsaW5lI2FwcGx5KFNrZWxldG9uLCBmbG9hdCwgZmxvYXQsIEFycmF5LCBmbG9hdCwgTWl4QmxlbmQsIE1peERpcmVjdGlvbil9LlxuXHQgKiBAcGFyYW0gbG9vcCBJZiB0cnVlLCB0aGUgYW5pbWF0aW9uIHJlcGVhdHMgYWZ0ZXIge0BsaW5rICNnZXREdXJhdGlvbigpfS5cblx0ICogQHBhcmFtIGV2ZW50cyBNYXkgYmUgbnVsbCB0byBpZ25vcmUgZmlyZWQgZXZlbnRzLiAqL1xuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGxvb3A6IGJvb2xlYW4sIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0aWYgKCFza2VsZXRvbikgdGhyb3cgbmV3IEVycm9yKFwic2tlbGV0b24gY2Fubm90IGJlIG51bGwuXCIpO1xuXG5cdFx0aWYgKGxvb3AgJiYgdGhpcy5kdXJhdGlvbiAhPSAwKSB7XG5cdFx0XHR0aW1lICU9IHRoaXMuZHVyYXRpb247XG5cdFx0XHRpZiAobGFzdFRpbWUgPiAwKSBsYXN0VGltZSAlPSB0aGlzLmR1cmF0aW9uO1xuXHRcdH1cblxuXHRcdGxldCB0aW1lbGluZXMgPSB0aGlzLnRpbWVsaW5lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRpbWVsaW5lcy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aW1lbGluZXNbaV0uYXBwbHkoc2tlbGV0b24sIGxhc3RUaW1lLCB0aW1lLCBldmVudHMsIGFscGhhLCBibGVuZCwgZGlyZWN0aW9uKTtcblx0fVxufVxuXG4vKiogQ29udHJvbHMgaG93IGEgdGltZWxpbmUgdmFsdWUgaXMgbWl4ZWQgd2l0aCB0aGUgc2V0dXAgcG9zZSB2YWx1ZSBvciBjdXJyZW50IHBvc2UgdmFsdWUgd2hlbiBhIHRpbWVsaW5lJ3MgYGFscGhhYFxuICogPCAxLlxuICpcbiAqIFNlZSBUaW1lbGluZSB7QGxpbmsgVGltZWxpbmUjYXBwbHkoU2tlbGV0b24sIGZsb2F0LCBmbG9hdCwgQXJyYXksIGZsb2F0LCBNaXhCbGVuZCwgTWl4RGlyZWN0aW9uKX0uICovXG5leHBvcnQgZW51bSBNaXhCbGVuZCB7XG5cdC8qKiBUcmFuc2l0aW9ucyBmcm9tIHRoZSBzZXR1cCB2YWx1ZSB0byB0aGUgdGltZWxpbmUgdmFsdWUgKHRoZSBjdXJyZW50IHZhbHVlIGlzIG5vdCB1c2VkKS4gQmVmb3JlIHRoZSBmaXJzdCBrZXksIHRoZSBzZXR1cFxuXHQgKiB2YWx1ZSBpcyBzZXQuICovXG5cdHNldHVwLFxuXHQvKiogVHJhbnNpdGlvbnMgZnJvbSB0aGUgY3VycmVudCB2YWx1ZSB0byB0aGUgdGltZWxpbmUgdmFsdWUuIEJlZm9yZSB0aGUgZmlyc3Qga2V5LCB0cmFuc2l0aW9ucyBmcm9tIHRoZSBjdXJyZW50IHZhbHVlIHRvXG5cdCAqIHRoZSBzZXR1cCB2YWx1ZS4gVGltZWxpbmVzIHdoaWNoIHBlcmZvcm0gaW5zdGFudCB0cmFuc2l0aW9ucywgc3VjaCBhcyB7QGxpbmsgRHJhd09yZGVyVGltZWxpbmV9IG9yXG5cdCAqIHtAbGluayBBdHRhY2htZW50VGltZWxpbmV9LCB1c2UgdGhlIHNldHVwIHZhbHVlIGJlZm9yZSB0aGUgZmlyc3Qga2V5LlxuXHQgKlxuXHQgKiBgZmlyc3RgIGlzIGludGVuZGVkIGZvciB0aGUgZmlyc3QgYW5pbWF0aW9ucyBhcHBsaWVkLCBub3QgZm9yIGFuaW1hdGlvbnMgbGF5ZXJlZCBvbiB0b3Agb2YgdGhvc2UuICovXG5cdGZpcnN0LFxuXHQvKiogVHJhbnNpdGlvbnMgZnJvbSB0aGUgY3VycmVudCB2YWx1ZSB0byB0aGUgdGltZWxpbmUgdmFsdWUuIE5vIGNoYW5nZSBpcyBtYWRlIGJlZm9yZSB0aGUgZmlyc3Qga2V5ICh0aGUgY3VycmVudCB2YWx1ZSBpc1xuXHQgKiBrZXB0IHVudGlsIHRoZSBmaXJzdCBrZXkpLlxuXHQgKlxuXHQgKiBgcmVwbGFjZWAgaXMgaW50ZW5kZWQgZm9yIGFuaW1hdGlvbnMgbGF5ZXJlZCBvbiB0b3Agb2Ygb3RoZXJzLCBub3QgZm9yIHRoZSBmaXJzdCBhbmltYXRpb25zIGFwcGxpZWQuICovXG5cdHJlcGxhY2UsXG5cdC8qKiBUcmFuc2l0aW9ucyBmcm9tIHRoZSBjdXJyZW50IHZhbHVlIHRvIHRoZSBjdXJyZW50IHZhbHVlIHBsdXMgdGhlIHRpbWVsaW5lIHZhbHVlLiBObyBjaGFuZ2UgaXMgbWFkZSBiZWZvcmUgdGhlIGZpcnN0IGtleVxuXHQgKiAodGhlIGN1cnJlbnQgdmFsdWUgaXMga2VwdCB1bnRpbCB0aGUgZmlyc3Qga2V5KS5cblx0ICpcblx0ICogYGFkZGAgaXMgaW50ZW5kZWQgZm9yIGFuaW1hdGlvbnMgbGF5ZXJlZCBvbiB0b3Agb2Ygb3RoZXJzLCBub3QgZm9yIHRoZSBmaXJzdCBhbmltYXRpb25zIGFwcGxpZWQuIFByb3BlcnRpZXNcblx0ICoga2V5ZWQgYnkgYWRkaXRpdmUgYW5pbWF0aW9ucyBtdXN0IGJlIHNldCBtYW51YWxseSBvciBieSBhbm90aGVyIGFuaW1hdGlvbiBiZWZvcmUgYXBwbHlpbmcgdGhlIGFkZGl0aXZlIGFuaW1hdGlvbnMsIGVsc2Vcblx0ICogdGhlIHByb3BlcnR5IHZhbHVlcyB3aWxsIGluY3JlYXNlIGNvbnRpbnVhbGx5LiAqL1xuXHRhZGRcbn1cblxuLyoqIEluZGljYXRlcyB3aGV0aGVyIGEgdGltZWxpbmUncyBgYWxwaGFgIGlzIG1peGluZyBvdXQgb3ZlciB0aW1lIHRvd2FyZCAwICh0aGUgc2V0dXAgb3IgY3VycmVudCBwb3NlIHZhbHVlKSBvclxuICogbWl4aW5nIGluIHRvd2FyZCAxICh0aGUgdGltZWxpbmUncyB2YWx1ZSkuXG4gKlxuICogU2VlIFRpbWVsaW5lIHtAbGluayBUaW1lbGluZSNhcHBseShTa2VsZXRvbiwgZmxvYXQsIGZsb2F0LCBBcnJheSwgZmxvYXQsIE1peEJsZW5kLCBNaXhEaXJlY3Rpb24pfS4gKi9cbmV4cG9ydCBlbnVtIE1peERpcmVjdGlvbiB7XG5cdG1peEluLCBtaXhPdXRcbn1cblxuY29uc3QgUHJvcGVydHkgPSB7XG5cdHJvdGF0ZTogMCxcblx0eDogMSxcblx0eTogMixcblx0c2NhbGVYOiAzLFxuXHRzY2FsZVk6IDQsXG5cdHNoZWFyWDogNSxcblx0c2hlYXJZOiA2LFxuXHRpbmhlcml0OiA3LFxuXG5cdHJnYjogOCxcblx0YWxwaGE6IDksXG5cdHJnYjI6IDEwLFxuXG5cdGF0dGFjaG1lbnQ6IDExLFxuXHRkZWZvcm06IDEyLFxuXG5cdGV2ZW50OiAxMyxcblx0ZHJhd09yZGVyOiAxNCxcblxuXHRpa0NvbnN0cmFpbnQ6IDE1LFxuXHR0cmFuc2Zvcm1Db25zdHJhaW50OiAxNixcblxuXHRwYXRoQ29uc3RyYWludFBvc2l0aW9uOiAxNyxcblx0cGF0aENvbnN0cmFpbnRTcGFjaW5nOiAxOCxcblx0cGF0aENvbnN0cmFpbnRNaXg6IDE5LFxuXG5cdHBoeXNpY3NDb25zdHJhaW50SW5lcnRpYTogMjAsXG5cdHBoeXNpY3NDb25zdHJhaW50U3RyZW5ndGg6IDIxLFxuXHRwaHlzaWNzQ29uc3RyYWludERhbXBpbmc6IDIyLFxuXHRwaHlzaWNzQ29uc3RyYWludE1hc3M6IDIzLFxuXHRwaHlzaWNzQ29uc3RyYWludFdpbmQ6IDI0LFxuXHRwaHlzaWNzQ29uc3RyYWludEdyYXZpdHk6IDI1LFxuXHRwaHlzaWNzQ29uc3RyYWludE1peDogMjYsXG5cdHBoeXNpY3NDb25zdHJhaW50UmVzZXQ6IDI3LFxuXG5cdHNlcXVlbmNlOiAyOCxcbn1cblxuLyoqIFRoZSBpbnRlcmZhY2UgZm9yIGFsbCB0aW1lbGluZXMuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGltZWxpbmUge1xuXHRwcm9wZXJ0eUlkczogc3RyaW5nW107XG5cdGZyYW1lczogTnVtYmVyQXJyYXlMaWtlO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIHByb3BlcnR5SWRzOiBzdHJpbmdbXSkge1xuXHRcdHRoaXMucHJvcGVydHlJZHMgPSBwcm9wZXJ0eUlkcztcblx0XHR0aGlzLmZyYW1lcyA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZnJhbWVDb3VudCAqIHRoaXMuZ2V0RnJhbWVFbnRyaWVzKCkpO1xuXHR9XG5cblx0Z2V0UHJvcGVydHlJZHMgKCkge1xuXHRcdHJldHVybiB0aGlzLnByb3BlcnR5SWRzO1xuXHR9XG5cblx0Z2V0RnJhbWVFbnRyaWVzICgpOiBudW1iZXIge1xuXHRcdHJldHVybiAxO1xuXHR9XG5cblx0Z2V0RnJhbWVDb3VudCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnJhbWVzLmxlbmd0aCAvIHRoaXMuZ2V0RnJhbWVFbnRyaWVzKCk7XG5cdH1cblxuXHRnZXREdXJhdGlvbiAoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZXMubGVuZ3RoIC0gdGhpcy5nZXRGcmFtZUVudHJpZXMoKV07XG5cdH1cblxuXHRhYnN0cmFjdCBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+IHwgbnVsbCwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbik6IHZvaWQ7XG5cblx0c3RhdGljIHNlYXJjaDEgKGZyYW1lczogTnVtYmVyQXJyYXlMaWtlLCB0aW1lOiBudW1iZXIpIHtcblx0XHRsZXQgbiA9IGZyYW1lcy5sZW5ndGg7XG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBuOyBpKyspXG5cdFx0XHRpZiAoZnJhbWVzW2ldID4gdGltZSkgcmV0dXJuIGkgLSAxO1xuXHRcdHJldHVybiBuIC0gMTtcblx0fVxuXG5cdHN0YXRpYyBzZWFyY2ggKGZyYW1lczogTnVtYmVyQXJyYXlMaWtlLCB0aW1lOiBudW1iZXIsIHN0ZXA6IG51bWJlcikge1xuXHRcdGxldCBuID0gZnJhbWVzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gc3RlcDsgaSA8IG47IGkgKz0gc3RlcClcblx0XHRcdGlmIChmcmFtZXNbaV0gPiB0aW1lKSByZXR1cm4gaSAtIHN0ZXA7XG5cdFx0cmV0dXJuIG4gLSBzdGVwO1xuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9uZVRpbWVsaW5lIHtcblx0LyoqIFRoZSBpbmRleCBvZiB0aGUgYm9uZSBpbiB7QGxpbmsgU2tlbGV0b24jYm9uZXN9IHRoYXQgd2lsbCBiZSBjaGFuZ2VkLiAqL1xuXHRib25lSW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTbG90VGltZWxpbmUge1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBzbG90IGluIHtAbGluayBTa2VsZXRvbiNzbG90c30gdGhhdCB3aWxsIGJlIGNoYW5nZWQuICovXG5cdHNsb3RJbmRleDogbnVtYmVyO1xufVxuXG4vKiogVGhlIGJhc2UgY2xhc3MgZm9yIHRpbWVsaW5lcyB0aGF0IHVzZSBpbnRlcnBvbGF0aW9uIGJldHdlZW4ga2V5IGZyYW1lIHZhbHVlcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDdXJ2ZVRpbWVsaW5lIGV4dGVuZHMgVGltZWxpbmUge1xuXHRwcm90ZWN0ZWQgY3VydmVzOiBOdW1iZXJBcnJheUxpa2U7IC8vIHR5cGUsIHgsIHksIC4uLlxuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHByb3BlcnR5SWRzOiBzdHJpbmdbXSkge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIHByb3BlcnR5SWRzKTtcblx0XHR0aGlzLmN1cnZlcyA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZnJhbWVDb3VudCArIGJlemllckNvdW50ICogMTgvKkJFWklFUl9TSVpFKi8pO1xuXHRcdHRoaXMuY3VydmVzW2ZyYW1lQ291bnQgLSAxXSA9IDEvKlNURVBQRUQqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lIHRvIGxpbmVhciBpbnRlcnBvbGF0aW9uLiAqL1xuXHRzZXRMaW5lYXIgKGZyYW1lOiBudW1iZXIpIHtcblx0XHR0aGlzLmN1cnZlc1tmcmFtZV0gPSAwLypMSU5FQVIqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lIHRvIHN0ZXBwZWQgaW50ZXJwb2xhdGlvbi4gKi9cblx0c2V0U3RlcHBlZCAoZnJhbWU6IG51bWJlcikge1xuXHRcdHRoaXMuY3VydmVzW2ZyYW1lXSA9IDEvKlNURVBQRUQqLztcblx0fVxuXG5cdC8qKiBTaHJpbmtzIHRoZSBzdG9yYWdlIGZvciBCZXppZXIgY3VydmVzLCBmb3IgdXNlIHdoZW4gPGNvZGU+YmV6aWVyQ291bnQ8L2NvZGU+IChzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yKSB3YXMgbGFyZ2VyXG5cdCAqIHRoYW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgQmV6aWVyIGN1cnZlcy4gKi9cblx0c2hyaW5rIChiZXppZXJDb3VudDogbnVtYmVyKSB7XG5cdFx0bGV0IHNpemUgPSB0aGlzLmdldEZyYW1lQ291bnQoKSArIGJlemllckNvdW50ICogMTgvKkJFWklFUl9TSVpFKi87XG5cdFx0aWYgKHRoaXMuY3VydmVzLmxlbmd0aCA+IHNpemUpIHtcblx0XHRcdGxldCBuZXdDdXJ2ZXMgPSBVdGlscy5uZXdGbG9hdEFycmF5KHNpemUpO1xuXHRcdFx0VXRpbHMuYXJyYXlDb3B5KHRoaXMuY3VydmVzLCAwLCBuZXdDdXJ2ZXMsIDAsIHNpemUpO1xuXHRcdFx0dGhpcy5jdXJ2ZXMgPSBuZXdDdXJ2ZXM7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFN0b3JlcyB0aGUgc2VnbWVudHMgZm9yIHRoZSBzcGVjaWZpZWQgQmV6aWVyIGN1cnZlLiBGb3IgdGltZWxpbmVzIHRoYXQgbW9kaWZ5IG11bHRpcGxlIHZhbHVlcywgdGhlcmUgbWF5IGJlIG1vcmUgdGhhblxuXHQgKiBvbmUgY3VydmUgcGVyIGZyYW1lLlxuXHQgKiBAcGFyYW0gYmV6aWVyIFRoZSBvcmRpbmFsIG9mIHRoaXMgQmV6aWVyIGN1cnZlIGZvciB0aGlzIHRpbWVsaW5lLCBiZXR3ZWVuIDAgYW5kIDxjb2RlPmJlemllckNvdW50IC0gMTwvY29kZT4gKHNwZWNpZmllZFxuXHQgKiAgICAgICAgICAgaW4gdGhlIGNvbnN0cnVjdG9yKSwgaW5jbHVzaXZlLlxuXHQgKiBAcGFyYW0gZnJhbWUgQmV0d2VlbiAwIGFuZCA8Y29kZT5mcmFtZUNvdW50IC0gMTwvY29kZT4sIGluY2x1c2l2ZS5cblx0ICogQHBhcmFtIHZhbHVlIFRoZSBpbmRleCBvZiB0aGUgdmFsdWUgZm9yIHRoaXMgZnJhbWUgdGhhdCB0aGlzIGN1cnZlIGlzIHVzZWQgZm9yLlxuXHQgKiBAcGFyYW0gdGltZTEgVGhlIHRpbWUgZm9yIHRoZSBmaXJzdCBrZXkuXG5cdCAqIEBwYXJhbSB2YWx1ZTEgVGhlIHZhbHVlIGZvciB0aGUgZmlyc3Qga2V5LlxuXHQgKiBAcGFyYW0gY3gxIFRoZSB0aW1lIGZvciB0aGUgZmlyc3QgQmV6aWVyIGhhbmRsZS5cblx0ICogQHBhcmFtIGN5MSBUaGUgdmFsdWUgZm9yIHRoZSBmaXJzdCBCZXppZXIgaGFuZGxlLlxuXHQgKiBAcGFyYW0gY3gyIFRoZSB0aW1lIG9mIHRoZSBzZWNvbmQgQmV6aWVyIGhhbmRsZS5cblx0ICogQHBhcmFtIGN5MiBUaGUgdmFsdWUgZm9yIHRoZSBzZWNvbmQgQmV6aWVyIGhhbmRsZS5cblx0ICogQHBhcmFtIHRpbWUyIFRoZSB0aW1lIGZvciB0aGUgc2Vjb25kIGtleS5cblx0ICogQHBhcmFtIHZhbHVlMiBUaGUgdmFsdWUgZm9yIHRoZSBzZWNvbmQga2V5LiAqL1xuXHRzZXRCZXppZXIgKGJlemllcjogbnVtYmVyLCBmcmFtZTogbnVtYmVyLCB2YWx1ZTogbnVtYmVyLCB0aW1lMTogbnVtYmVyLCB2YWx1ZTE6IG51bWJlciwgY3gxOiBudW1iZXIsIGN5MTogbnVtYmVyLCBjeDI6IG51bWJlcixcblx0XHRjeTI6IG51bWJlciwgdGltZTI6IG51bWJlciwgdmFsdWUyOiBudW1iZXIpIHtcblx0XHRsZXQgY3VydmVzID0gdGhpcy5jdXJ2ZXM7XG5cdFx0bGV0IGkgPSB0aGlzLmdldEZyYW1lQ291bnQoKSArIGJlemllciAqIDE4LypCRVpJRVJfU0laRSovO1xuXHRcdGlmICh2YWx1ZSA9PSAwKSBjdXJ2ZXNbZnJhbWVdID0gMi8qQkVaSUVSKi8gKyBpO1xuXHRcdGxldCB0bXB4ID0gKHRpbWUxIC0gY3gxICogMiArIGN4MikgKiAwLjAzLCB0bXB5ID0gKHZhbHVlMSAtIGN5MSAqIDIgKyBjeTIpICogMC4wMztcblx0XHRsZXQgZGRkeCA9ICgoY3gxIC0gY3gyKSAqIDMgLSB0aW1lMSArIHRpbWUyKSAqIDAuMDA2LCBkZGR5ID0gKChjeTEgLSBjeTIpICogMyAtIHZhbHVlMSArIHZhbHVlMikgKiAwLjAwNjtcblx0XHRsZXQgZGR4ID0gdG1weCAqIDIgKyBkZGR4LCBkZHkgPSB0bXB5ICogMiArIGRkZHk7XG5cdFx0bGV0IGR4ID0gKGN4MSAtIHRpbWUxKSAqIDAuMyArIHRtcHggKyBkZGR4ICogMC4xNjY2NjY2NywgZHkgPSAoY3kxIC0gdmFsdWUxKSAqIDAuMyArIHRtcHkgKyBkZGR5ICogMC4xNjY2NjY2Nztcblx0XHRsZXQgeCA9IHRpbWUxICsgZHgsIHkgPSB2YWx1ZTEgKyBkeTtcblx0XHRmb3IgKGxldCBuID0gaSArIDE4LypCRVpJRVJfU0laRSovOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRjdXJ2ZXNbaV0gPSB4O1xuXHRcdFx0Y3VydmVzW2kgKyAxXSA9IHk7XG5cdFx0XHRkeCArPSBkZHg7XG5cdFx0XHRkeSArPSBkZHk7XG5cdFx0XHRkZHggKz0gZGRkeDtcblx0XHRcdGRkeSArPSBkZGR5O1xuXHRcdFx0eCArPSBkeDtcblx0XHRcdHkgKz0gZHk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIEJlemllciBpbnRlcnBvbGF0ZWQgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS5cblx0ICogQHBhcmFtIGZyYW1lSW5kZXggVGhlIGluZGV4IGludG8ge0BsaW5rICNnZXRGcmFtZXMoKX0gZm9yIHRoZSB2YWx1ZXMgb2YgdGhlIGZyYW1lIGJlZm9yZSA8Y29kZT50aW1lPC9jb2RlPi5cblx0ICogQHBhcmFtIHZhbHVlT2Zmc2V0IFRoZSBvZmZzZXQgZnJvbSA8Y29kZT5mcmFtZUluZGV4PC9jb2RlPiB0byB0aGUgdmFsdWUgdGhpcyBjdXJ2ZSBpcyB1c2VkIGZvci5cblx0ICogQHBhcmFtIGkgVGhlIGluZGV4IG9mIHRoZSBCZXppZXIgc2VnbWVudHMuIFNlZSB7QGxpbmsgI2dldEN1cnZlVHlwZShpbnQpfS4gKi9cblx0Z2V0QmV6aWVyVmFsdWUgKHRpbWU6IG51bWJlciwgZnJhbWVJbmRleDogbnVtYmVyLCB2YWx1ZU9mZnNldDogbnVtYmVyLCBpOiBudW1iZXIpIHtcblx0XHRsZXQgY3VydmVzID0gdGhpcy5jdXJ2ZXM7XG5cdFx0aWYgKGN1cnZlc1tpXSA+IHRpbWUpIHtcblx0XHRcdGxldCB4ID0gdGhpcy5mcmFtZXNbZnJhbWVJbmRleF0sIHkgPSB0aGlzLmZyYW1lc1tmcmFtZUluZGV4ICsgdmFsdWVPZmZzZXRdO1xuXHRcdFx0cmV0dXJuIHkgKyAodGltZSAtIHgpIC8gKGN1cnZlc1tpXSAtIHgpICogKGN1cnZlc1tpICsgMV0gLSB5KTtcblx0XHR9XG5cdFx0bGV0IG4gPSBpICsgMTgvKkJFWklFUl9TSVpFKi87XG5cdFx0Zm9yIChpICs9IDI7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdGlmIChjdXJ2ZXNbaV0gPj0gdGltZSkge1xuXHRcdFx0XHRsZXQgeCA9IGN1cnZlc1tpIC0gMl0sIHkgPSBjdXJ2ZXNbaSAtIDFdO1xuXHRcdFx0XHRyZXR1cm4geSArICh0aW1lIC0geCkgLyAoY3VydmVzW2ldIC0geCkgKiAoY3VydmVzW2kgKyAxXSAtIHkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmcmFtZUluZGV4ICs9IHRoaXMuZ2V0RnJhbWVFbnRyaWVzKCk7XG5cdFx0bGV0IHggPSBjdXJ2ZXNbbiAtIDJdLCB5ID0gY3VydmVzW24gLSAxXTtcblx0XHRyZXR1cm4geSArICh0aW1lIC0geCkgLyAodGhpcy5mcmFtZXNbZnJhbWVJbmRleF0gLSB4KSAqICh0aGlzLmZyYW1lc1tmcmFtZUluZGV4ICsgdmFsdWVPZmZzZXRdIC0geSk7XG5cdH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEN1cnZlVGltZWxpbmUxIGV4dGVuZHMgQ3VydmVUaW1lbGluZSB7XG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHByb3BlcnR5SWQ6IHN0cmluZykge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbcHJvcGVydHlJZF0pO1xuXHR9XG5cblx0Z2V0RnJhbWVFbnRyaWVzICgpIHtcblx0XHRyZXR1cm4gMi8qRU5UUklFUyovO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgYW5kIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGZyYW1lLlxuXHQgKiBAcGFyYW0gZnJhbWUgQmV0d2VlbiAwIGFuZCA8Y29kZT5mcmFtZUNvdW50PC9jb2RlPiwgaW5jbHVzaXZlLlxuXHQgKiBAcGFyYW0gdGltZSBUaGUgZnJhbWUgdGltZSBpbiBzZWNvbmRzLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdFx0ZnJhbWUgPDw9IDE7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDEvKlZBTFVFKi9dID0gdmFsdWU7XG5cdH1cblxuXHQvKiogUmV0dXJucyB0aGUgaW50ZXJwb2xhdGVkIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICovXG5cdGdldEN1cnZlVmFsdWUgKHRpbWU6IG51bWJlcikge1xuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRsZXQgaSA9IGZyYW1lcy5sZW5ndGggLSAyO1xuXHRcdGZvciAobGV0IGlpID0gMjsgaWkgPD0gaTsgaWkgKz0gMikge1xuXHRcdFx0aWYgKGZyYW1lc1tpaV0gPiB0aW1lKSB7XG5cdFx0XHRcdGkgPSBpaSAtIDI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpID4+IDFdO1xuXHRcdHN3aXRjaCAoY3VydmVUeXBlKSB7XG5cdFx0XHRjYXNlIDAvKkxJTkVBUiovOlxuXHRcdFx0XHRsZXQgYmVmb3JlID0gZnJhbWVzW2ldLCB2YWx1ZSA9IGZyYW1lc1tpICsgMS8qVkFMVUUqL107XG5cdFx0XHRcdHJldHVybiB2YWx1ZSArICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDIvKkVOVFJJRVMqL10gLSBiZWZvcmUpICogKGZyYW1lc1tpICsgMi8qRU5UUklFUyovICsgMS8qVkFMVUUqL10gLSB2YWx1ZSk7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0cmV0dXJuIGZyYW1lc1tpICsgMS8qVkFMVUUqL107XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlZBTFVFKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0fVxuXG5cdGdldFJlbGF0aXZlVmFsdWUgKHRpbWU6IG51bWJlciwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBjdXJyZW50OiBudW1iZXIsIHNldHVwOiBudW1iZXIpIHtcblx0XHRpZiAodGltZSA8IHRoaXMuZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0cmV0dXJuIHNldHVwO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdHJldHVybiBjdXJyZW50ICsgKHNldHVwIC0gY3VycmVudCkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50O1xuXHRcdH1cblx0XHRsZXQgdmFsdWUgPSB0aGlzLmdldEN1cnZlVmFsdWUodGltZSk7XG5cdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0cmV0dXJuIHNldHVwICsgdmFsdWUgKiBhbHBoYTtcblx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdHZhbHVlICs9IHNldHVwIC0gY3VycmVudDtcblx0XHR9XG5cdFx0cmV0dXJuIGN1cnJlbnQgKyB2YWx1ZSAqIGFscGhhO1xuXHR9XG5cblx0Z2V0QWJzb2x1dGVWYWx1ZSAodGltZTogbnVtYmVyLCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGN1cnJlbnQ6IG51bWJlciwgc2V0dXA6IG51bWJlcikge1xuXHRcdGlmICh0aW1lIDwgdGhpcy5mcmFtZXNbMF0pIHtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRyZXR1cm4gc2V0dXA7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0cmV0dXJuIGN1cnJlbnQgKyAoc2V0dXAgLSBjdXJyZW50KSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGN1cnJlbnQ7XG5cdFx0fVxuXHRcdGxldCB2YWx1ZSA9IHRoaXMuZ2V0Q3VydmVWYWx1ZSh0aW1lKTtcblx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXApIHJldHVybiBzZXR1cCArICh2YWx1ZSAtIHNldHVwKSAqIGFscGhhO1xuXHRcdHJldHVybiBjdXJyZW50ICsgKHZhbHVlIC0gY3VycmVudCkgKiBhbHBoYTtcblx0fVxuXG5cdGdldEFic29sdXRlVmFsdWUyICh0aW1lOiBudW1iZXIsIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgY3VycmVudDogbnVtYmVyLCBzZXR1cDogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKSB7XG5cdFx0aWYgKHRpbWUgPCB0aGlzLmZyYW1lc1swXSkge1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdHJldHVybiBzZXR1cDtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRyZXR1cm4gY3VycmVudCArIChzZXR1cCAtIGN1cnJlbnQpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3VycmVudDtcblx0XHR9XG5cdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSByZXR1cm4gc2V0dXAgKyAodmFsdWUgLSBzZXR1cCkgKiBhbHBoYTtcblx0XHRyZXR1cm4gY3VycmVudCArICh2YWx1ZSAtIGN1cnJlbnQpICogYWxwaGE7XG5cdH1cblxuXHRnZXRTY2FsZVZhbHVlICh0aW1lOiBudW1iZXIsIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24sIGN1cnJlbnQ6IG51bWJlciwgc2V0dXA6IG51bWJlcikge1xuXHRcdGNvbnN0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0cmV0dXJuIHNldHVwO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdHJldHVybiBjdXJyZW50ICsgKHNldHVwIC0gY3VycmVudCkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50O1xuXHRcdH1cblx0XHRsZXQgdmFsdWUgPSB0aGlzLmdldEN1cnZlVmFsdWUodGltZSkgKiBzZXR1cDtcblx0XHRpZiAoYWxwaGEgPT0gMSkge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLmFkZCkgcmV0dXJuIGN1cnJlbnQgKyB2YWx1ZSAtIHNldHVwO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblx0XHQvLyBNaXhpbmcgb3V0IHVzZXMgc2lnbiBvZiBzZXR1cCBvciBjdXJyZW50IHBvc2UsIGVsc2UgdXNlIHNpZ24gb2Yga2V5LlxuXHRcdGlmIChkaXJlY3Rpb24gPT0gTWl4RGlyZWN0aW9uLm1peE91dCkge1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdHJldHVybiBzZXR1cCArIChNYXRoLmFicyh2YWx1ZSkgKiBNYXRoVXRpbHMuc2lnbnVtKHNldHVwKSAtIHNldHVwKSAqIGFscGhhO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdFx0cmV0dXJuIGN1cnJlbnQgKyAoTWF0aC5hYnModmFsdWUpICogTWF0aFV0aWxzLnNpZ251bShjdXJyZW50KSAtIGN1cnJlbnQpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBzID0gMDtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRzID0gTWF0aC5hYnMoc2V0dXApICogTWF0aFV0aWxzLnNpZ251bSh2YWx1ZSk7XG5cdFx0XHRcdFx0cmV0dXJuIHMgKyAodmFsdWUgLSBzKSAqIGFscGhhO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdFx0cyA9IE1hdGguYWJzKGN1cnJlbnQpICogTWF0aFV0aWxzLnNpZ251bSh2YWx1ZSk7XG5cdFx0XHRcdFx0cmV0dXJuIHMgKyAodmFsdWUgLSBzKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gY3VycmVudCArICh2YWx1ZSAtIHNldHVwKSAqIGFscGhhO1xuXHR9XG59XG5cbi8qKiBUaGUgYmFzZSBjbGFzcyBmb3IgYSB7QGxpbmsgQ3VydmVUaW1lbGluZX0gd2hpY2ggc2V0cyB0d28gcHJvcGVydGllcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDdXJ2ZVRpbWVsaW5lMiBleHRlbmRzIEN1cnZlVGltZWxpbmUge1xuXHQvKiogQHBhcmFtIGJlemllckNvdW50IFRoZSBtYXhpbXVtIG51bWJlciBvZiBCZXppZXIgY3VydmVzLiBTZWUge0BsaW5rICNzaHJpbmsoaW50KX0uXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUlkcyBVbmlxdWUgaWRlbnRpZmllcnMgZm9yIHRoZSBwcm9wZXJ0aWVzIHRoZSB0aW1lbGluZSBtb2RpZmllcy4gKi9cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcHJvcGVydHlJZDE6IHN0cmluZywgcHJvcGVydHlJZDI6IHN0cmluZykge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbcHJvcGVydHlJZDEsIHByb3BlcnR5SWQyXSk7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiAzLypFTlRSSUVTKi87XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBhbmQgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGZyYW1lLlxuXHQgKiBAcGFyYW0gZnJhbWUgQmV0d2VlbiAwIGFuZCA8Y29kZT5mcmFtZUNvdW50PC9jb2RlPiwgaW5jbHVzaXZlLlxuXHQgKiBAcGFyYW0gdGltZSBUaGUgZnJhbWUgdGltZSBpbiBzZWNvbmRzLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCB2YWx1ZTE6IG51bWJlciwgdmFsdWUyOiBudW1iZXIpIHtcblx0XHRmcmFtZSAqPSAzLypFTlRSSUVTKi87XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDEvKlZBTFVFMSovXSA9IHZhbHVlMTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDIvKlZBTFVFMiovXSA9IHZhbHVlMjtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIGJvbmUncyBsb2NhbCB7QGxpbmsgQm9uZSNyb3RhdGlvbn0uICovXG5leHBvcnQgY2xhc3MgUm90YXRlVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSBpbXBsZW1lbnRzIEJvbmVUaW1lbGluZSB7XG5cdGJvbmVJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgYm9uZUluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgUHJvcGVydHkucm90YXRlICsgXCJ8XCIgKyBib25lSW5kZXgpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiB8IG51bGwsIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW3RoaXMuYm9uZUluZGV4XTtcblx0XHRpZiAoYm9uZS5hY3RpdmUpIGJvbmUucm90YXRpb24gPSB0aGlzLmdldFJlbGF0aXZlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCBib25lLnJvdGF0aW9uLCBib25lLmRhdGEucm90YXRpb24pO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3h9IGFuZCB7QGxpbmsgQm9uZSN5fS4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUyIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LFxuXHRcdFx0UHJvcGVydHkueCArIFwifFwiICsgYm9uZUluZGV4LFxuXHRcdFx0UHJvcGVydHkueSArIFwifFwiICsgYm9uZUluZGV4LFxuXHRcdCk7XG5cdFx0dGhpcy5ib25lSW5kZXggPSBib25lSW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1t0aGlzLmJvbmVJbmRleF07XG5cdFx0aWYgKCFib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Ym9uZS54ID0gYm9uZS5kYXRhLng7XG5cdFx0XHRcdFx0Ym9uZS55ID0gYm9uZS5kYXRhLnk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGJvbmUueCArPSAoYm9uZS5kYXRhLnggLSBib25lLngpICogYWxwaGE7XG5cdFx0XHRcdFx0Ym9uZS55ICs9IChib25lLmRhdGEueSAtIGJvbmUueSkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgeCA9IDAsIHkgPSAwO1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgMy8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSAvIDMvKkVOVFJJRVMqL107XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDEvKlZBTFVFMSovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMi8qVkFMVUUyKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDMvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHR4ICs9IChmcmFtZXNbaSArIDMvKkVOVFJJRVMqLyArIDEvKlZBTFVFMSovXSAtIHgpICogdDtcblx0XHRcdFx0eSArPSAoZnJhbWVzW2kgKyAzLypFTlRSSUVTKi8gKyAyLypWQUxVRTIqL10gLSB5KSAqIHQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDEvKlZBTFVFMSovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMi8qVkFMVUUyKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHggPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlZBTFVFMSovLCBjdXJ2ZVR5cGUgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHkgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDIvKlZBTFVFMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHR9XG5cblx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRib25lLnggPSBib25lLmRhdGEueCArIHggKiBhbHBoYTtcblx0XHRcdFx0Ym9uZS55ID0gYm9uZS5kYXRhLnkgKyB5ICogYWxwaGE7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdGNhc2UgTWl4QmxlbmQucmVwbGFjZTpcblx0XHRcdFx0Ym9uZS54ICs9IChib25lLmRhdGEueCArIHggLSBib25lLngpICogYWxwaGE7XG5cdFx0XHRcdGJvbmUueSArPSAoYm9uZS5kYXRhLnkgKyB5IC0gYm9uZS55KSAqIGFscGhhO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTWl4QmxlbmQuYWRkOlxuXHRcdFx0XHRib25lLnggKz0geCAqIGFscGhhO1xuXHRcdFx0XHRib25lLnkgKz0geSAqIGFscGhhO1xuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIGJvbmUncyBsb2NhbCB7QGxpbmsgQm9uZSN4fS4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVYVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSBpbXBsZW1lbnRzIEJvbmVUaW1lbGluZSB7XG5cdGJvbmVJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgYm9uZUluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgUHJvcGVydHkueCArIFwifFwiICsgYm9uZUluZGV4KTtcblx0XHR0aGlzLmJvbmVJbmRleCA9IGJvbmVJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW3RoaXMuYm9uZUluZGV4XTtcblx0XHRpZiAoYm9uZS5hY3RpdmUpIGJvbmUueCA9IHRoaXMuZ2V0UmVsYXRpdmVWYWx1ZSh0aW1lLCBhbHBoYSwgYmxlbmQsIGJvbmUueCwgYm9uZS5kYXRhLngpO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3h9LiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVlUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUxIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS55ICsgXCJ8XCIgKyBib25lSW5kZXgpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmIChib25lLmFjdGl2ZSkgYm9uZS55ID0gdGhpcy5nZXRSZWxhdGl2ZVZhbHVlKHRpbWUsIGFscGhhLCBibGVuZCwgYm9uZS55LCBib25lLmRhdGEueSk7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBib25lJ3MgbG9jYWwge0BsaW5rIEJvbmUjc2NhbGVYKX0gYW5kIHtAbGluayBCb25lI3NjYWxlWX0uICovXG5leHBvcnQgY2xhc3MgU2NhbGVUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUyIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LFxuXHRcdFx0UHJvcGVydHkuc2NhbGVYICsgXCJ8XCIgKyBib25lSW5kZXgsXG5cdFx0XHRQcm9wZXJ0eS5zY2FsZVkgKyBcInxcIiArIGJvbmVJbmRleFxuXHRcdCk7XG5cdFx0dGhpcy5ib25lSW5kZXggPSBib25lSW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1t0aGlzLmJvbmVJbmRleF07XG5cdFx0aWYgKCFib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Ym9uZS5zY2FsZVggPSBib25lLmRhdGEuc2NhbGVYO1xuXHRcdFx0XHRcdGJvbmUuc2NhbGVZID0gYm9uZS5kYXRhLnNjYWxlWTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Ym9uZS5zY2FsZVggKz0gKGJvbmUuZGF0YS5zY2FsZVggLSBib25lLnNjYWxlWCkgKiBhbHBoYTtcblx0XHRcdFx0XHRib25lLnNjYWxlWSArPSAoYm9uZS5kYXRhLnNjYWxlWSAtIGJvbmUuc2NhbGVZKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCB4LCB5O1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgMy8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSAvIDMvKkVOVFJJRVMqL107XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDEvKlZBTFVFMSovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMi8qVkFMVUUyKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDMvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHR4ICs9IChmcmFtZXNbaSArIDMvKkVOVFJJRVMqLyArIDEvKlZBTFVFMSovXSAtIHgpICogdDtcblx0XHRcdFx0eSArPSAoZnJhbWVzW2kgKyAzLypFTlRSSUVTKi8gKyAyLypWQUxVRTIqL10gLSB5KSAqIHQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDEvKlZBTFVFMSovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMi8qVkFMVUUyKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHggPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlZBTFVFMSovLCBjdXJ2ZVR5cGUgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHkgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDIvKlZBTFVFMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHR9XG5cdFx0eCAqPSBib25lLmRhdGEuc2NhbGVYO1xuXHRcdHkgKj0gYm9uZS5kYXRhLnNjYWxlWTtcblxuXHRcdGlmIChhbHBoYSA9PSAxKSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuYWRkKSB7XG5cdFx0XHRcdGJvbmUuc2NhbGVYICs9IHggLSBib25lLmRhdGEuc2NhbGVYO1xuXHRcdFx0XHRib25lLnNjYWxlWSArPSB5IC0gYm9uZS5kYXRhLnNjYWxlWTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGJvbmUuc2NhbGVYID0geDtcblx0XHRcdFx0Ym9uZS5zY2FsZVkgPSB5O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRsZXQgYnggPSAwLCBieSA9IDA7XG5cdFx0XHRpZiAoZGlyZWN0aW9uID09IE1peERpcmVjdGlvbi5taXhPdXQpIHtcblx0XHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0XHRieCA9IGJvbmUuZGF0YS5zY2FsZVg7XG5cdFx0XHRcdFx0XHRieSA9IGJvbmUuZGF0YS5zY2FsZVk7XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWCA9IGJ4ICsgKE1hdGguYWJzKHgpICogTWF0aFV0aWxzLnNpZ251bShieCkgLSBieCkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdGJvbmUuc2NhbGVZID0gYnkgKyAoTWF0aC5hYnMoeSkgKiBNYXRoVXRpbHMuc2lnbnVtKGJ5KSAtIGJ5KSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdFx0XHRieCA9IGJvbmUuc2NhbGVYO1xuXHRcdFx0XHRcdFx0YnkgPSBib25lLnNjYWxlWTtcblx0XHRcdFx0XHRcdGJvbmUuc2NhbGVYID0gYnggKyAoTWF0aC5hYnMoeCkgKiBNYXRoVXRpbHMuc2lnbnVtKGJ4KSAtIGJ4KSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVkgPSBieSArIChNYXRoLmFicyh5KSAqIE1hdGhVdGlscy5zaWdudW0oYnkpIC0gYnkpICogYWxwaGE7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLmFkZDpcblx0XHRcdFx0XHRcdGJvbmUuc2NhbGVYICs9ICh4IC0gYm9uZS5kYXRhLnNjYWxlWCkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdGJvbmUuc2NhbGVZICs9ICh5IC0gYm9uZS5kYXRhLnNjYWxlWSkgKiBhbHBoYTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0XHRieCA9IE1hdGguYWJzKGJvbmUuZGF0YS5zY2FsZVgpICogTWF0aFV0aWxzLnNpZ251bSh4KTtcblx0XHRcdFx0XHRcdGJ5ID0gTWF0aC5hYnMoYm9uZS5kYXRhLnNjYWxlWSkgKiBNYXRoVXRpbHMuc2lnbnVtKHkpO1xuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVggPSBieCArICh4IC0gYngpICogYWxwaGE7XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWSA9IGJ5ICsgKHkgLSBieSkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5yZXBsYWNlOlxuXHRcdFx0XHRcdFx0YnggPSBNYXRoLmFicyhib25lLnNjYWxlWCkgKiBNYXRoVXRpbHMuc2lnbnVtKHgpO1xuXHRcdFx0XHRcdFx0YnkgPSBNYXRoLmFicyhib25lLnNjYWxlWSkgKiBNYXRoVXRpbHMuc2lnbnVtKHkpO1xuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVggPSBieCArICh4IC0gYngpICogYWxwaGE7XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWSA9IGJ5ICsgKHkgLSBieSkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQuYWRkOlxuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVggKz0gKHggLSBib25lLmRhdGEuc2NhbGVYKSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVkgKz0gKHkgLSBib25lLmRhdGEuc2NhbGVZKSAqIGFscGhhO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3NjYWxlWCl9IGFuZCB7QGxpbmsgQm9uZSNzY2FsZVl9LiAqL1xuZXhwb3J0IGNsYXNzIFNjYWxlWFRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTEgaW1wbGVtZW50cyBCb25lVGltZWxpbmUge1xuXHRib25lSW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIGJvbmVJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFByb3BlcnR5LnNjYWxlWCArIFwifFwiICsgYm9uZUluZGV4KTtcblx0XHR0aGlzLmJvbmVJbmRleCA9IGJvbmVJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW3RoaXMuYm9uZUluZGV4XTtcblx0XHRpZiAoYm9uZS5hY3RpdmUpIGJvbmUuc2NhbGVYID0gdGhpcy5nZXRTY2FsZVZhbHVlKHRpbWUsIGFscGhhLCBibGVuZCwgZGlyZWN0aW9uLCBib25lLnNjYWxlWCwgYm9uZS5kYXRhLnNjYWxlWCk7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBib25lJ3MgbG9jYWwge0BsaW5rIEJvbmUjc2NhbGVYKX0gYW5kIHtAbGluayBCb25lI3NjYWxlWX0uICovXG5leHBvcnQgY2xhc3MgU2NhbGVZVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSBpbXBsZW1lbnRzIEJvbmVUaW1lbGluZSB7XG5cdGJvbmVJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgYm9uZUluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgUHJvcGVydHkuc2NhbGVZICsgXCJ8XCIgKyBib25lSW5kZXgpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmIChib25lLmFjdGl2ZSkgYm9uZS5zY2FsZVkgPSB0aGlzLmdldFNjYWxlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCBkaXJlY3Rpb24sIGJvbmUuc2NhbGVZLCBib25lLmRhdGEuc2NhbGVZKTtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIGJvbmUncyBsb2NhbCB7QGxpbmsgQm9uZSNzaGVhclh9IGFuZCB7QGxpbmsgQm9uZSNzaGVhcll9LiAqL1xuZXhwb3J0IGNsYXNzIFNoZWFyVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMiBpbXBsZW1lbnRzIEJvbmVUaW1lbGluZSB7XG5cdGJvbmVJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgYm9uZUluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCxcblx0XHRcdFByb3BlcnR5LnNoZWFyWCArIFwifFwiICsgYm9uZUluZGV4LFxuXHRcdFx0UHJvcGVydHkuc2hlYXJZICsgXCJ8XCIgKyBib25lSW5kZXhcblx0XHQpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmICghYm9uZS5hY3RpdmUpIHJldHVybjtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkge1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdGJvbmUuc2hlYXJYID0gYm9uZS5kYXRhLnNoZWFyWDtcblx0XHRcdFx0XHRib25lLnNoZWFyWSA9IGJvbmUuZGF0YS5zaGVhclk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGJvbmUuc2hlYXJYICs9IChib25lLmRhdGEuc2hlYXJYIC0gYm9uZS5zaGVhclgpICogYWxwaGE7XG5cdFx0XHRcdFx0Ym9uZS5zaGVhclkgKz0gKGJvbmUuZGF0YS5zaGVhclkgLSBib25lLnNoZWFyWSkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgeCA9IDAsIHkgPSAwO1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgMy8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSAvIDMvKkVOVFJJRVMqL107XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDEvKlZBTFVFMSovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMi8qVkFMVUUyKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDMvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHR4ICs9IChmcmFtZXNbaSArIDMvKkVOVFJJRVMqLyArIDEvKlZBTFVFMSovXSAtIHgpICogdDtcblx0XHRcdFx0eSArPSAoZnJhbWVzW2kgKyAzLypFTlRSSUVTKi8gKyAyLypWQUxVRTIqL10gLSB5KSAqIHQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDEvKlZBTFVFMSovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMi8qVkFMVUUyKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHggPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlZBTFVFMSovLCBjdXJ2ZVR5cGUgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHkgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDIvKlZBTFVFMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHR9XG5cblx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRib25lLnNoZWFyWCA9IGJvbmUuZGF0YS5zaGVhclggKyB4ICogYWxwaGE7XG5cdFx0XHRcdGJvbmUuc2hlYXJZID0gYm9uZS5kYXRhLnNoZWFyWSArIHkgKiBhbHBoYTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0Y2FzZSBNaXhCbGVuZC5yZXBsYWNlOlxuXHRcdFx0XHRib25lLnNoZWFyWCArPSAoYm9uZS5kYXRhLnNoZWFyWCArIHggLSBib25lLnNoZWFyWCkgKiBhbHBoYTtcblx0XHRcdFx0Ym9uZS5zaGVhclkgKz0gKGJvbmUuZGF0YS5zaGVhclkgKyB5IC0gYm9uZS5zaGVhclkpICogYWxwaGE7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBNaXhCbGVuZC5hZGQ6XG5cdFx0XHRcdGJvbmUuc2hlYXJYICs9IHggKiBhbHBoYTtcblx0XHRcdFx0Ym9uZS5zaGVhclkgKz0geSAqIGFscGhhO1xuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIGJvbmUncyBsb2NhbCB7QGxpbmsgQm9uZSNzaGVhclh9IGFuZCB7QGxpbmsgQm9uZSNzaGVhcll9LiAqL1xuZXhwb3J0IGNsYXNzIFNoZWFyWFRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTEgaW1wbGVtZW50cyBCb25lVGltZWxpbmUge1xuXHRib25lSW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIGJvbmVJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFByb3BlcnR5LnNoZWFyWCArIFwifFwiICsgYm9uZUluZGV4KTtcblx0XHR0aGlzLmJvbmVJbmRleCA9IGJvbmVJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW3RoaXMuYm9uZUluZGV4XTtcblx0XHRpZiAoYm9uZS5hY3RpdmUpIGJvbmUuc2hlYXJYID0gdGhpcy5nZXRSZWxhdGl2ZVZhbHVlKHRpbWUsIGFscGhhLCBibGVuZCwgYm9uZS5zaGVhclgsIGJvbmUuZGF0YS5zaGVhclgpO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3NoZWFyWH0gYW5kIHtAbGluayBCb25lI3NoZWFyWX0uICovXG5leHBvcnQgY2xhc3MgU2hlYXJZVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSBpbXBsZW1lbnRzIEJvbmVUaW1lbGluZSB7XG5cdGJvbmVJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgYm9uZUluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgUHJvcGVydHkuc2hlYXJZICsgXCJ8XCIgKyBib25lSW5kZXgpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmIChib25lLmFjdGl2ZSkgYm9uZS5zaGVhclkgPSB0aGlzLmdldFJlbGF0aXZlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCBib25lLnNoZWFyWSwgYm9uZS5kYXRhLnNoZWFyWSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIEluaGVyaXRUaW1lbGluZSBleHRlbmRzIFRpbWVsaW5lIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIFtQcm9wZXJ0eS5pbmhlcml0ICsgXCJ8XCIgKyBib25lSW5kZXhdKTtcblx0XHR0aGlzLmJvbmVJbmRleCA9IGJvbmVJbmRleDtcblx0fVxuXG5cdHB1YmxpYyBnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiAyLypFTlRSSUVTKi87XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdHJhbnNmb3JtIG1vZGUgZm9yIHRoZSBzcGVjaWZpZWQgZnJhbWUuXG5cdCAqIEBwYXJhbSBmcmFtZSBCZXR3ZWVuIDAgYW5kIDxjb2RlPmZyYW1lQ291bnQ8L2NvZGU+LCBpbmNsdXNpdmUuXG5cdCAqIEBwYXJhbSB0aW1lIFRoZSBmcmFtZSB0aW1lIGluIHNlY29uZHMuICovXG5cdHB1YmxpYyBzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBpbmhlcml0OiBJbmhlcml0KSB7XG5cdFx0ZnJhbWUgKj0gMi8qRU5UUklFUyovO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAxLypJTkhFUklUKi9dID0gaW5oZXJpdDtcblx0fVxuXG5cdHB1YmxpYyBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1t0aGlzLmJvbmVJbmRleF07XG5cdFx0aWYgKCFib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0aWYgKGRpcmVjdGlvbiA9PSBNaXhEaXJlY3Rpb24ubWl4T3V0KSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXApIGJvbmUuaW5oZXJpdCA9IGJvbmUuZGF0YS5pbmhlcml0O1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwIHx8IGJsZW5kID09IE1peEJsZW5kLmZpcnN0KSBib25lLmluaGVyaXQgPSBib25lLmRhdGEuaW5oZXJpdDtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Ym9uZS5pbmhlcml0ID0gdGhpcy5mcmFtZXNbVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgMi8qRU5UUklFUyovKSArIDEvKklOSEVSSVQqL107XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBzbG90J3Mge0BsaW5rIFNsb3QjY29sb3J9LiAqL1xuZXhwb3J0IGNsYXNzIFJHQkFUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUgaW1wbGVtZW50cyBTbG90VGltZWxpbmUge1xuXHRzbG90SW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHNsb3RJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFtcblx0XHRcdFByb3BlcnR5LnJnYiArIFwifFwiICsgc2xvdEluZGV4LFxuXHRcdFx0UHJvcGVydHkuYWxwaGEgKyBcInxcIiArIHNsb3RJbmRleFxuXHRcdF0pO1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHR9XG5cblx0Z2V0RnJhbWVFbnRyaWVzICgpIHtcblx0XHRyZXR1cm4gNS8qRU5UUklFUyovO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgaW4gc2Vjb25kcywgcmVkLCBncmVlbiwgYmx1ZSwgYW5kIGFscGhhIGZvciB0aGUgc3BlY2lmaWVkIGtleSBmcmFtZS4gKi9cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG5cdFx0ZnJhbWUgKj0gNS8qRU5UUklFUyovO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAxLypSKi9dID0gcjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDIvKkcqL10gPSBnO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMy8qQiovXSA9IGI7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyA0LypBKi9dID0gYTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgc2xvdCA9IHNrZWxldG9uLnNsb3RzW3RoaXMuc2xvdEluZGV4XTtcblx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHJldHVybjtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRsZXQgY29sb3IgPSBzbG90LmNvbG9yO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRsZXQgc2V0dXAgPSBzbG90LmRhdGEuY29sb3I7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Y29sb3Iuc2V0RnJvbUNvbG9yKHNldHVwKTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Y29sb3IuYWRkKChzZXR1cC5yIC0gY29sb3IucikgKiBhbHBoYSwgKHNldHVwLmcgLSBjb2xvci5nKSAqIGFscGhhLCAoc2V0dXAuYiAtIGNvbG9yLmIpICogYWxwaGEsXG5cdFx0XHRcdFx0XHQoc2V0dXAuYSAtIGNvbG9yLmEpICogYWxwaGEpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCByID0gMCwgZyA9IDAsIGIgPSAwLCBhID0gMDtcblx0XHRsZXQgaSA9IFRpbWVsaW5lLnNlYXJjaChmcmFtZXMsIHRpbWUsIDUvKkVOVFJJRVMqLyk7XG5cdFx0bGV0IGN1cnZlVHlwZSA9IHRoaXMuY3VydmVzW2kgLyA1LypFTlRSSUVTKi9dO1xuXHRcdHN3aXRjaCAoY3VydmVUeXBlKSB7XG5cdFx0XHRjYXNlIDAvKkxJTkVBUiovOlxuXHRcdFx0XHRsZXQgYmVmb3JlID0gZnJhbWVzW2ldO1xuXHRcdFx0XHRyID0gZnJhbWVzW2kgKyAxLypSKi9dO1xuXHRcdFx0XHRnID0gZnJhbWVzW2kgKyAyLypHKi9dO1xuXHRcdFx0XHRiID0gZnJhbWVzW2kgKyAzLypCKi9dO1xuXHRcdFx0XHRhID0gZnJhbWVzW2kgKyA0LypBKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDUvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHRyICs9IChmcmFtZXNbaSArIDUvKkVOVFJJRVMqLyArIDEvKlIqL10gLSByKSAqIHQ7XG5cdFx0XHRcdGcgKz0gKGZyYW1lc1tpICsgNS8qRU5UUklFUyovICsgMi8qRyovXSAtIGcpICogdDtcblx0XHRcdFx0YiArPSAoZnJhbWVzW2kgKyA1LypFTlRSSUVTKi8gKyAzLypCKi9dIC0gYikgKiB0O1xuXHRcdFx0XHRhICs9IChmcmFtZXNbaSArIDUvKkVOVFJJRVMqLyArIDQvKkEqL10gLSBhKSAqIHQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdHIgPSBmcmFtZXNbaSArIDEvKlIqL107XG5cdFx0XHRcdGcgPSBmcmFtZXNbaSArIDIvKkcqL107XG5cdFx0XHRcdGIgPSBmcmFtZXNbaSArIDMvKkIqL107XG5cdFx0XHRcdGEgPSBmcmFtZXNbaSArIDQvKkEqL107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0ciA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qUiovLCBjdXJ2ZVR5cGUgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGcgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDIvKkcqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGIgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDMvKkIqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiAyIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRhID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA0LypBKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogMyAtIDIvKkJFWklFUiovKTtcblx0XHR9XG5cdFx0aWYgKGFscGhhID09IDEpXG5cdFx0XHRjb2xvci5zZXQociwgZywgYiwgYSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXApIGNvbG9yLnNldEZyb21Db2xvcihzbG90LmRhdGEuY29sb3IpO1xuXHRcdFx0Y29sb3IuYWRkKChyIC0gY29sb3IucikgKiBhbHBoYSwgKGcgLSBjb2xvci5nKSAqIGFscGhhLCAoYiAtIGNvbG9yLmIpICogYWxwaGEsIChhIC0gY29sb3IuYSkgKiBhbHBoYSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgc2xvdCdzIHtAbGluayBTbG90I2NvbG9yfS4gKi9cbmV4cG9ydCBjbGFzcyBSR0JUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUgaW1wbGVtZW50cyBTbG90VGltZWxpbmUge1xuXHRzbG90SW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHNsb3RJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFtcblx0XHRcdFByb3BlcnR5LnJnYiArIFwifFwiICsgc2xvdEluZGV4XG5cdFx0XSk7XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiA0LypFTlRSSUVTKi87XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBpbiBzZWNvbmRzLCByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSB7XG5cdFx0ZnJhbWUgPDw9IDI7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDEvKlIqL10gPSByO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMi8qRyovXSA9IGc7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAzLypCKi9dID0gYjtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgc2xvdCA9IHNrZWxldG9uLnNsb3RzW3RoaXMuc2xvdEluZGV4XTtcblx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHJldHVybjtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRsZXQgY29sb3IgPSBzbG90LmNvbG9yO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRsZXQgc2V0dXAgPSBzbG90LmRhdGEuY29sb3I7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Y29sb3IuciA9IHNldHVwLnI7XG5cdFx0XHRcdFx0Y29sb3IuZyA9IHNldHVwLmc7XG5cdFx0XHRcdFx0Y29sb3IuYiA9IHNldHVwLmI7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGNvbG9yLnIgKz0gKHNldHVwLnIgLSBjb2xvci5yKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbG9yLmcgKz0gKHNldHVwLmcgLSBjb2xvci5nKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbG9yLmIgKz0gKHNldHVwLmIgLSBjb2xvci5iKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCByID0gMCwgZyA9IDAsIGIgPSAwO1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgNC8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSA+PiAyXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0ciA9IGZyYW1lc1tpICsgMS8qUiovXTtcblx0XHRcdFx0ZyA9IGZyYW1lc1tpICsgMi8qRyovXTtcblx0XHRcdFx0YiA9IGZyYW1lc1tpICsgMy8qQiovXTtcblx0XHRcdFx0bGV0IHQgPSAodGltZSAtIGJlZm9yZSkgLyAoZnJhbWVzW2kgKyA0LypFTlRSSUVTKi9dIC0gYmVmb3JlKTtcblx0XHRcdFx0ciArPSAoZnJhbWVzW2kgKyA0LypFTlRSSUVTKi8gKyAxLypSKi9dIC0gcikgKiB0O1xuXHRcdFx0XHRnICs9IChmcmFtZXNbaSArIDQvKkVOVFJJRVMqLyArIDIvKkcqL10gLSBnKSAqIHQ7XG5cdFx0XHRcdGIgKz0gKGZyYW1lc1tpICsgNC8qRU5UUklFUyovICsgMy8qQiovXSAtIGIpICogdDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0ciA9IGZyYW1lc1tpICsgMS8qUiovXTtcblx0XHRcdFx0ZyA9IGZyYW1lc1tpICsgMi8qRyovXTtcblx0XHRcdFx0YiA9IGZyYW1lc1tpICsgMy8qQiovXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAxLypSKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0ZyA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qRyovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0YiA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMy8qQiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDIgLSAyLypCRVpJRVIqLyk7XG5cdFx0fVxuXHRcdGlmIChhbHBoYSA9PSAxKSB7XG5cdFx0XHRjb2xvci5yID0gcjtcblx0XHRcdGNvbG9yLmcgPSBnO1xuXHRcdFx0Y29sb3IuYiA9IGI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkge1xuXHRcdFx0XHRsZXQgc2V0dXAgPSBzbG90LmRhdGEuY29sb3I7XG5cdFx0XHRcdGNvbG9yLnIgPSBzZXR1cC5yO1xuXHRcdFx0XHRjb2xvci5nID0gc2V0dXAuZztcblx0XHRcdFx0Y29sb3IuYiA9IHNldHVwLmI7XG5cdFx0XHR9XG5cdFx0XHRjb2xvci5yICs9IChyIC0gY29sb3IucikgKiBhbHBoYTtcblx0XHRcdGNvbG9yLmcgKz0gKGcgLSBjb2xvci5nKSAqIGFscGhhO1xuXHRcdFx0Y29sb3IuYiArPSAoYiAtIGNvbG9yLmIpICogYWxwaGE7XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3NoZWFyWH0gYW5kIHtAbGluayBCb25lI3NoZWFyWX0uICovXG5leHBvcnQgY2xhc3MgQWxwaGFUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUxIGltcGxlbWVudHMgU2xvdFRpbWVsaW5lIHtcblx0c2xvdEluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBzbG90SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS5hbHBoYSArIFwifFwiICsgc2xvdEluZGV4KTtcblx0XHR0aGlzLnNsb3RJbmRleCA9IHNsb3RJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgc2xvdCA9IHNrZWxldG9uLnNsb3RzW3RoaXMuc2xvdEluZGV4XTtcblx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHJldHVybjtcblxuXHRcdGxldCBjb2xvciA9IHNsb3QuY29sb3I7XG5cdFx0aWYgKHRpbWUgPCB0aGlzLmZyYW1lc1swXSkge1xuXHRcdFx0bGV0IHNldHVwID0gc2xvdC5kYXRhLmNvbG9yO1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdGNvbG9yLmEgPSBzZXR1cC5hO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjb2xvci5hICs9IChzZXR1cC5hIC0gY29sb3IuYSkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgYSA9IHRoaXMuZ2V0Q3VydmVWYWx1ZSh0aW1lKTtcblx0XHRpZiAoYWxwaGEgPT0gMSlcblx0XHRcdGNvbG9yLmEgPSBhO1xuXHRcdGVsc2Uge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSBjb2xvci5hID0gc2xvdC5kYXRhLmNvbG9yLmE7XG5cdFx0XHRjb2xvci5hICs9IChhIC0gY29sb3IuYSkgKiBhbHBoYTtcblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBzbG90J3Mge0BsaW5rIFNsb3QjY29sb3J9IGFuZCB7QGxpbmsgU2xvdCNkYXJrQ29sb3J9IGZvciB0d28gY29sb3IgdGludGluZy4gKi9cbmV4cG9ydCBjbGFzcyBSR0JBMlRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZSBpbXBsZW1lbnRzIFNsb3RUaW1lbGluZSB7XG5cdHNsb3RJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgc2xvdEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgW1xuXHRcdFx0UHJvcGVydHkucmdiICsgXCJ8XCIgKyBzbG90SW5kZXgsXG5cdFx0XHRQcm9wZXJ0eS5hbHBoYSArIFwifFwiICsgc2xvdEluZGV4LFxuXHRcdFx0UHJvcGVydHkucmdiMiArIFwifFwiICsgc2xvdEluZGV4XG5cdFx0XSk7XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiA4LypFTlRSSUVTKi87XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBpbiBzZWNvbmRzLCBsaWdodCwgYW5kIGRhcmsgY29sb3JzIGZvciB0aGUgc3BlY2lmaWVkIGtleSBmcmFtZS4gKi9cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgcjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyLCByMjogbnVtYmVyLCBnMjogbnVtYmVyLCBiMjogbnVtYmVyKSB7XG5cdFx0ZnJhbWUgPDw9IDM7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDEvKlIqL10gPSByO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMi8qRyovXSA9IGc7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAzLypCKi9dID0gYjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDQvKkEqL10gPSBhO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgNS8qUjIqL10gPSByMjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDYvKkcyKi9dID0gZzI7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyA3LypCMiovXSA9IGIyO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBzbG90ID0gc2tlbGV0b24uc2xvdHNbdGhpcy5zbG90SW5kZXhdO1xuXHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGxldCBsaWdodCA9IHNsb3QuY29sb3IsIGRhcmsgPSBzbG90LmRhcmtDb2xvciE7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdGxldCBzZXR1cExpZ2h0ID0gc2xvdC5kYXRhLmNvbG9yLCBzZXR1cERhcmsgPSBzbG90LmRhdGEuZGFya0NvbG9yITtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRsaWdodC5zZXRGcm9tQ29sb3Ioc2V0dXBMaWdodCk7XG5cdFx0XHRcdFx0ZGFyay5yID0gc2V0dXBEYXJrLnI7XG5cdFx0XHRcdFx0ZGFyay5nID0gc2V0dXBEYXJrLmc7XG5cdFx0XHRcdFx0ZGFyay5iID0gc2V0dXBEYXJrLmI7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGxpZ2h0LmFkZCgoc2V0dXBMaWdodC5yIC0gbGlnaHQucikgKiBhbHBoYSwgKHNldHVwTGlnaHQuZyAtIGxpZ2h0LmcpICogYWxwaGEsIChzZXR1cExpZ2h0LmIgLSBsaWdodC5iKSAqIGFscGhhLFxuXHRcdFx0XHRcdFx0KHNldHVwTGlnaHQuYSAtIGxpZ2h0LmEpICogYWxwaGEpO1xuXHRcdFx0XHRcdGRhcmsuciArPSAoc2V0dXBEYXJrLnIgLSBkYXJrLnIpICogYWxwaGE7XG5cdFx0XHRcdFx0ZGFyay5nICs9IChzZXR1cERhcmsuZyAtIGRhcmsuZykgKiBhbHBoYTtcblx0XHRcdFx0XHRkYXJrLmIgKz0gKHNldHVwRGFyay5iIC0gZGFyay5iKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCByID0gMCwgZyA9IDAsIGIgPSAwLCBhID0gMCwgcjIgPSAwLCBnMiA9IDAsIGIyID0gMDtcblx0XHRsZXQgaSA9IFRpbWVsaW5lLnNlYXJjaChmcmFtZXMsIHRpbWUsIDgvKkVOVFJJRVMqLyk7XG5cdFx0bGV0IGN1cnZlVHlwZSA9IHRoaXMuY3VydmVzW2kgPj4gM107XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdHIgPSBmcmFtZXNbaSArIDEvKlIqL107XG5cdFx0XHRcdGcgPSBmcmFtZXNbaSArIDIvKkcqL107XG5cdFx0XHRcdGIgPSBmcmFtZXNbaSArIDMvKkIqL107XG5cdFx0XHRcdGEgPSBmcmFtZXNbaSArIDQvKkEqL107XG5cdFx0XHRcdHIyID0gZnJhbWVzW2kgKyA1LypSMiovXTtcblx0XHRcdFx0ZzIgPSBmcmFtZXNbaSArIDYvKkcyKi9dO1xuXHRcdFx0XHRiMiA9IGZyYW1lc1tpICsgNy8qQjIqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgOC8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdHIgKz0gKGZyYW1lc1tpICsgOC8qRU5UUklFUyovICsgMS8qUiovXSAtIHIpICogdDtcblx0XHRcdFx0ZyArPSAoZnJhbWVzW2kgKyA4LypFTlRSSUVTKi8gKyAyLypHKi9dIC0gZykgKiB0O1xuXHRcdFx0XHRiICs9IChmcmFtZXNbaSArIDgvKkVOVFJJRVMqLyArIDMvKkIqL10gLSBiKSAqIHQ7XG5cdFx0XHRcdGEgKz0gKGZyYW1lc1tpICsgOC8qRU5UUklFUyovICsgNC8qQSovXSAtIGEpICogdDtcblx0XHRcdFx0cjIgKz0gKGZyYW1lc1tpICsgOC8qRU5UUklFUyovICsgNS8qUjIqL10gLSByMikgKiB0O1xuXHRcdFx0XHRnMiArPSAoZnJhbWVzW2kgKyA4LypFTlRSSUVTKi8gKyA2LypHMiovXSAtIGcyKSAqIHQ7XG5cdFx0XHRcdGIyICs9IChmcmFtZXNbaSArIDgvKkVOVFJJRVMqLyArIDcvKkIyKi9dIC0gYjIpICogdDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0ciA9IGZyYW1lc1tpICsgMS8qUiovXTtcblx0XHRcdFx0ZyA9IGZyYW1lc1tpICsgMi8qRyovXTtcblx0XHRcdFx0YiA9IGZyYW1lc1tpICsgMy8qQiovXTtcblx0XHRcdFx0YSA9IGZyYW1lc1tpICsgNC8qQSovXTtcblx0XHRcdFx0cjIgPSBmcmFtZXNbaSArIDUvKlIyKi9dO1xuXHRcdFx0XHRnMiA9IGZyYW1lc1tpICsgNi8qRzIqL107XG5cdFx0XHRcdGIyID0gZnJhbWVzW2kgKyA3LypCMiovXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAxLypSKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0ZyA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qRyovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0YiA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMy8qQiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDIgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGEgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDQvKkEqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiAzIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRyMiA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgNS8qUjIqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiA0IC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRnMiA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgNi8qRzIqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiA1IC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRiMiA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgNy8qQjIqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiA2IC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblxuXHRcdGlmIChhbHBoYSA9PSAxKSB7XG5cdFx0XHRsaWdodC5zZXQociwgZywgYiwgYSk7XG5cdFx0XHRkYXJrLnIgPSByMjtcblx0XHRcdGRhcmsuZyA9IGcyO1xuXHRcdFx0ZGFyay5iID0gYjI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkge1xuXHRcdFx0XHRsaWdodC5zZXRGcm9tQ29sb3Ioc2xvdC5kYXRhLmNvbG9yKTtcblx0XHRcdFx0bGV0IHNldHVwRGFyayA9IHNsb3QuZGF0YS5kYXJrQ29sb3IhO1xuXHRcdFx0XHRkYXJrLnIgPSBzZXR1cERhcmsucjtcblx0XHRcdFx0ZGFyay5nID0gc2V0dXBEYXJrLmc7XG5cdFx0XHRcdGRhcmsuYiA9IHNldHVwRGFyay5iO1xuXHRcdFx0fVxuXHRcdFx0bGlnaHQuYWRkKChyIC0gbGlnaHQucikgKiBhbHBoYSwgKGcgLSBsaWdodC5nKSAqIGFscGhhLCAoYiAtIGxpZ2h0LmIpICogYWxwaGEsIChhIC0gbGlnaHQuYSkgKiBhbHBoYSk7XG5cdFx0XHRkYXJrLnIgKz0gKHIyIC0gZGFyay5yKSAqIGFscGhhO1xuXHRcdFx0ZGFyay5nICs9IChnMiAtIGRhcmsuZykgKiBhbHBoYTtcblx0XHRcdGRhcmsuYiArPSAoYjIgLSBkYXJrLmIpICogYWxwaGE7XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgc2xvdCdzIHtAbGluayBTbG90I2NvbG9yfSBhbmQge0BsaW5rIFNsb3QjZGFya0NvbG9yfSBmb3IgdHdvIGNvbG9yIHRpbnRpbmcuICovXG5leHBvcnQgY2xhc3MgUkdCMlRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZSBpbXBsZW1lbnRzIFNsb3RUaW1lbGluZSB7XG5cdHNsb3RJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgc2xvdEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgW1xuXHRcdFx0UHJvcGVydHkucmdiICsgXCJ8XCIgKyBzbG90SW5kZXgsXG5cdFx0XHRQcm9wZXJ0eS5yZ2IyICsgXCJ8XCIgKyBzbG90SW5kZXhcblx0XHRdKTtcblx0XHR0aGlzLnNsb3RJbmRleCA9IHNsb3RJbmRleDtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDcvKkVOVFJJRVMqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0aW1lIGluIHNlY29uZHMsIGxpZ2h0LCBhbmQgZGFyayBjb2xvcnMgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCByMjogbnVtYmVyLCBnMjogbnVtYmVyLCBiMjogbnVtYmVyKSB7XG5cdFx0ZnJhbWUgKj0gNy8qRU5UUklFUyovO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAxLypSKi9dID0gcjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDIvKkcqL10gPSBnO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMy8qQiovXSA9IGI7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyA0LypSMiovXSA9IHIyO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgNS8qRzIqL10gPSBnMjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDYvKkIyKi9dID0gYjI7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IHNsb3QgPSBza2VsZXRvbi5zbG90c1t0aGlzLnNsb3RJbmRleF07XG5cdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0bGV0IGxpZ2h0ID0gc2xvdC5jb2xvciwgZGFyayA9IHNsb3QuZGFya0NvbG9yITtcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkge1xuXHRcdFx0bGV0IHNldHVwTGlnaHQgPSBzbG90LmRhdGEuY29sb3IsIHNldHVwRGFyayA9IHNsb3QuZGF0YS5kYXJrQ29sb3IhO1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdGxpZ2h0LnIgPSBzZXR1cExpZ2h0LnI7XG5cdFx0XHRcdFx0bGlnaHQuZyA9IHNldHVwTGlnaHQuZztcblx0XHRcdFx0XHRsaWdodC5iID0gc2V0dXBMaWdodC5iO1xuXHRcdFx0XHRcdGRhcmsuciA9IHNldHVwRGFyay5yO1xuXHRcdFx0XHRcdGRhcmsuZyA9IHNldHVwRGFyay5nO1xuXHRcdFx0XHRcdGRhcmsuYiA9IHNldHVwRGFyay5iO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRsaWdodC5yICs9IChzZXR1cExpZ2h0LnIgLSBsaWdodC5yKSAqIGFscGhhO1xuXHRcdFx0XHRcdGxpZ2h0LmcgKz0gKHNldHVwTGlnaHQuZyAtIGxpZ2h0LmcpICogYWxwaGE7XG5cdFx0XHRcdFx0bGlnaHQuYiArPSAoc2V0dXBMaWdodC5iIC0gbGlnaHQuYikgKiBhbHBoYTtcblx0XHRcdFx0XHRkYXJrLnIgKz0gKHNldHVwRGFyay5yIC0gZGFyay5yKSAqIGFscGhhO1xuXHRcdFx0XHRcdGRhcmsuZyArPSAoc2V0dXBEYXJrLmcgLSBkYXJrLmcpICogYWxwaGE7XG5cdFx0XHRcdFx0ZGFyay5iICs9IChzZXR1cERhcmsuYiAtIGRhcmsuYikgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgciA9IDAsIGcgPSAwLCBiID0gMCwgYSA9IDAsIHIyID0gMCwgZzIgPSAwLCBiMiA9IDA7XG5cdFx0bGV0IGkgPSBUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCA3LypFTlRSSUVTKi8pO1xuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpIC8gNy8qRU5UUklFUyovXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0ciA9IGZyYW1lc1tpICsgMS8qUiovXTtcblx0XHRcdFx0ZyA9IGZyYW1lc1tpICsgMi8qRyovXTtcblx0XHRcdFx0YiA9IGZyYW1lc1tpICsgMy8qQiovXTtcblx0XHRcdFx0cjIgPSBmcmFtZXNbaSArIDQvKlIyKi9dO1xuXHRcdFx0XHRnMiA9IGZyYW1lc1tpICsgNS8qRzIqL107XG5cdFx0XHRcdGIyID0gZnJhbWVzW2kgKyA2LypCMiovXTtcblx0XHRcdFx0bGV0IHQgPSAodGltZSAtIGJlZm9yZSkgLyAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi9dIC0gYmVmb3JlKTtcblx0XHRcdFx0ciArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyAxLypSKi9dIC0gcikgKiB0O1xuXHRcdFx0XHRnICs9IChmcmFtZXNbaSArIDcvKkVOVFJJRVMqLyArIDIvKkcqL10gLSBnKSAqIHQ7XG5cdFx0XHRcdGIgKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgMy8qQiovXSAtIGIpICogdDtcblx0XHRcdFx0cjIgKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgNC8qUjIqL10gLSByMikgKiB0O1xuXHRcdFx0XHRnMiArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyA1LypHMiovXSAtIGcyKSAqIHQ7XG5cdFx0XHRcdGIyICs9IChmcmFtZXNbaSArIDcvKkVOVFJJRVMqLyArIDYvKkIyKi9dIC0gYjIpICogdDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0ciA9IGZyYW1lc1tpICsgMS8qUiovXTtcblx0XHRcdFx0ZyA9IGZyYW1lc1tpICsgMi8qRyovXTtcblx0XHRcdFx0YiA9IGZyYW1lc1tpICsgMy8qQiovXTtcblx0XHRcdFx0cjIgPSBmcmFtZXNbaSArIDQvKlIyKi9dO1xuXHRcdFx0XHRnMiA9IGZyYW1lc1tpICsgNS8qRzIqL107XG5cdFx0XHRcdGIyID0gZnJhbWVzW2kgKyA2LypCMiovXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAxLypSKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0ZyA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qRyovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0YiA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMy8qQiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDIgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHIyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA0LypSMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDMgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGcyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA1LypHMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDQgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGIyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA2LypCMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDUgLSAyLypCRVpJRVIqLyk7XG5cdFx0fVxuXG5cdFx0aWYgKGFscGhhID09IDEpIHtcblx0XHRcdGxpZ2h0LnIgPSByO1xuXHRcdFx0bGlnaHQuZyA9IGc7XG5cdFx0XHRsaWdodC5iID0gYjtcblx0XHRcdGRhcmsuciA9IHIyO1xuXHRcdFx0ZGFyay5nID0gZzI7XG5cdFx0XHRkYXJrLmIgPSBiMjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSB7XG5cdFx0XHRcdGxldCBzZXR1cExpZ2h0ID0gc2xvdC5kYXRhLmNvbG9yLCBzZXR1cERhcmsgPSBzbG90LmRhdGEuZGFya0NvbG9yITtcblx0XHRcdFx0bGlnaHQuciA9IHNldHVwTGlnaHQucjtcblx0XHRcdFx0bGlnaHQuZyA9IHNldHVwTGlnaHQuZztcblx0XHRcdFx0bGlnaHQuYiA9IHNldHVwTGlnaHQuYjtcblx0XHRcdFx0ZGFyay5yID0gc2V0dXBEYXJrLnI7XG5cdFx0XHRcdGRhcmsuZyA9IHNldHVwRGFyay5nO1xuXHRcdFx0XHRkYXJrLmIgPSBzZXR1cERhcmsuYjtcblx0XHRcdH1cblx0XHRcdGxpZ2h0LnIgKz0gKHIgLSBsaWdodC5yKSAqIGFscGhhO1xuXHRcdFx0bGlnaHQuZyArPSAoZyAtIGxpZ2h0LmcpICogYWxwaGE7XG5cdFx0XHRsaWdodC5iICs9IChiIC0gbGlnaHQuYikgKiBhbHBoYTtcblx0XHRcdGRhcmsuciArPSAocjIgLSBkYXJrLnIpICogYWxwaGE7XG5cdFx0XHRkYXJrLmcgKz0gKGcyIC0gZGFyay5nKSAqIGFscGhhO1xuXHRcdFx0ZGFyay5iICs9IChiMiAtIGRhcmsuYikgKiBhbHBoYTtcblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBzbG90J3Mge0BsaW5rIFNsb3QjYXR0YWNobWVudH0uICovXG5leHBvcnQgY2xhc3MgQXR0YWNobWVudFRpbWVsaW5lIGV4dGVuZHMgVGltZWxpbmUgaW1wbGVtZW50cyBTbG90VGltZWxpbmUge1xuXHRzbG90SW5kZXggPSAwO1xuXG5cdC8qKiBUaGUgYXR0YWNobWVudCBuYW1lIGZvciBlYWNoIGtleSBmcmFtZS4gTWF5IGNvbnRhaW4gbnVsbCB2YWx1ZXMgdG8gY2xlYXIgdGhlIGF0dGFjaG1lbnQuICovXG5cdGF0dGFjaG1lbnROYW1lczogQXJyYXk8c3RyaW5nIHwgbnVsbD47XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgc2xvdEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS5hdHRhY2htZW50ICsgXCJ8XCIgKyBzbG90SW5kZXhcblx0XHRdKTtcblx0XHR0aGlzLnNsb3RJbmRleCA9IHNsb3RJbmRleDtcblx0XHR0aGlzLmF0dGFjaG1lbnROYW1lcyA9IG5ldyBBcnJheTxzdHJpbmc+KGZyYW1lQ291bnQpO1xuXHR9XG5cblx0Z2V0RnJhbWVDb3VudCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnJhbWVzLmxlbmd0aDtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0aW1lIGluIHNlY29uZHMgYW5kIHRoZSBhdHRhY2htZW50IG5hbWUgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBhdHRhY2htZW50TmFtZTogc3RyaW5nIHwgbnVsbCkge1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdFx0dGhpcy5hdHRhY2htZW50TmFtZXNbZnJhbWVdID0gYXR0YWNobWVudE5hbWU7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IHNsb3QgPSBza2VsZXRvbi5zbG90c1t0aGlzLnNsb3RJbmRleF07XG5cdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSByZXR1cm47XG5cblx0XHRpZiAoZGlyZWN0aW9uID09IE1peERpcmVjdGlvbi5taXhPdXQpIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkgdGhpcy5zZXRBdHRhY2htZW50KHNrZWxldG9uLCBzbG90LCBzbG90LmRhdGEuYXR0YWNobWVudE5hbWUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICh0aW1lIDwgdGhpcy5mcmFtZXNbMF0pIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCB8fCBibGVuZCA9PSBNaXhCbGVuZC5maXJzdCkgdGhpcy5zZXRBdHRhY2htZW50KHNrZWxldG9uLCBzbG90LCBzbG90LmRhdGEuYXR0YWNobWVudE5hbWUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuc2V0QXR0YWNobWVudChza2VsZXRvbiwgc2xvdCwgdGhpcy5hdHRhY2htZW50TmFtZXNbVGltZWxpbmUuc2VhcmNoMSh0aGlzLmZyYW1lcywgdGltZSldKTtcblx0fVxuXG5cdHNldEF0dGFjaG1lbnQgKHNrZWxldG9uOiBTa2VsZXRvbiwgc2xvdDogU2xvdCwgYXR0YWNobWVudE5hbWU6IHN0cmluZyB8IG51bGwpIHtcblx0XHRzbG90LnNldEF0dGFjaG1lbnQoIWF0dGFjaG1lbnROYW1lID8gbnVsbCA6IHNrZWxldG9uLmdldEF0dGFjaG1lbnQodGhpcy5zbG90SW5kZXgsIGF0dGFjaG1lbnROYW1lKSk7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBzbG90J3Mge0BsaW5rIFNsb3QjZGVmb3JtfSB0byBkZWZvcm0gYSB7QGxpbmsgVmVydGV4QXR0YWNobWVudH0uICovXG5leHBvcnQgY2xhc3MgRGVmb3JtVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lIGltcGxlbWVudHMgU2xvdFRpbWVsaW5lIHtcblx0c2xvdEluZGV4ID0gMDtcblxuXHQvKiogVGhlIGF0dGFjaG1lbnQgdGhhdCB3aWxsIGJlIGRlZm9ybWVkLiAqL1xuXHRhdHRhY2htZW50OiBWZXJ0ZXhBdHRhY2htZW50O1xuXG5cdC8qKiBUaGUgdmVydGljZXMgZm9yIGVhY2gga2V5IGZyYW1lLiAqL1xuXHR2ZXJ0aWNlczogQXJyYXk8TnVtYmVyQXJyYXlMaWtlPjtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBzbG90SW5kZXg6IG51bWJlciwgYXR0YWNobWVudDogVmVydGV4QXR0YWNobWVudCkge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS5kZWZvcm0gKyBcInxcIiArIHNsb3RJbmRleCArIFwifFwiICsgYXR0YWNobWVudC5pZFxuXHRcdF0pO1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHRcdHRoaXMuYXR0YWNobWVudCA9IGF0dGFjaG1lbnQ7XG5cdFx0dGhpcy52ZXJ0aWNlcyA9IG5ldyBBcnJheTxOdW1iZXJBcnJheUxpa2U+KGZyYW1lQ291bnQpO1xuXHR9XG5cblx0Z2V0RnJhbWVDb3VudCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnJhbWVzLmxlbmd0aDtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0aW1lIGluIHNlY29uZHMgYW5kIHRoZSB2ZXJ0aWNlcyBmb3IgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUuXG5cdCAqIEBwYXJhbSB2ZXJ0aWNlcyBWZXJ0ZXggcG9zaXRpb25zIGZvciBhbiB1bndlaWdodGVkIFZlcnRleEF0dGFjaG1lbnQsIG9yIGRlZm9ybSBvZmZzZXRzIGlmIGl0IGhhcyB3ZWlnaHRzLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlKSB7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLnZlcnRpY2VzW2ZyYW1lXSA9IHZlcnRpY2VzO1xuXHR9XG5cblx0LyoqIEBwYXJhbSB2YWx1ZTEgSWdub3JlZCAoMCBpcyB1c2VkIGZvciBhIGRlZm9ybSB0aW1lbGluZSkuXG5cdCAqIEBwYXJhbSB2YWx1ZTIgSWdub3JlZCAoMSBpcyB1c2VkIGZvciBhIGRlZm9ybSB0aW1lbGluZSkuICovXG5cdHNldEJlemllciAoYmV6aWVyOiBudW1iZXIsIGZyYW1lOiBudW1iZXIsIHZhbHVlOiBudW1iZXIsIHRpbWUxOiBudW1iZXIsIHZhbHVlMTogbnVtYmVyLCBjeDE6IG51bWJlciwgY3kxOiBudW1iZXIsIGN4MjogbnVtYmVyLFxuXHRcdGN5MjogbnVtYmVyLCB0aW1lMjogbnVtYmVyLCB2YWx1ZTI6IG51bWJlcikge1xuXHRcdGxldCBjdXJ2ZXMgPSB0aGlzLmN1cnZlcztcblx0XHRsZXQgaSA9IHRoaXMuZ2V0RnJhbWVDb3VudCgpICsgYmV6aWVyICogMTgvKkJFWklFUl9TSVpFKi87XG5cdFx0aWYgKHZhbHVlID09IDApIGN1cnZlc1tmcmFtZV0gPSAyLypCRVpJRVIqLyArIGk7XG5cdFx0bGV0IHRtcHggPSAodGltZTEgLSBjeDEgKiAyICsgY3gyKSAqIDAuMDMsIHRtcHkgPSBjeTIgKiAwLjAzIC0gY3kxICogMC4wNjtcblx0XHRsZXQgZGRkeCA9ICgoY3gxIC0gY3gyKSAqIDMgLSB0aW1lMSArIHRpbWUyKSAqIDAuMDA2LCBkZGR5ID0gKGN5MSAtIGN5MiArIDAuMzMzMzMzMzMpICogMC4wMTg7XG5cdFx0bGV0IGRkeCA9IHRtcHggKiAyICsgZGRkeCwgZGR5ID0gdG1weSAqIDIgKyBkZGR5O1xuXHRcdGxldCBkeCA9IChjeDEgLSB0aW1lMSkgKiAwLjMgKyB0bXB4ICsgZGRkeCAqIDAuMTY2NjY2NjcsIGR5ID0gY3kxICogMC4zICsgdG1weSArIGRkZHkgKiAwLjE2NjY2NjY3O1xuXHRcdGxldCB4ID0gdGltZTEgKyBkeCwgeSA9IGR5O1xuXHRcdGZvciAobGV0IG4gPSBpICsgMTgvKkJFWklFUl9TSVpFKi87IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdGN1cnZlc1tpXSA9IHg7XG5cdFx0XHRjdXJ2ZXNbaSArIDFdID0geTtcblx0XHRcdGR4ICs9IGRkeDtcblx0XHRcdGR5ICs9IGRkeTtcblx0XHRcdGRkeCArPSBkZGR4O1xuXHRcdFx0ZGR5ICs9IGRkZHk7XG5cdFx0XHR4ICs9IGR4O1xuXHRcdFx0eSArPSBkeTtcblx0XHR9XG5cdH1cblxuXHRnZXRDdXJ2ZVBlcmNlbnQgKHRpbWU6IG51bWJlciwgZnJhbWU6IG51bWJlcikge1xuXHRcdGxldCBjdXJ2ZXMgPSB0aGlzLmN1cnZlcztcblx0XHRsZXQgaSA9IGN1cnZlc1tmcmFtZV07XG5cdFx0c3dpdGNoIChpKSB7XG5cdFx0XHRjYXNlIDAvKkxJTkVBUiovOlxuXHRcdFx0XHRsZXQgeCA9IHRoaXMuZnJhbWVzW2ZyYW1lXTtcblx0XHRcdFx0cmV0dXJuICh0aW1lIC0geCkgLyAodGhpcy5mcmFtZXNbZnJhbWUgKyB0aGlzLmdldEZyYW1lRW50cmllcygpXSAtIHgpO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdHJldHVybiAwO1xuXHRcdH1cblx0XHRpIC09IDIvKkJFWklFUiovO1xuXHRcdGlmIChjdXJ2ZXNbaV0gPiB0aW1lKSB7XG5cdFx0XHRsZXQgeCA9IHRoaXMuZnJhbWVzW2ZyYW1lXTtcblx0XHRcdHJldHVybiBjdXJ2ZXNbaSArIDFdICogKHRpbWUgLSB4KSAvIChjdXJ2ZXNbaV0gLSB4KTtcblx0XHR9XG5cdFx0bGV0IG4gPSBpICsgMTgvKkJFWklFUl9TSVpFKi87XG5cdFx0Zm9yIChpICs9IDI7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdGlmIChjdXJ2ZXNbaV0gPj0gdGltZSkge1xuXHRcdFx0XHRsZXQgeCA9IGN1cnZlc1tpIC0gMl0sIHkgPSBjdXJ2ZXNbaSAtIDFdO1xuXHRcdFx0XHRyZXR1cm4geSArICh0aW1lIC0geCkgLyAoY3VydmVzW2ldIC0geCkgKiAoY3VydmVzW2kgKyAxXSAtIHkpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRsZXQgeCA9IGN1cnZlc1tuIC0gMl0sIHkgPSBjdXJ2ZXNbbiAtIDFdO1xuXHRcdHJldHVybiB5ICsgKDEgLSB5KSAqICh0aW1lIC0geCkgLyAodGhpcy5mcmFtZXNbZnJhbWUgKyB0aGlzLmdldEZyYW1lRW50cmllcygpXSAtIHgpO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBmaXJlZEV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IHNsb3Q6IFNsb3QgPSBza2VsZXRvbi5zbG90c1t0aGlzLnNsb3RJbmRleF07XG5cdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSByZXR1cm47XG5cdFx0bGV0IHNsb3RBdHRhY2htZW50OiBBdHRhY2htZW50IHwgbnVsbCA9IHNsb3QuZ2V0QXR0YWNobWVudCgpO1xuXHRcdGlmICghc2xvdEF0dGFjaG1lbnQpIHJldHVybjtcblx0XHRpZiAoIShzbG90QXR0YWNobWVudCBpbnN0YW5jZW9mIFZlcnRleEF0dGFjaG1lbnQpIHx8ICg8VmVydGV4QXR0YWNobWVudD5zbG90QXR0YWNobWVudCkudGltZWxpbmVBdHRhY2htZW50ICE9IHRoaXMuYXR0YWNobWVudCkgcmV0dXJuO1xuXG5cdFx0bGV0IGRlZm9ybTogQXJyYXk8bnVtYmVyPiA9IHNsb3QuZGVmb3JtO1xuXHRcdGlmIChkZWZvcm0ubGVuZ3RoID09IDApIGJsZW5kID0gTWl4QmxlbmQuc2V0dXA7XG5cblx0XHRsZXQgdmVydGljZXMgPSB0aGlzLnZlcnRpY2VzO1xuXHRcdGxldCB2ZXJ0ZXhDb3VudCA9IHZlcnRpY2VzWzBdLmxlbmd0aDtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkge1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdGRlZm9ybS5sZW5ndGggPSAwO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRpZiAoYWxwaGEgPT0gMSkge1xuXHRcdFx0XHRcdFx0ZGVmb3JtLmxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGRlZm9ybS5sZW5ndGggPSB2ZXJ0ZXhDb3VudDtcblx0XHRcdFx0XHRsZXQgdmVydGV4QXR0YWNobWVudCA9IDxWZXJ0ZXhBdHRhY2htZW50PnNsb3RBdHRhY2htZW50O1xuXHRcdFx0XHRcdGlmICghdmVydGV4QXR0YWNobWVudC5ib25lcykge1xuXHRcdFx0XHRcdFx0Ly8gVW53ZWlnaHRlZCB2ZXJ0ZXggcG9zaXRpb25zLlxuXHRcdFx0XHRcdFx0bGV0IHNldHVwVmVydGljZXMgPSB2ZXJ0ZXhBdHRhY2htZW50LnZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKVxuXHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gKz0gKHNldHVwVmVydGljZXNbaV0gLSBkZWZvcm1baV0pICogYWxwaGE7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIFdlaWdodGVkIGRlZm9ybSBvZmZzZXRzLlxuXHRcdFx0XHRcdFx0YWxwaGEgPSAxIC0gYWxwaGE7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSAqPSBhbHBoYTtcblx0XHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0ZGVmb3JtLmxlbmd0aCA9IHZlcnRleENvdW50O1xuXHRcdGlmICh0aW1lID49IGZyYW1lc1tmcmFtZXMubGVuZ3RoIC0gMV0pIHtcblx0XHRcdGxldCBsYXN0VmVydGljZXMgPSB2ZXJ0aWNlc1tmcmFtZXMubGVuZ3RoIC0gMV07XG5cdFx0XHRpZiAoYWxwaGEgPT0gMSkge1xuXHRcdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuYWRkKSB7XG5cdFx0XHRcdFx0bGV0IHZlcnRleEF0dGFjaG1lbnQgPSBzbG90QXR0YWNobWVudCBhcyBWZXJ0ZXhBdHRhY2htZW50O1xuXHRcdFx0XHRcdGlmICghdmVydGV4QXR0YWNobWVudC5ib25lcykge1xuXHRcdFx0XHRcdFx0Ly8gVW53ZWlnaHRlZCB2ZXJ0ZXggcG9zaXRpb25zLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0bGV0IHNldHVwVmVydGljZXMgPSB2ZXJ0ZXhBdHRhY2htZW50LnZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKVxuXHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gKz0gbGFzdFZlcnRpY2VzW2ldIC0gc2V0dXBWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gV2VpZ2h0ZWQgZGVmb3JtIG9mZnNldHMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSBsYXN0VmVydGljZXNbaV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRVdGlscy5hcnJheUNvcHkobGFzdFZlcnRpY2VzLCAwLCBkZWZvcm0sIDAsIHZlcnRleENvdW50KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOiB7XG5cdFx0XHRcdFx0XHRsZXQgdmVydGV4QXR0YWNobWVudCA9IHNsb3RBdHRhY2htZW50IGFzIFZlcnRleEF0dGFjaG1lbnQ7XG5cdFx0XHRcdFx0XHRpZiAoIXZlcnRleEF0dGFjaG1lbnQuYm9uZXMpIHtcblx0XHRcdFx0XHRcdFx0Ly8gVW53ZWlnaHRlZCB2ZXJ0ZXggcG9zaXRpb25zLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0XHRsZXQgc2V0dXBWZXJ0aWNlcyA9IHZlcnRleEF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdGxldCBzZXR1cCA9IHNldHVwVmVydGljZXNbaV07XG5cdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldID0gc2V0dXAgKyAobGFzdFZlcnRpY2VzW2ldIC0gc2V0dXApICogYWxwaGE7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFdlaWdodGVkIGRlZm9ybSBvZmZzZXRzLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldID0gbGFzdFZlcnRpY2VzW2ldICogYWxwaGE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSAobGFzdFZlcnRpY2VzW2ldIC0gZGVmb3JtW2ldKSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5hZGQ6XG5cdFx0XHRcdFx0XHRsZXQgdmVydGV4QXR0YWNobWVudCA9IHNsb3RBdHRhY2htZW50IGFzIFZlcnRleEF0dGFjaG1lbnQ7XG5cdFx0XHRcdFx0XHRpZiAoIXZlcnRleEF0dGFjaG1lbnQuYm9uZXMpIHtcblx0XHRcdFx0XHRcdFx0Ly8gVW53ZWlnaHRlZCB2ZXJ0ZXggcG9zaXRpb25zLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0XHRsZXQgc2V0dXBWZXJ0aWNlcyA9IHZlcnRleEF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKylcblx0XHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gKz0gKGxhc3RWZXJ0aWNlc1tpXSAtIHNldHVwVmVydGljZXNbaV0pICogYWxwaGE7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBXZWlnaHRlZCBkZWZvcm0gb2Zmc2V0cywgd2l0aCBhbHBoYS5cblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKVxuXHRcdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSBsYXN0VmVydGljZXNbaV0gKiBhbHBoYTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEludGVycG9sYXRlIGJldHdlZW4gdGhlIHByZXZpb3VzIGZyYW1lIGFuZCB0aGUgY3VycmVudCBmcmFtZS5cblx0XHRsZXQgZnJhbWUgPSBUaW1lbGluZS5zZWFyY2gxKGZyYW1lcywgdGltZSk7XG5cdFx0bGV0IHBlcmNlbnQgPSB0aGlzLmdldEN1cnZlUGVyY2VudCh0aW1lLCBmcmFtZSk7XG5cdFx0bGV0IHByZXZWZXJ0aWNlcyA9IHZlcnRpY2VzW2ZyYW1lXTtcblx0XHRsZXQgbmV4dFZlcnRpY2VzID0gdmVydGljZXNbZnJhbWUgKyAxXTtcblxuXHRcdGlmIChhbHBoYSA9PSAxKSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuYWRkKSB7XG5cdFx0XHRcdGxldCB2ZXJ0ZXhBdHRhY2htZW50ID0gc2xvdEF0dGFjaG1lbnQgYXMgVmVydGV4QXR0YWNobWVudDtcblx0XHRcdFx0aWYgKCF2ZXJ0ZXhBdHRhY2htZW50LmJvbmVzKSB7XG5cdFx0XHRcdFx0Ly8gVW53ZWlnaHRlZCB2ZXJ0ZXggcG9zaXRpb25zLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdGxldCBzZXR1cFZlcnRpY2VzID0gdmVydGV4QXR0YWNobWVudC52ZXJ0aWNlcztcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspIHtcblx0XHRcdFx0XHRcdGxldCBwcmV2ID0gcHJldlZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IHByZXYgKyAobmV4dFZlcnRpY2VzW2ldIC0gcHJldikgKiBwZXJjZW50IC0gc2V0dXBWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gV2VpZ2h0ZWQgZGVmb3JtIG9mZnNldHMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgcHJldiA9IHByZXZWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSBwcmV2ICsgKG5leHRWZXJ0aWNlc1tpXSAtIHByZXYpICogcGVyY2VudDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuXHRcdFx0XHRcdGxldCBwcmV2ID0gcHJldlZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdGRlZm9ybVtpXSA9IHByZXYgKyAobmV4dFZlcnRpY2VzW2ldIC0gcHJldikgKiBwZXJjZW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDoge1xuXHRcdFx0XHRcdGxldCB2ZXJ0ZXhBdHRhY2htZW50ID0gc2xvdEF0dGFjaG1lbnQgYXMgVmVydGV4QXR0YWNobWVudDtcblx0XHRcdFx0XHRpZiAoIXZlcnRleEF0dGFjaG1lbnQuYm9uZXMpIHtcblx0XHRcdFx0XHRcdC8vIFVud2VpZ2h0ZWQgdmVydGV4IHBvc2l0aW9ucywgd2l0aCBhbHBoYS5cblx0XHRcdFx0XHRcdGxldCBzZXR1cFZlcnRpY2VzID0gdmVydGV4QXR0YWNobWVudC52ZXJ0aWNlcztcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQgcHJldiA9IHByZXZWZXJ0aWNlc1tpXSwgc2V0dXAgPSBzZXR1cFZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gPSBzZXR1cCArIChwcmV2ICsgKG5leHRWZXJ0aWNlc1tpXSAtIHByZXYpICogcGVyY2VudCAtIHNldHVwKSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBXZWlnaHRlZCBkZWZvcm0gb2Zmc2V0cywgd2l0aCBhbHBoYS5cblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQgcHJldiA9IHByZXZWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldID0gKHByZXYgKyAobmV4dFZlcnRpY2VzW2ldIC0gcHJldikgKiBwZXJjZW50KSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgcHJldiA9IHByZXZWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSAocHJldiArIChuZXh0VmVydGljZXNbaV0gLSBwcmV2KSAqIHBlcmNlbnQgLSBkZWZvcm1baV0pICogYWxwaGE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmFkZDpcblx0XHRcdFx0XHRsZXQgdmVydGV4QXR0YWNobWVudCA9IHNsb3RBdHRhY2htZW50IGFzIFZlcnRleEF0dGFjaG1lbnQ7XG5cdFx0XHRcdFx0aWYgKCF2ZXJ0ZXhBdHRhY2htZW50LmJvbmVzKSB7XG5cdFx0XHRcdFx0XHQvLyBVbndlaWdodGVkIHZlcnRleCBwb3NpdGlvbnMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0XHRsZXQgc2V0dXBWZXJ0aWNlcyA9IHZlcnRleEF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspIHtcblx0XHRcdFx0XHRcdFx0bGV0IHByZXYgPSBwcmV2VmVydGljZXNbaV07XG5cdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSAocHJldiArIChuZXh0VmVydGljZXNbaV0gLSBwcmV2KSAqIHBlcmNlbnQgLSBzZXR1cFZlcnRpY2VzW2ldKSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBXZWlnaHRlZCBkZWZvcm0gb2Zmc2V0cywgd2l0aCBhbHBoYS5cblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQgcHJldiA9IHByZXZWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IChwcmV2ICsgKG5leHRWZXJ0aWNlc1tpXSAtIHByZXYpICogcGVyY2VudCkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBGaXJlcyBhbiB7QGxpbmsgRXZlbnR9IHdoZW4gc3BlY2lmaWMgYW5pbWF0aW9uIHRpbWVzIGFyZSByZWFjaGVkLiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50VGltZWxpbmUgZXh0ZW5kcyBUaW1lbGluZSB7XG5cdHN0YXRpYyBwcm9wZXJ0eUlkcyA9IFtcIlwiICsgUHJvcGVydHkuZXZlbnRdO1xuXG5cdC8qKiBUaGUgZXZlbnQgZm9yIGVhY2gga2V5IGZyYW1lLiAqL1xuXHRldmVudHM6IEFycmF5PEV2ZW50PjtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgRXZlbnRUaW1lbGluZS5wcm9wZXJ0eUlkcyk7XG5cblx0XHR0aGlzLmV2ZW50cyA9IG5ldyBBcnJheTxFdmVudD4oZnJhbWVDb3VudCk7XG5cdH1cblxuXHRnZXRGcmFtZUNvdW50ICgpIHtcblx0XHRyZXR1cm4gdGhpcy5mcmFtZXMubGVuZ3RoO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgaW4gc2Vjb25kcyBhbmQgdGhlIGV2ZW50IGZvciB0aGUgc3BlY2lmaWVkIGtleSBmcmFtZS4gKi9cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIGV2ZW50OiBFdmVudCkge1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IGV2ZW50LnRpbWU7XG5cdFx0dGhpcy5ldmVudHNbZnJhbWVdID0gZXZlbnQ7XG5cdH1cblxuXHQvKiogRmlyZXMgZXZlbnRzIGZvciBmcmFtZXMgPiBgbGFzdFRpbWVgIGFuZCA8PSBgdGltZWAuICovXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZmlyZWRFdmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGlmICghZmlyZWRFdmVudHMpIHJldHVybjtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRsZXQgZnJhbWVDb3VudCA9IHRoaXMuZnJhbWVzLmxlbmd0aDtcblxuXHRcdGlmIChsYXN0VGltZSA+IHRpbWUpIHsgLy8gQXBwbHkgYWZ0ZXIgbGFzdFRpbWUgZm9yIGxvb3BlZCBhbmltYXRpb25zLlxuXHRcdFx0dGhpcy5hcHBseShza2VsZXRvbiwgbGFzdFRpbWUsIE51bWJlci5NQVhfVkFMVUUsIGZpcmVkRXZlbnRzLCBhbHBoYSwgYmxlbmQsIGRpcmVjdGlvbik7XG5cdFx0XHRsYXN0VGltZSA9IC0xO1xuXHRcdH0gZWxzZSBpZiAobGFzdFRpbWUgPj0gZnJhbWVzW2ZyYW1lQ291bnQgLSAxXSkgLy8gTGFzdCB0aW1lIGlzIGFmdGVyIGxhc3QgZnJhbWUuXG5cdFx0XHRyZXR1cm47XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHJldHVybjtcblxuXHRcdGxldCBpID0gMDtcblx0XHRpZiAobGFzdFRpbWUgPCBmcmFtZXNbMF0pXG5cdFx0XHRpID0gMDtcblx0XHRlbHNlIHtcblx0XHRcdGkgPSBUaW1lbGluZS5zZWFyY2gxKGZyYW1lcywgbGFzdFRpbWUpICsgMTtcblx0XHRcdGxldCBmcmFtZVRpbWUgPSBmcmFtZXNbaV07XG5cdFx0XHR3aGlsZSAoaSA+IDApIHsgLy8gRmlyZSBtdWx0aXBsZSBldmVudHMgd2l0aCB0aGUgc2FtZSBmcmFtZS5cblx0XHRcdFx0aWYgKGZyYW1lc1tpIC0gMV0gIT0gZnJhbWVUaW1lKSBicmVhaztcblx0XHRcdFx0aS0tO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmb3IgKDsgaSA8IGZyYW1lQ291bnQgJiYgdGltZSA+PSBmcmFtZXNbaV07IGkrKylcblx0XHRcdGZpcmVkRXZlbnRzLnB1c2godGhpcy5ldmVudHNbaV0pO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgc2tlbGV0b24ncyB7QGxpbmsgU2tlbGV0b24jZHJhd09yZGVyfS4gKi9cbmV4cG9ydCBjbGFzcyBEcmF3T3JkZXJUaW1lbGluZSBleHRlbmRzIFRpbWVsaW5lIHtcblx0c3RhdGljIHByb3BlcnR5SWRzID0gW1wiXCIgKyBQcm9wZXJ0eS5kcmF3T3JkZXJdO1xuXG5cdC8qKiBUaGUgZHJhdyBvcmRlciBmb3IgZWFjaCBrZXkgZnJhbWUuIFNlZSB7QGxpbmsgI3NldEZyYW1lKGludCwgZmxvYXQsIGludFtdKX0uICovXG5cdGRyYXdPcmRlcnM6IEFycmF5PEFycmF5PG51bWJlcj4gfCBudWxsPjtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgRHJhd09yZGVyVGltZWxpbmUucHJvcGVydHlJZHMpO1xuXHRcdHRoaXMuZHJhd09yZGVycyA9IG5ldyBBcnJheTxBcnJheTxudW1iZXI+IHwgbnVsbD4oZnJhbWVDb3VudCk7XG5cdH1cblxuXHRnZXRGcmFtZUNvdW50ICgpIHtcblx0XHRyZXR1cm4gdGhpcy5mcmFtZXMubGVuZ3RoO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgaW4gc2Vjb25kcyBhbmQgdGhlIGRyYXcgb3JkZXIgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLlxuXHQgKiBAcGFyYW0gZHJhd09yZGVyIEZvciBlYWNoIHNsb3QgaW4ge0BsaW5rIFNrZWxldG9uI3Nsb3RzfSwgdGhlIGluZGV4IG9mIHRoZSBuZXcgZHJhdyBvcmRlci4gTWF5IGJlIG51bGwgdG8gdXNlIHNldHVwIHBvc2Vcblx0ICogICAgICAgICAgIGRyYXcgb3JkZXIuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGRyYXdPcmRlcjogQXJyYXk8bnVtYmVyPiB8IG51bGwpIHtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdHRoaXMuZHJhd09yZGVyc1tmcmFtZV0gPSBkcmF3T3JkZXI7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRpZiAoZGlyZWN0aW9uID09IE1peERpcmVjdGlvbi5taXhPdXQpIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkgVXRpbHMuYXJyYXlDb3B5KHNrZWxldG9uLnNsb3RzLCAwLCBza2VsZXRvbi5kcmF3T3JkZXIsIDAsIHNrZWxldG9uLnNsb3RzLmxlbmd0aCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHRpbWUgPCB0aGlzLmZyYW1lc1swXSkge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwIHx8IGJsZW5kID09IE1peEJsZW5kLmZpcnN0KSBVdGlscy5hcnJheUNvcHkoc2tlbGV0b24uc2xvdHMsIDAsIHNrZWxldG9uLmRyYXdPcmRlciwgMCwgc2tlbGV0b24uc2xvdHMubGVuZ3RoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgaWR4ID0gVGltZWxpbmUuc2VhcmNoMSh0aGlzLmZyYW1lcywgdGltZSk7XG5cdFx0bGV0IGRyYXdPcmRlclRvU2V0dXBJbmRleCA9IHRoaXMuZHJhd09yZGVyc1tpZHhdO1xuXHRcdGlmICghZHJhd09yZGVyVG9TZXR1cEluZGV4KVxuXHRcdFx0VXRpbHMuYXJyYXlDb3B5KHNrZWxldG9uLnNsb3RzLCAwLCBza2VsZXRvbi5kcmF3T3JkZXIsIDAsIHNrZWxldG9uLnNsb3RzLmxlbmd0aCk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRsZXQgZHJhd09yZGVyOiBBcnJheTxTbG90PiA9IHNrZWxldG9uLmRyYXdPcmRlcjtcblx0XHRcdGxldCBzbG90czogQXJyYXk8U2xvdD4gPSBza2VsZXRvbi5zbG90cztcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyVG9TZXR1cEluZGV4Lmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdFx0ZHJhd09yZGVyW2ldID0gc2xvdHNbZHJhd09yZGVyVG9TZXR1cEluZGV4W2ldXTtcblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYW4gSUsgY29uc3RyYWludCdzIHtAbGluayBJa0NvbnN0cmFpbnQjbWl4fSwge0BsaW5rIElrQ29uc3RyYWludCNzb2Z0bmVzc30sXG4gKiB7QGxpbmsgSWtDb25zdHJhaW50I2JlbmREaXJlY3Rpb259LCB7QGxpbmsgSWtDb25zdHJhaW50I3N0cmV0Y2h9LCBhbmQge0BsaW5rIElrQ29uc3RyYWludCNjb21wcmVzc30uICovXG5leHBvcnQgY2xhc3MgSWtDb25zdHJhaW50VGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lIHtcblx0LyoqIFRoZSBpbmRleCBvZiB0aGUgSUsgY29uc3RyYWludCBpbiB7QGxpbmsgU2tlbGV0b24jZ2V0SWtDb25zdHJhaW50cygpfSB0aGF0IHdpbGwgYmUgY2hhbmdlZCB3aGVuIHRoaXMgdGltZWxpbmUgaXMgYXBwbGllZCAqL1xuXHRjb25zdHJhaW50SW5kZXg6IG51bWJlciA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgaWtDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS5pa0NvbnN0cmFpbnQgKyBcInxcIiArIGlrQ29uc3RyYWludEluZGV4XG5cdFx0XSk7XG5cdFx0dGhpcy5jb25zdHJhaW50SW5kZXggPSBpa0NvbnN0cmFpbnRJbmRleDtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDYvKkVOVFJJRVMqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0aW1lIGluIHNlY29uZHMsIG1peCwgc29mdG5lc3MsIGJlbmQgZGlyZWN0aW9uLCBjb21wcmVzcywgYW5kIHN0cmV0Y2ggZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBtaXg6IG51bWJlciwgc29mdG5lc3M6IG51bWJlciwgYmVuZERpcmVjdGlvbjogbnVtYmVyLCBjb21wcmVzczogYm9vbGVhbiwgc3RyZXRjaDogYm9vbGVhbikge1xuXHRcdGZyYW1lICo9IDYvKkVOVFJJRVMqLztcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMS8qTUlYKi9dID0gbWl4O1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMi8qU09GVE5FU1MqL10gPSBzb2Z0bmVzcztcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDMvKkJFTkRfRElSRUNUSU9OKi9dID0gYmVuZERpcmVjdGlvbjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDQvKkNPTVBSRVNTKi9dID0gY29tcHJlc3MgPyAxIDogMDtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDUvKlNUUkVUQ0gqL10gPSBzdHJldGNoID8gMSA6IDA7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgY29uc3RyYWludDogSWtDb25zdHJhaW50ID0gc2tlbGV0b24uaWtDb25zdHJhaW50c1t0aGlzLmNvbnN0cmFpbnRJbmRleF07XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXggPSBjb25zdHJhaW50LmRhdGEubWl4O1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQuc29mdG5lc3MgPSBjb25zdHJhaW50LmRhdGEuc29mdG5lc3M7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5iZW5kRGlyZWN0aW9uID0gY29uc3RyYWludC5kYXRhLmJlbmREaXJlY3Rpb247XG5cdFx0XHRcdFx0Y29uc3RyYWludC5jb21wcmVzcyA9IGNvbnN0cmFpbnQuZGF0YS5jb21wcmVzcztcblx0XHRcdFx0XHRjb25zdHJhaW50LnN0cmV0Y2ggPSBjb25zdHJhaW50LmRhdGEuc3RyZXRjaDtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXggKz0gKGNvbnN0cmFpbnQuZGF0YS5taXggLSBjb25zdHJhaW50Lm1peCkgKiBhbHBoYTtcblx0XHRcdFx0XHRjb25zdHJhaW50LnNvZnRuZXNzICs9IChjb25zdHJhaW50LmRhdGEuc29mdG5lc3MgLSBjb25zdHJhaW50LnNvZnRuZXNzKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQuYmVuZERpcmVjdGlvbiA9IGNvbnN0cmFpbnQuZGF0YS5iZW5kRGlyZWN0aW9uO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQuY29tcHJlc3MgPSBjb25zdHJhaW50LmRhdGEuY29tcHJlc3M7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5zdHJldGNoID0gY29uc3RyYWludC5kYXRhLnN0cmV0Y2g7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IG1peCA9IDAsIHNvZnRuZXNzID0gMDtcblx0XHRsZXQgaSA9IFRpbWVsaW5lLnNlYXJjaChmcmFtZXMsIHRpbWUsIDYvKkVOVFJJRVMqLylcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSAvIDYvKkVOVFJJRVMqL107XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdG1peCA9IGZyYW1lc1tpICsgMS8qTUlYKi9dO1xuXHRcdFx0XHRzb2Z0bmVzcyA9IGZyYW1lc1tpICsgMi8qU09GVE5FU1MqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgNi8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdG1peCArPSAoZnJhbWVzW2kgKyA2LypFTlRSSUVTKi8gKyAxLypNSVgqL10gLSBtaXgpICogdDtcblx0XHRcdFx0c29mdG5lc3MgKz0gKGZyYW1lc1tpICsgNi8qRU5UUklFUyovICsgMi8qU09GVE5FU1MqL10gLSBzb2Z0bmVzcykgKiB0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMS8qU1RFUFBFRCovOlxuXHRcdFx0XHRtaXggPSBmcmFtZXNbaSArIDEvKk1JWCovXTtcblx0XHRcdFx0c29mdG5lc3MgPSBmcmFtZXNbaSArIDIvKlNPRlRORVNTKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdG1peCA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qTUlYKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0c29mdG5lc3MgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDIvKlNPRlRORVNTKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovIC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblxuXHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkge1xuXHRcdFx0Y29uc3RyYWludC5taXggPSBjb25zdHJhaW50LmRhdGEubWl4ICsgKG1peCAtIGNvbnN0cmFpbnQuZGF0YS5taXgpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50LnNvZnRuZXNzID0gY29uc3RyYWludC5kYXRhLnNvZnRuZXNzICsgKHNvZnRuZXNzIC0gY29uc3RyYWludC5kYXRhLnNvZnRuZXNzKSAqIGFscGhhO1xuXG5cdFx0XHRpZiAoZGlyZWN0aW9uID09IE1peERpcmVjdGlvbi5taXhPdXQpIHtcblx0XHRcdFx0Y29uc3RyYWludC5iZW5kRGlyZWN0aW9uID0gY29uc3RyYWludC5kYXRhLmJlbmREaXJlY3Rpb247XG5cdFx0XHRcdGNvbnN0cmFpbnQuY29tcHJlc3MgPSBjb25zdHJhaW50LmRhdGEuY29tcHJlc3M7XG5cdFx0XHRcdGNvbnN0cmFpbnQuc3RyZXRjaCA9IGNvbnN0cmFpbnQuZGF0YS5zdHJldGNoO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3RyYWludC5iZW5kRGlyZWN0aW9uID0gZnJhbWVzW2kgKyAzLypCRU5EX0RJUkVDVElPTiovXTtcblx0XHRcdFx0Y29uc3RyYWludC5jb21wcmVzcyA9IGZyYW1lc1tpICsgNC8qQ09NUFJFU1MqL10gIT0gMDtcblx0XHRcdFx0Y29uc3RyYWludC5zdHJldGNoID0gZnJhbWVzW2kgKyA1LypTVFJFVENIKi9dICE9IDA7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0cmFpbnQubWl4ICs9IChtaXggLSBjb25zdHJhaW50Lm1peCkgKiBhbHBoYTtcblx0XHRcdGNvbnN0cmFpbnQuc29mdG5lc3MgKz0gKHNvZnRuZXNzIC0gY29uc3RyYWludC5zb2Z0bmVzcykgKiBhbHBoYTtcblx0XHRcdGlmIChkaXJlY3Rpb24gPT0gTWl4RGlyZWN0aW9uLm1peEluKSB7XG5cdFx0XHRcdGNvbnN0cmFpbnQuYmVuZERpcmVjdGlvbiA9IGZyYW1lc1tpICsgMy8qQkVORF9ESVJFQ1RJT04qL107XG5cdFx0XHRcdGNvbnN0cmFpbnQuY29tcHJlc3MgPSBmcmFtZXNbaSArIDQvKkNPTVBSRVNTKi9dICE9IDA7XG5cdFx0XHRcdGNvbnN0cmFpbnQuc3RyZXRjaCA9IGZyYW1lc1tpICsgNS8qU1RSRVRDSCovXSAhPSAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHRyYW5zZm9ybSBjb25zdHJhaW50J3Mge0BsaW5rIFRyYW5zZm9ybUNvbnN0cmFpbnQjcm90YXRlTWl4fSwge0BsaW5rIFRyYW5zZm9ybUNvbnN0cmFpbnQjdHJhbnNsYXRlTWl4fSxcbiAqIHtAbGluayBUcmFuc2Zvcm1Db25zdHJhaW50I3NjYWxlTWl4fSwgYW5kIHtAbGluayBUcmFuc2Zvcm1Db25zdHJhaW50I3NoZWFyTWl4fS4gKi9cbmV4cG9ydCBjbGFzcyBUcmFuc2Zvcm1Db25zdHJhaW50VGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lIHtcblx0LyoqIFRoZSBpbmRleCBvZiB0aGUgdHJhbnNmb3JtIGNvbnN0cmFpbnQgc2xvdCBpbiB7QGxpbmsgU2tlbGV0b24jdHJhbnNmb3JtQ29uc3RyYWludHN9IHRoYXQgd2lsbCBiZSBjaGFuZ2VkLiAqL1xuXHRjb25zdHJhaW50SW5kZXg6IG51bWJlciA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgdHJhbnNmb3JtQ29uc3RyYWludEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgW1xuXHRcdFx0UHJvcGVydHkudHJhbnNmb3JtQ29uc3RyYWludCArIFwifFwiICsgdHJhbnNmb3JtQ29uc3RyYWludEluZGV4XG5cdFx0XSk7XG5cdFx0dGhpcy5jb25zdHJhaW50SW5kZXggPSB0cmFuc2Zvcm1Db25zdHJhaW50SW5kZXg7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiA3LypFTlRSSUVTKi87XG5cdH1cblxuXHQvKiogVGhlIHRpbWUgaW4gc2Vjb25kcywgcm90YXRlIG1peCwgdHJhbnNsYXRlIG1peCwgc2NhbGUgbWl4LCBhbmQgc2hlYXIgbWl4IGZvciB0aGUgc3BlY2lmaWVkIGtleSBmcmFtZS4gKi9cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgbWl4Um90YXRlOiBudW1iZXIsIG1peFg6IG51bWJlciwgbWl4WTogbnVtYmVyLCBtaXhTY2FsZVg6IG51bWJlciwgbWl4U2NhbGVZOiBudW1iZXIsXG5cdFx0bWl4U2hlYXJZOiBudW1iZXIpIHtcblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0ZnJhbWUgKj0gNy8qRU5UUklFUyovO1xuXHRcdGZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdGZyYW1lc1tmcmFtZSArIDEvKlJPVEFURSovXSA9IG1peFJvdGF0ZTtcblx0XHRmcmFtZXNbZnJhbWUgKyAyLypYKi9dID0gbWl4WDtcblx0XHRmcmFtZXNbZnJhbWUgKyAzLypZKi9dID0gbWl4WTtcblx0XHRmcmFtZXNbZnJhbWUgKyA0LypTQ0FMRVgqL10gPSBtaXhTY2FsZVg7XG5cdFx0ZnJhbWVzW2ZyYW1lICsgNS8qU0NBTEVZKi9dID0gbWl4U2NhbGVZO1xuXHRcdGZyYW1lc1tmcmFtZSArIDYvKlNIRUFSWSovXSA9IG1peFNoZWFyWTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZmlyZWRFdmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBjb25zdHJhaW50OiBUcmFuc2Zvcm1Db25zdHJhaW50ID0gc2tlbGV0b24udHJhbnNmb3JtQ29uc3RyYWludHNbdGhpcy5jb25zdHJhaW50SW5kZXhdO1xuXHRcdGlmICghY29uc3RyYWludC5hY3RpdmUpIHJldHVybjtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkge1xuXHRcdFx0bGV0IGRhdGEgPSBjb25zdHJhaW50LmRhdGE7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXhSb3RhdGUgPSBkYXRhLm1peFJvdGF0ZTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFggPSBkYXRhLm1peFg7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXhZID0gZGF0YS5taXhZO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4U2NhbGVYID0gZGF0YS5taXhTY2FsZVg7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXhTY2FsZVkgPSBkYXRhLm1peFNjYWxlWTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFNoZWFyWSA9IGRhdGEubWl4U2hlYXJZO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFJvdGF0ZSArPSAoZGF0YS5taXhSb3RhdGUgLSBjb25zdHJhaW50Lm1peFJvdGF0ZSkgKiBhbHBoYTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFggKz0gKGRhdGEubWl4WCAtIGNvbnN0cmFpbnQubWl4WCkgKiBhbHBoYTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFkgKz0gKGRhdGEubWl4WSAtIGNvbnN0cmFpbnQubWl4WSkgKiBhbHBoYTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFNjYWxlWCArPSAoZGF0YS5taXhTY2FsZVggLSBjb25zdHJhaW50Lm1peFNjYWxlWCkgKiBhbHBoYTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFNjYWxlWSArPSAoZGF0YS5taXhTY2FsZVkgLSBjb25zdHJhaW50Lm1peFNjYWxlWSkgKiBhbHBoYTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFNoZWFyWSArPSAoZGF0YS5taXhTaGVhclkgLSBjb25zdHJhaW50Lm1peFNoZWFyWSkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgcm90YXRlLCB4LCB5LCBzY2FsZVgsIHNjYWxlWSwgc2hlYXJZO1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgNy8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSAvIDcvKkVOVFJJRVMqL107XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdHJvdGF0ZSA9IGZyYW1lc1tpICsgMS8qUk9UQVRFKi9dO1xuXHRcdFx0XHR4ID0gZnJhbWVzW2kgKyAyLypYKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAzLypZKi9dO1xuXHRcdFx0XHRzY2FsZVggPSBmcmFtZXNbaSArIDQvKlNDQUxFWCovXTtcblx0XHRcdFx0c2NhbGVZID0gZnJhbWVzW2kgKyA1LypTQ0FMRVkqL107XG5cdFx0XHRcdHNoZWFyWSA9IGZyYW1lc1tpICsgNi8qU0hFQVJZKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDcvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHRyb3RhdGUgKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgMS8qUk9UQVRFKi9dIC0gcm90YXRlKSAqIHQ7XG5cdFx0XHRcdHggKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgMi8qWCovXSAtIHgpICogdDtcblx0XHRcdFx0eSArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyAzLypZKi9dIC0geSkgKiB0O1xuXHRcdFx0XHRzY2FsZVggKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgNC8qU0NBTEVYKi9dIC0gc2NhbGVYKSAqIHQ7XG5cdFx0XHRcdHNjYWxlWSArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyA1LypTQ0FMRVkqL10gLSBzY2FsZVkpICogdDtcblx0XHRcdFx0c2hlYXJZICs9IChmcmFtZXNbaSArIDcvKkVOVFJJRVMqLyArIDYvKlNIRUFSWSovXSAtIHNoZWFyWSkgKiB0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMS8qU1RFUFBFRCovOlxuXHRcdFx0XHRyb3RhdGUgPSBmcmFtZXNbaSArIDEvKlJPVEFURSovXTtcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMi8qWCovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMy8qWSovXTtcblx0XHRcdFx0c2NhbGVYID0gZnJhbWVzW2kgKyA0LypTQ0FMRVgqL107XG5cdFx0XHRcdHNjYWxlWSA9IGZyYW1lc1tpICsgNS8qU0NBTEVZKi9dO1xuXHRcdFx0XHRzaGVhclkgPSBmcmFtZXNbaSArIDYvKlNIRUFSWSovXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyb3RhdGUgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlJPVEFURSovLCBjdXJ2ZVR5cGUgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHggPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDIvKlgqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHkgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDMvKlkqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiAyIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRzY2FsZVggPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDQvKlNDQUxFWCovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDMgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHNjYWxlWSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgNS8qU0NBTEVZKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogNCAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0c2hlYXJZID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA2LypTSEVBUlkqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiA1IC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblxuXHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkge1xuXHRcdFx0bGV0IGRhdGEgPSBjb25zdHJhaW50LmRhdGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFJvdGF0ZSA9IGRhdGEubWl4Um90YXRlICsgKHJvdGF0ZSAtIGRhdGEubWl4Um90YXRlKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhYID0gZGF0YS5taXhYICsgKHggLSBkYXRhLm1peFgpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFkgPSBkYXRhLm1peFkgKyAoeSAtIGRhdGEubWl4WSkgKiBhbHBoYTtcblx0XHRcdGNvbnN0cmFpbnQubWl4U2NhbGVYID0gZGF0YS5taXhTY2FsZVggKyAoc2NhbGVYIC0gZGF0YS5taXhTY2FsZVgpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFNjYWxlWSA9IGRhdGEubWl4U2NhbGVZICsgKHNjYWxlWSAtIGRhdGEubWl4U2NhbGVZKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhTaGVhclkgPSBkYXRhLm1peFNoZWFyWSArIChzaGVhclkgLSBkYXRhLm1peFNoZWFyWSkgKiBhbHBoYTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3RyYWludC5taXhSb3RhdGUgKz0gKHJvdGF0ZSAtIGNvbnN0cmFpbnQubWl4Um90YXRlKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhYICs9ICh4IC0gY29uc3RyYWludC5taXhYKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhZICs9ICh5IC0gY29uc3RyYWludC5taXhZKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhTY2FsZVggKz0gKHNjYWxlWCAtIGNvbnN0cmFpbnQubWl4U2NhbGVYKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhTY2FsZVkgKz0gKHNjYWxlWSAtIGNvbnN0cmFpbnQubWl4U2NhbGVZKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhTaGVhclkgKz0gKHNoZWFyWSAtIGNvbnN0cmFpbnQubWl4U2hlYXJZKSAqIGFscGhhO1xuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHBhdGggY29uc3RyYWludCdzIHtAbGluayBQYXRoQ29uc3RyYWludCNwb3NpdGlvbn0uICovXG5leHBvcnQgY2xhc3MgUGF0aENvbnN0cmFpbnRQb3NpdGlvblRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTEge1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBwYXRoIGNvbnN0cmFpbnQgaW4ge0BsaW5rIFNrZWxldG9uI2dldFBhdGhDb25zdHJhaW50cygpfSB0aGF0IHdpbGwgYmUgY2hhbmdlZCB3aGVuIHRoaXMgdGltZWxpbmUgaXNcblx0ICogYXBwbGllZC4gKi9cblx0Y29uc3RyYWludEluZGV4OiBudW1iZXIgPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBhdGhDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS5wYXRoQ29uc3RyYWludFBvc2l0aW9uICsgXCJ8XCIgKyBwYXRoQ29uc3RyYWludEluZGV4KTtcblx0XHR0aGlzLmNvbnN0cmFpbnRJbmRleCA9IHBhdGhDb25zdHJhaW50SW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgY29uc3RyYWludDogUGF0aENvbnN0cmFpbnQgPSBza2VsZXRvbi5wYXRoQ29uc3RyYWludHNbdGhpcy5jb25zdHJhaW50SW5kZXhdO1xuXHRcdGlmIChjb25zdHJhaW50LmFjdGl2ZSlcblx0XHRcdGNvbnN0cmFpbnQucG9zaXRpb24gPSB0aGlzLmdldEFic29sdXRlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCBjb25zdHJhaW50LnBvc2l0aW9uLCBjb25zdHJhaW50LmRhdGEucG9zaXRpb24pO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgcGF0aCBjb25zdHJhaW50J3Mge0BsaW5rIFBhdGhDb25zdHJhaW50I3NwYWNpbmd9LiAqL1xuZXhwb3J0IGNsYXNzIFBhdGhDb25zdHJhaW50U3BhY2luZ1RpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTEge1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBwYXRoIGNvbnN0cmFpbnQgaW4ge0BsaW5rIFNrZWxldG9uI2dldFBhdGhDb25zdHJhaW50cygpfSB0aGF0IHdpbGwgYmUgY2hhbmdlZCB3aGVuIHRoaXMgdGltZWxpbmUgaXNcblx0ICogYXBwbGllZC4gKi9cblx0Y29uc3RyYWludEluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBwYXRoQ29uc3RyYWludEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgUHJvcGVydHkucGF0aENvbnN0cmFpbnRTcGFjaW5nICsgXCJ8XCIgKyBwYXRoQ29uc3RyYWludEluZGV4KTtcblx0XHR0aGlzLmNvbnN0cmFpbnRJbmRleCA9IHBhdGhDb25zdHJhaW50SW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgY29uc3RyYWludDogUGF0aENvbnN0cmFpbnQgPSBza2VsZXRvbi5wYXRoQ29uc3RyYWludHNbdGhpcy5jb25zdHJhaW50SW5kZXhdO1xuXHRcdGlmIChjb25zdHJhaW50LmFjdGl2ZSlcblx0XHRcdGNvbnN0cmFpbnQuc3BhY2luZyA9IHRoaXMuZ2V0QWJzb2x1dGVWYWx1ZSh0aW1lLCBhbHBoYSwgYmxlbmQsIGNvbnN0cmFpbnQuc3BhY2luZywgY29uc3RyYWludC5kYXRhLnNwYWNpbmcpO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgdHJhbnNmb3JtIGNvbnN0cmFpbnQncyB7QGxpbmsgUGF0aENvbnN0cmFpbnQjZ2V0TWl4Um90YXRlKCl9LCB7QGxpbmsgUGF0aENvbnN0cmFpbnQjZ2V0TWl4WCgpfSwgYW5kXG4gKiB7QGxpbmsgUGF0aENvbnN0cmFpbnQjZ2V0TWl4WSgpfS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQ29uc3RyYWludE1peFRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZSB7XG5cdC8qKiBUaGUgaW5kZXggb2YgdGhlIHBhdGggY29uc3RyYWludCBpbiB7QGxpbmsgU2tlbGV0b24jZ2V0UGF0aENvbnN0cmFpbnRzKCl9IHRoYXQgd2lsbCBiZSBjaGFuZ2VkIHdoZW4gdGhpcyB0aW1lbGluZSBpc1xuXHQgKiBhcHBsaWVkLiAqL1xuXHRjb25zdHJhaW50SW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBhdGhDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS5wYXRoQ29uc3RyYWludE1peCArIFwifFwiICsgcGF0aENvbnN0cmFpbnRJbmRleFxuXHRcdF0pO1xuXHRcdHRoaXMuY29uc3RyYWludEluZGV4ID0gcGF0aENvbnN0cmFpbnRJbmRleDtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDQvKkVOVFJJRVMqLztcblx0fVxuXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIG1peFJvdGF0ZTogbnVtYmVyLCBtaXhYOiBudW1iZXIsIG1peFk6IG51bWJlcikge1xuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRmcmFtZSA8PD0gMjtcblx0XHRmcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHRmcmFtZXNbZnJhbWUgKyAxLypST1RBVEUqL10gPSBtaXhSb3RhdGU7XG5cdFx0ZnJhbWVzW2ZyYW1lICsgMi8qWCovXSA9IG1peFg7XG5cdFx0ZnJhbWVzW2ZyYW1lICsgMy8qWSovXSA9IG1peFk7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgY29uc3RyYWludDogUGF0aENvbnN0cmFpbnQgPSBza2VsZXRvbi5wYXRoQ29uc3RyYWludHNbdGhpcy5jb25zdHJhaW50SW5kZXhdO1xuXHRcdGlmICghY29uc3RyYWludC5hY3RpdmUpIHJldHVybjtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkge1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4Um90YXRlID0gY29uc3RyYWludC5kYXRhLm1peFJvdGF0ZTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFggPSBjb25zdHJhaW50LmRhdGEubWl4WDtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFkgPSBjb25zdHJhaW50LmRhdGEubWl4WTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXhSb3RhdGUgKz0gKGNvbnN0cmFpbnQuZGF0YS5taXhSb3RhdGUgLSBjb25zdHJhaW50Lm1peFJvdGF0ZSkgKiBhbHBoYTtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFggKz0gKGNvbnN0cmFpbnQuZGF0YS5taXhYIC0gY29uc3RyYWludC5taXhYKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4WSArPSAoY29uc3RyYWludC5kYXRhLm1peFkgLSBjb25zdHJhaW50Lm1peFkpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IHJvdGF0ZSwgeCwgeTtcblx0XHRsZXQgaSA9IFRpbWVsaW5lLnNlYXJjaChmcmFtZXMsIHRpbWUsIDQvKkVOVFJJRVMqLyk7XG5cdFx0bGV0IGN1cnZlVHlwZSA9IHRoaXMuY3VydmVzW2kgPj4gMl07XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdHJvdGF0ZSA9IGZyYW1lc1tpICsgMS8qUk9UQVRFKi9dO1xuXHRcdFx0XHR4ID0gZnJhbWVzW2kgKyAyLypYKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAzLypZKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDQvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHRyb3RhdGUgKz0gKGZyYW1lc1tpICsgNC8qRU5UUklFUyovICsgMS8qUk9UQVRFKi9dIC0gcm90YXRlKSAqIHQ7XG5cdFx0XHRcdHggKz0gKGZyYW1lc1tpICsgNC8qRU5UUklFUyovICsgMi8qWCovXSAtIHgpICogdDtcblx0XHRcdFx0eSArPSAoZnJhbWVzW2kgKyA0LypFTlRSSUVTKi8gKyAzLypZKi9dIC0geSkgKiB0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMS8qU1RFUFBFRCovOlxuXHRcdFx0XHRyb3RhdGUgPSBmcmFtZXNbaSArIDEvKlJPVEFURSovXTtcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMi8qWCovXTtcblx0XHRcdFx0eSA9IGZyYW1lc1tpICsgMy8qWSovXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyb3RhdGUgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlJPVEFURSovLCBjdXJ2ZVR5cGUgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHggPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDIvKlgqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHkgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDMvKlkqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiAyIC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblxuXHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkge1xuXHRcdFx0bGV0IGRhdGEgPSBjb25zdHJhaW50LmRhdGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFJvdGF0ZSA9IGRhdGEubWl4Um90YXRlICsgKHJvdGF0ZSAtIGRhdGEubWl4Um90YXRlKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhYID0gZGF0YS5taXhYICsgKHggLSBkYXRhLm1peFgpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFkgPSBkYXRhLm1peFkgKyAoeSAtIGRhdGEubWl4WSkgKiBhbHBoYTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3RyYWludC5taXhSb3RhdGUgKz0gKHJvdGF0ZSAtIGNvbnN0cmFpbnQubWl4Um90YXRlKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhYICs9ICh4IC0gY29uc3RyYWludC5taXhYKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhZICs9ICh5IC0gY29uc3RyYWludC5taXhZKSAqIGFscGhhO1xuXHRcdH1cblx0fVxufVxuXG4vKiogVGhlIGJhc2UgY2xhc3MgZm9yIG1vc3Qge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50fSB0aW1lbGluZXMuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnRUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUxIHtcblx0LyoqIFRoZSBpbmRleCBvZiB0aGUgcGh5c2ljcyBjb25zdHJhaW50IGluIHtAbGluayBTa2VsZXRvbiNnZXRQaHlzaWNzQ29uc3RyYWludHMoKX0gdGhhdCB3aWxsIGJlIGNoYW5nZWQgd2hlbiB0aGlzIHRpbWVsaW5lXG5cdCAqIGlzIGFwcGxpZWQsIG9yIC0xIGlmIGFsbCBwaHlzaWNzIGNvbnN0cmFpbnRzIGluIHRoZSBza2VsZXRvbiB3aWxsIGJlIGNoYW5nZWQuICovXG5cdGNvbnN0cmFpbnRJbmRleCA9IDA7XG5cblx0LyoqIEBwYXJhbSBwaHlzaWNzQ29uc3RyYWludEluZGV4IC0xIGZvciBhbGwgcGh5c2ljcyBjb25zdHJhaW50cyBpbiB0aGUgc2tlbGV0b24uICovXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBoeXNpY3NDb25zdHJhaW50SW5kZXg6IG51bWJlciwgcHJvcGVydHk6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBwcm9wZXJ0eSArIFwifFwiICsgcGh5c2ljc0NvbnN0cmFpbnRJbmRleCk7XG5cdFx0dGhpcy5jb25zdHJhaW50SW5kZXggPSBwaHlzaWNzQ29uc3RyYWludEluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBmaXJlZEV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50O1xuXHRcdGlmICh0aGlzLmNvbnN0cmFpbnRJbmRleCA9PSAtMSkge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSB0aW1lID49IHRoaXMuZnJhbWVzWzBdID8gdGhpcy5nZXRDdXJ2ZVZhbHVlKHRpbWUpIDogMDtcblxuXHRcdFx0Zm9yIChjb25zdCBjb25zdHJhaW50IG9mIHNrZWxldG9uLnBoeXNpY3NDb25zdHJhaW50cykge1xuXHRcdFx0XHRpZiAoY29uc3RyYWludC5hY3RpdmUgJiYgdGhpcy5nbG9iYWwoY29uc3RyYWludC5kYXRhKSlcblx0XHRcdFx0XHR0aGlzLnNldChjb25zdHJhaW50LCB0aGlzLmdldEFic29sdXRlVmFsdWUyKHRpbWUsIGFscGhhLCBibGVuZCwgdGhpcy5nZXQoY29uc3RyYWludCksIHRoaXMuc2V0dXAoY29uc3RyYWludCksIHZhbHVlKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0cmFpbnQgPSBza2VsZXRvbi5waHlzaWNzQ29uc3RyYWludHNbdGhpcy5jb25zdHJhaW50SW5kZXhdO1xuXHRcdFx0aWYgKGNvbnN0cmFpbnQuYWN0aXZlKSB0aGlzLnNldChjb25zdHJhaW50LCB0aGlzLmdldEFic29sdXRlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCB0aGlzLmdldChjb25zdHJhaW50KSwgdGhpcy5zZXR1cChjb25zdHJhaW50KSkpO1xuXHRcdH1cblx0fVxuXG5cdGFic3RyYWN0IHNldHVwIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlcjtcblxuXHRhYnN0cmFjdCBnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyO1xuXG5cdGFic3RyYWN0IHNldCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQsIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuXG5cdGFic3RyYWN0IGdsb2JhbCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnREYXRhKTogYm9vbGVhbjtcbn1cblxuLyoqIENoYW5nZXMgYSBwaHlzaWNzIGNvbnN0cmFpbnQncyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnQjZ2V0SW5lcnRpYSgpfS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludEluZXJ0aWFUaW1lbGluZSBleHRlbmRzIFBoeXNpY3NDb25zdHJhaW50VGltZWxpbmUge1xuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBwaHlzaWNzQ29uc3RyYWludEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleCwgUHJvcGVydHkucGh5c2ljc0NvbnN0cmFpbnRJbmVydGlhKTtcblx0fVxuXG5cdHNldHVwIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQuZGF0YS5pbmVydGlhO1xuXHR9XG5cblx0Z2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQuaW5lcnRpYTtcblx0fVxuXG5cdHNldCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcblx0XHRjb25zdHJhaW50LmluZXJ0aWEgPSB2YWx1ZTtcblx0fVxuXG5cdGdsb2JhbCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnREYXRhKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQuaW5lcnRpYUdsb2JhbDtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHBoeXNpY3MgY29uc3RyYWludCdzIHtAbGluayBQaHlzaWNzQ29uc3RyYWludCNnZXRTdHJlbmd0aCgpfS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUgZXh0ZW5kcyBQaHlzaWNzQ29uc3RyYWludFRpbWVsaW5lIHtcblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHBoeXNpY3NDb25zdHJhaW50SW5kZXgsIFByb3BlcnR5LnBoeXNpY3NDb25zdHJhaW50U3RyZW5ndGgpO1xuXHR9XG5cblx0c2V0dXAgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5kYXRhLnN0cmVuZ3RoO1xuXHR9XG5cblx0Z2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQuc3RyZW5ndGg7XG5cdH1cblxuXHRzZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3RyYWludC5zdHJlbmd0aCA9IHZhbHVlO1xuXHR9XG5cblx0Z2xvYmFsIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludERhdGEpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5zdHJlbmd0aEdsb2JhbDtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHBoeXNpY3MgY29uc3RyYWludCdzIHtAbGluayBQaHlzaWNzQ29uc3RyYWludCNnZXREYW1waW5nKCl9LiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNpY3NDb25zdHJhaW50RGFtcGluZ1RpbWVsaW5lIGV4dGVuZHMgUGh5c2ljc0NvbnN0cmFpbnRUaW1lbGluZSB7XG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBoeXNpY3NDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBwaHlzaWNzQ29uc3RyYWludEluZGV4LCBQcm9wZXJ0eS5waHlzaWNzQ29uc3RyYWludERhbXBpbmcpO1xuXHR9XG5cblx0c2V0dXAgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5kYXRhLmRhbXBpbmc7XG5cdH1cblxuXHRnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5kYW1waW5nO1xuXHR9XG5cblx0c2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0cmFpbnQuZGFtcGluZyA9IHZhbHVlO1xuXHR9XG5cblx0Z2xvYmFsIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludERhdGEpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5kYW1waW5nR2xvYmFsO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgcGh5c2ljcyBjb25zdHJhaW50J3Mge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50I2dldE1hc3NJbnZlcnNlKCl9LiBUaGUgdGltZWxpbmUgdmFsdWVzIGFyZSBub3QgaW52ZXJ0ZWQuICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnRNYXNzVGltZWxpbmUgZXh0ZW5kcyBQaHlzaWNzQ29uc3RyYWludFRpbWVsaW5lIHtcblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHBoeXNpY3NDb25zdHJhaW50SW5kZXgsIFByb3BlcnR5LnBoeXNpY3NDb25zdHJhaW50TWFzcyk7XG5cdH1cblxuXHRzZXR1cCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXIge1xuXHRcdHJldHVybiAxIC8gY29uc3RyYWludC5kYXRhLm1hc3NJbnZlcnNlO1xuXHR9XG5cblx0Z2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIDEgLyBjb25zdHJhaW50Lm1hc3NJbnZlcnNlO1xuXHR9XG5cblx0c2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0cmFpbnQubWFzc0ludmVyc2UgPSAxIC8gdmFsdWU7XG5cdH1cblxuXHRnbG9iYWwgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50RGF0YSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBjb25zdHJhaW50Lm1hc3NHbG9iYWw7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBwaHlzaWNzIGNvbnN0cmFpbnQncyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnQjZ2V0V2luZCgpfS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludFdpbmRUaW1lbGluZSBleHRlbmRzIFBoeXNpY3NDb25zdHJhaW50VGltZWxpbmUge1xuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBwaHlzaWNzQ29uc3RyYWludEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleCwgUHJvcGVydHkucGh5c2ljc0NvbnN0cmFpbnRXaW5kKTtcblx0fVxuXG5cdHNldHVwIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQuZGF0YS53aW5kO1xuXHR9XG5cblx0Z2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQud2luZDtcblx0fVxuXG5cdHNldCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcblx0XHRjb25zdHJhaW50LndpbmQgPSB2YWx1ZTtcblx0fVxuXG5cdGdsb2JhbCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnREYXRhKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQud2luZEdsb2JhbDtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHBoeXNpY3MgY29uc3RyYWludCdzIHtAbGluayBQaHlzaWNzQ29uc3RyYWludCNnZXRHcmF2aXR5KCl9LiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNpY3NDb25zdHJhaW50R3Jhdml0eVRpbWVsaW5lIGV4dGVuZHMgUGh5c2ljc0NvbnN0cmFpbnRUaW1lbGluZSB7XG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBoeXNpY3NDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBwaHlzaWNzQ29uc3RyYWludEluZGV4LCBQcm9wZXJ0eS5waHlzaWNzQ29uc3RyYWludEdyYXZpdHkpO1xuXHR9XG5cblx0c2V0dXAgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5kYXRhLmdyYXZpdHk7XG5cdH1cblxuXHRnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5ncmF2aXR5O1xuXHR9XG5cblx0c2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0cmFpbnQuZ3Jhdml0eSA9IHZhbHVlO1xuXHR9XG5cblx0Z2xvYmFsIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludERhdGEpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5ncmF2aXR5R2xvYmFsO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgcGh5c2ljcyBjb25zdHJhaW50J3Mge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50I2dldE1peCgpfS4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lIGV4dGVuZHMgUGh5c2ljc0NvbnN0cmFpbnRUaW1lbGluZSB7XG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBoeXNpY3NDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBwaHlzaWNzQ29uc3RyYWludEluZGV4LCBQcm9wZXJ0eS5waHlzaWNzQ29uc3RyYWludE1peCk7XG5cdH1cblxuXHRzZXR1cCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXIge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmRhdGEubWl4O1xuXHR9XG5cblx0Z2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQubWl4O1xuXHR9XG5cblx0c2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0cmFpbnQubWl4ID0gdmFsdWU7XG5cdH1cblxuXHRnbG9iYWwgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50RGF0YSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBjb25zdHJhaW50Lm1peEdsb2JhbDtcblx0fVxufVxuXG4vKiogUmVzZXRzIGEgcGh5c2ljcyBjb25zdHJhaW50IHdoZW4gc3BlY2lmaWMgYW5pbWF0aW9uIHRpbWVzIGFyZSByZWFjaGVkLiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNpY3NDb25zdHJhaW50UmVzZXRUaW1lbGluZSBleHRlbmRzIFRpbWVsaW5lIHtcblx0cHJpdmF0ZSBzdGF0aWMgcHJvcGVydHlJZHM6IHN0cmluZ1tdID0gW1Byb3BlcnR5LnBoeXNpY3NDb25zdHJhaW50UmVzZXQudG9TdHJpbmcoKV07XG5cblx0LyoqIFRoZSBpbmRleCBvZiB0aGUgcGh5c2ljcyBjb25zdHJhaW50IGluIHtAbGluayBTa2VsZXRvbiNnZXRQaHlzaWNzQ29uc3RyYWludHMoKX0gdGhhdCB3aWxsIGJlIHJlc2V0IHdoZW4gdGhpcyB0aW1lbGluZSBpc1xuXHQqIGFwcGxpZWQsIG9yIC0xIGlmIGFsbCBwaHlzaWNzIGNvbnN0cmFpbnRzIGluIHRoZSBza2VsZXRvbiB3aWxsIGJlIHJlc2V0LiAqL1xuXHRjb25zdHJhaW50SW5kZXg6IG51bWJlcjtcblxuXHQvKiogQHBhcmFtIHBoeXNpY3NDb25zdHJhaW50SW5kZXggLTEgZm9yIGFsbCBwaHlzaWNzIGNvbnN0cmFpbnRzIGluIHRoZSBza2VsZXRvbi4gKi9cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgUGh5c2ljc0NvbnN0cmFpbnRSZXNldFRpbWVsaW5lLnByb3BlcnR5SWRzKTtcblx0XHR0aGlzLmNvbnN0cmFpbnRJbmRleCA9IHBoeXNpY3NDb25zdHJhaW50SW5kZXg7XG5cdH1cblxuXHRnZXRGcmFtZUNvdW50ICgpIHtcblx0XHRyZXR1cm4gdGhpcy5mcmFtZXMubGVuZ3RoO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgZm9yIHRoZSBzcGVjaWZpZWQgZnJhbWUuXG5cdCAqIEBwYXJhbSBmcmFtZSBCZXR3ZWVuIDAgYW5kIDxjb2RlPmZyYW1lQ291bnQ8L2NvZGU+LCBpbmNsdXNpdmUuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIpIHtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHR9XG5cblx0LyoqIFJlc2V0cyB0aGUgcGh5c2ljcyBjb25zdHJhaW50IHdoZW4gZnJhbWVzID4gPGNvZGU+bGFzdFRpbWU8L2NvZGU+IGFuZCA8PSA8Y29kZT50aW1lPC9jb2RlPi4gKi9cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBmaXJlZEV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cblx0XHRsZXQgY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKHRoaXMuY29uc3RyYWludEluZGV4ICE9IC0xKSB7XG5cdFx0XHRjb25zdHJhaW50ID0gc2tlbGV0b24ucGh5c2ljc0NvbnN0cmFpbnRzW3RoaXMuY29uc3RyYWludEluZGV4XTtcblx0XHRcdGlmICghY29uc3RyYWludC5hY3RpdmUpIHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblxuXHRcdGlmIChsYXN0VGltZSA+IHRpbWUpIHsgLy8gQXBwbHkgYWZ0ZXIgbGFzdFRpbWUgZm9yIGxvb3BlZCBhbmltYXRpb25zLlxuXHRcdFx0dGhpcy5hcHBseShza2VsZXRvbiwgbGFzdFRpbWUsIE51bWJlci5NQVhfVkFMVUUsIFtdLCBhbHBoYSwgYmxlbmQsIGRpcmVjdGlvbik7XG5cdFx0XHRsYXN0VGltZSA9IC0xO1xuXHRcdH0gZWxzZSBpZiAobGFzdFRpbWUgPj0gZnJhbWVzW2ZyYW1lcy5sZW5ndGggLSAxXSkgLy8gTGFzdCB0aW1lIGlzIGFmdGVyIGxhc3QgZnJhbWUuXG5cdFx0XHRyZXR1cm47XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHJldHVybjtcblxuXHRcdGlmIChsYXN0VGltZSA8IGZyYW1lc1swXSB8fCB0aW1lID49IGZyYW1lc1tUaW1lbGluZS5zZWFyY2gxKGZyYW1lcywgbGFzdFRpbWUpICsgMV0pIHtcblx0XHRcdGlmIChjb25zdHJhaW50ICE9IG51bGwpXG5cdFx0XHRcdGNvbnN0cmFpbnQucmVzZXQoKTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnQgb2Ygc2tlbGV0b24ucGh5c2ljc0NvbnN0cmFpbnRzKSB7XG5cdFx0XHRcdFx0aWYgKGNvbnN0cmFpbnQuYWN0aXZlKSBjb25zdHJhaW50LnJlc2V0KCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBzbG90J3Mge0BsaW5rIFNsb3QjZ2V0U2VxdWVuY2VJbmRleCgpfSBmb3IgYW4gYXR0YWNobWVudCdzIHtAbGluayBTZXF1ZW5jZX0uICovXG5leHBvcnQgY2xhc3MgU2VxdWVuY2VUaW1lbGluZSBleHRlbmRzIFRpbWVsaW5lIGltcGxlbWVudHMgU2xvdFRpbWVsaW5lIHtcblx0c3RhdGljIEVOVFJJRVMgPSAzO1xuXHRzdGF0aWMgTU9ERSA9IDE7XG5cdHN0YXRpYyBERUxBWSA9IDI7XG5cblx0c2xvdEluZGV4OiBudW1iZXI7XG5cdGF0dGFjaG1lbnQ6IEhhc1RleHR1cmVSZWdpb247XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgc2xvdEluZGV4OiBudW1iZXIsIGF0dGFjaG1lbnQ6IEhhc1RleHR1cmVSZWdpb24pIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS5zZXF1ZW5jZSArIFwifFwiICsgc2xvdEluZGV4ICsgXCJ8XCIgKyBhdHRhY2htZW50LnNlcXVlbmNlIS5pZFxuXHRcdF0pO1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHRcdHRoaXMuYXR0YWNobWVudCA9IGF0dGFjaG1lbnQ7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiBTZXF1ZW5jZVRpbWVsaW5lLkVOVFJJRVM7XG5cdH1cblxuXHRnZXRTbG90SW5kZXggKCkge1xuXHRcdHJldHVybiB0aGlzLnNsb3RJbmRleDtcblx0fVxuXG5cdGdldEF0dGFjaG1lbnQgKCkge1xuXHRcdHJldHVybiB0aGlzLmF0dGFjaG1lbnQgYXMgdW5rbm93biBhcyBBdHRhY2htZW50O1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUsIG1vZGUsIGluZGV4LCBhbmQgZnJhbWUgdGltZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZS5cblx0ICogQHBhcmFtIGZyYW1lIEJldHdlZW4gMCBhbmQgPGNvZGU+ZnJhbWVDb3VudDwvY29kZT4sIGluY2x1c2l2ZS5cblx0ICogQHBhcmFtIHRpbWUgU2Vjb25kcyBiZXR3ZWVuIGZyYW1lcy4gKi9cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgbW9kZTogU2VxdWVuY2VNb2RlLCBpbmRleDogbnVtYmVyLCBkZWxheTogbnVtYmVyKSB7XG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGZyYW1lICo9IFNlcXVlbmNlVGltZWxpbmUuRU5UUklFUztcblx0XHRmcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHRmcmFtZXNbZnJhbWUgKyBTZXF1ZW5jZVRpbWVsaW5lLk1PREVdID0gbW9kZSB8IChpbmRleCA8PCA0KTtcblx0XHRmcmFtZXNbZnJhbWUgKyBTZXF1ZW5jZVRpbWVsaW5lLkRFTEFZXSA9IGRlbGF5O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBzbG90ID0gc2tlbGV0b24uc2xvdHNbdGhpcy5zbG90SW5kZXhdO1xuXHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkgcmV0dXJuO1xuXHRcdGxldCBzbG90QXR0YWNobWVudCA9IHNsb3QuYXR0YWNobWVudDtcblx0XHRsZXQgYXR0YWNobWVudCA9IHRoaXMuYXR0YWNobWVudCBhcyB1bmtub3duIGFzIEF0dGFjaG1lbnQ7XG5cdFx0aWYgKHNsb3RBdHRhY2htZW50ICE9IGF0dGFjaG1lbnQpIHtcblx0XHRcdGlmICghKHNsb3RBdHRhY2htZW50IGluc3RhbmNlb2YgVmVydGV4QXR0YWNobWVudClcblx0XHRcdFx0fHwgKHNsb3RBdHRhY2htZW50IGFzIFZlcnRleEF0dGFjaG1lbnQpLnRpbWVsaW5lQXR0YWNobWVudCAhPSBhdHRhY2htZW50KSByZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXAgfHwgYmxlbmQgPT0gTWl4QmxlbmQuZmlyc3QpIHNsb3Quc2VxdWVuY2VJbmRleCA9IC0xO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgU2VxdWVuY2VUaW1lbGluZS5FTlRSSUVTKTtcblx0XHRsZXQgYmVmb3JlID0gZnJhbWVzW2ldO1xuXHRcdGxldCBtb2RlQW5kSW5kZXggPSBmcmFtZXNbaSArIFNlcXVlbmNlVGltZWxpbmUuTU9ERV07XG5cdFx0bGV0IGRlbGF5ID0gZnJhbWVzW2kgKyBTZXF1ZW5jZVRpbWVsaW5lLkRFTEFZXTtcblxuXHRcdGlmICghdGhpcy5hdHRhY2htZW50LnNlcXVlbmNlKSByZXR1cm47XG5cdFx0bGV0IGluZGV4ID0gbW9kZUFuZEluZGV4ID4+IDQsIGNvdW50ID0gdGhpcy5hdHRhY2htZW50LnNlcXVlbmNlIS5yZWdpb25zLmxlbmd0aDtcblx0XHRsZXQgbW9kZSA9IFNlcXVlbmNlTW9kZVZhbHVlc1ttb2RlQW5kSW5kZXggJiAweGZdO1xuXHRcdGlmIChtb2RlICE9IFNlcXVlbmNlTW9kZS5ob2xkKSB7XG5cdFx0XHRpbmRleCArPSAoKCh0aW1lIC0gYmVmb3JlKSAvIGRlbGF5ICsgMC4wMDAwMSkgfCAwKTtcblx0XHRcdHN3aXRjaCAobW9kZSkge1xuXHRcdFx0XHRjYXNlIFNlcXVlbmNlTW9kZS5vbmNlOlxuXHRcdFx0XHRcdGluZGV4ID0gTWF0aC5taW4oY291bnQgLSAxLCBpbmRleCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2VxdWVuY2VNb2RlLmxvb3A6XG5cdFx0XHRcdFx0aW5kZXggJT0gY291bnQ7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2VxdWVuY2VNb2RlLnBpbmdwb25nOiB7XG5cdFx0XHRcdFx0bGV0IG4gPSAoY291bnQgPDwgMSkgLSAyO1xuXHRcdFx0XHRcdGluZGV4ID0gbiA9PSAwID8gMCA6IGluZGV4ICUgbjtcblx0XHRcdFx0XHRpZiAoaW5kZXggPj0gY291bnQpIGluZGV4ID0gbiAtIGluZGV4O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgU2VxdWVuY2VNb2RlLm9uY2VSZXZlcnNlOlxuXHRcdFx0XHRcdGluZGV4ID0gTWF0aC5tYXgoY291bnQgLSAxIC0gaW5kZXgsIDApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNlcXVlbmNlTW9kZS5sb29wUmV2ZXJzZTpcblx0XHRcdFx0XHRpbmRleCA9IGNvdW50IC0gMSAtIChpbmRleCAlIGNvdW50KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTZXF1ZW5jZU1vZGUucGluZ3BvbmdSZXZlcnNlOiB7XG5cdFx0XHRcdFx0bGV0IG4gPSAoY291bnQgPDwgMSkgLSAyO1xuXHRcdFx0XHRcdGluZGV4ID0gbiA9PSAwID8gMCA6IChpbmRleCArIGNvdW50IC0gMSkgJSBuO1xuXHRcdFx0XHRcdGlmIChpbmRleCA+PSBjb3VudCkgaW5kZXggPSBuIC0gaW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0c2xvdC5zZXF1ZW5jZUluZGV4ID0gaW5kZXg7XG5cdH1cbn1cbiJdfQ==
|
|
2158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0FuaW1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFjLE1BQU0sNkJBQTZCLENBQUM7QUFNM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUcxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLN0UsNkRBQTZEO0FBQzdELE1BQU0sT0FBTyxTQUFTO0lBQ3JCLG1GQUFtRjtJQUNuRixJQUFJLENBQVM7SUFDYixTQUFTLEdBQW9CLEVBQUUsQ0FBQztJQUNoQyxXQUFXLEdBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUV6Qyx1R0FBdUc7SUFDdkcsUUFBUSxDQUFTO0lBRWpCLFlBQWEsSUFBWSxFQUFFLFNBQTBCLEVBQUUsUUFBZ0I7UUFDdEUsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFFLFNBQTBCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMs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LE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQztZQUMzRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUEsZUFBZSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDRixDQUFDO1FBQ0QsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FB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LENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsR0FBRyxDQUFDLENBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxXQUFXLEdBQUcsQ0FBQyxDQUFBLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsV0FBVyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFdBQVcsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxXQUFXLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEUsTUFBTTtZQUNQLEtBQUssQ0FBQyxDQUFBLFdBQVc7Z0JBQ2hCLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDakMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDakMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07WUFDUDtnQkFDQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxVQUFVLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDNUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDdEYsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsS0FBSyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7Z0JBQzFGLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBLFVBQVUsRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFBLGVBQWUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBLFVBQVUsQ0FBQyxDQUFDO2dCQUNwRyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxVQUFVLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQSxlQUFlLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxVQUFVLENBQUMsQ0FBQztnQkFDcEcsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsVUFBVSxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUEsZUFBZSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUEsVUFBVSxDQUFDLENBQUM7UUFDdEcsQ0FBQztRQUVELElBQUksS0FBSyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RELFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3RELFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFFLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzFFLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzNFLENBQUM7YUFBTSxDQUFDO1lBQ1AsVUFBVSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2hFLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNqRCxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FB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b0JBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekIsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxLQUFLLElBQUksS0FBSzt3QkFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDdEMsTUFBTTtnQkFDUCxDQUFDO2dCQUNELEtBQUssWUFBWSxDQUFDLFdBQVc7b0JBQzVCLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxNQUFNO2dCQUNQLEtBQUssWUFBWSxDQUFDLFdBQVc7b0JBQzVCLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxNQUFNO2dCQUNQLEtBQUssWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekIsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxLQUFLLElBQUksS0FBSzt3QkFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDdkMsQ0FBQztZQUNGLENBQUM7UUFDRixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgSnVseSAyOCwgMjAyMy4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDIzLCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yXG4gKiBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhFXG4gKiBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgVmVydGV4QXR0YWNobWVudCwgQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludCB9IGZyb20gXCIuL0lrQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgUGF0aENvbnN0cmFpbnQgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljcywgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCIuL1Nsb3QuanNcIjtcbmltcG9ydCB7IFRyYW5zZm9ybUNvbnN0cmFpbnQgfSBmcm9tIFwiLi9UcmFuc2Zvcm1Db25zdHJhaW50LmpzXCI7XG5pbXBvcnQgeyBTdHJpbmdTZXQsIFV0aWxzLCBNYXRoVXRpbHMsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuL0V2ZW50LmpzXCI7XG5pbXBvcnQgeyBIYXNUZXh0dXJlUmVnaW9uIH0gZnJvbSBcIi4vYXR0YWNobWVudHMvSGFzVGV4dHVyZVJlZ2lvbi5qc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2VNb2RlLCBTZXF1ZW5jZU1vZGVWYWx1ZXMgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9TZXF1ZW5jZS5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnQgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBJbmhlcml0IH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcblxuLyoqIEEgc2ltcGxlIGNvbnRhaW5lciBmb3IgYSBsaXN0IG9mIHRpbWVsaW5lcyBhbmQgYSBuYW1lLiAqL1xuZXhwb3J0IGNsYXNzIEFuaW1hdGlvbiB7XG5cdC8qKiBUaGUgYW5pbWF0aW9uJ3MgbmFtZSwgd2hpY2ggaXMgdW5pcXVlIGFjcm9zcyBhbGwgYW5pbWF0aW9ucyBpbiB0aGUgc2tlbGV0b24uICovXG5cdG5hbWU6IHN0cmluZztcblx0dGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4gPSBbXTtcblx0dGltZWxpbmVJZHM6IFN0cmluZ1NldCA9IG5ldyBTdHJpbmdTZXQoKTtcblxuXHQvKiogVGhlIGR1cmF0aW9uIG9mIHRoZSBhbmltYXRpb24gaW4gc2Vjb25kcywgd2hpY2ggaXMgdGhlIGhpZ2hlc3QgdGltZSBvZiBhbGwga2V5cyBpbiB0aGUgdGltZWxpbmUuICovXG5cdGR1cmF0aW9uOiBudW1iZXI7XG5cblx0Y29uc3RydWN0b3IgKG5hbWU6IHN0cmluZywgdGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIGR1cmF0aW9uOiBudW1iZXIpIHtcblx0XHRpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihcIm5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHRoaXMubmFtZSA9IG5hbWU7XG5cdFx0dGhpcy5zZXRUaW1lbGluZXModGltZWxpbmVzKTtcblx0XHR0aGlzLmR1cmF0aW9uID0gZHVyYXRpb247XG5cdH1cblxuXHRzZXRUaW1lbGluZXMgKHRpbWVsaW5lczogQXJyYXk8VGltZWxpbmU+KSB7XG5cdFx0aWYgKCF0aW1lbGluZXMpIHRocm93IG5ldyBFcnJvcihcInRpbWVsaW5lcyBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0dGhpcy50aW1lbGluZXMgPSB0aW1lbGluZXM7XG5cdFx0dGhpcy50aW1lbGluZUlkcy5jbGVhcigpO1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgdGltZWxpbmVzLmxlbmd0aDsgaSsrKVxuXHRcdFx0dGhpcy50aW1lbGluZUlkcy5hZGRBbGwodGltZWxpbmVzW2ldLmdldFByb3BlcnR5SWRzKCkpO1xuXHR9XG5cblx0aGFzVGltZWxpbmUgKGlkczogc3RyaW5nW10pOiBib29sZWFuIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGlkcy5sZW5ndGg7IGkrKylcblx0XHRcdGlmICh0aGlzLnRpbWVsaW5lSWRzLmNvbnRhaW5zKGlkc1tpXSkpIHJldHVybiB0cnVlO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKiBBcHBsaWVzIGFsbCB0aGUgYW5pbWF0aW9uJ3MgdGltZWxpbmVzIHRvIHRoZSBzcGVjaWZpZWQgc2tlbGV0b24uXG5cdCAqXG5cdCAqIFNlZSBUaW1lbGluZSB7QGxpbmsgVGltZWxpbmUjYXBwbHkoU2tlbGV0b24sIGZsb2F0LCBmbG9hdCwgQXJyYXksIGZsb2F0LCBNaXhCbGVuZCwgTWl4RGlyZWN0aW9uKX0uXG5cdCAqIEBwYXJhbSBsb29wIElmIHRydWUsIHRoZSBhbmltYXRpb24gcmVwZWF0cyBhZnRlciB7QGxpbmsgI2dldER1cmF0aW9uKCl9LlxuXHQgKiBAcGFyYW0gZXZlbnRzIE1heSBiZSBudWxsIHRvIGlnbm9yZSBmaXJlZCBldmVudHMuICovXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgbG9vcDogYm9vbGVhbiwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRpZiAoIXNrZWxldG9uKSB0aHJvdyBuZXcgRXJyb3IoXCJza2VsZXRvbiBjYW5ub3QgYmUgbnVsbC5cIik7XG5cblx0XHRpZiAobG9vcCAmJiB0aGlzLmR1cmF0aW9uICE9IDApIHtcblx0XHRcdHRpbWUgJT0gdGhpcy5kdXJhdGlvbjtcblx0XHRcdGlmIChsYXN0VGltZSA+IDApIGxhc3RUaW1lICU9IHRoaXMuZHVyYXRpb247XG5cdFx0fVxuXG5cdFx0bGV0IHRpbWVsaW5lcyA9IHRoaXMudGltZWxpbmVzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGltZWxpbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHRpbWVsaW5lc1tpXS5hcHBseShza2VsZXRvbiwgbGFzdFRpbWUsIHRpbWUsIGV2ZW50cywgYWxwaGEsIGJsZW5kLCBkaXJlY3Rpb24pO1xuXHR9XG59XG5cbi8qKiBDb250cm9scyBob3cgYSB0aW1lbGluZSB2YWx1ZSBpcyBtaXhlZCB3aXRoIHRoZSBzZXR1cCBwb3NlIHZhbHVlIG9yIGN1cnJlbnQgcG9zZSB2YWx1ZSB3aGVuIGEgdGltZWxpbmUncyBgYWxwaGFgXG4gKiA8IDEuXG4gKlxuICogU2VlIFRpbWVsaW5lIHtAbGluayBUaW1lbGluZSNhcHBseShTa2VsZXRvbiwgZmxvYXQsIGZsb2F0LCBBcnJheSwgZmxvYXQsIE1peEJsZW5kLCBNaXhEaXJlY3Rpb24pfS4gKi9cbmV4cG9ydCBlbnVtIE1peEJsZW5kIHtcblx0LyoqIFRyYW5zaXRpb25zIGZyb20gdGhlIHNldHVwIHZhbHVlIHRvIHRoZSB0aW1lbGluZSB2YWx1ZSAodGhlIGN1cnJlbnQgdmFsdWUgaXMgbm90IHVzZWQpLiBCZWZvcmUgdGhlIGZpcnN0IGtleSwgdGhlIHNldHVwXG5cdCAqIHZhbHVlIGlzIHNldC4gKi9cblx0c2V0dXAsXG5cdC8qKiBUcmFuc2l0aW9ucyBmcm9tIHRoZSBjdXJyZW50IHZhbHVlIHRvIHRoZSB0aW1lbGluZSB2YWx1ZS4gQmVmb3JlIHRoZSBmaXJzdCBrZXksIHRyYW5zaXRpb25zIGZyb20gdGhlIGN1cnJlbnQgdmFsdWUgdG9cblx0ICogdGhlIHNldHVwIHZhbHVlLiBUaW1lbGluZXMgd2hpY2ggcGVyZm9ybSBpbnN0YW50IHRyYW5zaXRpb25zLCBzdWNoIGFzIHtAbGluayBEcmF3T3JkZXJUaW1lbGluZX0gb3Jcblx0ICoge0BsaW5rIEF0dGFjaG1lbnRUaW1lbGluZX0sIHVzZSB0aGUgc2V0dXAgdmFsdWUgYmVmb3JlIHRoZSBmaXJzdCBrZXkuXG5cdCAqXG5cdCAqIGBmaXJzdGAgaXMgaW50ZW5kZWQgZm9yIHRoZSBmaXJzdCBhbmltYXRpb25zIGFwcGxpZWQsIG5vdCBmb3IgYW5pbWF0aW9ucyBsYXllcmVkIG9uIHRvcCBvZiB0aG9zZS4gKi9cblx0Zmlyc3QsXG5cdC8qKiBUcmFuc2l0aW9ucyBmcm9tIHRoZSBjdXJyZW50IHZhbHVlIHRvIHRoZSB0aW1lbGluZSB2YWx1ZS4gTm8gY2hhbmdlIGlzIG1hZGUgYmVmb3JlIHRoZSBmaXJzdCBrZXkgKHRoZSBjdXJyZW50IHZhbHVlIGlzXG5cdCAqIGtlcHQgdW50aWwgdGhlIGZpcnN0IGtleSkuXG5cdCAqXG5cdCAqIGByZXBsYWNlYCBpcyBpbnRlbmRlZCBmb3IgYW5pbWF0aW9ucyBsYXllcmVkIG9uIHRvcCBvZiBvdGhlcnMsIG5vdCBmb3IgdGhlIGZpcnN0IGFuaW1hdGlvbnMgYXBwbGllZC4gKi9cblx0cmVwbGFjZSxcblx0LyoqIFRyYW5zaXRpb25zIGZyb20gdGhlIGN1cnJlbnQgdmFsdWUgdG8gdGhlIGN1cnJlbnQgdmFsdWUgcGx1cyB0aGUgdGltZWxpbmUgdmFsdWUuIE5vIGNoYW5nZSBpcyBtYWRlIGJlZm9yZSB0aGUgZmlyc3Qga2V5XG5cdCAqICh0aGUgY3VycmVudCB2YWx1ZSBpcyBrZXB0IHVudGlsIHRoZSBmaXJzdCBrZXkpLlxuXHQgKlxuXHQgKiBgYWRkYCBpcyBpbnRlbmRlZCBmb3IgYW5pbWF0aW9ucyBsYXllcmVkIG9uIHRvcCBvZiBvdGhlcnMsIG5vdCBmb3IgdGhlIGZpcnN0IGFuaW1hdGlvbnMgYXBwbGllZC4gUHJvcGVydGllc1xuXHQgKiBrZXllZCBieSBhZGRpdGl2ZSBhbmltYXRpb25zIG11c3QgYmUgc2V0IG1hbnVhbGx5IG9yIGJ5IGFub3RoZXIgYW5pbWF0aW9uIGJlZm9yZSBhcHBseWluZyB0aGUgYWRkaXRpdmUgYW5pbWF0aW9ucywgZWxzZVxuXHQgKiB0aGUgcHJvcGVydHkgdmFsdWVzIHdpbGwgaW5jcmVhc2UgY29udGludWFsbHkuICovXG5cdGFkZFxufVxuXG4vKiogSW5kaWNhdGVzIHdoZXRoZXIgYSB0aW1lbGluZSdzIGBhbHBoYWAgaXMgbWl4aW5nIG91dCBvdmVyIHRpbWUgdG93YXJkIDAgKHRoZSBzZXR1cCBvciBjdXJyZW50IHBvc2UgdmFsdWUpIG9yXG4gKiBtaXhpbmcgaW4gdG93YXJkIDEgKHRoZSB0aW1lbGluZSdzIHZhbHVlKS5cbiAqXG4gKiBTZWUgVGltZWxpbmUge0BsaW5rIFRpbWVsaW5lI2FwcGx5KFNrZWxldG9uLCBmbG9hdCwgZmxvYXQsIEFycmF5LCBmbG9hdCwgTWl4QmxlbmQsIE1peERpcmVjdGlvbil9LiAqL1xuZXhwb3J0IGVudW0gTWl4RGlyZWN0aW9uIHtcblx0bWl4SW4sIG1peE91dFxufVxuXG5jb25zdCBQcm9wZXJ0eSA9IHtcblx0cm90YXRlOiAwLFxuXHR4OiAxLFxuXHR5OiAyLFxuXHRzY2FsZVg6IDMsXG5cdHNjYWxlWTogNCxcblx0c2hlYXJYOiA1LFxuXHRzaGVhclk6IDYsXG5cdGluaGVyaXQ6IDcsXG5cblx0cmdiOiA4LFxuXHRhbHBoYTogOSxcblx0cmdiMjogMTAsXG5cblx0YXR0YWNobWVudDogMTEsXG5cdGRlZm9ybTogMTIsXG5cblx0ZXZlbnQ6IDEzLFxuXHRkcmF3T3JkZXI6IDE0LFxuXG5cdGlrQ29uc3RyYWludDogMTUsXG5cdHRyYW5zZm9ybUNvbnN0cmFpbnQ6IDE2LFxuXG5cdHBhdGhDb25zdHJhaW50UG9zaXRpb246IDE3LFxuXHRwYXRoQ29uc3RyYWludFNwYWNpbmc6IDE4LFxuXHRwYXRoQ29uc3RyYWludE1peDogMTksXG5cblx0cGh5c2ljc0NvbnN0cmFpbnRJbmVydGlhOiAyMCxcblx0cGh5c2ljc0NvbnN0cmFpbnRTdHJlbmd0aDogMjEsXG5cdHBoeXNpY3NDb25zdHJhaW50RGFtcGluZzogMjIsXG5cdHBoeXNpY3NDb25zdHJhaW50TWFzczogMjMsXG5cdHBoeXNpY3NDb25zdHJhaW50V2luZDogMjQsXG5cdHBoeXNpY3NDb25zdHJhaW50R3Jhdml0eTogMjUsXG5cdHBoeXNpY3NDb25zdHJhaW50TWl4OiAyNixcblx0cGh5c2ljc0NvbnN0cmFpbnRSZXNldDogMjcsXG5cblx0c2VxdWVuY2U6IDI4LFxufVxuXG4vKiogVGhlIGludGVyZmFjZSBmb3IgYWxsIHRpbWVsaW5lcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUaW1lbGluZSB7XG5cdHByb3BlcnR5SWRzOiBzdHJpbmdbXTtcblx0ZnJhbWVzOiBOdW1iZXJBcnJheUxpa2U7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgcHJvcGVydHlJZHM6IHN0cmluZ1tdKSB7XG5cdFx0dGhpcy5wcm9wZXJ0eUlkcyA9IHByb3BlcnR5SWRzO1xuXHRcdHRoaXMuZnJhbWVzID0gVXRpbHMubmV3RmxvYXRBcnJheShmcmFtZUNvdW50ICogdGhpcy5nZXRGcmFtZUVudHJpZXMoKSk7XG5cdH1cblxuXHRnZXRQcm9wZXJ0eUlkcyAoKSB7XG5cdFx0cmV0dXJuIHRoaXMucHJvcGVydHlJZHM7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIDE7XG5cdH1cblxuXHRnZXRGcmFtZUNvdW50ICgpIHtcblx0XHRyZXR1cm4gdGhpcy5mcmFtZXMubGVuZ3RoIC8gdGhpcy5nZXRGcmFtZUVudHJpZXMoKTtcblx0fVxuXG5cdGdldER1cmF0aW9uICgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lcy5sZW5ndGggLSB0aGlzLmdldEZyYW1lRW50cmllcygpXTtcblx0fVxuXG5cdGFic3RyYWN0IGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4gfCBudWxsLCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKTogdm9pZDtcblxuXHRzdGF0aWMgc2VhcmNoMSAoZnJhbWVzOiBOdW1iZXJBcnJheUxpa2UsIHRpbWU6IG51bWJlcikge1xuXHRcdGxldCBuID0gZnJhbWVzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IG47IGkrKylcblx0XHRcdGlmIChmcmFtZXNbaV0gPiB0aW1lKSByZXR1cm4gaSAtIDE7XG5cdFx0cmV0dXJuIG4gLSAxO1xuXHR9XG5cblx0c3RhdGljIHNlYXJjaCAoZnJhbWVzOiBOdW1iZXJBcnJheUxpa2UsIHRpbWU6IG51bWJlciwgc3RlcDogbnVtYmVyKSB7XG5cdFx0bGV0IG4gPSBmcmFtZXMubGVuZ3RoO1xuXHRcdGZvciAobGV0IGkgPSBzdGVwOyBpIDwgbjsgaSArPSBzdGVwKVxuXHRcdFx0aWYgKGZyYW1lc1tpXSA+IHRpbWUpIHJldHVybiBpIC0gc3RlcDtcblx0XHRyZXR1cm4gbiAtIHN0ZXA7XG5cdH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb25lVGltZWxpbmUge1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBib25lIGluIHtAbGluayBTa2VsZXRvbiNib25lc30gdGhhdCB3aWxsIGJlIGNoYW5nZWQuICovXG5cdGJvbmVJbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNsb3RUaW1lbGluZSB7XG5cdC8qKiBUaGUgaW5kZXggb2YgdGhlIHNsb3QgaW4ge0BsaW5rIFNrZWxldG9uI3Nsb3RzfSB0aGF0IHdpbGwgYmUgY2hhbmdlZC4gKi9cblx0c2xvdEluZGV4OiBudW1iZXI7XG59XG5cbi8qKiBUaGUgYmFzZSBjbGFzcyBmb3IgdGltZWxpbmVzIHRoYXQgdXNlIGludGVycG9sYXRpb24gYmV0d2VlbiBrZXkgZnJhbWUgdmFsdWVzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEN1cnZlVGltZWxpbmUgZXh0ZW5kcyBUaW1lbGluZSB7XG5cdHByb3RlY3RlZCBjdXJ2ZXM6IE51bWJlckFycmF5TGlrZTsgLy8gdHlwZSwgeCwgeSwgLi4uXG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcHJvcGVydHlJZHM6IHN0cmluZ1tdKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgcHJvcGVydHlJZHMpO1xuXHRcdHRoaXMuY3VydmVzID0gVXRpbHMubmV3RmxvYXRBcnJheShmcmFtZUNvdW50ICsgYmV6aWVyQ291bnQgKiAxOC8qQkVaSUVSX1NJWkUqLyk7XG5cdFx0dGhpcy5jdXJ2ZXNbZnJhbWVDb3VudCAtIDFdID0gMS8qU1RFUFBFRCovO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUgdG8gbGluZWFyIGludGVycG9sYXRpb24uICovXG5cdHNldExpbmVhciAoZnJhbWU6IG51bWJlcikge1xuXHRcdHRoaXMuY3VydmVzW2ZyYW1lXSA9IDAvKkxJTkVBUiovO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUgdG8gc3RlcHBlZCBpbnRlcnBvbGF0aW9uLiAqL1xuXHRzZXRTdGVwcGVkIChmcmFtZTogbnVtYmVyKSB7XG5cdFx0dGhpcy5jdXJ2ZXNbZnJhbWVdID0gMS8qU1RFUFBFRCovO1xuXHR9XG5cblx0LyoqIFNocmlua3MgdGhlIHN0b3JhZ2UgZm9yIEJlemllciBjdXJ2ZXMsIGZvciB1c2Ugd2hlbiA8Y29kZT5iZXppZXJDb3VudDwvY29kZT4gKHNwZWNpZmllZCBpbiB0aGUgY29uc3RydWN0b3IpIHdhcyBsYXJnZXJcblx0ICogdGhhbiB0aGUgYWN0dWFsIG51bWJlciBvZiBCZXppZXIgY3VydmVzLiAqL1xuXHRzaHJpbmsgKGJlemllckNvdW50OiBudW1iZXIpIHtcblx0XHRsZXQgc2l6ZSA9IHRoaXMuZ2V0RnJhbWVDb3VudCgpICsgYmV6aWVyQ291bnQgKiAxOC8qQkVaSUVSX1NJWkUqLztcblx0XHRpZiAodGhpcy5jdXJ2ZXMubGVuZ3RoID4gc2l6ZSkge1xuXHRcdFx0bGV0IG5ld0N1cnZlcyA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoc2l6ZSk7XG5cdFx0XHRVdGlscy5hcnJheUNvcHkodGhpcy5jdXJ2ZXMsIDAsIG5ld0N1cnZlcywgMCwgc2l6ZSk7XG5cdFx0XHR0aGlzLmN1cnZlcyA9IG5ld0N1cnZlcztcblx0XHR9XG5cdH1cblxuXHQvKiogU3RvcmVzIHRoZSBzZWdtZW50cyBmb3IgdGhlIHNwZWNpZmllZCBCZXppZXIgY3VydmUuIEZvciB0aW1lbGluZXMgdGhhdCBtb2RpZnkgbXVsdGlwbGUgdmFsdWVzLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuXG5cdCAqIG9uZSBjdXJ2ZSBwZXIgZnJhbWUuXG5cdCAqIEBwYXJhbSBiZXppZXIgVGhlIG9yZGluYWwgb2YgdGhpcyBCZXppZXIgY3VydmUgZm9yIHRoaXMgdGltZWxpbmUsIGJldHdlZW4gMCBhbmQgPGNvZGU+YmV6aWVyQ291bnQgLSAxPC9jb2RlPiAoc3BlY2lmaWVkXG5cdCAqICAgICAgICAgICBpbiB0aGUgY29uc3RydWN0b3IpLCBpbmNsdXNpdmUuXG5cdCAqIEBwYXJhbSBmcmFtZSBCZXR3ZWVuIDAgYW5kIDxjb2RlPmZyYW1lQ291bnQgLSAxPC9jb2RlPiwgaW5jbHVzaXZlLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIGluZGV4IG9mIHRoZSB2YWx1ZSBmb3IgdGhpcyBmcmFtZSB0aGF0IHRoaXMgY3VydmUgaXMgdXNlZCBmb3IuXG5cdCAqIEBwYXJhbSB0aW1lMSBUaGUgdGltZSBmb3IgdGhlIGZpcnN0IGtleS5cblx0ICogQHBhcmFtIHZhbHVlMSBUaGUgdmFsdWUgZm9yIHRoZSBmaXJzdCBrZXkuXG5cdCAqIEBwYXJhbSBjeDEgVGhlIHRpbWUgZm9yIHRoZSBmaXJzdCBCZXppZXIgaGFuZGxlLlxuXHQgKiBAcGFyYW0gY3kxIFRoZSB2YWx1ZSBmb3IgdGhlIGZpcnN0IEJlemllciBoYW5kbGUuXG5cdCAqIEBwYXJhbSBjeDIgVGhlIHRpbWUgb2YgdGhlIHNlY29uZCBCZXppZXIgaGFuZGxlLlxuXHQgKiBAcGFyYW0gY3kyIFRoZSB2YWx1ZSBmb3IgdGhlIHNlY29uZCBCZXppZXIgaGFuZGxlLlxuXHQgKiBAcGFyYW0gdGltZTIgVGhlIHRpbWUgZm9yIHRoZSBzZWNvbmQga2V5LlxuXHQgKiBAcGFyYW0gdmFsdWUyIFRoZSB2YWx1ZSBmb3IgdGhlIHNlY29uZCBrZXkuICovXG5cdHNldEJlemllciAoYmV6aWVyOiBudW1iZXIsIGZyYW1lOiBudW1iZXIsIHZhbHVlOiBudW1iZXIsIHRpbWUxOiBudW1iZXIsIHZhbHVlMTogbnVtYmVyLCBjeDE6IG51bWJlciwgY3kxOiBudW1iZXIsIGN4MjogbnVtYmVyLFxuXHRcdGN5MjogbnVtYmVyLCB0aW1lMjogbnVtYmVyLCB2YWx1ZTI6IG51bWJlcikge1xuXHRcdGxldCBjdXJ2ZXMgPSB0aGlzLmN1cnZlcztcblx0XHRsZXQgaSA9IHRoaXMuZ2V0RnJhbWVDb3VudCgpICsgYmV6aWVyICogMTgvKkJFWklFUl9TSVpFKi87XG5cdFx0aWYgKHZhbHVlID09IDApIGN1cnZlc1tmcmFtZV0gPSAyLypCRVpJRVIqLyArIGk7XG5cdFx0bGV0IHRtcHggPSAodGltZTEgLSBjeDEgKiAyICsgY3gyKSAqIDAuMDMsIHRtcHkgPSAodmFsdWUxIC0gY3kxICogMiArIGN5MikgKiAwLjAzO1xuXHRcdGxldCBkZGR4ID0gKChjeDEgLSBjeDIpICogMyAtIHRpbWUxICsgdGltZTIpICogMC4wMDYsIGRkZHkgPSAoKGN5MSAtIGN5MikgKiAzIC0gdmFsdWUxICsgdmFsdWUyKSAqIDAuMDA2O1xuXHRcdGxldCBkZHggPSB0bXB4ICogMiArIGRkZHgsIGRkeSA9IHRtcHkgKiAyICsgZGRkeTtcblx0XHRsZXQgZHggPSAoY3gxIC0gdGltZTEpICogMC4zICsgdG1weCArIGRkZHggKiAwLjE2NjY2NjY3LCBkeSA9IChjeTEgLSB2YWx1ZTEpICogMC4zICsgdG1weSArIGRkZHkgKiAwLjE2NjY2NjY3O1xuXHRcdGxldCB4ID0gdGltZTEgKyBkeCwgeSA9IHZhbHVlMSArIGR5O1xuXHRcdGZvciAobGV0IG4gPSBpICsgMTgvKkJFWklFUl9TSVpFKi87IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdGN1cnZlc1tpXSA9IHg7XG5cdFx0XHRjdXJ2ZXNbaSArIDFdID0geTtcblx0XHRcdGR4ICs9IGRkeDtcblx0XHRcdGR5ICs9IGRkeTtcblx0XHRcdGRkeCArPSBkZGR4O1xuXHRcdFx0ZGR5ICs9IGRkZHk7XG5cdFx0XHR4ICs9IGR4O1xuXHRcdFx0eSArPSBkeTtcblx0XHR9XG5cdH1cblxuXHQvKiogUmV0dXJucyB0aGUgQmV6aWVyIGludGVycG9sYXRlZCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLlxuXHQgKiBAcGFyYW0gZnJhbWVJbmRleCBUaGUgaW5kZXggaW50byB7QGxpbmsgI2dldEZyYW1lcygpfSBmb3IgdGhlIHZhbHVlcyBvZiB0aGUgZnJhbWUgYmVmb3JlIDxjb2RlPnRpbWU8L2NvZGU+LlxuXHQgKiBAcGFyYW0gdmFsdWVPZmZzZXQgVGhlIG9mZnNldCBmcm9tIDxjb2RlPmZyYW1lSW5kZXg8L2NvZGU+IHRvIHRoZSB2YWx1ZSB0aGlzIGN1cnZlIGlzIHVzZWQgZm9yLlxuXHQgKiBAcGFyYW0gaSBUaGUgaW5kZXggb2YgdGhlIEJlemllciBzZWdtZW50cy4gU2VlIHtAbGluayAjZ2V0Q3VydmVUeXBlKGludCl9LiAqL1xuXHRnZXRCZXppZXJWYWx1ZSAodGltZTogbnVtYmVyLCBmcmFtZUluZGV4OiBudW1iZXIsIHZhbHVlT2Zmc2V0OiBudW1iZXIsIGk6IG51bWJlcikge1xuXHRcdGxldCBjdXJ2ZXMgPSB0aGlzLmN1cnZlcztcblx0XHRpZiAoY3VydmVzW2ldID4gdGltZSkge1xuXHRcdFx0bGV0IHggPSB0aGlzLmZyYW1lc1tmcmFtZUluZGV4XSwgeSA9IHRoaXMuZnJhbWVzW2ZyYW1lSW5kZXggKyB2YWx1ZU9mZnNldF07XG5cdFx0XHRyZXR1cm4geSArICh0aW1lIC0geCkgLyAoY3VydmVzW2ldIC0geCkgKiAoY3VydmVzW2kgKyAxXSAtIHkpO1xuXHRcdH1cblx0XHRsZXQgbiA9IGkgKyAxOC8qQkVaSUVSX1NJWkUqLztcblx0XHRmb3IgKGkgKz0gMjsgaSA8IG47IGkgKz0gMikge1xuXHRcdFx0aWYgKGN1cnZlc1tpXSA+PSB0aW1lKSB7XG5cdFx0XHRcdGxldCB4ID0gY3VydmVzW2kgLSAyXSwgeSA9IGN1cnZlc1tpIC0gMV07XG5cdFx0XHRcdHJldHVybiB5ICsgKHRpbWUgLSB4KSAvIChjdXJ2ZXNbaV0gLSB4KSAqIChjdXJ2ZXNbaSArIDFdIC0geSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZyYW1lSW5kZXggKz0gdGhpcy5nZXRGcmFtZUVudHJpZXMoKTtcblx0XHRsZXQgeCA9IGN1cnZlc1tuIC0gMl0sIHkgPSBjdXJ2ZXNbbiAtIDFdO1xuXHRcdHJldHVybiB5ICsgKHRpbWUgLSB4KSAvICh0aGlzLmZyYW1lc1tmcmFtZUluZGV4XSAtIHgpICogKHRoaXMuZnJhbWVzW2ZyYW1lSW5kZXggKyB2YWx1ZU9mZnNldF0gLSB5KTtcblx0fVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ3VydmVUaW1lbGluZTEgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lIHtcblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcHJvcGVydHlJZDogc3RyaW5nKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFtwcm9wZXJ0eUlkXSk7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiAyLypFTlRSSUVTKi87XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBhbmQgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgZnJhbWUuXG5cdCAqIEBwYXJhbSBmcmFtZSBCZXR3ZWVuIDAgYW5kIDxjb2RlPmZyYW1lQ291bnQ8L2NvZGU+LCBpbmNsdXNpdmUuXG5cdCAqIEBwYXJhbSB0aW1lIFRoZSBmcmFtZSB0aW1lIGluIHNlY29uZHMuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0XHRmcmFtZSA8PD0gMTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMS8qVkFMVUUqL10gPSB2YWx1ZTtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIHRoZSBpbnRlcnBvbGF0ZWQgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gKi9cblx0Z2V0Q3VydmVWYWx1ZSAodGltZTogbnVtYmVyKSB7XG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGxldCBpID0gZnJhbWVzLmxlbmd0aCAtIDI7XG5cdFx0Zm9yIChsZXQgaWkgPSAyOyBpaSA8PSBpOyBpaSArPSAyKSB7XG5cdFx0XHRpZiAoZnJhbWVzW2lpXSA+IHRpbWUpIHtcblx0XHRcdFx0aSA9IGlpIC0gMjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGN1cnZlVHlwZSA9IHRoaXMuY3VydmVzW2kgPj4gMV07XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV0sIHZhbHVlID0gZnJhbWVzW2kgKyAxLypWQUxVRSovXTtcblx0XHRcdFx0cmV0dXJuIHZhbHVlICsgKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgMi8qRU5UUklFUyovXSAtIGJlZm9yZSkgKiAoZnJhbWVzW2kgKyAyLypFTlRSSUVTKi8gKyAxLypWQUxVRSovXSAtIHZhbHVlKTtcblx0XHRcdGNhc2UgMS8qU1RFUFBFRCovOlxuXHRcdFx0XHRyZXR1cm4gZnJhbWVzW2kgKyAxLypWQUxVRSovXTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qVkFMVUUqLywgY3VydmVUeXBlIC0gMi8qQkVaSUVSKi8pO1xuXHR9XG5cblx0Z2V0UmVsYXRpdmVWYWx1ZSAodGltZTogbnVtYmVyLCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGN1cnJlbnQ6IG51bWJlciwgc2V0dXA6IG51bWJlcikge1xuXHRcdGlmICh0aW1lIDwgdGhpcy5mcmFtZXNbMF0pIHtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRyZXR1cm4gc2V0dXA7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0cmV0dXJuIGN1cnJlbnQgKyAoc2V0dXAgLSBjdXJyZW50KSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGN1cnJlbnQ7XG5cdFx0fVxuXHRcdGxldCB2YWx1ZSA9IHRoaXMuZ2V0Q3VydmVWYWx1ZSh0aW1lKTtcblx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRyZXR1cm4gc2V0dXAgKyB2YWx1ZSAqIGFscGhhO1xuXHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdGNhc2UgTWl4QmxlbmQucmVwbGFjZTpcblx0XHRcdFx0dmFsdWUgKz0gc2V0dXAgLSBjdXJyZW50O1xuXHRcdH1cblx0XHRyZXR1cm4gY3VycmVudCArIHZhbHVlICogYWxwaGE7XG5cdH1cblxuXHRnZXRBYnNvbHV0ZVZhbHVlICh0aW1lOiBudW1iZXIsIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgY3VycmVudDogbnVtYmVyLCBzZXR1cDogbnVtYmVyKSB7XG5cdFx0aWYgKHRpbWUgPCB0aGlzLmZyYW1lc1swXSkge1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdHJldHVybiBzZXR1cDtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRyZXR1cm4gY3VycmVudCArIChzZXR1cCAtIGN1cnJlbnQpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3VycmVudDtcblx0XHR9XG5cdFx0bGV0IHZhbHVlID0gdGhpcy5nZXRDdXJ2ZVZhbHVlKHRpbWUpO1xuXHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkgcmV0dXJuIHNldHVwICsgKHZhbHVlIC0gc2V0dXApICogYWxwaGE7XG5cdFx0cmV0dXJuIGN1cnJlbnQgKyAodmFsdWUgLSBjdXJyZW50KSAqIGFscGhhO1xuXHR9XG5cblx0Z2V0QWJzb2x1dGVWYWx1ZTIgKHRpbWU6IG51bWJlciwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBjdXJyZW50OiBudW1iZXIsIHNldHVwOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpIHtcblx0XHRpZiAodGltZSA8IHRoaXMuZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0cmV0dXJuIHNldHVwO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdHJldHVybiBjdXJyZW50ICsgKHNldHVwIC0gY3VycmVudCkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBjdXJyZW50O1xuXHRcdH1cblx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXApIHJldHVybiBzZXR1cCArICh2YWx1ZSAtIHNldHVwKSAqIGFscGhhO1xuXHRcdHJldHVybiBjdXJyZW50ICsgKHZhbHVlIC0gY3VycmVudCkgKiBhbHBoYTtcblx0fVxuXG5cdGdldFNjYWxlVmFsdWUgKHRpbWU6IG51bWJlciwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbiwgY3VycmVudDogbnVtYmVyLCBzZXR1cDogbnVtYmVyKSB7XG5cdFx0Y29uc3QgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRyZXR1cm4gc2V0dXA7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0cmV0dXJuIGN1cnJlbnQgKyAoc2V0dXAgLSBjdXJyZW50KSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGN1cnJlbnQ7XG5cdFx0fVxuXHRcdGxldCB2YWx1ZSA9IHRoaXMuZ2V0Q3VydmVWYWx1ZSh0aW1lKSAqIHNldHVwO1xuXHRcdGlmIChhbHBoYSA9PSAxKSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuYWRkKSByZXR1cm4gY3VycmVudCArIHZhbHVlIC0gc2V0dXA7XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fVxuXHRcdC8vIE1peGluZyBvdXQgdXNlcyBzaWduIG9mIHNldHVwIG9yIGN1cnJlbnQgcG9zZSwgZWxzZSB1c2Ugc2lnbiBvZiBrZXkuXG5cdFx0aWYgKGRpcmVjdGlvbiA9PSBNaXhEaXJlY3Rpb24ubWl4T3V0KSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0cmV0dXJuIHNldHVwICsgKE1hdGguYWJzKHZhbHVlKSAqIE1hdGhVdGlscy5zaWdudW0oc2V0dXApIC0gc2V0dXApICogYWxwaGE7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQucmVwbGFjZTpcblx0XHRcdFx0XHRyZXR1cm4gY3VycmVudCArIChNYXRoLmFicyh2YWx1ZSkgKiBNYXRoVXRpbHMuc2lnbnVtKGN1cnJlbnQpIC0gY3VycmVudCkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0bGV0IHMgPSAwO1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdHMgPSBNYXRoLmFicyhzZXR1cCkgKiBNYXRoVXRpbHMuc2lnbnVtKHZhbHVlKTtcblx0XHRcdFx0XHRyZXR1cm4gcyArICh2YWx1ZSAtIHMpICogYWxwaGE7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQucmVwbGFjZTpcblx0XHRcdFx0XHRzID0gTWF0aC5hYnMoY3VycmVudCkgKiBNYXRoVXRpbHMuc2lnbnVtKHZhbHVlKTtcblx0XHRcdFx0XHRyZXR1cm4gcyArICh2YWx1ZSAtIHMpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBjdXJyZW50ICsgKHZhbHVlIC0gc2V0dXApICogYWxwaGE7XG5cdH1cbn1cblxuLyoqIFRoZSBiYXNlIGNsYXNzIGZvciBhIHtAbGluayBDdXJ2ZVRpbWVsaW5lfSB3aGljaCBzZXRzIHR3byBwcm9wZXJ0aWVzLiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEN1cnZlVGltZWxpbmUyIGV4dGVuZHMgQ3VydmVUaW1lbGluZSB7XG5cdC8qKiBAcGFyYW0gYmV6aWVyQ291bnQgVGhlIG1heGltdW0gbnVtYmVyIG9mIEJlemllciBjdXJ2ZXMuIFNlZSB7QGxpbmsgI3NocmluayhpbnQpfS5cblx0ICogQHBhcmFtIHByb3BlcnR5SWRzIFVuaXF1ZSBpZGVudGlmaWVycyBmb3IgdGhlIHByb3BlcnRpZXMgdGhlIHRpbWVsaW5lIG1vZGlmaWVzLiAqL1xuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBwcm9wZXJ0eUlkMTogc3RyaW5nLCBwcm9wZXJ0eUlkMjogc3RyaW5nKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFtwcm9wZXJ0eUlkMSwgcHJvcGVydHlJZDJdKTtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDMvKkVOVFJJRVMqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0aW1lIGFuZCB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZnJhbWUuXG5cdCAqIEBwYXJhbSBmcmFtZSBCZXR3ZWVuIDAgYW5kIDxjb2RlPmZyYW1lQ291bnQ8L2NvZGU+LCBpbmNsdXNpdmUuXG5cdCAqIEBwYXJhbSB0aW1lIFRoZSBmcmFtZSB0aW1lIGluIHNlY29uZHMuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIHZhbHVlMTogbnVtYmVyLCB2YWx1ZTI6IG51bWJlcikge1xuXHRcdGZyYW1lICo9IDMvKkVOVFJJRVMqLztcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMS8qVkFMVUUxKi9dID0gdmFsdWUxO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMi8qVkFMVUUyKi9dID0gdmFsdWUyO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3JvdGF0aW9ufS4gKi9cbmV4cG9ydCBjbGFzcyBSb3RhdGVUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUxIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS5yb3RhdGUgKyBcInxcIiArIGJvbmVJbmRleCk7XG5cdFx0dGhpcy5ib25lSW5kZXggPSBib25lSW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+IHwgbnVsbCwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmIChib25lLmFjdGl2ZSkgYm9uZS5yb3RhdGlvbiA9IHRoaXMuZ2V0UmVsYXRpdmVWYWx1ZSh0aW1lLCBhbHBoYSwgYmxlbmQsIGJvbmUucm90YXRpb24sIGJvbmUuZGF0YS5yb3RhdGlvbik7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBib25lJ3MgbG9jYWwge0BsaW5rIEJvbmUjeH0gYW5kIHtAbGluayBCb25lI3l9LiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTIgaW1wbGVtZW50cyBCb25lVGltZWxpbmUge1xuXHRib25lSW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIGJvbmVJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsXG5cdFx0XHRQcm9wZXJ0eS54ICsgXCJ8XCIgKyBib25lSW5kZXgsXG5cdFx0XHRQcm9wZXJ0eS55ICsgXCJ8XCIgKyBib25lSW5kZXgsXG5cdFx0KTtcblx0XHR0aGlzLmJvbmVJbmRleCA9IGJvbmVJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW3RoaXMuYm9uZUluZGV4XTtcblx0XHRpZiAoIWJvbmUuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRib25lLnggPSBib25lLmRhdGEueDtcblx0XHRcdFx0XHRib25lLnkgPSBib25lLmRhdGEueTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Ym9uZS54ICs9IChib25lLmRhdGEueCAtIGJvbmUueCkgKiBhbHBoYTtcblx0XHRcdFx0XHRib25lLnkgKz0gKGJvbmUuZGF0YS55IC0gYm9uZS55KSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCB4ID0gMCwgeSA9IDA7XG5cdFx0bGV0IGkgPSBUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCAzLypFTlRSSUVTKi8pO1xuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpIC8gMy8qRU5UUklFUyovXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMS8qVkFMVUUxKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAyLypWQUxVRTIqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgMy8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdHggKz0gKGZyYW1lc1tpICsgMy8qRU5UUklFUyovICsgMS8qVkFMVUUxKi9dIC0geCkgKiB0O1xuXHRcdFx0XHR5ICs9IChmcmFtZXNbaSArIDMvKkVOVFJJRVMqLyArIDIvKlZBTFVFMiovXSAtIHkpICogdDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMS8qVkFMVUUxKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAyLypWQUxVRTIqL107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0eCA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qVkFMVUUxKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0eSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qVkFMVUUyKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovIC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblxuXHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdGJvbmUueCA9IGJvbmUuZGF0YS54ICsgeCAqIGFscGhhO1xuXHRcdFx0XHRib25lLnkgPSBib25lLmRhdGEueSArIHkgKiBhbHBoYTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0Y2FzZSBNaXhCbGVuZC5yZXBsYWNlOlxuXHRcdFx0XHRib25lLnggKz0gKGJvbmUuZGF0YS54ICsgeCAtIGJvbmUueCkgKiBhbHBoYTtcblx0XHRcdFx0Ym9uZS55ICs9IChib25lLmRhdGEueSArIHkgLSBib25lLnkpICogYWxwaGE7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBNaXhCbGVuZC5hZGQ6XG5cdFx0XHRcdGJvbmUueCArPSB4ICogYWxwaGE7XG5cdFx0XHRcdGJvbmUueSArPSB5ICogYWxwaGE7XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3h9LiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVhUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUxIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS54ICsgXCJ8XCIgKyBib25lSW5kZXgpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmIChib25lLmFjdGl2ZSkgYm9uZS54ID0gdGhpcy5nZXRSZWxhdGl2ZVZhbHVlKHRpbWUsIGFscGhhLCBibGVuZCwgYm9uZS54LCBib25lLmRhdGEueCk7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBib25lJ3MgbG9jYWwge0BsaW5rIEJvbmUjeH0uICovXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlWVRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTEgaW1wbGVtZW50cyBCb25lVGltZWxpbmUge1xuXHRib25lSW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIGJvbmVJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFByb3BlcnR5LnkgKyBcInxcIiArIGJvbmVJbmRleCk7XG5cdFx0dGhpcy5ib25lSW5kZXggPSBib25lSW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1t0aGlzLmJvbmVJbmRleF07XG5cdFx0aWYgKGJvbmUuYWN0aXZlKSBib25lLnkgPSB0aGlzLmdldFJlbGF0aXZlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCBib25lLnksIGJvbmUuZGF0YS55KTtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIGJvbmUncyBsb2NhbCB7QGxpbmsgQm9uZSNzY2FsZVgpfSBhbmQge0BsaW5rIEJvbmUjc2NhbGVZfS4gKi9cbmV4cG9ydCBjbGFzcyBTY2FsZVRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTIgaW1wbGVtZW50cyBCb25lVGltZWxpbmUge1xuXHRib25lSW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIGJvbmVJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsXG5cdFx0XHRQcm9wZXJ0eS5zY2FsZVggKyBcInxcIiArIGJvbmVJbmRleCxcblx0XHRcdFByb3BlcnR5LnNjYWxlWSArIFwifFwiICsgYm9uZUluZGV4XG5cdFx0KTtcblx0XHR0aGlzLmJvbmVJbmRleCA9IGJvbmVJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW3RoaXMuYm9uZUluZGV4XTtcblx0XHRpZiAoIWJvbmUuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRib25lLnNjYWxlWCA9IGJvbmUuZGF0YS5zY2FsZVg7XG5cdFx0XHRcdFx0Ym9uZS5zY2FsZVkgPSBib25lLmRhdGEuc2NhbGVZO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRib25lLnNjYWxlWCArPSAoYm9uZS5kYXRhLnNjYWxlWCAtIGJvbmUuc2NhbGVYKSAqIGFscGhhO1xuXHRcdFx0XHRcdGJvbmUuc2NhbGVZICs9IChib25lLmRhdGEuc2NhbGVZIC0gYm9uZS5zY2FsZVkpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IHgsIHk7XG5cdFx0bGV0IGkgPSBUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCAzLypFTlRSSUVTKi8pO1xuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpIC8gMy8qRU5UUklFUyovXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMS8qVkFMVUUxKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAyLypWQUxVRTIqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgMy8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdHggKz0gKGZyYW1lc1tpICsgMy8qRU5UUklFUyovICsgMS8qVkFMVUUxKi9dIC0geCkgKiB0O1xuXHRcdFx0XHR5ICs9IChmcmFtZXNbaSArIDMvKkVOVFJJRVMqLyArIDIvKlZBTFVFMiovXSAtIHkpICogdDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMS8qVkFMVUUxKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAyLypWQUxVRTIqL107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0eCA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qVkFMVUUxKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0eSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qVkFMVUUyKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovIC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblx0XHR4ICo9IGJvbmUuZGF0YS5zY2FsZVg7XG5cdFx0eSAqPSBib25lLmRhdGEuc2NhbGVZO1xuXG5cdFx0aWYgKGFscGhhID09IDEpIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5hZGQpIHtcblx0XHRcdFx0Ym9uZS5zY2FsZVggKz0geCAtIGJvbmUuZGF0YS5zY2FsZVg7XG5cdFx0XHRcdGJvbmUuc2NhbGVZICs9IHkgLSBib25lLmRhdGEuc2NhbGVZO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ym9uZS5zY2FsZVggPSB4O1xuXHRcdFx0XHRib25lLnNjYWxlWSA9IHk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBieCA9IDAsIGJ5ID0gMDtcblx0XHRcdGlmIChkaXJlY3Rpb24gPT0gTWl4RGlyZWN0aW9uLm1peE91dCkge1xuXHRcdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRcdGJ4ID0gYm9uZS5kYXRhLnNjYWxlWDtcblx0XHRcdFx0XHRcdGJ5ID0gYm9uZS5kYXRhLnNjYWxlWTtcblx0XHRcdFx0XHRcdGJvbmUuc2NhbGVYID0gYnggKyAoTWF0aC5hYnMoeCkgKiBNYXRoVXRpbHMuc2lnbnVtKGJ4KSAtIGJ4KSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVkgPSBieSArIChNYXRoLmFicyh5KSAqIE1hdGhVdGlscy5zaWdudW0oYnkpIC0gYnkpICogYWxwaGE7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQucmVwbGFjZTpcblx0XHRcdFx0XHRcdGJ4ID0gYm9uZS5zY2FsZVg7XG5cdFx0XHRcdFx0XHRieSA9IGJvbmUuc2NhbGVZO1xuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVggPSBieCArIChNYXRoLmFicyh4KSAqIE1hdGhVdGlscy5zaWdudW0oYngpIC0gYngpICogYWxwaGE7XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWSA9IGJ5ICsgKE1hdGguYWJzKHkpICogTWF0aFV0aWxzLnNpZ251bShieSkgLSBieSkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQuYWRkOlxuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVggKz0gKHggLSBib25lLmRhdGEuc2NhbGVYKSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0Ym9uZS5zY2FsZVkgKz0gKHkgLSBib25lLmRhdGEuc2NhbGVZKSAqIGFscGhhO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRcdGJ4ID0gTWF0aC5hYnMoYm9uZS5kYXRhLnNjYWxlWCkgKiBNYXRoVXRpbHMuc2lnbnVtKHgpO1xuXHRcdFx0XHRcdFx0YnkgPSBNYXRoLmFicyhib25lLmRhdGEuc2NhbGVZKSAqIE1hdGhVdGlscy5zaWdudW0oeSk7XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWCA9IGJ4ICsgKHggLSBieCkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdGJvbmUuc2NhbGVZID0gYnkgKyAoeSAtIGJ5KSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdFx0XHRieCA9IE1hdGguYWJzKGJvbmUuc2NhbGVYKSAqIE1hdGhVdGlscy5zaWdudW0oeCk7XG5cdFx0XHRcdFx0XHRieSA9IE1hdGguYWJzKGJvbmUuc2NhbGVZKSAqIE1hdGhVdGlscy5zaWdudW0oeSk7XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWCA9IGJ4ICsgKHggLSBieCkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdGJvbmUuc2NhbGVZID0gYnkgKyAoeSAtIGJ5KSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5hZGQ6XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWCArPSAoeCAtIGJvbmUuZGF0YS5zY2FsZVgpICogYWxwaGE7XG5cdFx0XHRcdFx0XHRib25lLnNjYWxlWSArPSAoeSAtIGJvbmUuZGF0YS5zY2FsZVkpICogYWxwaGE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBib25lJ3MgbG9jYWwge0BsaW5rIEJvbmUjc2NhbGVYKX0gYW5kIHtAbGluayBCb25lI3NjYWxlWX0uICovXG5leHBvcnQgY2xhc3MgU2NhbGVYVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSBpbXBsZW1lbnRzIEJvbmVUaW1lbGluZSB7XG5cdGJvbmVJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgYm9uZUluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgUHJvcGVydHkuc2NhbGVYICsgXCJ8XCIgKyBib25lSW5kZXgpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmIChib25lLmFjdGl2ZSkgYm9uZS5zY2FsZVggPSB0aGlzLmdldFNjYWxlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCBkaXJlY3Rpb24sIGJvbmUuc2NhbGVYLCBib25lLmRhdGEuc2NhbGVYKTtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIGJvbmUncyBsb2NhbCB7QGxpbmsgQm9uZSNzY2FsZVgpfSBhbmQge0BsaW5rIEJvbmUjc2NhbGVZfS4gKi9cbmV4cG9ydCBjbGFzcyBTY2FsZVlUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUxIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS5zY2FsZVkgKyBcInxcIiArIGJvbmVJbmRleCk7XG5cdFx0dGhpcy5ib25lSW5kZXggPSBib25lSW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1t0aGlzLmJvbmVJbmRleF07XG5cdFx0aWYgKGJvbmUuYWN0aXZlKSBib25lLnNjYWxlWSA9IHRoaXMuZ2V0U2NhbGVWYWx1ZSh0aW1lLCBhbHBoYSwgYmxlbmQsIGRpcmVjdGlvbiwgYm9uZS5zY2FsZVksIGJvbmUuZGF0YS5zY2FsZVkpO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3NoZWFyWH0gYW5kIHtAbGluayBCb25lI3NoZWFyWX0uICovXG5leHBvcnQgY2xhc3MgU2hlYXJUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUyIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LFxuXHRcdFx0UHJvcGVydHkuc2hlYXJYICsgXCJ8XCIgKyBib25lSW5kZXgsXG5cdFx0XHRQcm9wZXJ0eS5zaGVhclkgKyBcInxcIiArIGJvbmVJbmRleFxuXHRcdCk7XG5cdFx0dGhpcy5ib25lSW5kZXggPSBib25lSW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1t0aGlzLmJvbmVJbmRleF07XG5cdFx0aWYgKCFib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Ym9uZS5zaGVhclggPSBib25lLmRhdGEuc2hlYXJYO1xuXHRcdFx0XHRcdGJvbmUuc2hlYXJZID0gYm9uZS5kYXRhLnNoZWFyWTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Ym9uZS5zaGVhclggKz0gKGJvbmUuZGF0YS5zaGVhclggLSBib25lLnNoZWFyWCkgKiBhbHBoYTtcblx0XHRcdFx0XHRib25lLnNoZWFyWSArPSAoYm9uZS5kYXRhLnNoZWFyWSAtIGJvbmUuc2hlYXJZKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCB4ID0gMCwgeSA9IDA7XG5cdFx0bGV0IGkgPSBUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCAzLypFTlRSSUVTKi8pO1xuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpIC8gMy8qRU5UUklFUyovXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMS8qVkFMVUUxKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAyLypWQUxVRTIqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgMy8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdHggKz0gKGZyYW1lc1tpICsgMy8qRU5UUklFUyovICsgMS8qVkFMVUUxKi9dIC0geCkgKiB0O1xuXHRcdFx0XHR5ICs9IChmcmFtZXNbaSArIDMvKkVOVFJJRVMqLyArIDIvKlZBTFVFMiovXSAtIHkpICogdDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0eCA9IGZyYW1lc1tpICsgMS8qVkFMVUUxKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAyLypWQUxVRTIqL107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0eCA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qVkFMVUUxKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0eSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qVkFMVUUyKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovIC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblxuXHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdGJvbmUuc2hlYXJYID0gYm9uZS5kYXRhLnNoZWFyWCArIHggKiBhbHBoYTtcblx0XHRcdFx0Ym9uZS5zaGVhclkgPSBib25lLmRhdGEuc2hlYXJZICsgeSAqIGFscGhhO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRjYXNlIE1peEJsZW5kLnJlcGxhY2U6XG5cdFx0XHRcdGJvbmUuc2hlYXJYICs9IChib25lLmRhdGEuc2hlYXJYICsgeCAtIGJvbmUuc2hlYXJYKSAqIGFscGhhO1xuXHRcdFx0XHRib25lLnNoZWFyWSArPSAoYm9uZS5kYXRhLnNoZWFyWSArIHkgLSBib25lLnNoZWFyWSkgKiBhbHBoYTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIE1peEJsZW5kLmFkZDpcblx0XHRcdFx0Ym9uZS5zaGVhclggKz0geCAqIGFscGhhO1xuXHRcdFx0XHRib25lLnNoZWFyWSArPSB5ICogYWxwaGE7XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgYm9uZSdzIGxvY2FsIHtAbGluayBCb25lI3NoZWFyWH0gYW5kIHtAbGluayBCb25lI3NoZWFyWX0uICovXG5leHBvcnQgY2xhc3MgU2hlYXJYVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSBpbXBsZW1lbnRzIEJvbmVUaW1lbGluZSB7XG5cdGJvbmVJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgYm9uZUluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgUHJvcGVydHkuc2hlYXJYICsgXCJ8XCIgKyBib25lSW5kZXgpO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBib25lID0gc2tlbGV0b24uYm9uZXNbdGhpcy5ib25lSW5kZXhdO1xuXHRcdGlmIChib25lLmFjdGl2ZSkgYm9uZS5zaGVhclggPSB0aGlzLmdldFJlbGF0aXZlVmFsdWUodGltZSwgYWxwaGEsIGJsZW5kLCBib25lLnNoZWFyWCwgYm9uZS5kYXRhLnNoZWFyWCk7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBib25lJ3MgbG9jYWwge0BsaW5rIEJvbmUjc2hlYXJYfSBhbmQge0BsaW5rIEJvbmUjc2hlYXJZfS4gKi9cbmV4cG9ydCBjbGFzcyBTaGVhcllUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUxIGltcGxlbWVudHMgQm9uZVRpbWVsaW5lIHtcblx0Ym9uZUluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBib25lSW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS5zaGVhclkgKyBcInxcIiArIGJvbmVJbmRleCk7XG5cdFx0dGhpcy5ib25lSW5kZXggPSBib25lSW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGJvbmUgPSBza2VsZXRvbi5ib25lc1t0aGlzLmJvbmVJbmRleF07XG5cdFx0aWYgKGJvbmUuYWN0aXZlKSBib25lLnNoZWFyWSA9IHRoaXMuZ2V0UmVsYXRpdmVWYWx1ZSh0aW1lLCBhbHBoYSwgYmxlbmQsIGJvbmUuc2hlYXJZLCBib25lLmRhdGEuc2hlYXJZKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgSW5oZXJpdFRpbWVsaW5lIGV4dGVuZHMgVGltZWxpbmUgaW1wbGVtZW50cyBCb25lVGltZWxpbmUge1xuXHRib25lSW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJvbmVJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgW1Byb3BlcnR5LmluaGVyaXQgKyBcInxcIiArIGJvbmVJbmRleF0pO1xuXHRcdHRoaXMuYm9uZUluZGV4ID0gYm9uZUluZGV4O1xuXHR9XG5cblx0cHVibGljIGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDIvKkVOVFJJRVMqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0cmFuc2Zvcm0gbW9kZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZS5cblx0ICogQHBhcmFtIGZyYW1lIEJldHdlZW4gMCBhbmQgPGNvZGU+ZnJhbWVDb3VudDwvY29kZT4sIGluY2x1c2l2ZS5cblx0ICogQHBhcmFtIHRpbWUgVGhlIGZyYW1lIHRpbWUgaW4gc2Vjb25kcy4gKi9cblx0cHVibGljIHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGluaGVyaXQ6IEluaGVyaXQpIHtcblx0XHRmcmFtZSAqPSAyLypFTlRSSUVTKi87XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDEvKklOSEVSSVQqL10gPSBpbmhlcml0O1xuXHR9XG5cblx0cHVibGljIGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgYm9uZSA9IHNrZWxldG9uLmJvbmVzW3RoaXMuYm9uZUluZGV4XTtcblx0XHRpZiAoIWJvbmUuYWN0aXZlKSByZXR1cm47XG5cblx0XHRpZiAoZGlyZWN0aW9uID09IE1peERpcmVjdGlvbi5taXhPdXQpIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkgYm9uZS5pbmhlcml0ID0gYm9uZS5kYXRhLmluaGVyaXQ7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXAgfHwgYmxlbmQgPT0gTWl4QmxlbmQuZmlyc3QpIGJvbmUuaW5oZXJpdCA9IGJvbmUuZGF0YS5pbmhlcml0O1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRib25lLmluaGVyaXQgPSB0aGlzLmZyYW1lc1tUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCAyLypFTlRSSUVTKi8pICsgMS8qSU5IRVJJVCovXTtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHNsb3QncyB7QGxpbmsgU2xvdCNjb2xvcn0uICovXG5leHBvcnQgY2xhc3MgUkdCQVRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZSBpbXBsZW1lbnRzIFNsb3RUaW1lbGluZSB7XG5cdHNsb3RJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgc2xvdEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgW1xuXHRcdFx0UHJvcGVydHkucmdiICsgXCJ8XCIgKyBzbG90SW5kZXgsXG5cdFx0XHRQcm9wZXJ0eS5hbHBoYSArIFwifFwiICsgc2xvdEluZGV4XG5cdFx0XSk7XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdH1cblxuXHRnZXRGcmFtZUVudHJpZXMgKCkge1xuXHRcdHJldHVybiA1LypFTlRSSUVTKi87XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBpbiBzZWNvbmRzLCByZWQsIGdyZWVuLCBibHVlLCBhbmQgYWxwaGEgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIpIHtcblx0XHRmcmFtZSAqPSA1LypFTlRSSUVTKi87XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDEvKlIqL10gPSByO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMi8qRyovXSA9IGc7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAzLypCKi9dID0gYjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDQvKkEqL10gPSBhO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBzbG90ID0gc2tlbGV0b24uc2xvdHNbdGhpcy5zbG90SW5kZXhdO1xuXHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGxldCBjb2xvciA9IHNsb3QuY29sb3I7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdGxldCBzZXR1cCA9IHNsb3QuZGF0YS5jb2xvcjtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRjb2xvci5zZXRGcm9tQ29sb3Ioc2V0dXApO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjb2xvci5hZGQoKHNldHVwLnIgLSBjb2xvci5yKSAqIGFscGhhLCAoc2V0dXAuZyAtIGNvbG9yLmcpICogYWxwaGEsIChzZXR1cC5iIC0gY29sb3IuYikgKiBhbHBoYSxcblx0XHRcdFx0XHRcdChzZXR1cC5hIC0gY29sb3IuYSkgKiBhbHBoYSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IHIgPSAwLCBnID0gMCwgYiA9IDAsIGEgPSAwO1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgNS8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSAvIDUvKkVOVFJJRVMqL107XG5cdFx0c3dpdGNoIChjdXJ2ZVR5cGUpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0XHRcdHIgPSBmcmFtZXNbaSArIDEvKlIqL107XG5cdFx0XHRcdGcgPSBmcmFtZXNbaSArIDIvKkcqL107XG5cdFx0XHRcdGIgPSBmcmFtZXNbaSArIDMvKkIqL107XG5cdFx0XHRcdGEgPSBmcmFtZXNbaSArIDQvKkEqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgNS8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdHIgKz0gKGZyYW1lc1tpICsgNS8qRU5UUklFUyovICsgMS8qUiovXSAtIHIpICogdDtcblx0XHRcdFx0ZyArPSAoZnJhbWVzW2kgKyA1LypFTlRSSUVTKi8gKyAyLypHKi9dIC0gZykgKiB0O1xuXHRcdFx0XHRiICs9IChmcmFtZXNbaSArIDUvKkVOVFJJRVMqLyArIDMvKkIqL10gLSBiKSAqIHQ7XG5cdFx0XHRcdGEgKz0gKGZyYW1lc1tpICsgNS8qRU5UUklFUyovICsgNC8qQSovXSAtIGEpICogdDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0ciA9IGZyYW1lc1tpICsgMS8qUiovXTtcblx0XHRcdFx0ZyA9IGZyYW1lc1tpICsgMi8qRyovXTtcblx0XHRcdFx0YiA9IGZyYW1lc1tpICsgMy8qQiovXTtcblx0XHRcdFx0YSA9IGZyYW1lc1tpICsgNC8qQSovXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAxLypSKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0ZyA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qRyovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0YiA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMy8qQiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDIgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGEgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDQvKkEqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiAzIC0gMi8qQkVaSUVSKi8pO1xuXHRcdH1cblx0XHRpZiAoYWxwaGEgPT0gMSlcblx0XHRcdGNvbG9yLnNldChyLCBnLCBiLCBhKTtcblx0XHRlbHNlIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCkgY29sb3Iuc2V0RnJvbUNvbG9yKHNsb3QuZGF0YS5jb2xvcik7XG5cdFx0XHRjb2xvci5hZGQoKHIgLSBjb2xvci5yKSAqIGFscGhhLCAoZyAtIGNvbG9yLmcpICogYWxwaGEsIChiIC0gY29sb3IuYikgKiBhbHBoYSwgKGEgLSBjb2xvci5hKSAqIGFscGhhKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBzbG90J3Mge0BsaW5rIFNsb3QjY29sb3J9LiAqL1xuZXhwb3J0IGNsYXNzIFJHQlRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZSBpbXBsZW1lbnRzIFNsb3RUaW1lbGluZSB7XG5cdHNsb3RJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgc2xvdEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgW1xuXHRcdFx0UHJvcGVydHkucmdiICsgXCJ8XCIgKyBzbG90SW5kZXhcblx0XHRdKTtcblx0XHR0aGlzLnNsb3RJbmRleCA9IHNsb3RJbmRleDtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDQvKkVOVFJJRVMqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0aW1lIGluIHNlY29uZHMsIHJlZCwgZ3JlZW4sIGJsdWUsIGFuZCBhbHBoYSBmb3IgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpIHtcblx0XHRmcmFtZSA8PD0gMjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMS8qUiovXSA9IHI7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAyLypHKi9dID0gZztcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDMvKkIqL10gPSBiO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBzbG90ID0gc2tlbGV0b24uc2xvdHNbdGhpcy5zbG90SW5kZXhdO1xuXHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGxldCBjb2xvciA9IHNsb3QuY29sb3I7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdGxldCBzZXR1cCA9IHNsb3QuZGF0YS5jb2xvcjtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRjb2xvci5yID0gc2V0dXAucjtcblx0XHRcdFx0XHRjb2xvci5nID0gc2V0dXAuZztcblx0XHRcdFx0XHRjb2xvci5iID0gc2V0dXAuYjtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0Y29sb3IuciArPSAoc2V0dXAuciAtIGNvbG9yLnIpICogYWxwaGE7XG5cdFx0XHRcdFx0Y29sb3IuZyArPSAoc2V0dXAuZyAtIGNvbG9yLmcpICogYWxwaGE7XG5cdFx0XHRcdFx0Y29sb3IuYiArPSAoc2V0dXAuYiAtIGNvbG9yLmIpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IHIgPSAwLCBnID0gMCwgYiA9IDA7XG5cdFx0bGV0IGkgPSBUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCA0LypFTlRSSUVTKi8pO1xuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpID4+IDJdO1xuXHRcdHN3aXRjaCAoY3VydmVUeXBlKSB7XG5cdFx0XHRjYXNlIDAvKkxJTkVBUiovOlxuXHRcdFx0XHRsZXQgYmVmb3JlID0gZnJhbWVzW2ldO1xuXHRcdFx0XHRyID0gZnJhbWVzW2kgKyAxLypSKi9dO1xuXHRcdFx0XHRnID0gZnJhbWVzW2kgKyAyLypHKi9dO1xuXHRcdFx0XHRiID0gZnJhbWVzW2kgKyAzLypCKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDQvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHRyICs9IChmcmFtZXNbaSArIDQvKkVOVFJJRVMqLyArIDEvKlIqL10gLSByKSAqIHQ7XG5cdFx0XHRcdGcgKz0gKGZyYW1lc1tpICsgNC8qRU5UUklFUyovICsgMi8qRyovXSAtIGcpICogdDtcblx0XHRcdFx0YiArPSAoZnJhbWVzW2kgKyA0LypFTlRSSUVTKi8gKyAzLypCKi9dIC0gYikgKiB0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMS8qU1RFUFBFRCovOlxuXHRcdFx0XHRyID0gZnJhbWVzW2kgKyAxLypSKi9dO1xuXHRcdFx0XHRnID0gZnJhbWVzW2kgKyAyLypHKi9dO1xuXHRcdFx0XHRiID0gZnJhbWVzW2kgKyAzLypCKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHIgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlIqLywgY3VydmVUeXBlIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRnID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAyLypHKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRiID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAzLypCKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogMiAtIDIvKkJFWklFUiovKTtcblx0XHR9XG5cdFx0aWYgKGFscGhhID09IDEpIHtcblx0XHRcdGNvbG9yLnIgPSByO1xuXHRcdFx0Y29sb3IuZyA9IGc7XG5cdFx0XHRjb2xvci5iID0gYjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSB7XG5cdFx0XHRcdGxldCBzZXR1cCA9IHNsb3QuZGF0YS5jb2xvcjtcblx0XHRcdFx0Y29sb3IuciA9IHNldHVwLnI7XG5cdFx0XHRcdGNvbG9yLmcgPSBzZXR1cC5nO1xuXHRcdFx0XHRjb2xvci5iID0gc2V0dXAuYjtcblx0XHRcdH1cblx0XHRcdGNvbG9yLnIgKz0gKHIgLSBjb2xvci5yKSAqIGFscGhhO1xuXHRcdFx0Y29sb3IuZyArPSAoZyAtIGNvbG9yLmcpICogYWxwaGE7XG5cdFx0XHRjb2xvci5iICs9IChiIC0gY29sb3IuYikgKiBhbHBoYTtcblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBib25lJ3MgbG9jYWwge0BsaW5rIEJvbmUjc2hlYXJYfSBhbmQge0BsaW5rIEJvbmUjc2hlYXJZfS4gKi9cbmV4cG9ydCBjbGFzcyBBbHBoYVRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTEgaW1wbGVtZW50cyBTbG90VGltZWxpbmUge1xuXHRzbG90SW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHNsb3RJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFByb3BlcnR5LmFscGhhICsgXCJ8XCIgKyBzbG90SW5kZXgpO1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBldmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBzbG90ID0gc2tlbGV0b24uc2xvdHNbdGhpcy5zbG90SW5kZXhdO1xuXHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGNvbG9yID0gc2xvdC5jb2xvcjtcblx0XHRpZiAodGltZSA8IHRoaXMuZnJhbWVzWzBdKSB7XG5cdFx0XHRsZXQgc2V0dXAgPSBzbG90LmRhdGEuY29sb3I7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Y29sb3IuYSA9IHNldHVwLmE7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGNvbG9yLmEgKz0gKHNldHVwLmEgLSBjb2xvci5hKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBhID0gdGhpcy5nZXRDdXJ2ZVZhbHVlKHRpbWUpO1xuXHRcdGlmIChhbHBoYSA9PSAxKVxuXHRcdFx0Y29sb3IuYSA9IGE7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXApIGNvbG9yLmEgPSBzbG90LmRhdGEuY29sb3IuYTtcblx0XHRcdGNvbG9yLmEgKz0gKGEgLSBjb2xvci5hKSAqIGFscGhhO1xuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHNsb3QncyB7QGxpbmsgU2xvdCNjb2xvcn0gYW5kIHtAbGluayBTbG90I2RhcmtDb2xvcn0gZm9yIHR3byBjb2xvciB0aW50aW5nLiAqL1xuZXhwb3J0IGNsYXNzIFJHQkEyVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lIGltcGxlbWVudHMgU2xvdFRpbWVsaW5lIHtcblx0c2xvdEluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBzbG90SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS5yZ2IgKyBcInxcIiArIHNsb3RJbmRleCxcblx0XHRcdFByb3BlcnR5LmFscGhhICsgXCJ8XCIgKyBzbG90SW5kZXgsXG5cdFx0XHRQcm9wZXJ0eS5yZ2IyICsgXCJ8XCIgKyBzbG90SW5kZXhcblx0XHRdKTtcblx0XHR0aGlzLnNsb3RJbmRleCA9IHNsb3RJbmRleDtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDgvKkVOVFJJRVMqLztcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSB0aW1lIGluIHNlY29uZHMsIGxpZ2h0LCBhbmQgZGFyayBjb2xvcnMgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyLCBhOiBudW1iZXIsIHIyOiBudW1iZXIsIGcyOiBudW1iZXIsIGIyOiBudW1iZXIpIHtcblx0XHRmcmFtZSA8PD0gMztcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMS8qUiovXSA9IHI7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAyLypHKi9dID0gZztcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDMvKkIqL10gPSBiO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgNC8qQSovXSA9IGE7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyA1LypSMiovXSA9IHIyO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgNi8qRzIqL10gPSBnMjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDcvKkIyKi9dID0gYjI7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IHNsb3QgPSBza2VsZXRvbi5zbG90c1t0aGlzLnNsb3RJbmRleF07XG5cdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0bGV0IGxpZ2h0ID0gc2xvdC5jb2xvciwgZGFyayA9IHNsb3QuZGFya0NvbG9yITtcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkge1xuXHRcdFx0bGV0IHNldHVwTGlnaHQgPSBzbG90LmRhdGEuY29sb3IsIHNldHVwRGFyayA9IHNsb3QuZGF0YS5kYXJrQ29sb3IhO1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOlxuXHRcdFx0XHRcdGxpZ2h0LnNldEZyb21Db2xvcihzZXR1cExpZ2h0KTtcblx0XHRcdFx0XHRkYXJrLnIgPSBzZXR1cERhcmsucjtcblx0XHRcdFx0XHRkYXJrLmcgPSBzZXR1cERhcmsuZztcblx0XHRcdFx0XHRkYXJrLmIgPSBzZXR1cERhcmsuYjtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdFx0bGlnaHQuYWRkKChzZXR1cExpZ2h0LnIgLSBsaWdodC5yKSAqIGFscGhhLCAoc2V0dXBMaWdodC5nIC0gbGlnaHQuZykgKiBhbHBoYSwgKHNldHVwTGlnaHQuYiAtIGxpZ2h0LmIpICogYWxwaGEsXG5cdFx0XHRcdFx0XHQoc2V0dXBMaWdodC5hIC0gbGlnaHQuYSkgKiBhbHBoYSk7XG5cdFx0XHRcdFx0ZGFyay5yICs9IChzZXR1cERhcmsuciAtIGRhcmsucikgKiBhbHBoYTtcblx0XHRcdFx0XHRkYXJrLmcgKz0gKHNldHVwRGFyay5nIC0gZGFyay5nKSAqIGFscGhhO1xuXHRcdFx0XHRcdGRhcmsuYiArPSAoc2V0dXBEYXJrLmIgLSBkYXJrLmIpICogYWxwaGE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IHIgPSAwLCBnID0gMCwgYiA9IDAsIGEgPSAwLCByMiA9IDAsIGcyID0gMCwgYjIgPSAwO1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgOC8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSA+PiAzXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0ciA9IGZyYW1lc1tpICsgMS8qUiovXTtcblx0XHRcdFx0ZyA9IGZyYW1lc1tpICsgMi8qRyovXTtcblx0XHRcdFx0YiA9IGZyYW1lc1tpICsgMy8qQiovXTtcblx0XHRcdFx0YSA9IGZyYW1lc1tpICsgNC8qQSovXTtcblx0XHRcdFx0cjIgPSBmcmFtZXNbaSArIDUvKlIyKi9dO1xuXHRcdFx0XHRnMiA9IGZyYW1lc1tpICsgNi8qRzIqL107XG5cdFx0XHRcdGIyID0gZnJhbWVzW2kgKyA3LypCMiovXTtcblx0XHRcdFx0bGV0IHQgPSAodGltZSAtIGJlZm9yZSkgLyAoZnJhbWVzW2kgKyA4LypFTlRSSUVTKi9dIC0gYmVmb3JlKTtcblx0XHRcdFx0ciArPSAoZnJhbWVzW2kgKyA4LypFTlRSSUVTKi8gKyAxLypSKi9dIC0gcikgKiB0O1xuXHRcdFx0XHRnICs9IChmcmFtZXNbaSArIDgvKkVOVFJJRVMqLyArIDIvKkcqL10gLSBnKSAqIHQ7XG5cdFx0XHRcdGIgKz0gKGZyYW1lc1tpICsgOC8qRU5UUklFUyovICsgMy8qQiovXSAtIGIpICogdDtcblx0XHRcdFx0YSArPSAoZnJhbWVzW2kgKyA4LypFTlRSSUVTKi8gKyA0LypBKi9dIC0gYSkgKiB0O1xuXHRcdFx0XHRyMiArPSAoZnJhbWVzW2kgKyA4LypFTlRSSUVTKi8gKyA1LypSMiovXSAtIHIyKSAqIHQ7XG5cdFx0XHRcdGcyICs9IChmcmFtZXNbaSArIDgvKkVOVFJJRVMqLyArIDYvKkcyKi9dIC0gZzIpICogdDtcblx0XHRcdFx0YjIgKz0gKGZyYW1lc1tpICsgOC8qRU5UUklFUyovICsgNy8qQjIqL10gLSBiMikgKiB0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMS8qU1RFUFBFRCovOlxuXHRcdFx0XHRyID0gZnJhbWVzW2kgKyAxLypSKi9dO1xuXHRcdFx0XHRnID0gZnJhbWVzW2kgKyAyLypHKi9dO1xuXHRcdFx0XHRiID0gZnJhbWVzW2kgKyAzLypCKi9dO1xuXHRcdFx0XHRhID0gZnJhbWVzW2kgKyA0LypBKi9dO1xuXHRcdFx0XHRyMiA9IGZyYW1lc1tpICsgNS8qUjIqL107XG5cdFx0XHRcdGcyID0gZnJhbWVzW2kgKyA2LypHMiovXTtcblx0XHRcdFx0YjIgPSBmcmFtZXNbaSArIDcvKkIyKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHIgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlIqLywgY3VydmVUeXBlIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRnID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAyLypHKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRiID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAzLypCKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogMiAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0YSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgNC8qQSovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDMgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHIyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA1LypSMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDQgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGcyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA2LypHMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDUgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdGIyID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA3LypCMiovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDYgLSAyLypCRVpJRVIqLyk7XG5cdFx0fVxuXG5cdFx0aWYgKGFscGhhID09IDEpIHtcblx0XHRcdGxpZ2h0LnNldChyLCBnLCBiLCBhKTtcblx0XHRcdGRhcmsuciA9IHIyO1xuXHRcdFx0ZGFyay5nID0gZzI7XG5cdFx0XHRkYXJrLmIgPSBiMjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSB7XG5cdFx0XHRcdGxpZ2h0LnNldEZyb21Db2xvcihzbG90LmRhdGEuY29sb3IpO1xuXHRcdFx0XHRsZXQgc2V0dXBEYXJrID0gc2xvdC5kYXRhLmRhcmtDb2xvciE7XG5cdFx0XHRcdGRhcmsuciA9IHNldHVwRGFyay5yO1xuXHRcdFx0XHRkYXJrLmcgPSBzZXR1cERhcmsuZztcblx0XHRcdFx0ZGFyay5iID0gc2V0dXBEYXJrLmI7XG5cdFx0XHR9XG5cdFx0XHRsaWdodC5hZGQoKHIgLSBsaWdodC5yKSAqIGFscGhhLCAoZyAtIGxpZ2h0LmcpICogYWxwaGEsIChiIC0gbGlnaHQuYikgKiBhbHBoYSwgKGEgLSBsaWdodC5hKSAqIGFscGhhKTtcblx0XHRcdGRhcmsuciArPSAocjIgLSBkYXJrLnIpICogYWxwaGE7XG5cdFx0XHRkYXJrLmcgKz0gKGcyIC0gZGFyay5nKSAqIGFscGhhO1xuXHRcdFx0ZGFyay5iICs9IChiMiAtIGRhcmsuYikgKiBhbHBoYTtcblx0XHR9XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBzbG90J3Mge0BsaW5rIFNsb3QjY29sb3J9IGFuZCB7QGxpbmsgU2xvdCNkYXJrQ29sb3J9IGZvciB0d28gY29sb3IgdGludGluZy4gKi9cbmV4cG9ydCBjbGFzcyBSR0IyVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lIGltcGxlbWVudHMgU2xvdFRpbWVsaW5lIHtcblx0c2xvdEluZGV4ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBzbG90SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS5yZ2IgKyBcInxcIiArIHNsb3RJbmRleCxcblx0XHRcdFByb3BlcnR5LnJnYjIgKyBcInxcIiArIHNsb3RJbmRleFxuXHRcdF0pO1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHR9XG5cblx0Z2V0RnJhbWVFbnRyaWVzICgpIHtcblx0XHRyZXR1cm4gNy8qRU5UUklFUyovO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgaW4gc2Vjb25kcywgbGlnaHQsIGFuZCBkYXJrIGNvbG9ycyBmb3IgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIsIHIyOiBudW1iZXIsIGcyOiBudW1iZXIsIGIyOiBudW1iZXIpIHtcblx0XHRmcmFtZSAqPSA3LypFTlRSSUVTKi87XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDEvKlIqL10gPSByO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMi8qRyovXSA9IGc7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAzLypCKi9dID0gYjtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZSArIDQvKlIyKi9dID0gcjI7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyA1LypHMiovXSA9IGcyO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgNi8qQjIqL10gPSBiMjtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgc2xvdCA9IHNrZWxldG9uLnNsb3RzW3RoaXMuc2xvdEluZGV4XTtcblx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHJldHVybjtcblxuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRsZXQgbGlnaHQgPSBzbG90LmNvbG9yLCBkYXJrID0gc2xvdC5kYXJrQ29sb3IhO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRsZXQgc2V0dXBMaWdodCA9IHNsb3QuZGF0YS5jb2xvciwgc2V0dXBEYXJrID0gc2xvdC5kYXRhLmRhcmtDb2xvciE7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0bGlnaHQuciA9IHNldHVwTGlnaHQucjtcblx0XHRcdFx0XHRsaWdodC5nID0gc2V0dXBMaWdodC5nO1xuXHRcdFx0XHRcdGxpZ2h0LmIgPSBzZXR1cExpZ2h0LmI7XG5cdFx0XHRcdFx0ZGFyay5yID0gc2V0dXBEYXJrLnI7XG5cdFx0XHRcdFx0ZGFyay5nID0gc2V0dXBEYXJrLmc7XG5cdFx0XHRcdFx0ZGFyay5iID0gc2V0dXBEYXJrLmI7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGxpZ2h0LnIgKz0gKHNldHVwTGlnaHQuciAtIGxpZ2h0LnIpICogYWxwaGE7XG5cdFx0XHRcdFx0bGlnaHQuZyArPSAoc2V0dXBMaWdodC5nIC0gbGlnaHQuZykgKiBhbHBoYTtcblx0XHRcdFx0XHRsaWdodC5iICs9IChzZXR1cExpZ2h0LmIgLSBsaWdodC5iKSAqIGFscGhhO1xuXHRcdFx0XHRcdGRhcmsuciArPSAoc2V0dXBEYXJrLnIgLSBkYXJrLnIpICogYWxwaGE7XG5cdFx0XHRcdFx0ZGFyay5nICs9IChzZXR1cERhcmsuZyAtIGRhcmsuZykgKiBhbHBoYTtcblx0XHRcdFx0XHRkYXJrLmIgKz0gKHNldHVwRGFyay5iIC0gZGFyay5iKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCByID0gMCwgZyA9IDAsIGIgPSAwLCBhID0gMCwgcjIgPSAwLCBnMiA9IDAsIGIyID0gMDtcblx0XHRsZXQgaSA9IFRpbWVsaW5lLnNlYXJjaChmcmFtZXMsIHRpbWUsIDcvKkVOVFJJRVMqLyk7XG5cdFx0bGV0IGN1cnZlVHlwZSA9IHRoaXMuY3VydmVzW2kgLyA3LypFTlRSSUVTKi9dO1xuXHRcdHN3aXRjaCAoY3VydmVUeXBlKSB7XG5cdFx0XHRjYXNlIDAvKkxJTkVBUiovOlxuXHRcdFx0XHRsZXQgYmVmb3JlID0gZnJhbWVzW2ldO1xuXHRcdFx0XHRyID0gZnJhbWVzW2kgKyAxLypSKi9dO1xuXHRcdFx0XHRnID0gZnJhbWVzW2kgKyAyLypHKi9dO1xuXHRcdFx0XHRiID0gZnJhbWVzW2kgKyAzLypCKi9dO1xuXHRcdFx0XHRyMiA9IGZyYW1lc1tpICsgNC8qUjIqL107XG5cdFx0XHRcdGcyID0gZnJhbWVzW2kgKyA1LypHMiovXTtcblx0XHRcdFx0YjIgPSBmcmFtZXNbaSArIDYvKkIyKi9dO1xuXHRcdFx0XHRsZXQgdCA9ICh0aW1lIC0gYmVmb3JlKSAvIChmcmFtZXNbaSArIDcvKkVOVFJJRVMqL10gLSBiZWZvcmUpO1xuXHRcdFx0XHRyICs9IChmcmFtZXNbaSArIDcvKkVOVFJJRVMqLyArIDEvKlIqL10gLSByKSAqIHQ7XG5cdFx0XHRcdGcgKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgMi8qRyovXSAtIGcpICogdDtcblx0XHRcdFx0YiArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyAzLypCKi9dIC0gYikgKiB0O1xuXHRcdFx0XHRyMiArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyA0LypSMiovXSAtIHIyKSAqIHQ7XG5cdFx0XHRcdGcyICs9IChmcmFtZXNbaSArIDcvKkVOVFJJRVMqLyArIDUvKkcyKi9dIC0gZzIpICogdDtcblx0XHRcdFx0YjIgKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgNi8qQjIqL10gLSBiMikgKiB0O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMS8qU1RFUFBFRCovOlxuXHRcdFx0XHRyID0gZnJhbWVzW2kgKyAxLypSKi9dO1xuXHRcdFx0XHRnID0gZnJhbWVzW2kgKyAyLypHKi9dO1xuXHRcdFx0XHRiID0gZnJhbWVzW2kgKyAzLypCKi9dO1xuXHRcdFx0XHRyMiA9IGZyYW1lc1tpICsgNC8qUjIqL107XG5cdFx0XHRcdGcyID0gZnJhbWVzW2kgKyA1LypHMiovXTtcblx0XHRcdFx0YjIgPSBmcmFtZXNbaSArIDYvKkIyKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHIgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDEvKlIqLywgY3VydmVUeXBlIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRnID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAyLypHKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRiID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAzLypCKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogMiAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0cjIgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDQvKlIyKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogMyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0ZzIgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDUvKkcyKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogNCAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0YjIgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDYvKkIyKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogNSAtIDIvKkJFWklFUiovKTtcblx0XHR9XG5cblx0XHRpZiAoYWxwaGEgPT0gMSkge1xuXHRcdFx0bGlnaHQuciA9IHI7XG5cdFx0XHRsaWdodC5nID0gZztcblx0XHRcdGxpZ2h0LmIgPSBiO1xuXHRcdFx0ZGFyay5yID0gcjI7XG5cdFx0XHRkYXJrLmcgPSBnMjtcblx0XHRcdGRhcmsuYiA9IGIyO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXApIHtcblx0XHRcdFx0bGV0IHNldHVwTGlnaHQgPSBzbG90LmRhdGEuY29sb3IsIHNldHVwRGFyayA9IHNsb3QuZGF0YS5kYXJrQ29sb3IhO1xuXHRcdFx0XHRsaWdodC5yID0gc2V0dXBMaWdodC5yO1xuXHRcdFx0XHRsaWdodC5nID0gc2V0dXBMaWdodC5nO1xuXHRcdFx0XHRsaWdodC5iID0gc2V0dXBMaWdodC5iO1xuXHRcdFx0XHRkYXJrLnIgPSBzZXR1cERhcmsucjtcblx0XHRcdFx0ZGFyay5nID0gc2V0dXBEYXJrLmc7XG5cdFx0XHRcdGRhcmsuYiA9IHNldHVwRGFyay5iO1xuXHRcdFx0fVxuXHRcdFx0bGlnaHQuciArPSAociAtIGxpZ2h0LnIpICogYWxwaGE7XG5cdFx0XHRsaWdodC5nICs9IChnIC0gbGlnaHQuZykgKiBhbHBoYTtcblx0XHRcdGxpZ2h0LmIgKz0gKGIgLSBsaWdodC5iKSAqIGFscGhhO1xuXHRcdFx0ZGFyay5yICs9IChyMiAtIGRhcmsucikgKiBhbHBoYTtcblx0XHRcdGRhcmsuZyArPSAoZzIgLSBkYXJrLmcpICogYWxwaGE7XG5cdFx0XHRkYXJrLmIgKz0gKGIyIC0gZGFyay5iKSAqIGFscGhhO1xuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHNsb3QncyB7QGxpbmsgU2xvdCNhdHRhY2htZW50fS4gKi9cbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50VGltZWxpbmUgZXh0ZW5kcyBUaW1lbGluZSBpbXBsZW1lbnRzIFNsb3RUaW1lbGluZSB7XG5cdHNsb3RJbmRleCA9IDA7XG5cblx0LyoqIFRoZSBhdHRhY2htZW50IG5hbWUgZm9yIGVhY2gga2V5IGZyYW1lLiBNYXkgY29udGFpbiBudWxsIHZhbHVlcyB0byBjbGVhciB0aGUgYXR0YWNobWVudC4gKi9cblx0YXR0YWNobWVudE5hbWVzOiBBcnJheTxzdHJpbmcgfCBudWxsPjtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBzbG90SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIFtcblx0XHRcdFByb3BlcnR5LmF0dGFjaG1lbnQgKyBcInxcIiArIHNsb3RJbmRleFxuXHRcdF0pO1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHRcdHRoaXMuYXR0YWNobWVudE5hbWVzID0gbmV3IEFycmF5PHN0cmluZz4oZnJhbWVDb3VudCk7XG5cdH1cblxuXHRnZXRGcmFtZUNvdW50ICgpIHtcblx0XHRyZXR1cm4gdGhpcy5mcmFtZXMubGVuZ3RoO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgaW4gc2Vjb25kcyBhbmQgdGhlIGF0dGFjaG1lbnQgbmFtZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGF0dGFjaG1lbnROYW1lOiBzdHJpbmcgfCBudWxsKSB7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gdGltZTtcblx0XHR0aGlzLmF0dGFjaG1lbnROYW1lc1tmcmFtZV0gPSBhdHRhY2htZW50TmFtZTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgc2xvdCA9IHNrZWxldG9uLnNsb3RzW3RoaXMuc2xvdEluZGV4XTtcblx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHJldHVybjtcblxuXHRcdGlmIChkaXJlY3Rpb24gPT0gTWl4RGlyZWN0aW9uLm1peE91dCkge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSB0aGlzLnNldEF0dGFjaG1lbnQoc2tlbGV0b24sIHNsb3QsIHNsb3QuZGF0YS5hdHRhY2htZW50TmFtZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHRpbWUgPCB0aGlzLmZyYW1lc1swXSkge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwIHx8IGJsZW5kID09IE1peEJsZW5kLmZpcnN0KSB0aGlzLnNldEF0dGFjaG1lbnQoc2tlbGV0b24sIHNsb3QsIHNsb3QuZGF0YS5hdHRhY2htZW50TmFtZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5zZXRBdHRhY2htZW50KHNrZWxldG9uLCBzbG90LCB0aGlzLmF0dGFjaG1lbnROYW1lc1tUaW1lbGluZS5zZWFyY2gxKHRoaXMuZnJhbWVzLCB0aW1lKV0pO1xuXHR9XG5cblx0c2V0QXR0YWNobWVudCAoc2tlbGV0b246IFNrZWxldG9uLCBzbG90OiBTbG90LCBhdHRhY2htZW50TmFtZTogc3RyaW5nIHwgbnVsbCkge1xuXHRcdHNsb3Quc2V0QXR0YWNobWVudCghYXR0YWNobWVudE5hbWUgPyBudWxsIDogc2tlbGV0b24uZ2V0QXR0YWNobWVudCh0aGlzLnNsb3RJbmRleCwgYXR0YWNobWVudE5hbWUpKTtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHNsb3QncyB7QGxpbmsgU2xvdCNkZWZvcm19IHRvIGRlZm9ybSBhIHtAbGluayBWZXJ0ZXhBdHRhY2htZW50fS4gKi9cbmV4cG9ydCBjbGFzcyBEZWZvcm1UaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUgaW1wbGVtZW50cyBTbG90VGltZWxpbmUge1xuXHRzbG90SW5kZXggPSAwO1xuXG5cdC8qKiBUaGUgYXR0YWNobWVudCB0aGF0IHdpbGwgYmUgZGVmb3JtZWQuICovXG5cdGF0dGFjaG1lbnQ6IFZlcnRleEF0dGFjaG1lbnQ7XG5cblx0LyoqIFRoZSB2ZXJ0aWNlcyBmb3IgZWFjaCBrZXkgZnJhbWUuICovXG5cdHZlcnRpY2VzOiBBcnJheTxOdW1iZXJBcnJheUxpa2U+O1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHNsb3RJbmRleDogbnVtYmVyLCBhdHRhY2htZW50OiBWZXJ0ZXhBdHRhY2htZW50KSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFtcblx0XHRcdFByb3BlcnR5LmRlZm9ybSArIFwifFwiICsgc2xvdEluZGV4ICsgXCJ8XCIgKyBhdHRhY2htZW50LmlkXG5cdFx0XSk7XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdFx0dGhpcy5hdHRhY2htZW50ID0gYXR0YWNobWVudDtcblx0XHR0aGlzLnZlcnRpY2VzID0gbmV3IEFycmF5PE51bWJlckFycmF5TGlrZT4oZnJhbWVDb3VudCk7XG5cdH1cblxuXHRnZXRGcmFtZUNvdW50ICgpIHtcblx0XHRyZXR1cm4gdGhpcy5mcmFtZXMubGVuZ3RoO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgaW4gc2Vjb25kcyBhbmQgdGhlIHZlcnRpY2VzIGZvciB0aGUgc3BlY2lmaWVkIGtleSBmcmFtZS5cblx0ICogQHBhcmFtIHZlcnRpY2VzIFZlcnRleCBwb3NpdGlvbnMgZm9yIGFuIHVud2VpZ2h0ZWQgVmVydGV4QXR0YWNobWVudCwgb3IgZGVmb3JtIG9mZnNldHMgaWYgaXQgaGFzIHdlaWdodHMuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UpIHtcblx0XHR0aGlzLmZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdHRoaXMudmVydGljZXNbZnJhbWVdID0gdmVydGljZXM7XG5cdH1cblxuXHQvKiogQHBhcmFtIHZhbHVlMSBJZ25vcmVkICgwIGlzIHVzZWQgZm9yIGEgZGVmb3JtIHRpbWVsaW5lKS5cblx0ICogQHBhcmFtIHZhbHVlMiBJZ25vcmVkICgxIGlzIHVzZWQgZm9yIGEgZGVmb3JtIHRpbWVsaW5lKS4gKi9cblx0c2V0QmV6aWVyIChiZXppZXI6IG51bWJlciwgZnJhbWU6IG51bWJlciwgdmFsdWU6IG51bWJlciwgdGltZTE6IG51bWJlciwgdmFsdWUxOiBudW1iZXIsIGN4MTogbnVtYmVyLCBjeTE6IG51bWJlciwgY3gyOiBudW1iZXIsXG5cdFx0Y3kyOiBudW1iZXIsIHRpbWUyOiBudW1iZXIsIHZhbHVlMjogbnVtYmVyKSB7XG5cdFx0bGV0IGN1cnZlcyA9IHRoaXMuY3VydmVzO1xuXHRcdGxldCBpID0gdGhpcy5nZXRGcmFtZUNvdW50KCkgKyBiZXppZXIgKiAxOC8qQkVaSUVSX1NJWkUqLztcblx0XHRpZiAodmFsdWUgPT0gMCkgY3VydmVzW2ZyYW1lXSA9IDIvKkJFWklFUiovICsgaTtcblx0XHRsZXQgdG1weCA9ICh0aW1lMSAtIGN4MSAqIDIgKyBjeDIpICogMC4wMywgdG1weSA9IGN5MiAqIDAuMDMgLSBjeTEgKiAwLjA2O1xuXHRcdGxldCBkZGR4ID0gKChjeDEgLSBjeDIpICogMyAtIHRpbWUxICsgdGltZTIpICogMC4wMDYsIGRkZHkgPSAoY3kxIC0gY3kyICsgMC4zMzMzMzMzMykgKiAwLjAxODtcblx0XHRsZXQgZGR4ID0gdG1weCAqIDIgKyBkZGR4LCBkZHkgPSB0bXB5ICogMiArIGRkZHk7XG5cdFx0bGV0IGR4ID0gKGN4MSAtIHRpbWUxKSAqIDAuMyArIHRtcHggKyBkZGR4ICogMC4xNjY2NjY2NywgZHkgPSBjeTEgKiAwLjMgKyB0bXB5ICsgZGRkeSAqIDAuMTY2NjY2Njc7XG5cdFx0bGV0IHggPSB0aW1lMSArIGR4LCB5ID0gZHk7XG5cdFx0Zm9yIChsZXQgbiA9IGkgKyAxOC8qQkVaSUVSX1NJWkUqLzsgaSA8IG47IGkgKz0gMikge1xuXHRcdFx0Y3VydmVzW2ldID0geDtcblx0XHRcdGN1cnZlc1tpICsgMV0gPSB5O1xuXHRcdFx0ZHggKz0gZGR4O1xuXHRcdFx0ZHkgKz0gZGR5O1xuXHRcdFx0ZGR4ICs9IGRkZHg7XG5cdFx0XHRkZHkgKz0gZGRkeTtcblx0XHRcdHggKz0gZHg7XG5cdFx0XHR5ICs9IGR5O1xuXHRcdH1cblx0fVxuXG5cdGdldEN1cnZlUGVyY2VudCAodGltZTogbnVtYmVyLCBmcmFtZTogbnVtYmVyKSB7XG5cdFx0bGV0IGN1cnZlcyA9IHRoaXMuY3VydmVzO1xuXHRcdGxldCBpID0gY3VydmVzW2ZyYW1lXTtcblx0XHRzd2l0Y2ggKGkpIHtcblx0XHRcdGNhc2UgMC8qTElORUFSKi86XG5cdFx0XHRcdGxldCB4ID0gdGhpcy5mcmFtZXNbZnJhbWVdO1xuXHRcdFx0XHRyZXR1cm4gKHRpbWUgLSB4KSAvICh0aGlzLmZyYW1lc1tmcmFtZSArIHRoaXMuZ2V0RnJhbWVFbnRyaWVzKCldIC0geCk7XG5cdFx0XHRjYXNlIDEvKlNURVBQRUQqLzpcblx0XHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXHRcdGkgLT0gMi8qQkVaSUVSKi87XG5cdFx0aWYgKGN1cnZlc1tpXSA+IHRpbWUpIHtcblx0XHRcdGxldCB4ID0gdGhpcy5mcmFtZXNbZnJhbWVdO1xuXHRcdFx0cmV0dXJuIGN1cnZlc1tpICsgMV0gKiAodGltZSAtIHgpIC8gKGN1cnZlc1tpXSAtIHgpO1xuXHRcdH1cblx0XHRsZXQgbiA9IGkgKyAxOC8qQkVaSUVSX1NJWkUqLztcblx0XHRmb3IgKGkgKz0gMjsgaSA8IG47IGkgKz0gMikge1xuXHRcdFx0aWYgKGN1cnZlc1tpXSA+PSB0aW1lKSB7XG5cdFx0XHRcdGxldCB4ID0gY3VydmVzW2kgLSAyXSwgeSA9IGN1cnZlc1tpIC0gMV07XG5cdFx0XHRcdHJldHVybiB5ICsgKHRpbWUgLSB4KSAvIChjdXJ2ZXNbaV0gLSB4KSAqIChjdXJ2ZXNbaSArIDFdIC0geSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCB4ID0gY3VydmVzW24gLSAyXSwgeSA9IGN1cnZlc1tuIC0gMV07XG5cdFx0cmV0dXJuIHkgKyAoMSAtIHkpICogKHRpbWUgLSB4KSAvICh0aGlzLmZyYW1lc1tmcmFtZSArIHRoaXMuZ2V0RnJhbWVFbnRyaWVzKCldIC0geCk7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgc2xvdDogU2xvdCA9IHNrZWxldG9uLnNsb3RzW3RoaXMuc2xvdEluZGV4XTtcblx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHJldHVybjtcblx0XHRsZXQgc2xvdEF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQgfCBudWxsID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cdFx0aWYgKCFzbG90QXR0YWNobWVudCkgcmV0dXJuO1xuXHRcdGlmICghKHNsb3RBdHRhY2htZW50IGluc3RhbmNlb2YgVmVydGV4QXR0YWNobWVudCkgfHwgKDxWZXJ0ZXhBdHRhY2htZW50PnNsb3RBdHRhY2htZW50KS50aW1lbGluZUF0dGFjaG1lbnQgIT0gdGhpcy5hdHRhY2htZW50KSByZXR1cm47XG5cblx0XHRsZXQgZGVmb3JtOiBBcnJheTxudW1iZXI+ID0gc2xvdC5kZWZvcm07XG5cdFx0aWYgKGRlZm9ybS5sZW5ndGggPT0gMCkgYmxlbmQgPSBNaXhCbGVuZC5zZXR1cDtcblxuXHRcdGxldCB2ZXJ0aWNlcyA9IHRoaXMudmVydGljZXM7XG5cdFx0bGV0IHZlcnRleENvdW50ID0gdmVydGljZXNbMF0ubGVuZ3RoO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0ZGVmb3JtLmxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGlmIChhbHBoYSA9PSAxKSB7XG5cdFx0XHRcdFx0XHRkZWZvcm0ubGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGVmb3JtLmxlbmd0aCA9IHZlcnRleENvdW50O1xuXHRcdFx0XHRcdGxldCB2ZXJ0ZXhBdHRhY2htZW50ID0gPFZlcnRleEF0dGFjaG1lbnQ+c2xvdEF0dGFjaG1lbnQ7XG5cdFx0XHRcdFx0aWYgKCF2ZXJ0ZXhBdHRhY2htZW50LmJvbmVzKSB7XG5cdFx0XHRcdFx0XHQvLyBVbndlaWdodGVkIHZlcnRleCBwb3NpdGlvbnMuXG5cdFx0XHRcdFx0XHRsZXQgc2V0dXBWZXJ0aWNlcyA9IHZlcnRleEF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSAoc2V0dXBWZXJ0aWNlc1tpXSAtIGRlZm9ybVtpXSkgKiBhbHBoYTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gV2VpZ2h0ZWQgZGVmb3JtIG9mZnNldHMuXG5cdFx0XHRcdFx0XHRhbHBoYSA9IDEgLSBhbHBoYTtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKylcblx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICo9IGFscGhhO1xuXHRcdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRkZWZvcm0ubGVuZ3RoID0gdmVydGV4Q291bnQ7XG5cdFx0aWYgKHRpbWUgPj0gZnJhbWVzW2ZyYW1lcy5sZW5ndGggLSAxXSkge1xuXHRcdFx0bGV0IGxhc3RWZXJ0aWNlcyA9IHZlcnRpY2VzW2ZyYW1lcy5sZW5ndGggLSAxXTtcblx0XHRcdGlmIChhbHBoYSA9PSAxKSB7XG5cdFx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5hZGQpIHtcblx0XHRcdFx0XHRsZXQgdmVydGV4QXR0YWNobWVudCA9IHNsb3RBdHRhY2htZW50IGFzIFZlcnRleEF0dGFjaG1lbnQ7XG5cdFx0XHRcdFx0aWYgKCF2ZXJ0ZXhBdHRhY2htZW50LmJvbmVzKSB7XG5cdFx0XHRcdFx0XHQvLyBVbndlaWdodGVkIHZlcnRleCBwb3NpdGlvbnMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0XHRsZXQgc2V0dXBWZXJ0aWNlcyA9IHZlcnRleEF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSBsYXN0VmVydGljZXNbaV0gLSBzZXR1cFZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQvLyBXZWlnaHRlZCBkZWZvcm0gb2Zmc2V0cywgd2l0aCBhbHBoYS5cblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKylcblx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IGxhc3RWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFV0aWxzLmFycmF5Q29weShsYXN0VmVydGljZXMsIDAsIGRlZm9ybSwgMCwgdmVydGV4Q291bnQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6IHtcblx0XHRcdFx0XHRcdGxldCB2ZXJ0ZXhBdHRhY2htZW50ID0gc2xvdEF0dGFjaG1lbnQgYXMgVmVydGV4QXR0YWNobWVudDtcblx0XHRcdFx0XHRcdGlmICghdmVydGV4QXR0YWNobWVudC5ib25lcykge1xuXHRcdFx0XHRcdFx0XHQvLyBVbndlaWdodGVkIHZlcnRleCBwb3NpdGlvbnMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0XHRcdGxldCBzZXR1cFZlcnRpY2VzID0gdmVydGV4QXR0YWNobWVudC52ZXJ0aWNlcztcblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHNldHVwID0gc2V0dXBWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gPSBzZXR1cCArIChsYXN0VmVydGljZXNbaV0gLSBzZXR1cCkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gV2VpZ2h0ZWQgZGVmb3JtIG9mZnNldHMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKylcblx0XHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gPSBsYXN0VmVydGljZXNbaV0gKiBhbHBoYTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGNhc2UgTWl4QmxlbmQucmVwbGFjZTpcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKylcblx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IChsYXN0VmVydGljZXNbaV0gLSBkZWZvcm1baV0pICogYWxwaGE7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIE1peEJsZW5kLmFkZDpcblx0XHRcdFx0XHRcdGxldCB2ZXJ0ZXhBdHRhY2htZW50ID0gc2xvdEF0dGFjaG1lbnQgYXMgVmVydGV4QXR0YWNobWVudDtcblx0XHRcdFx0XHRcdGlmICghdmVydGV4QXR0YWNobWVudC5ib25lcykge1xuXHRcdFx0XHRcdFx0XHQvLyBVbndlaWdodGVkIHZlcnRleCBwb3NpdGlvbnMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0XHRcdGxldCBzZXR1cFZlcnRpY2VzID0gdmVydGV4QXR0YWNobWVudC52ZXJ0aWNlcztcblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKVxuXHRcdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSAobGFzdFZlcnRpY2VzW2ldIC0gc2V0dXBWZXJ0aWNlc1tpXSkgKiBhbHBoYTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdC8vIFdlaWdodGVkIGRlZm9ybSBvZmZzZXRzLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspXG5cdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IGxhc3RWZXJ0aWNlc1tpXSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSW50ZXJwb2xhdGUgYmV0d2VlbiB0aGUgcHJldmlvdXMgZnJhbWUgYW5kIHRoZSBjdXJyZW50IGZyYW1lLlxuXHRcdGxldCBmcmFtZSA9IFRpbWVsaW5lLnNlYXJjaDEoZnJhbWVzLCB0aW1lKTtcblx0XHRsZXQgcGVyY2VudCA9IHRoaXMuZ2V0Q3VydmVQZXJjZW50KHRpbWUsIGZyYW1lKTtcblx0XHRsZXQgcHJldlZlcnRpY2VzID0gdmVydGljZXNbZnJhbWVdO1xuXHRcdGxldCBuZXh0VmVydGljZXMgPSB2ZXJ0aWNlc1tmcmFtZSArIDFdO1xuXG5cdFx0aWYgKGFscGhhID09IDEpIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5hZGQpIHtcblx0XHRcdFx0bGV0IHZlcnRleEF0dGFjaG1lbnQgPSBzbG90QXR0YWNobWVudCBhcyBWZXJ0ZXhBdHRhY2htZW50O1xuXHRcdFx0XHRpZiAoIXZlcnRleEF0dGFjaG1lbnQuYm9uZXMpIHtcblx0XHRcdFx0XHQvLyBVbndlaWdodGVkIHZlcnRleCBwb3NpdGlvbnMsIHdpdGggYWxwaGEuXG5cdFx0XHRcdFx0bGV0IHNldHVwVmVydGljZXMgPSB2ZXJ0ZXhBdHRhY2htZW50LnZlcnRpY2VzO1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuXHRcdFx0XHRcdFx0bGV0IHByZXYgPSBwcmV2VmVydGljZXNbaV07XG5cdFx0XHRcdFx0XHRkZWZvcm1baV0gKz0gcHJldiArIChuZXh0VmVydGljZXNbaV0gLSBwcmV2KSAqIHBlcmNlbnQgLSBzZXR1cFZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBXZWlnaHRlZCBkZWZvcm0gb2Zmc2V0cywgd2l0aCBhbHBoYS5cblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspIHtcblx0XHRcdFx0XHRcdGxldCBwcmV2ID0gcHJldlZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IHByZXYgKyAobmV4dFZlcnRpY2VzW2ldIC0gcHJldikgKiBwZXJjZW50O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0bGV0IHByZXYgPSBwcmV2VmVydGljZXNbaV07XG5cdFx0XHRcdFx0ZGVmb3JtW2ldID0gcHJldiArIChuZXh0VmVydGljZXNbaV0gLSBwcmV2KSAqIHBlcmNlbnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3dpdGNoIChibGVuZCkge1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLnNldHVwOiB7XG5cdFx0XHRcdFx0bGV0IHZlcnRleEF0dGFjaG1lbnQgPSBzbG90QXR0YWNobWVudCBhcyBWZXJ0ZXhBdHRhY2htZW50O1xuXHRcdFx0XHRcdGlmICghdmVydGV4QXR0YWNobWVudC5ib25lcykge1xuXHRcdFx0XHRcdFx0Ly8gVW53ZWlnaHRlZCB2ZXJ0ZXggcG9zaXRpb25zLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0bGV0IHNldHVwVmVydGljZXMgPSB2ZXJ0ZXhBdHRhY2htZW50LnZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBwcmV2ID0gcHJldlZlcnRpY2VzW2ldLCBzZXR1cCA9IHNldHVwVmVydGljZXNbaV07XG5cdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSA9IHNldHVwICsgKHByZXYgKyAobmV4dFZlcnRpY2VzW2ldIC0gcHJldikgKiBwZXJjZW50IC0gc2V0dXApICogYWxwaGE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIFdlaWdodGVkIGRlZm9ybSBvZmZzZXRzLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBwcmV2ID0gcHJldlZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gPSAocHJldiArIChuZXh0VmVydGljZXNbaV0gLSBwcmV2KSAqIHBlcmNlbnQpICogYWxwaGE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuZmlyc3Q6XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQucmVwbGFjZTpcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRleENvdW50OyBpKyspIHtcblx0XHRcdFx0XHRcdGxldCBwcmV2ID0gcHJldlZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IChwcmV2ICsgKG5leHRWZXJ0aWNlc1tpXSAtIHByZXYpICogcGVyY2VudCAtIGRlZm9ybVtpXSkgKiBhbHBoYTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuYWRkOlxuXHRcdFx0XHRcdGxldCB2ZXJ0ZXhBdHRhY2htZW50ID0gc2xvdEF0dGFjaG1lbnQgYXMgVmVydGV4QXR0YWNobWVudDtcblx0XHRcdFx0XHRpZiAoIXZlcnRleEF0dGFjaG1lbnQuYm9uZXMpIHtcblx0XHRcdFx0XHRcdC8vIFVud2VpZ2h0ZWQgdmVydGV4IHBvc2l0aW9ucywgd2l0aCBhbHBoYS5cblx0XHRcdFx0XHRcdGxldCBzZXR1cFZlcnRpY2VzID0gdmVydGV4QXR0YWNobWVudC52ZXJ0aWNlcztcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmVydGV4Q291bnQ7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQgcHJldiA9IHByZXZWZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IChwcmV2ICsgKG5leHRWZXJ0aWNlc1tpXSAtIHByZXYpICogcGVyY2VudCAtIHNldHVwVmVydGljZXNbaV0pICogYWxwaGE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIFdlaWdodGVkIGRlZm9ybSBvZmZzZXRzLCB3aXRoIGFscGhhLlxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0ZXhDb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBwcmV2ID0gcHJldlZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0XHRkZWZvcm1baV0gKz0gKHByZXYgKyAobmV4dFZlcnRpY2VzW2ldIC0gcHJldikgKiBwZXJjZW50KSAqIGFscGhhO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqIEZpcmVzIGFuIHtAbGluayBFdmVudH0gd2hlbiBzcGVjaWZpYyBhbmltYXRpb24gdGltZXMgYXJlIHJlYWNoZWQuICovXG5leHBvcnQgY2xhc3MgRXZlbnRUaW1lbGluZSBleHRlbmRzIFRpbWVsaW5lIHtcblx0c3RhdGljIHByb3BlcnR5SWRzID0gW1wiXCIgKyBQcm9wZXJ0eS5ldmVudF07XG5cblx0LyoqIFRoZSBldmVudCBmb3IgZWFjaCBrZXkgZnJhbWUuICovXG5cdGV2ZW50czogQXJyYXk8RXZlbnQ+O1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBFdmVudFRpbWVsaW5lLnByb3BlcnR5SWRzKTtcblxuXHRcdHRoaXMuZXZlbnRzID0gbmV3IEFycmF5PEV2ZW50PihmcmFtZUNvdW50KTtcblx0fVxuXG5cdGdldEZyYW1lQ291bnQgKCkge1xuXHRcdHJldHVybiB0aGlzLmZyYW1lcy5sZW5ndGg7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBpbiBzZWNvbmRzIGFuZCB0aGUgZXZlbnQgZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWVdID0gZXZlbnQudGltZTtcblx0XHR0aGlzLmV2ZW50c1tmcmFtZV0gPSBldmVudDtcblx0fVxuXG5cdC8qKiBGaXJlcyBldmVudHMgZm9yIGZyYW1lcyA+IGBsYXN0VGltZWAgYW5kIDw9IGB0aW1lYC4gKi9cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBmaXJlZEV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0aWYgKCFmaXJlZEV2ZW50cykgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGxldCBmcmFtZUNvdW50ID0gdGhpcy5mcmFtZXMubGVuZ3RoO1xuXG5cdFx0aWYgKGxhc3RUaW1lID4gdGltZSkgeyAvLyBBcHBseSBhZnRlciBsYXN0VGltZSBmb3IgbG9vcGVkIGFuaW1hdGlvbnMuXG5cdFx0XHR0aGlzLmFwcGx5KHNrZWxldG9uLCBsYXN0VGltZSwgTnVtYmVyLk1BWF9WQUxVRSwgZmlyZWRFdmVudHMsIGFscGhhLCBibGVuZCwgZGlyZWN0aW9uKTtcblx0XHRcdGxhc3RUaW1lID0gLTE7XG5cdFx0fSBlbHNlIGlmIChsYXN0VGltZSA+PSBmcmFtZXNbZnJhbWVDb3VudCAtIDFdKSAvLyBMYXN0IHRpbWUgaXMgYWZ0ZXIgbGFzdCBmcmFtZS5cblx0XHRcdHJldHVybjtcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkgcmV0dXJuO1xuXG5cdFx0bGV0IGkgPSAwO1xuXHRcdGlmIChsYXN0VGltZSA8IGZyYW1lc1swXSlcblx0XHRcdGkgPSAwO1xuXHRcdGVsc2Uge1xuXHRcdFx0aSA9IFRpbWVsaW5lLnNlYXJjaDEoZnJhbWVzLCBsYXN0VGltZSkgKyAxO1xuXHRcdFx0bGV0IGZyYW1lVGltZSA9IGZyYW1lc1tpXTtcblx0XHRcdHdoaWxlIChpID4gMCkgeyAvLyBGaXJlIG11bHRpcGxlIGV2ZW50cyB3aXRoIHRoZSBzYW1lIGZyYW1lLlxuXHRcdFx0XHRpZiAoZnJhbWVzW2kgLSAxXSAhPSBmcmFtZVRpbWUpIGJyZWFrO1xuXHRcdFx0XHRpLS07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoOyBpIDwgZnJhbWVDb3VudCAmJiB0aW1lID49IGZyYW1lc1tpXTsgaSsrKVxuXHRcdFx0ZmlyZWRFdmVudHMucHVzaCh0aGlzLmV2ZW50c1tpXSk7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBza2VsZXRvbidzIHtAbGluayBTa2VsZXRvbiNkcmF3T3JkZXJ9LiAqL1xuZXhwb3J0IGNsYXNzIERyYXdPcmRlclRpbWVsaW5lIGV4dGVuZHMgVGltZWxpbmUge1xuXHRzdGF0aWMgcHJvcGVydHlJZHMgPSBbXCJcIiArIFByb3BlcnR5LmRyYXdPcmRlcl07XG5cblx0LyoqIFRoZSBkcmF3IG9yZGVyIGZvciBlYWNoIGtleSBmcmFtZS4gU2VlIHtAbGluayAjc2V0RnJhbWUoaW50LCBmbG9hdCwgaW50W10pfS4gKi9cblx0ZHJhd09yZGVyczogQXJyYXk8QXJyYXk8bnVtYmVyPiB8IG51bGw+O1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBEcmF3T3JkZXJUaW1lbGluZS5wcm9wZXJ0eUlkcyk7XG5cdFx0dGhpcy5kcmF3T3JkZXJzID0gbmV3IEFycmF5PEFycmF5PG51bWJlcj4gfCBudWxsPihmcmFtZUNvdW50KTtcblx0fVxuXG5cdGdldEZyYW1lQ291bnQgKCkge1xuXHRcdHJldHVybiB0aGlzLmZyYW1lcy5sZW5ndGg7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBpbiBzZWNvbmRzIGFuZCB0aGUgZHJhdyBvcmRlciBmb3IgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUuXG5cdCAqIEBwYXJhbSBkcmF3T3JkZXIgRm9yIGVhY2ggc2xvdCBpbiB7QGxpbmsgU2tlbGV0b24jc2xvdHN9LCB0aGUgaW5kZXggb2YgdGhlIG5ldyBkcmF3IG9yZGVyLiBNYXkgYmUgbnVsbCB0byB1c2Ugc2V0dXAgcG9zZVxuXHQgKiAgICAgICAgICAgZHJhdyBvcmRlci4gKi9cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZHJhd09yZGVyOiBBcnJheTxudW1iZXI+IHwgbnVsbCkge1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdFx0dGhpcy5kcmF3T3JkZXJzW2ZyYW1lXSA9IGRyYXdPcmRlcjtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZmlyZWRFdmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGlmIChkaXJlY3Rpb24gPT0gTWl4RGlyZWN0aW9uLm1peE91dCkge1xuXHRcdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSBVdGlscy5hcnJheUNvcHkoc2tlbGV0b24uc2xvdHMsIDAsIHNrZWxldG9uLmRyYXdPcmRlciwgMCwgc2tlbGV0b24uc2xvdHMubGVuZ3RoKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAodGltZSA8IHRoaXMuZnJhbWVzWzBdKSB7XG5cdFx0XHRpZiAoYmxlbmQgPT0gTWl4QmxlbmQuc2V0dXAgfHwgYmxlbmQgPT0gTWl4QmxlbmQuZmlyc3QpIFV0aWxzLmFycmF5Q29weShza2VsZXRvbi5zbG90cywgMCwgc2tlbGV0b24uZHJhd09yZGVyLCAwLCBza2VsZXRvbi5zbG90cy5sZW5ndGgpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCBpZHggPSBUaW1lbGluZS5zZWFyY2gxKHRoaXMuZnJhbWVzLCB0aW1lKTtcblx0XHRsZXQgZHJhd09yZGVyVG9TZXR1cEluZGV4ID0gdGhpcy5kcmF3T3JkZXJzW2lkeF07XG5cdFx0aWYgKCFkcmF3T3JkZXJUb1NldHVwSW5kZXgpXG5cdFx0XHRVdGlscy5hcnJheUNvcHkoc2tlbGV0b24uc2xvdHMsIDAsIHNrZWxldG9uLmRyYXdPcmRlciwgMCwgc2tlbGV0b24uc2xvdHMubGVuZ3RoKTtcblx0XHRlbHNlIHtcblx0XHRcdGxldCBkcmF3T3JkZXI6IEFycmF5PFNsb3Q+ID0gc2tlbGV0b24uZHJhd09yZGVyO1xuXHRcdFx0bGV0IHNsb3RzOiBBcnJheTxTbG90PiA9IHNrZWxldG9uLnNsb3RzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBkcmF3T3JkZXJUb1NldHVwSW5kZXgubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRkcmF3T3JkZXJbaV0gPSBzbG90c1tkcmF3T3JkZXJUb1NldHVwSW5kZXhbaV1dO1xuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhbiBJSyBjb25zdHJhaW50J3Mge0BsaW5rIElrQ29uc3RyYWludCNtaXh9LCB7QGxpbmsgSWtDb25zdHJhaW50I3NvZnRuZXNzfSxcbiAqIHtAbGluayBJa0NvbnN0cmFpbnQjYmVuZERpcmVjdGlvbn0sIHtAbGluayBJa0NvbnN0cmFpbnQjc3RyZXRjaH0sIGFuZCB7QGxpbmsgSWtDb25zdHJhaW50I2NvbXByZXNzfS4gKi9cbmV4cG9ydCBjbGFzcyBJa0NvbnN0cmFpbnRUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUge1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBJSyBjb25zdHJhaW50IGluIHtAbGluayBTa2VsZXRvbiNnZXRJa0NvbnN0cmFpbnRzKCl9IHRoYXQgd2lsbCBiZSBjaGFuZ2VkIHdoZW4gdGhpcyB0aW1lbGluZSBpcyBhcHBsaWVkICovXG5cdGNvbnN0cmFpbnRJbmRleDogbnVtYmVyID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBpa0NvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFtcblx0XHRcdFByb3BlcnR5LmlrQ29uc3RyYWludCArIFwifFwiICsgaWtDb25zdHJhaW50SW5kZXhcblx0XHRdKTtcblx0XHR0aGlzLmNvbnN0cmFpbnRJbmRleCA9IGlrQ29uc3RyYWludEluZGV4O1xuXHR9XG5cblx0Z2V0RnJhbWVFbnRyaWVzICgpIHtcblx0XHRyZXR1cm4gNi8qRU5UUklFUyovO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHRpbWUgaW4gc2Vjb25kcywgbWl4LCBzb2Z0bmVzcywgYmVuZCBkaXJlY3Rpb24sIGNvbXByZXNzLCBhbmQgc3RyZXRjaCBmb3IgdGhlIHNwZWNpZmllZCBrZXkgZnJhbWUuICovXG5cdHNldEZyYW1lIChmcmFtZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIG1peDogbnVtYmVyLCBzb2Z0bmVzczogbnVtYmVyLCBiZW5kRGlyZWN0aW9uOiBudW1iZXIsIGNvbXByZXNzOiBib29sZWFuLCBzdHJldGNoOiBib29sZWFuKSB7XG5cdFx0ZnJhbWUgKj0gNi8qRU5UUklFUyovO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAxLypNSVgqL10gPSBtaXg7XG5cdFx0dGhpcy5mcmFtZXNbZnJhbWUgKyAyLypTT0ZUTkVTUyovXSA9IHNvZnRuZXNzO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgMy8qQkVORF9ESVJFQ1RJT04qL10gPSBiZW5kRGlyZWN0aW9uO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgNC8qQ09NUFJFU1MqL10gPSBjb21wcmVzcyA/IDEgOiAwO1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lICsgNS8qU1RSRVRDSCovXSA9IHN0cmV0Y2ggPyAxIDogMDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZmlyZWRFdmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBjb25zdHJhaW50OiBJa0NvbnN0cmFpbnQgPSBza2VsZXRvbi5pa0NvbnN0cmFpbnRzW3RoaXMuY29uc3RyYWludEluZGV4XTtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peCA9IGNvbnN0cmFpbnQuZGF0YS5taXg7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5zb2Z0bmVzcyA9IGNvbnN0cmFpbnQuZGF0YS5zb2Z0bmVzcztcblx0XHRcdFx0XHRjb25zdHJhaW50LmJlbmREaXJlY3Rpb24gPSBjb25zdHJhaW50LmRhdGEuYmVuZERpcmVjdGlvbjtcblx0XHRcdFx0XHRjb25zdHJhaW50LmNvbXByZXNzID0gY29uc3RyYWludC5kYXRhLmNvbXByZXNzO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQuc3RyZXRjaCA9IGNvbnN0cmFpbnQuZGF0YS5zdHJldGNoO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peCArPSAoY29uc3RyYWludC5kYXRhLm1peCAtIGNvbnN0cmFpbnQubWl4KSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQuc29mdG5lc3MgKz0gKGNvbnN0cmFpbnQuZGF0YS5zb2Z0bmVzcyAtIGNvbnN0cmFpbnQuc29mdG5lc3MpICogYWxwaGE7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5iZW5kRGlyZWN0aW9uID0gY29uc3RyYWludC5kYXRhLmJlbmREaXJlY3Rpb247XG5cdFx0XHRcdFx0Y29uc3RyYWludC5jb21wcmVzcyA9IGNvbnN0cmFpbnQuZGF0YS5jb21wcmVzcztcblx0XHRcdFx0XHRjb25zdHJhaW50LnN0cmV0Y2ggPSBjb25zdHJhaW50LmRhdGEuc3RyZXRjaDtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgbWl4ID0gMCwgc29mdG5lc3MgPSAwO1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgNi8qRU5UUklFUyovKVxuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpIC8gNi8qRU5UUklFUyovXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0bWl4ID0gZnJhbWVzW2kgKyAxLypNSVgqL107XG5cdFx0XHRcdHNvZnRuZXNzID0gZnJhbWVzW2kgKyAyLypTT0ZUTkVTUyovXTtcblx0XHRcdFx0bGV0IHQgPSAodGltZSAtIGJlZm9yZSkgLyAoZnJhbWVzW2kgKyA2LypFTlRSSUVTKi9dIC0gYmVmb3JlKTtcblx0XHRcdFx0bWl4ICs9IChmcmFtZXNbaSArIDYvKkVOVFJJRVMqLyArIDEvKk1JWCovXSAtIG1peCkgKiB0O1xuXHRcdFx0XHRzb2Z0bmVzcyArPSAoZnJhbWVzW2kgKyA2LypFTlRSSUVTKi8gKyAyLypTT0ZUTkVTUyovXSAtIHNvZnRuZXNzKSAqIHQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdG1peCA9IGZyYW1lc1tpICsgMS8qTUlYKi9dO1xuXHRcdFx0XHRzb2Z0bmVzcyA9IGZyYW1lc1tpICsgMi8qU09GVE5FU1MqL107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0bWl4ID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCAxLypNSVgqLywgY3VydmVUeXBlIC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRzb2Z0bmVzcyA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qU09GVE5FU1MqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gLSAyLypCRVpJRVIqLyk7XG5cdFx0fVxuXG5cdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSB7XG5cdFx0XHRjb25zdHJhaW50Lm1peCA9IGNvbnN0cmFpbnQuZGF0YS5taXggKyAobWl4IC0gY29uc3RyYWludC5kYXRhLm1peCkgKiBhbHBoYTtcblx0XHRcdGNvbnN0cmFpbnQuc29mdG5lc3MgPSBjb25zdHJhaW50LmRhdGEuc29mdG5lc3MgKyAoc29mdG5lc3MgLSBjb25zdHJhaW50LmRhdGEuc29mdG5lc3MpICogYWxwaGE7XG5cblx0XHRcdGlmIChkaXJlY3Rpb24gPT0gTWl4RGlyZWN0aW9uLm1peE91dCkge1xuXHRcdFx0XHRjb25zdHJhaW50LmJlbmREaXJlY3Rpb24gPSBjb25zdHJhaW50LmRhdGEuYmVuZERpcmVjdGlvbjtcblx0XHRcdFx0Y29uc3RyYWludC5jb21wcmVzcyA9IGNvbnN0cmFpbnQuZGF0YS5jb21wcmVzcztcblx0XHRcdFx0Y29uc3RyYWludC5zdHJldGNoID0gY29uc3RyYWludC5kYXRhLnN0cmV0Y2g7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdHJhaW50LmJlbmREaXJlY3Rpb24gPSBmcmFtZXNbaSArIDMvKkJFTkRfRElSRUNUSU9OKi9dO1xuXHRcdFx0XHRjb25zdHJhaW50LmNvbXByZXNzID0gZnJhbWVzW2kgKyA0LypDT01QUkVTUyovXSAhPSAwO1xuXHRcdFx0XHRjb25zdHJhaW50LnN0cmV0Y2ggPSBmcmFtZXNbaSArIDUvKlNUUkVUQ0gqL10gIT0gMDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3RyYWludC5taXggKz0gKG1peCAtIGNvbnN0cmFpbnQubWl4KSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5zb2Z0bmVzcyArPSAoc29mdG5lc3MgLSBjb25zdHJhaW50LnNvZnRuZXNzKSAqIGFscGhhO1xuXHRcdFx0aWYgKGRpcmVjdGlvbiA9PSBNaXhEaXJlY3Rpb24ubWl4SW4pIHtcblx0XHRcdFx0Y29uc3RyYWludC5iZW5kRGlyZWN0aW9uID0gZnJhbWVzW2kgKyAzLypCRU5EX0RJUkVDVElPTiovXTtcblx0XHRcdFx0Y29uc3RyYWludC5jb21wcmVzcyA9IGZyYW1lc1tpICsgNC8qQ09NUFJFU1MqL10gIT0gMDtcblx0XHRcdFx0Y29uc3RyYWludC5zdHJldGNoID0gZnJhbWVzW2kgKyA1LypTVFJFVENIKi9dICE9IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgdHJhbnNmb3JtIGNvbnN0cmFpbnQncyB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludCNyb3RhdGVNaXh9LCB7QGxpbmsgVHJhbnNmb3JtQ29uc3RyYWludCN0cmFuc2xhdGVNaXh9LFxuICoge0BsaW5rIFRyYW5zZm9ybUNvbnN0cmFpbnQjc2NhbGVNaXh9LCBhbmQge0BsaW5rIFRyYW5zZm9ybUNvbnN0cmFpbnQjc2hlYXJNaXh9LiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zZm9ybUNvbnN0cmFpbnRUaW1lbGluZSBleHRlbmRzIEN1cnZlVGltZWxpbmUge1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSB0cmFuc2Zvcm0gY29uc3RyYWludCBzbG90IGluIHtAbGluayBTa2VsZXRvbiN0cmFuc2Zvcm1Db25zdHJhaW50c30gdGhhdCB3aWxsIGJlIGNoYW5nZWQuICovXG5cdGNvbnN0cmFpbnRJbmRleDogbnVtYmVyID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCB0cmFuc2Zvcm1Db25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBbXG5cdFx0XHRQcm9wZXJ0eS50cmFuc2Zvcm1Db25zdHJhaW50ICsgXCJ8XCIgKyB0cmFuc2Zvcm1Db25zdHJhaW50SW5kZXhcblx0XHRdKTtcblx0XHR0aGlzLmNvbnN0cmFpbnRJbmRleCA9IHRyYW5zZm9ybUNvbnN0cmFpbnRJbmRleDtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIDcvKkVOVFJJRVMqLztcblx0fVxuXG5cdC8qKiBUaGUgdGltZSBpbiBzZWNvbmRzLCByb3RhdGUgbWl4LCB0cmFuc2xhdGUgbWl4LCBzY2FsZSBtaXgsIGFuZCBzaGVhciBtaXggZm9yIHRoZSBzcGVjaWZpZWQga2V5IGZyYW1lLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBtaXhSb3RhdGU6IG51bWJlciwgbWl4WDogbnVtYmVyLCBtaXhZOiBudW1iZXIsIG1peFNjYWxlWDogbnVtYmVyLCBtaXhTY2FsZVk6IG51bWJlcixcblx0XHRtaXhTaGVhclk6IG51bWJlcikge1xuXHRcdGxldCBmcmFtZXMgPSB0aGlzLmZyYW1lcztcblx0XHRmcmFtZSAqPSA3LypFTlRSSUVTKi87XG5cdFx0ZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdFx0ZnJhbWVzW2ZyYW1lICsgMS8qUk9UQVRFKi9dID0gbWl4Um90YXRlO1xuXHRcdGZyYW1lc1tmcmFtZSArIDIvKlgqL10gPSBtaXhYO1xuXHRcdGZyYW1lc1tmcmFtZSArIDMvKlkqL10gPSBtaXhZO1xuXHRcdGZyYW1lc1tmcmFtZSArIDQvKlNDQUxFWCovXSA9IG1peFNjYWxlWDtcblx0XHRmcmFtZXNbZnJhbWUgKyA1LypTQ0FMRVkqL10gPSBtaXhTY2FsZVk7XG5cdFx0ZnJhbWVzW2ZyYW1lICsgNi8qU0hFQVJZKi9dID0gbWl4U2hlYXJZO1xuXHR9XG5cblx0YXBwbHkgKHNrZWxldG9uOiBTa2VsZXRvbiwgbGFzdFRpbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBmaXJlZEV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IGNvbnN0cmFpbnQ6IFRyYW5zZm9ybUNvbnN0cmFpbnQgPSBza2VsZXRvbi50cmFuc2Zvcm1Db25zdHJhaW50c1t0aGlzLmNvbnN0cmFpbnRJbmRleF07XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRsZXQgZGF0YSA9IGNvbnN0cmFpbnQuZGF0YTtcblx0XHRcdHN3aXRjaCAoYmxlbmQpIHtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5zZXR1cDpcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFJvdGF0ZSA9IGRhdGEubWl4Um90YXRlO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4WCA9IGRhdGEubWl4WDtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFkgPSBkYXRhLm1peFk7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXhTY2FsZVggPSBkYXRhLm1peFNjYWxlWDtcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFNjYWxlWSA9IGRhdGEubWl4U2NhbGVZO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4U2hlYXJZID0gZGF0YS5taXhTaGVhclk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRjYXNlIE1peEJsZW5kLmZpcnN0OlxuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4Um90YXRlICs9IChkYXRhLm1peFJvdGF0ZSAtIGNvbnN0cmFpbnQubWl4Um90YXRlKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4WCArPSAoZGF0YS5taXhYIC0gY29uc3RyYWludC5taXhYKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4WSArPSAoZGF0YS5taXhZIC0gY29uc3RyYWludC5taXhZKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4U2NhbGVYICs9IChkYXRhLm1peFNjYWxlWCAtIGNvbnN0cmFpbnQubWl4U2NhbGVYKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4U2NhbGVZICs9IChkYXRhLm1peFNjYWxlWSAtIGNvbnN0cmFpbnQubWl4U2NhbGVZKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4U2hlYXJZICs9IChkYXRhLm1peFNoZWFyWSAtIGNvbnN0cmFpbnQubWl4U2hlYXJZKSAqIGFscGhhO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGxldCByb3RhdGUsIHgsIHksIHNjYWxlWCwgc2NhbGVZLCBzaGVhclk7XG5cdFx0bGV0IGkgPSBUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCA3LypFTlRSSUVTKi8pO1xuXHRcdGxldCBjdXJ2ZVR5cGUgPSB0aGlzLmN1cnZlc1tpIC8gNy8qRU5UUklFUyovXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0cm90YXRlID0gZnJhbWVzW2kgKyAxLypST1RBVEUqL107XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDIvKlgqL107XG5cdFx0XHRcdHkgPSBmcmFtZXNbaSArIDMvKlkqL107XG5cdFx0XHRcdHNjYWxlWCA9IGZyYW1lc1tpICsgNC8qU0NBTEVYKi9dO1xuXHRcdFx0XHRzY2FsZVkgPSBmcmFtZXNbaSArIDUvKlNDQUxFWSovXTtcblx0XHRcdFx0c2hlYXJZID0gZnJhbWVzW2kgKyA2LypTSEVBUlkqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdHJvdGF0ZSArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyAxLypST1RBVEUqL10gLSByb3RhdGUpICogdDtcblx0XHRcdFx0eCArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyAyLypYKi9dIC0geCkgKiB0O1xuXHRcdFx0XHR5ICs9IChmcmFtZXNbaSArIDcvKkVOVFJJRVMqLyArIDMvKlkqL10gLSB5KSAqIHQ7XG5cdFx0XHRcdHNjYWxlWCArPSAoZnJhbWVzW2kgKyA3LypFTlRSSUVTKi8gKyA0LypTQ0FMRVgqL10gLSBzY2FsZVgpICogdDtcblx0XHRcdFx0c2NhbGVZICs9IChmcmFtZXNbaSArIDcvKkVOVFJJRVMqLyArIDUvKlNDQUxFWSovXSAtIHNjYWxlWSkgKiB0O1xuXHRcdFx0XHRzaGVhclkgKz0gKGZyYW1lc1tpICsgNy8qRU5UUklFUyovICsgNi8qU0hFQVJZKi9dIC0gc2hlYXJZKSAqIHQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdHJvdGF0ZSA9IGZyYW1lc1tpICsgMS8qUk9UQVRFKi9dO1xuXHRcdFx0XHR4ID0gZnJhbWVzW2kgKyAyLypYKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAzLypZKi9dO1xuXHRcdFx0XHRzY2FsZVggPSBmcmFtZXNbaSArIDQvKlNDQUxFWCovXTtcblx0XHRcdFx0c2NhbGVZID0gZnJhbWVzW2kgKyA1LypTQ0FMRVkqL107XG5cdFx0XHRcdHNoZWFyWSA9IGZyYW1lc1tpICsgNi8qU0hFQVJZKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJvdGF0ZSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qUk9UQVRFKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0eCA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qWCovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0eSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMy8qWSovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDIgLSAyLypCRVpJRVIqLyk7XG5cdFx0XHRcdHNjYWxlWCA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgNC8qU0NBTEVYKi8sIGN1cnZlVHlwZSArIDE4LypCRVpJRVJfU0laRSovICogMyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0c2NhbGVZID0gdGhpcy5nZXRCZXppZXJWYWx1ZSh0aW1lLCBpLCA1LypTQ0FMRVkqLywgY3VydmVUeXBlICsgMTgvKkJFWklFUl9TSVpFKi8gKiA0IC0gMi8qQkVaSUVSKi8pO1xuXHRcdFx0XHRzaGVhclkgPSB0aGlzLmdldEJlemllclZhbHVlKHRpbWUsIGksIDYvKlNIRUFSWSovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDUgLSAyLypCRVpJRVIqLyk7XG5cdFx0fVxuXG5cdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSB7XG5cdFx0XHRsZXQgZGF0YSA9IGNvbnN0cmFpbnQuZGF0YTtcblx0XHRcdGNvbnN0cmFpbnQubWl4Um90YXRlID0gZGF0YS5taXhSb3RhdGUgKyAocm90YXRlIC0gZGF0YS5taXhSb3RhdGUpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFggPSBkYXRhLm1peFggKyAoeCAtIGRhdGEubWl4WCkgKiBhbHBoYTtcblx0XHRcdGNvbnN0cmFpbnQubWl4WSA9IGRhdGEubWl4WSArICh5IC0gZGF0YS5taXhZKSAqIGFscGhhO1xuXHRcdFx0Y29uc3RyYWludC5taXhTY2FsZVggPSBkYXRhLm1peFNjYWxlWCArIChzY2FsZVggLSBkYXRhLm1peFNjYWxlWCkgKiBhbHBoYTtcblx0XHRcdGNvbnN0cmFpbnQubWl4U2NhbGVZID0gZGF0YS5taXhTY2FsZVkgKyAoc2NhbGVZIC0gZGF0YS5taXhTY2FsZVkpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFNoZWFyWSA9IGRhdGEubWl4U2hlYXJZICsgKHNoZWFyWSAtIGRhdGEubWl4U2hlYXJZKSAqIGFscGhhO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdHJhaW50Lm1peFJvdGF0ZSArPSAocm90YXRlIC0gY29uc3RyYWludC5taXhSb3RhdGUpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFggKz0gKHggLSBjb25zdHJhaW50Lm1peFgpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFkgKz0gKHkgLSBjb25zdHJhaW50Lm1peFkpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFNjYWxlWCArPSAoc2NhbGVYIC0gY29uc3RyYWludC5taXhTY2FsZVgpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFNjYWxlWSArPSAoc2NhbGVZIC0gY29uc3RyYWludC5taXhTY2FsZVkpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFNoZWFyWSArPSAoc2hlYXJZIC0gY29uc3RyYWludC5taXhTaGVhclkpICogYWxwaGE7XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgcGF0aCBjb25zdHJhaW50J3Mge0BsaW5rIFBhdGhDb25zdHJhaW50I3Bvc2l0aW9ufS4gKi9cbmV4cG9ydCBjbGFzcyBQYXRoQ29uc3RyYWludFBvc2l0aW9uVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSB7XG5cdC8qKiBUaGUgaW5kZXggb2YgdGhlIHBhdGggY29uc3RyYWludCBpbiB7QGxpbmsgU2tlbGV0b24jZ2V0UGF0aENvbnN0cmFpbnRzKCl9IHRoYXQgd2lsbCBiZSBjaGFuZ2VkIHdoZW4gdGhpcyB0aW1lbGluZSBpc1xuXHQgKiBhcHBsaWVkLiAqL1xuXHRjb25zdHJhaW50SW5kZXg6IG51bWJlciA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGF0aENvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFByb3BlcnR5LnBhdGhDb25zdHJhaW50UG9zaXRpb24gKyBcInxcIiArIHBhdGhDb25zdHJhaW50SW5kZXgpO1xuXHRcdHRoaXMuY29uc3RyYWludEluZGV4ID0gcGF0aENvbnN0cmFpbnRJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZmlyZWRFdmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBjb25zdHJhaW50OiBQYXRoQ29uc3RyYWludCA9IHNrZWxldG9uLnBhdGhDb25zdHJhaW50c1t0aGlzLmNvbnN0cmFpbnRJbmRleF07XG5cdFx0aWYgKGNvbnN0cmFpbnQuYWN0aXZlKVxuXHRcdFx0Y29uc3RyYWludC5wb3NpdGlvbiA9IHRoaXMuZ2V0QWJzb2x1dGVWYWx1ZSh0aW1lLCBhbHBoYSwgYmxlbmQsIGNvbnN0cmFpbnQucG9zaXRpb24sIGNvbnN0cmFpbnQuZGF0YS5wb3NpdGlvbik7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBwYXRoIGNvbnN0cmFpbnQncyB7QGxpbmsgUGF0aENvbnN0cmFpbnQjc3BhY2luZ30uICovXG5leHBvcnQgY2xhc3MgUGF0aENvbnN0cmFpbnRTcGFjaW5nVGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lMSB7XG5cdC8qKiBUaGUgaW5kZXggb2YgdGhlIHBhdGggY29uc3RyYWludCBpbiB7QGxpbmsgU2tlbGV0b24jZ2V0UGF0aENvbnN0cmFpbnRzKCl9IHRoYXQgd2lsbCBiZSBjaGFuZ2VkIHdoZW4gdGhpcyB0aW1lbGluZSBpc1xuXHQgKiBhcHBsaWVkLiAqL1xuXHRjb25zdHJhaW50SW5kZXggPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBhdGhDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBQcm9wZXJ0eS5wYXRoQ29uc3RyYWludFNwYWNpbmcgKyBcInxcIiArIHBhdGhDb25zdHJhaW50SW5kZXgpO1xuXHRcdHRoaXMuY29uc3RyYWludEluZGV4ID0gcGF0aENvbnN0cmFpbnRJbmRleDtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZmlyZWRFdmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBjb25zdHJhaW50OiBQYXRoQ29uc3RyYWludCA9IHNrZWxldG9uLnBhdGhDb25zdHJhaW50c1t0aGlzLmNvbnN0cmFpbnRJbmRleF07XG5cdFx0aWYgKGNvbnN0cmFpbnQuYWN0aXZlKVxuXHRcdFx0Y29uc3RyYWludC5zcGFjaW5nID0gdGhpcy5nZXRBYnNvbHV0ZVZhbHVlKHRpbWUsIGFscGhhLCBibGVuZCwgY29uc3RyYWludC5zcGFjaW5nLCBjb25zdHJhaW50LmRhdGEuc3BhY2luZyk7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSB0cmFuc2Zvcm0gY29uc3RyYWludCdzIHtAbGluayBQYXRoQ29uc3RyYWludCNnZXRNaXhSb3RhdGUoKX0sIHtAbGluayBQYXRoQ29uc3RyYWludCNnZXRNaXhYKCl9LCBhbmRcbiAqIHtAbGluayBQYXRoQ29uc3RyYWludCNnZXRNaXhZKCl9LiAqL1xuZXhwb3J0IGNsYXNzIFBhdGhDb25zdHJhaW50TWl4VGltZWxpbmUgZXh0ZW5kcyBDdXJ2ZVRpbWVsaW5lIHtcblx0LyoqIFRoZSBpbmRleCBvZiB0aGUgcGF0aCBjb25zdHJhaW50IGluIHtAbGluayBTa2VsZXRvbiNnZXRQYXRoQ29uc3RyYWludHMoKX0gdGhhdCB3aWxsIGJlIGNoYW5nZWQgd2hlbiB0aGlzIHRpbWVsaW5lIGlzXG5cdCAqIGFwcGxpZWQuICovXG5cdGNvbnN0cmFpbnRJbmRleCA9IDA7XG5cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGF0aENvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIFtcblx0XHRcdFByb3BlcnR5LnBhdGhDb25zdHJhaW50TWl4ICsgXCJ8XCIgKyBwYXRoQ29uc3RyYWludEluZGV4XG5cdFx0XSk7XG5cdFx0dGhpcy5jb25zdHJhaW50SW5kZXggPSBwYXRoQ29uc3RyYWludEluZGV4O1xuXHR9XG5cblx0Z2V0RnJhbWVFbnRyaWVzICgpIHtcblx0XHRyZXR1cm4gNC8qRU5UUklFUyovO1xuXHR9XG5cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgbWl4Um90YXRlOiBudW1iZXIsIG1peFg6IG51bWJlciwgbWl4WTogbnVtYmVyKSB7XG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGZyYW1lIDw8PSAyO1xuXHRcdGZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdGZyYW1lc1tmcmFtZSArIDEvKlJPVEFURSovXSA9IG1peFJvdGF0ZTtcblx0XHRmcmFtZXNbZnJhbWUgKyAyLypYKi9dID0gbWl4WDtcblx0XHRmcmFtZXNbZnJhbWUgKyAzLypZKi9dID0gbWl4WTtcblx0fVxuXG5cdGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGxhc3RUaW1lOiBudW1iZXIsIHRpbWU6IG51bWJlciwgZmlyZWRFdmVudHM6IEFycmF5PEV2ZW50PiwgYWxwaGE6IG51bWJlciwgYmxlbmQ6IE1peEJsZW5kLCBkaXJlY3Rpb246IE1peERpcmVjdGlvbikge1xuXHRcdGxldCBjb25zdHJhaW50OiBQYXRoQ29uc3RyYWludCA9IHNrZWxldG9uLnBhdGhDb25zdHJhaW50c1t0aGlzLmNvbnN0cmFpbnRJbmRleF07XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXHRcdGlmICh0aW1lIDwgZnJhbWVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKGJsZW5kKSB7XG5cdFx0XHRcdGNhc2UgTWl4QmxlbmQuc2V0dXA6XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXhSb3RhdGUgPSBjb25zdHJhaW50LmRhdGEubWl4Um90YXRlO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4WCA9IGNvbnN0cmFpbnQuZGF0YS5taXhYO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4WSA9IGNvbnN0cmFpbnQuZGF0YS5taXhZO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Y2FzZSBNaXhCbGVuZC5maXJzdDpcblx0XHRcdFx0XHRjb25zdHJhaW50Lm1peFJvdGF0ZSArPSAoY29uc3RyYWludC5kYXRhLm1peFJvdGF0ZSAtIGNvbnN0cmFpbnQubWl4Um90YXRlKSAqIGFscGhhO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnQubWl4WCArPSAoY29uc3RyYWludC5kYXRhLm1peFggLSBjb25zdHJhaW50Lm1peFgpICogYWxwaGE7XG5cdFx0XHRcdFx0Y29uc3RyYWludC5taXhZICs9IChjb25zdHJhaW50LmRhdGEubWl4WSAtIGNvbnN0cmFpbnQubWl4WSkgKiBhbHBoYTtcblx0XHRcdH1cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgcm90YXRlLCB4LCB5O1xuXHRcdGxldCBpID0gVGltZWxpbmUuc2VhcmNoKGZyYW1lcywgdGltZSwgNC8qRU5UUklFUyovKTtcblx0XHRsZXQgY3VydmVUeXBlID0gdGhpcy5jdXJ2ZXNbaSA+PiAyXTtcblx0XHRzd2l0Y2ggKGN1cnZlVHlwZSkge1xuXHRcdFx0Y2FzZSAwLypMSU5FQVIqLzpcblx0XHRcdFx0bGV0IGJlZm9yZSA9IGZyYW1lc1tpXTtcblx0XHRcdFx0cm90YXRlID0gZnJhbWVzW2kgKyAxLypST1RBVEUqL107XG5cdFx0XHRcdHggPSBmcmFtZXNbaSArIDIvKlgqL107XG5cdFx0XHRcdHkgPSBmcmFtZXNbaSArIDMvKlkqL107XG5cdFx0XHRcdGxldCB0ID0gKHRpbWUgLSBiZWZvcmUpIC8gKGZyYW1lc1tpICsgNC8qRU5UUklFUyovXSAtIGJlZm9yZSk7XG5cdFx0XHRcdHJvdGF0ZSArPSAoZnJhbWVzW2kgKyA0LypFTlRSSUVTKi8gKyAxLypST1RBVEUqL10gLSByb3RhdGUpICogdDtcblx0XHRcdFx0eCArPSAoZnJhbWVzW2kgKyA0LypFTlRSSUVTKi8gKyAyLypYKi9dIC0geCkgKiB0O1xuXHRcdFx0XHR5ICs9IChmcmFtZXNbaSArIDQvKkVOVFJJRVMqLyArIDMvKlkqL10gLSB5KSAqIHQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxLypTVEVQUEVEKi86XG5cdFx0XHRcdHJvdGF0ZSA9IGZyYW1lc1tpICsgMS8qUk9UQVRFKi9dO1xuXHRcdFx0XHR4ID0gZnJhbWVzW2kgKyAyLypYKi9dO1xuXHRcdFx0XHR5ID0gZnJhbWVzW2kgKyAzLypZKi9dO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJvdGF0ZSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMS8qUk9UQVRFKi8sIGN1cnZlVHlwZSAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0eCA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMi8qWCovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAtIDIvKkJFWklFUiovKTtcblx0XHRcdFx0eSA9IHRoaXMuZ2V0QmV6aWVyVmFsdWUodGltZSwgaSwgMy8qWSovLCBjdXJ2ZVR5cGUgKyAxOC8qQkVaSUVSX1NJWkUqLyAqIDIgLSAyLypCRVpJRVIqLyk7XG5cdFx0fVxuXG5cdFx0aWYgKGJsZW5kID09IE1peEJsZW5kLnNldHVwKSB7XG5cdFx0XHRsZXQgZGF0YSA9IGNvbnN0cmFpbnQuZGF0YTtcblx0XHRcdGNvbnN0cmFpbnQubWl4Um90YXRlID0gZGF0YS5taXhSb3RhdGUgKyAocm90YXRlIC0gZGF0YS5taXhSb3RhdGUpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFggPSBkYXRhLm1peFggKyAoeCAtIGRhdGEubWl4WCkgKiBhbHBoYTtcblx0XHRcdGNvbnN0cmFpbnQubWl4WSA9IGRhdGEubWl4WSArICh5IC0gZGF0YS5taXhZKSAqIGFscGhhO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdHJhaW50Lm1peFJvdGF0ZSArPSAocm90YXRlIC0gY29uc3RyYWludC5taXhSb3RhdGUpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFggKz0gKHggLSBjb25zdHJhaW50Lm1peFgpICogYWxwaGE7XG5cdFx0XHRjb25zdHJhaW50Lm1peFkgKz0gKHkgLSBjb25zdHJhaW50Lm1peFkpICogYWxwaGE7XG5cdFx0fVxuXHR9XG59XG5cbi8qKiBUaGUgYmFzZSBjbGFzcyBmb3IgbW9zdCB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnR9IHRpbWVsaW5lcy4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludFRpbWVsaW5lIGV4dGVuZHMgQ3VydmVUaW1lbGluZTEge1xuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBwaHlzaWNzIGNvbnN0cmFpbnQgaW4ge0BsaW5rIFNrZWxldG9uI2dldFBoeXNpY3NDb25zdHJhaW50cygpfSB0aGF0IHdpbGwgYmUgY2hhbmdlZCB3aGVuIHRoaXMgdGltZWxpbmVcblx0ICogaXMgYXBwbGllZCwgb3IgLTEgaWYgYWxsIHBoeXNpY3MgY29uc3RyYWludHMgaW4gdGhlIHNrZWxldG9uIHdpbGwgYmUgY2hhbmdlZC4gKi9cblx0Y29uc3RyYWludEluZGV4ID0gMDtcblxuXHQvKiogQHBhcmFtIHBoeXNpY3NDb25zdHJhaW50SW5kZXggLTEgZm9yIGFsbCBwaHlzaWNzIGNvbnN0cmFpbnRzIGluIHRoZSBza2VsZXRvbi4gKi9cblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleDogbnVtYmVyLCBwcm9wZXJ0eTogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHByb3BlcnR5ICsgXCJ8XCIgKyBwaHlzaWNzQ29uc3RyYWludEluZGV4KTtcblx0XHR0aGlzLmNvbnN0cmFpbnRJbmRleCA9IHBoeXNpY3NDb25zdHJhaW50SW5kZXg7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblx0XHRsZXQgY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQ7XG5cdFx0aWYgKHRoaXMuY29uc3RyYWludEluZGV4ID09IC0xKSB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IHRpbWUgPj0gdGhpcy5mcmFtZXNbMF0gPyB0aGlzLmdldEN1cnZlVmFsdWUodGltZSkgOiAwO1xuXG5cdFx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnQgb2Ygc2tlbGV0b24ucGh5c2ljc0NvbnN0cmFpbnRzKSB7XG5cdFx0XHRcdGlmIChjb25zdHJhaW50LmFjdGl2ZSAmJiB0aGlzLmdsb2JhbChjb25zdHJhaW50LmRhdGEpKVxuXHRcdFx0XHRcdHRoaXMuc2V0KGNvbnN0cmFpbnQsIHRoaXMuZ2V0QWJzb2x1dGVWYWx1ZTIodGltZSwgYWxwaGEsIGJsZW5kLCB0aGlzLmdldChjb25zdHJhaW50KSwgdGhpcy5zZXR1cChjb25zdHJhaW50KSwgdmFsdWUpKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3RyYWludCA9IHNrZWxldG9uLnBoeXNpY3NDb25zdHJhaW50c1t0aGlzLmNvbnN0cmFpbnRJbmRleF07XG5cdFx0XHRpZiAoY29uc3RyYWludC5hY3RpdmUpIHRoaXMuc2V0KGNvbnN0cmFpbnQsIHRoaXMuZ2V0QWJzb2x1dGVWYWx1ZSh0aW1lLCBhbHBoYSwgYmxlbmQsIHRoaXMuZ2V0KGNvbnN0cmFpbnQpLCB0aGlzLnNldHVwKGNvbnN0cmFpbnQpKSk7XG5cdFx0fVxuXHR9XG5cblx0YWJzdHJhY3Qgc2V0dXAgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyO1xuXG5cdGFic3RyYWN0IGdldCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXI7XG5cblx0YWJzdHJhY3Qgc2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCwgdmFsdWU6IG51bWJlcik6IHZvaWQ7XG5cblx0YWJzdHJhY3QgZ2xvYmFsIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludERhdGEpOiBib29sZWFuO1xufVxuXG4vKiogQ2hhbmdlcyBhIHBoeXNpY3MgY29uc3RyYWludCdzIHtAbGluayBQaHlzaWNzQ29uc3RyYWludCNnZXRJbmVydGlhKCl9LiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNpY3NDb25zdHJhaW50SW5lcnRpYVRpbWVsaW5lIGV4dGVuZHMgUGh5c2ljc0NvbnN0cmFpbnRUaW1lbGluZSB7XG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBoeXNpY3NDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBwaHlzaWNzQ29uc3RyYWludEluZGV4LCBQcm9wZXJ0eS5waHlzaWNzQ29uc3RyYWludEluZXJ0aWEpO1xuXHR9XG5cblx0c2V0dXAgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5kYXRhLmluZXJ0aWE7XG5cdH1cblxuXHRnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5pbmVydGlhO1xuXHR9XG5cblx0c2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0cmFpbnQuaW5lcnRpYSA9IHZhbHVlO1xuXHR9XG5cblx0Z2xvYmFsIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludERhdGEpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5pbmVydGlhR2xvYmFsO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgcGh5c2ljcyBjb25zdHJhaW50J3Mge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50I2dldFN0cmVuZ3RoKCl9LiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNpY3NDb25zdHJhaW50U3RyZW5ndGhUaW1lbGluZSBleHRlbmRzIFBoeXNpY3NDb25zdHJhaW50VGltZWxpbmUge1xuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBwaHlzaWNzQ29uc3RyYWludEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleCwgUHJvcGVydHkucGh5c2ljc0NvbnN0cmFpbnRTdHJlbmd0aCk7XG5cdH1cblxuXHRzZXR1cCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXIge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmRhdGEuc3RyZW5ndGg7XG5cdH1cblxuXHRnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5zdHJlbmd0aDtcblx0fVxuXG5cdHNldCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcblx0XHRjb25zdHJhaW50LnN0cmVuZ3RoID0gdmFsdWU7XG5cdH1cblxuXHRnbG9iYWwgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50RGF0YSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBjb25zdHJhaW50LnN0cmVuZ3RoR2xvYmFsO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgcGh5c2ljcyBjb25zdHJhaW50J3Mge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50I2dldERhbXBpbmcoKX0uICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnREYW1waW5nVGltZWxpbmUgZXh0ZW5kcyBQaHlzaWNzQ29uc3RyYWludFRpbWVsaW5lIHtcblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHBoeXNpY3NDb25zdHJhaW50SW5kZXgsIFByb3BlcnR5LnBoeXNpY3NDb25zdHJhaW50RGFtcGluZyk7XG5cdH1cblxuXHRzZXR1cCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXIge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmRhdGEuZGFtcGluZztcblx0fVxuXG5cdGdldCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXIge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmRhbXBpbmc7XG5cdH1cblxuXHRzZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3RyYWludC5kYW1waW5nID0gdmFsdWU7XG5cdH1cblxuXHRnbG9iYWwgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50RGF0YSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmRhbXBpbmdHbG9iYWw7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBwaHlzaWNzIGNvbnN0cmFpbnQncyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnQjZ2V0TWFzc0ludmVyc2UoKX0uIFRoZSB0aW1lbGluZSB2YWx1ZXMgYXJlIG5vdCBpbnZlcnRlZC4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzaWNzQ29uc3RyYWludE1hc3NUaW1lbGluZSBleHRlbmRzIFBoeXNpY3NDb25zdHJhaW50VGltZWxpbmUge1xuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBiZXppZXJDb3VudDogbnVtYmVyLCBwaHlzaWNzQ29uc3RyYWludEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBiZXppZXJDb3VudCwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleCwgUHJvcGVydHkucGh5c2ljc0NvbnN0cmFpbnRNYXNzKTtcblx0fVxuXG5cdHNldHVwIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIDEgLyBjb25zdHJhaW50LmRhdGEubWFzc0ludmVyc2U7XG5cdH1cblxuXHRnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gMSAvIGNvbnN0cmFpbnQubWFzc0ludmVyc2U7XG5cdH1cblxuXHRzZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3RyYWludC5tYXNzSW52ZXJzZSA9IDEgLyB2YWx1ZTtcblx0fVxuXG5cdGdsb2JhbCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnREYXRhKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQubWFzc0dsb2JhbDtcblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHBoeXNpY3MgY29uc3RyYWludCdzIHtAbGluayBQaHlzaWNzQ29uc3RyYWludCNnZXRXaW5kKCl9LiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNpY3NDb25zdHJhaW50V2luZFRpbWVsaW5lIGV4dGVuZHMgUGh5c2ljc0NvbnN0cmFpbnRUaW1lbGluZSB7XG5cdGNvbnN0cnVjdG9yIChmcmFtZUNvdW50OiBudW1iZXIsIGJlemllckNvdW50OiBudW1iZXIsIHBoeXNpY3NDb25zdHJhaW50SW5kZXg6IG51bWJlcikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIGJlemllckNvdW50LCBwaHlzaWNzQ29uc3RyYWludEluZGV4LCBQcm9wZXJ0eS5waHlzaWNzQ29uc3RyYWludFdpbmQpO1xuXHR9XG5cblx0c2V0dXAgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5kYXRhLndpbmQ7XG5cdH1cblxuXHRnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC53aW5kO1xuXHR9XG5cblx0c2V0IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuXHRcdGNvbnN0cmFpbnQud2luZCA9IHZhbHVlO1xuXHR9XG5cblx0Z2xvYmFsIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludERhdGEpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC53aW5kR2xvYmFsO1xuXHR9XG59XG5cbi8qKiBDaGFuZ2VzIGEgcGh5c2ljcyBjb25zdHJhaW50J3Mge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50I2dldEdyYXZpdHkoKX0uICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnRHcmF2aXR5VGltZWxpbmUgZXh0ZW5kcyBQaHlzaWNzQ29uc3RyYWludFRpbWVsaW5lIHtcblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHBoeXNpY3NDb25zdHJhaW50SW5kZXgsIFByb3BlcnR5LnBoeXNpY3NDb25zdHJhaW50R3Jhdml0eSk7XG5cdH1cblxuXHRzZXR1cCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXIge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmRhdGEuZ3Jhdml0eTtcblx0fVxuXG5cdGdldCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpOiBudW1iZXIge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmdyYXZpdHk7XG5cdH1cblxuXHRzZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3RyYWludC5ncmF2aXR5ID0gdmFsdWU7XG5cdH1cblxuXHRnbG9iYWwgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50RGF0YSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBjb25zdHJhaW50LmdyYXZpdHlHbG9iYWw7XG5cdH1cbn1cblxuLyoqIENoYW5nZXMgYSBwaHlzaWNzIGNvbnN0cmFpbnQncyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnQjZ2V0TWl4KCl9LiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNpY3NDb25zdHJhaW50TWl4VGltZWxpbmUgZXh0ZW5kcyBQaHlzaWNzQ29uc3RyYWludFRpbWVsaW5lIHtcblx0Y29uc3RydWN0b3IgKGZyYW1lQ291bnQ6IG51bWJlciwgYmV6aWVyQ291bnQ6IG51bWJlciwgcGh5c2ljc0NvbnN0cmFpbnRJbmRleDogbnVtYmVyKSB7XG5cdFx0c3VwZXIoZnJhbWVDb3VudCwgYmV6aWVyQ291bnQsIHBoeXNpY3NDb25zdHJhaW50SW5kZXgsIFByb3BlcnR5LnBoeXNpY3NDb25zdHJhaW50TWl4KTtcblx0fVxuXG5cdHNldHVwIChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQuZGF0YS5taXg7XG5cdH1cblxuXHRnZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gY29uc3RyYWludC5taXg7XG5cdH1cblxuXHRzZXQgKGNvbnN0cmFpbnQ6IFBoeXNpY3NDb25zdHJhaW50LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG5cdFx0Y29uc3RyYWludC5taXggPSB2YWx1ZTtcblx0fVxuXG5cdGdsb2JhbCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnREYXRhKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGNvbnN0cmFpbnQubWl4R2xvYmFsO1xuXHR9XG59XG5cbi8qKiBSZXNldHMgYSBwaHlzaWNzIGNvbnN0cmFpbnQgd2hlbiBzcGVjaWZpYyBhbmltYXRpb24gdGltZXMgYXJlIHJlYWNoZWQuICovXG5leHBvcnQgY2xhc3MgUGh5c2ljc0NvbnN0cmFpbnRSZXNldFRpbWVsaW5lIGV4dGVuZHMgVGltZWxpbmUge1xuXHRwcml2YXRlIHN0YXRpYyBwcm9wZXJ0eUlkczogc3RyaW5nW10gPSBbUHJvcGVydHkucGh5c2ljc0NvbnN0cmFpbnRSZXNldC50b1N0cmluZygpXTtcblxuXHQvKiogVGhlIGluZGV4IG9mIHRoZSBwaHlzaWNzIGNvbnN0cmFpbnQgaW4ge0BsaW5rIFNrZWxldG9uI2dldFBoeXNpY3NDb25zdHJhaW50cygpfSB0aGF0IHdpbGwgYmUgcmVzZXQgd2hlbiB0aGlzIHRpbWVsaW5lIGlzXG5cdCogYXBwbGllZCwgb3IgLTEgaWYgYWxsIHBoeXNpY3MgY29uc3RyYWludHMgaW4gdGhlIHNrZWxldG9uIHdpbGwgYmUgcmVzZXQuICovXG5cdGNvbnN0cmFpbnRJbmRleDogbnVtYmVyO1xuXG5cdC8qKiBAcGFyYW0gcGh5c2ljc0NvbnN0cmFpbnRJbmRleCAtMSBmb3IgYWxsIHBoeXNpY3MgY29uc3RyYWludHMgaW4gdGhlIHNrZWxldG9uLiAqL1xuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBwaHlzaWNzQ29uc3RyYWludEluZGV4OiBudW1iZXIpIHtcblx0XHRzdXBlcihmcmFtZUNvdW50LCBQaHlzaWNzQ29uc3RyYWludFJlc2V0VGltZWxpbmUucHJvcGVydHlJZHMpO1xuXHRcdHRoaXMuY29uc3RyYWludEluZGV4ID0gcGh5c2ljc0NvbnN0cmFpbnRJbmRleDtcblx0fVxuXG5cdGdldEZyYW1lQ291bnQgKCkge1xuXHRcdHJldHVybiB0aGlzLmZyYW1lcy5sZW5ndGg7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZS5cblx0ICogQHBhcmFtIGZyYW1lIEJldHdlZW4gMCBhbmQgPGNvZGU+ZnJhbWVDb3VudDwvY29kZT4sIGluY2x1c2l2ZS4gKi9cblx0c2V0RnJhbWUgKGZyYW1lOiBudW1iZXIsIHRpbWU6IG51bWJlcikge1xuXHRcdHRoaXMuZnJhbWVzW2ZyYW1lXSA9IHRpbWU7XG5cdH1cblxuXHQvKiogUmVzZXRzIHRoZSBwaHlzaWNzIGNvbnN0cmFpbnQgd2hlbiBmcmFtZXMgPiA8Y29kZT5sYXN0VGltZTwvY29kZT4gYW5kIDw9IDxjb2RlPnRpbWU8L2NvZGU+LiAqL1xuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGZpcmVkRXZlbnRzOiBBcnJheTxFdmVudD4sIGFscGhhOiBudW1iZXIsIGJsZW5kOiBNaXhCbGVuZCwgZGlyZWN0aW9uOiBNaXhEaXJlY3Rpb24pIHtcblxuXHRcdGxldCBjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCB8IHVuZGVmaW5lZDtcblx0XHRpZiAodGhpcy5jb25zdHJhaW50SW5kZXggIT0gLTEpIHtcblx0XHRcdGNvbnN0cmFpbnQgPSBza2VsZXRvbi5waHlzaWNzQ29uc3RyYWludHNbdGhpcy5jb25zdHJhaW50SW5kZXhdO1xuXHRcdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZyYW1lcyA9IHRoaXMuZnJhbWVzO1xuXG5cdFx0aWYgKGxhc3RUaW1lID4gdGltZSkgeyAvLyBBcHBseSBhZnRlciBsYXN0VGltZSBmb3IgbG9vcGVkIGFuaW1hdGlvbnMuXG5cdFx0XHR0aGlzLmFwcGx5KHNrZWxldG9uLCBsYXN0VGltZSwgTnVtYmVyLk1BWF9WQUxVRSwgW10sIGFscGhhLCBibGVuZCwgZGlyZWN0aW9uKTtcblx0XHRcdGxhc3RUaW1lID0gLTE7XG5cdFx0fSBlbHNlIGlmIChsYXN0VGltZSA+PSBmcmFtZXNbZnJhbWVzLmxlbmd0aCAtIDFdKSAvLyBMYXN0IHRpbWUgaXMgYWZ0ZXIgbGFzdCBmcmFtZS5cblx0XHRcdHJldHVybjtcblx0XHRpZiAodGltZSA8IGZyYW1lc1swXSkgcmV0dXJuO1xuXG5cdFx0aWYgKGxhc3RUaW1lIDwgZnJhbWVzWzBdIHx8IHRpbWUgPj0gZnJhbWVzW1RpbWVsaW5lLnNlYXJjaDEoZnJhbWVzLCBsYXN0VGltZSkgKyAxXSkge1xuXHRcdFx0aWYgKGNvbnN0cmFpbnQgIT0gbnVsbClcblx0XHRcdFx0Y29uc3RyYWludC5yZXNldCgpO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiBza2VsZXRvbi5waHlzaWNzQ29uc3RyYWludHMpIHtcblx0XHRcdFx0XHRpZiAoY29uc3RyYWludC5hY3RpdmUpIGNvbnN0cmFpbnQucmVzZXQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKiogQ2hhbmdlcyBhIHNsb3QncyB7QGxpbmsgU2xvdCNnZXRTZXF1ZW5jZUluZGV4KCl9IGZvciBhbiBhdHRhY2htZW50J3Mge0BsaW5rIFNlcXVlbmNlfS4gKi9cbmV4cG9ydCBjbGFzcyBTZXF1ZW5jZVRpbWVsaW5lIGV4dGVuZHMgVGltZWxpbmUgaW1wbGVtZW50cyBTbG90VGltZWxpbmUge1xuXHRzdGF0aWMgRU5UUklFUyA9IDM7XG5cdHN0YXRpYyBNT0RFID0gMTtcblx0c3RhdGljIERFTEFZID0gMjtcblxuXHRzbG90SW5kZXg6IG51bWJlcjtcblx0YXR0YWNobWVudDogSGFzVGV4dHVyZVJlZ2lvbjtcblxuXHRjb25zdHJ1Y3RvciAoZnJhbWVDb3VudDogbnVtYmVyLCBzbG90SW5kZXg6IG51bWJlciwgYXR0YWNobWVudDogSGFzVGV4dHVyZVJlZ2lvbikge1xuXHRcdHN1cGVyKGZyYW1lQ291bnQsIFtcblx0XHRcdFByb3BlcnR5LnNlcXVlbmNlICsgXCJ8XCIgKyBzbG90SW5kZXggKyBcInxcIiArIGF0dGFjaG1lbnQuc2VxdWVuY2UhLmlkXG5cdFx0XSk7XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdFx0dGhpcy5hdHRhY2htZW50ID0gYXR0YWNobWVudDtcblx0fVxuXG5cdGdldEZyYW1lRW50cmllcyAoKSB7XG5cdFx0cmV0dXJuIFNlcXVlbmNlVGltZWxpbmUuRU5UUklFUztcblx0fVxuXG5cdGdldFNsb3RJbmRleCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2xvdEluZGV4O1xuXHR9XG5cblx0Z2V0QXR0YWNobWVudCAoKSB7XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNobWVudCBhcyB1bmtub3duIGFzIEF0dGFjaG1lbnQ7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgdGltZSwgbW9kZSwgaW5kZXgsIGFuZCBmcmFtZSB0aW1lIGZvciB0aGUgc3BlY2lmaWVkIGZyYW1lLlxuXHQgKiBAcGFyYW0gZnJhbWUgQmV0d2VlbiAwIGFuZCA8Y29kZT5mcmFtZUNvdW50PC9jb2RlPiwgaW5jbHVzaXZlLlxuXHQgKiBAcGFyYW0gdGltZSBTZWNvbmRzIGJldHdlZW4gZnJhbWVzLiAqL1xuXHRzZXRGcmFtZSAoZnJhbWU6IG51bWJlciwgdGltZTogbnVtYmVyLCBtb2RlOiBTZXF1ZW5jZU1vZGUsIGluZGV4OiBudW1iZXIsIGRlbGF5OiBudW1iZXIpIHtcblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0ZnJhbWUgKj0gU2VxdWVuY2VUaW1lbGluZS5FTlRSSUVTO1xuXHRcdGZyYW1lc1tmcmFtZV0gPSB0aW1lO1xuXHRcdGZyYW1lc1tmcmFtZSArIFNlcXVlbmNlVGltZWxpbmUuTU9ERV0gPSBtb2RlIHwgKGluZGV4IDw8IDQpO1xuXHRcdGZyYW1lc1tmcmFtZSArIFNlcXVlbmNlVGltZWxpbmUuREVMQVldID0gZGVsYXk7XG5cdH1cblxuXHRhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBsYXN0VGltZTogbnVtYmVyLCB0aW1lOiBudW1iZXIsIGV2ZW50czogQXJyYXk8RXZlbnQ+LCBhbHBoYTogbnVtYmVyLCBibGVuZDogTWl4QmxlbmQsIGRpcmVjdGlvbjogTWl4RGlyZWN0aW9uKSB7XG5cdFx0bGV0IHNsb3QgPSBza2VsZXRvbi5zbG90c1t0aGlzLnNsb3RJbmRleF07XG5cdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSByZXR1cm47XG5cdFx0bGV0IHNsb3RBdHRhY2htZW50ID0gc2xvdC5hdHRhY2htZW50O1xuXHRcdGxldCBhdHRhY2htZW50ID0gdGhpcy5hdHRhY2htZW50IGFzIHVua25vd24gYXMgQXR0YWNobWVudDtcblx0XHRpZiAoc2xvdEF0dGFjaG1lbnQgIT0gYXR0YWNobWVudCkge1xuXHRcdFx0aWYgKCEoc2xvdEF0dGFjaG1lbnQgaW5zdGFuY2VvZiBWZXJ0ZXhBdHRhY2htZW50KVxuXHRcdFx0XHR8fCAoc2xvdEF0dGFjaG1lbnQgYXMgVmVydGV4QXR0YWNobWVudCkudGltZWxpbmVBdHRhY2htZW50ICE9IGF0dGFjaG1lbnQpIHJldHVybjtcblx0XHR9XG5cblx0XHRsZXQgZnJhbWVzID0gdGhpcy5mcmFtZXM7XG5cdFx0aWYgKHRpbWUgPCBmcmFtZXNbMF0pIHtcblx0XHRcdGlmIChibGVuZCA9PSBNaXhCbGVuZC5zZXR1cCB8fCBibGVuZCA9PSBNaXhCbGVuZC5maXJzdCkgc2xvdC5zZXF1ZW5jZUluZGV4ID0gLTE7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0bGV0IGkgPSBUaW1lbGluZS5zZWFyY2goZnJhbWVzLCB0aW1lLCBTZXF1ZW5jZVRpbWVsaW5lLkVOVFJJRVMpO1xuXHRcdGxldCBiZWZvcmUgPSBmcmFtZXNbaV07XG5cdFx0bGV0IG1vZGVBbmRJbmRleCA9IGZyYW1lc1tpICsgU2VxdWVuY2VUaW1lbGluZS5NT0RFXTtcblx0XHRsZXQgZGVsYXkgPSBmcmFtZXNbaSArIFNlcXVlbmNlVGltZWxpbmUuREVMQVldO1xuXG5cdFx0aWYgKCF0aGlzLmF0dGFjaG1lbnQuc2VxdWVuY2UpIHJldHVybjtcblx0XHRsZXQgaW5kZXggPSBtb2RlQW5kSW5kZXggPj4gNCwgY291bnQgPSB0aGlzLmF0dGFjaG1lbnQuc2VxdWVuY2UhLnJlZ2lvbnMubGVuZ3RoO1xuXHRcdGxldCBtb2RlID0gU2VxdWVuY2VNb2RlVmFsdWVzW21vZGVBbmRJbmRleCAmIDB4Zl07XG5cdFx0aWYgKG1vZGUgIT0gU2VxdWVuY2VNb2RlLmhvbGQpIHtcblx0XHRcdGluZGV4ICs9ICgoKHRpbWUgLSBiZWZvcmUpIC8gZGVsYXkgKyAwLjAwMDAxKSB8IDApO1xuXHRcdFx0c3dpdGNoIChtb2RlKSB7XG5cdFx0XHRcdGNhc2UgU2VxdWVuY2VNb2RlLm9uY2U6XG5cdFx0XHRcdFx0aW5kZXggPSBNYXRoLm1pbihjb3VudCAtIDEsIGluZGV4KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTZXF1ZW5jZU1vZGUubG9vcDpcblx0XHRcdFx0XHRpbmRleCAlPSBjb3VudDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTZXF1ZW5jZU1vZGUucGluZ3Bvbmc6IHtcblx0XHRcdFx0XHRsZXQgbiA9IChjb3VudCA8PCAxKSAtIDI7XG5cdFx0XHRcdFx0aW5kZXggPSBuID09IDAgPyAwIDogaW5kZXggJSBuO1xuXHRcdFx0XHRcdGlmIChpbmRleCA+PSBjb3VudCkgaW5kZXggPSBuIC0gaW5kZXg7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y2FzZSBTZXF1ZW5jZU1vZGUub25jZVJldmVyc2U6XG5cdFx0XHRcdFx0aW5kZXggPSBNYXRoLm1heChjb3VudCAtIDEgLSBpbmRleCwgMCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2VxdWVuY2VNb2RlLmxvb3BSZXZlcnNlOlxuXHRcdFx0XHRcdGluZGV4ID0gY291bnQgLSAxIC0gKGluZGV4ICUgY291bnQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNlcXVlbmNlTW9kZS5waW5ncG9uZ1JldmVyc2U6IHtcblx0XHRcdFx0XHRsZXQgbiA9IChjb3VudCA8PCAxKSAtIDI7XG5cdFx0XHRcdFx0aW5kZXggPSBuID09IDAgPyAwIDogKGluZGV4ICsgY291bnQgLSAxKSAlIG47XG5cdFx0XHRcdFx0aWYgKGluZGV4ID49IGNvdW50KSBpbmRleCA9IG4gLSBpbmRleDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRzbG90LnNlcXVlbmNlSW5kZXggPSBpbmRleDtcblx0fVxufVxuIl19
|