@dcl/asset-packs 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +324 -96
- package/catalog.json +266 -0
- package/dist/actions.js +1 -1
- package/dist/bin/index.js +324 -96
- package/dist/clone.js +1 -1
- package/dist/definitions.js +1 -1
- package/dist/events.js +1 -1
- package/dist/scene-entrypoint.js +1 -1
- package/dist/states.js +1 -1
- package/dist/timer.js +1 -1
- package/dist/triggers.js +1 -1
- package/dist/ui.js +1 -1
- package/package.json +4 -4
package/dist/actions.js
CHANGED
|
@@ -526,4 +526,4 @@ export function createActionsSystem(engine, components) {
|
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
528
|
}
|
|
529
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxNQUFNLEVBTU4sbUJBQW1CLEVBRW5CLFlBQVksR0FDYixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzFELE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDeEQsT0FBTyxFQUVMLFVBQVUsRUFHVixXQUFXLEVBQ1gsU0FBUyxFQUNULEtBQUssRUFDTCxhQUFhLEVBQ2IsZ0NBQWdDLEdBQ2pDLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDNUQsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sU0FBUyxDQUFBO0FBQ2hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMzQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2QscUJBQXFCLEdBQ3RCLE1BQU0sTUFBTSxDQUFBO0FBQ2IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVks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QUMsTUFBTSxDQUFDLENBQUE7WUFDcEQsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUE7Z0JBQ2pDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUNuQztTQUNGO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJRW5naW5lLFxuICBFbnRpdHksXG4gIFZpZGVvUGxheWVyLFxuICBNYXRlcmlhbCxcbiAgQXVkaW9TdHJlYW0sXG4gIFVpVGV4dCxcbiAgWUdVbml0LFxuICBUZXh0QWxpZ25Nb2RlLFxuICBGb250LFxuICBZR1Bvc2l0aW9uVHlwZSxcbiAgUG9pbnRlckZpbHRlck1vZGUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIElucHV0QWN0aW9uLFxuICBNZXNoQ29sbGlkZXIsXG59IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgdHdlZW5zIH0gZnJvbSAnQGRjbC1zZGsvdXRpbHMvZGlzdC90d2VlbidcbmltcG9ydCB7IHJlcXVlc3RUZWxlcG9ydCB9IGZyb20gJ35zeXN0ZW0vVXNlckFjdGlvbk1vZHVsZSdcbmltcG9ydCB7XG4gIG1vdmVQbGF5ZXJUbyxcbiAgdHJpZ2dlckVtb3RlLFxuICB0cmlnZ2VyU2NlbmVFbW90ZSxcbiAgb3BlbkV4dGVybmFsVXJsLFxufSBmcm9tICd+c3lzdGVtL1Jlc3RyaWN0ZWRBY3Rpb25zJ1xuaW1wb3J0IHsgZ2V0QWN0aXZlVmlkZW9TdHJlYW1zIH0gZnJvbSAnfnN5c3RlbS9Db21tc0FwaSdcbmltcG9ydCB7XG4gIEFjdGlvblBheWxvYWQsXG4gIEFjdGlvblR5cGUsXG4gIEVuZ2luZUNvbXBvbmVudHMsXG4gIFNjcmVlbkFsaWduTW9kZSxcbiAgVHJpZ2dlclR5cGUsXG4gIFR3ZWVuVHlwZSxcbiAgY2xvbmUsXG4gIGdldENvbXBvbmVudHMsXG4gIGluaXRWaWRlb1BsYXllckNvbXBvbmVudE1hdGVyaWFsLFxufSBmcm9tICcuL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFZhbHVlLCBpc1ZhbGlkU3RhdGUgfSBmcm9tICcuL3N0YXRlcydcbmltcG9ydCB7IGdldEFjdGlvbkV2ZW50cywgZ2V0VHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJ1xuaW1wb3J0IHtcbiAgc3RhcnRJbnRlcnZhbCxcbiAgc3RhcnRUaW1lb3V0LFxuICBzdG9wQWxsSW50ZXJ2YWxzLFxuICBzdG9wQWxsVGltZW91dHMsXG4gIHN0b3BJbnRlcnZhbCxcbiAgc3RvcFRpbWVvdXQsXG59IGZyb20gJy4vdGltZXInXG5pbXBvcnQgeyBnZXRQYXlsb2FkIH0gZnJvbSAnLi9hY3Rpb24tdHlwZXMnXG5pbXBvcnQge1xuICBnZXRVSUJhY2tncm91bmQsXG4gIGdldFVJVGV4dCxcbiAgZ2V0VUlUcmFuc2Zvcm0sXG4gIG1hcEFsaWduVG9TY3JlZW5BbGlnbixcbn0gZnJvbSAnLi91aSdcbmltcG9ydCB7IGluaXRUcmlnZ2VycyB9IGZyb20gJy4vdHJpZ2dlcnMnXG5cbmNvbnN0IGluaXRlZEVudGl0aWVzID0gbmV3IFNldDxFbnRpdHk+KClcbmNvbnN0IHVpU3RhY2tzID0gbmV3IE1hcDxzdHJpbmcsIEVudGl0eT4oKVxuY29uc3QgbGFzdFVpRW50aXR5Q2xpY2tlZCA9IG5ldyBNYXA8RW50aXR5LCBFbnRpdHk+KClcblxubGV0IGludGVybmFsSW5pdEFjdGlvbnM6ICgoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGxcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRBY3Rpb25zKGVudGl0eTogRW50aXR5KSB7XG4gIGlmIChpbnRlcm5hbEluaXRBY3Rpb25zKSB7XG4gICAgcmV0dXJuIGludGVybmFsSW5pdEFjdGlvbnMoZW50aXR5KVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQ2Fubm90IGNhbGwgaW5pdEFjdGlvbnMgd2hpbGUgYWN0aW9uc1N5c3RlbSBoYXMgbm90IGJlZW4gY3JlYXRlZGAsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFjdGlvbnNTeXN0ZW0oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgY29tcG9uZW50czogRW5naW5lQ29tcG9uZW50cyxcbikge1xuICBjb25zdCB7XG4gICAgQW5pbWF0b3IsXG4gICAgVHJhbnNmb3JtLFxuICAgIEF1ZGlvU291cmNlLFxuICAgIEF2YXRhckF0dGFjaCxcbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LFxuICAgIEdsdGZDb250YWluZXIsXG4gIH0gPSBjb21wb25lbnRzXG4gIGNvbnN0IHsgQWN0aW9ucywgU3RhdGVzLCBDb3VudGVyLCBUcmlnZ2VycyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpXG5cbiAgLy8gc2F2ZSBpbnRlcm5hbCByZWZlcmVuY2UgdG8gaW5pdCBmdW5jaW9uXG4gIGludGVybmFsSW5pdEFjdGlvbnMgPSBpbml0QWN0aW9uc1xuXG4gIHJldHVybiBmdW5jdGlvbiBhY3Rpb25zU3lzdGVtKF9kdDogbnVtYmVyKSB7XG4gICAgY29uc3QgZW50aXRpZXNXaXRoQWN0aW9ucyA9IGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoQWN0aW9ucylcblxuICAgIGZvciAoY29uc3QgW2VudGl0eV0gb2YgZW50aXRpZXNXaXRoQWN0aW9ucykge1xuICAgICAgaW5pdEFjdGlvbnMoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRBY3Rpb25zKGVudGl0eTogRW50aXR5KSB7XG4gICAgaWYgKCFBY3Rpb25zLmhhcyhlbnRpdHkpIHx8IGluaXRlZEVudGl0aWVzLmhhcyhlbnRpdHkpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBnZXQgYWN0aW9ucyBkYXRhXG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0KGVudGl0eSlcblxuICAgIC8vIGluaXRpYWxpemUgYWN0aW9ucyBmb3IgZ2l2ZW4gZW50aXR5XG4gICAgY29uc3QgdHlwZXMgPSBhY3Rpb25zLnZhbHVlLnJlZHVjZShcbiAgICAgICh0eXBlcywgYWN0aW9uKSA9PiB0eXBlcy5hZGQoYWN0aW9uLnR5cGUpLFxuICAgICAgbmV3IFNldDxTdHJpbmc+KCksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OOiB7XG4gICAgICAgICAgaW5pdFBsYXlBbmltYXRpb24oZW50aXR5KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJpbmQgYWN0aW9uc1xuICAgIGNvbnN0IGFjdGlvbkV2ZW50cyA9IGdldEFjdGlvbkV2ZW50cyhlbnRpdHkpXG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucy52YWx1ZSkge1xuICAgICAgYWN0aW9uRXZlbnRzLm9uKGFjdGlvbi5uYW1lLCAoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBbmltYXRpb24oXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wQW5pbWF0aW9uKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfU1RBVEU6IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFN0YXRlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9TVEFURT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVEFSVF9UV0VFTjoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRUd2VlbihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0Q291bnRlcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfQ09VTlRFUj4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5JTkNSRU1FTlRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlSW5jcmVtZW50Q291bnRlcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVDUkVBU0VfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ERUNSRUFTRV9DT1VOVEVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1NPVU5EPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9WSVNJQklMSVRZOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRWaXNpYmlsaXR5KFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfVklTSUJJTElUWT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVBdHRhY2hUb1BsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFVEFDSF9GUk9NX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlUGxheVZpZGVvKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcFZpZGVvKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlUGxheUF1ZGlvU3RyZWFtKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcEF1ZGlvU3RyZWFtKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVRlbGVwb3J0UGxheWVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTU9WRV9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZU1vdmVQbGF5ZXIoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuTU9WRV9QTEFZRVI+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0RFRkFVTFRfRU1PVEU+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlDdXN0b21FbW90ZShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuT1BFTl9MSU5LOiB7XG4gICAgICAgICAgICBoYW5kbGVPcGVuTGluayhlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5PUEVOX0xJTks+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0hPV19URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93VGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TSE9XX1RFWFQ+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSElERV9URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfREVMQVk6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0YXJ0RGVsYXkoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfREVMQVk+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9ERUxBWToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcERlbGF5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfREVMQVk+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfTE9PUDoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRMb29wKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9MT09QOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wTG9vcChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0xPT1A+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZOiB7XG4gICAgICAgICAgICBoYW5kbGVDbG9uZUVudGl0eShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk6IHtcbiAgICAgICAgICAgIGhhbmRsZVJlbW92ZUVudGl0eShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUkVNT1ZFX0VOVElUWT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TSE9XX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93SW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19JTUFHRT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ISURFX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlSW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSElERV9JTUFHRT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGluaXRlZEVudGl0aWVzLmFkZChlbnRpdHkpXG4gIH1cblxuICAvLyBQTEFZX0FOSU1BVElPTlxuICBmdW5jdGlvbiBpbml0UGxheUFuaW1hdGlvbihlbnRpdHk6IEVudGl0eSkge1xuICAgIGlmICghQW5pbWF0b3IuaGFzKGVudGl0eSkpIHtcbiAgICAgIEFuaW1hdG9yLmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgc3RhdGVzOiBbXSxcbiAgICAgIH0pXG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BTklNQVRJT04+LFxuICApIHtcbiAgICBjb25zdCB7IGFuaW1hdGlvbiwgbG9vcCB9ID0gcGF5bG9hZFxuXG4gICAgY29uc3QgYW5pbWF0b3IgPSBBbmltYXRvci5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICBpZiAoIWFuaW1hdG9yLnN0YXRlcy5zb21lKCgkKSA9PiAkLmNsaXAgPT09IGFuaW1hdGlvbikpIHtcbiAgICAgIGFuaW1hdG9yLnN0YXRlcyA9IFtcbiAgICAgICAgLi4uYW5pbWF0b3Iuc3RhdGVzLFxuICAgICAgICB7XG4gICAgICAgICAgY2xpcDogYW5pbWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSlcbiAgICBjb25zdCBjbGlwID0gQW5pbWF0b3IuZ2V0Q2xpcChlbnRpdHksIGFuaW1hdGlvbilcbiAgICBjbGlwLnBsYXlpbmcgPSB0cnVlXG4gICAgY2xpcC5sb29wID0gbG9vcCA/PyBmYWxzZVxuICB9XG5cbiAgLy8gU1RPUF9BTklNQVRJT05cbiAgZnVuY3Rpb24gaGFuZGxlU3RvcEFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OPixcbiAgKSB7XG4gICAgaWYgKEFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1NUQVRFXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFN0YXRlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU1RBVEU+LFxuICApIHtcbiAgICBjb25zdCBzdGF0ZXMgPSBTdGF0ZXMuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoc3RhdGVzKSB7XG4gICAgICBsZXQgbmV4dFN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXlsb2FkLnN0YXRlXG4gICAgICBuZXh0U3RhdGUgPSBpc1ZhbGlkU3RhdGUoc3RhdGVzLCBuZXh0U3RhdGUpXG4gICAgICAgID8gbmV4dFN0YXRlXG4gICAgICAgIDogZ2V0RGVmYXVsdFZhbHVlKHN0YXRlcylcbiAgICAgIHN0YXRlcy5jdXJyZW50VmFsdWUgPSBuZXh0U3RhdGVcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1NUQVRFX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBTVEFSVF9UV0VFTlxuICBmdW5jdGlvbiBoYW5kbGVTdGFydFR3ZWVuKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4sXG4gICkge1xuICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpXG4gICAgICBjb25zdCBvblR3ZWVuRW5kID0gKCkgPT4gdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1RXRUVOX0VORClcblxuICAgICAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUd2VlblR5cGUuTU9WRV9JVEVNOiB7XG4gICAgICAgICAgaGFuZGxlTW92ZUl0ZW0oZW50aXR5LCBwYXlsb2FkLCBvblR3ZWVuRW5kKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUd2VlblR5cGUuUk9UQVRFX0lURU06IHtcbiAgICAgICAgICBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eSwgcGF5bG9hZCwgb25Ud2VlbkVuZClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHdlZW5UeXBlLlNDQUxFX0lURU06IHtcbiAgICAgICAgICBoYW5kbGVTY2FsZUl0ZW0oZW50aXR5LCBwYXlsb2FkLCBvblR3ZWVuRW5kKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiB0eXBlOiAke3BheWxvYWQudHlwZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTU9WRV9JVEVNXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdmVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICAgIG9uVHdlZW5FbmQ6ICgpID0+IHZvaWQsXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KVxuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlLCByZWxhdGl2ZSB9ID0gdHdlZW5cbiAgICBjb25zdCBlbmQgPSBWZWN0b3IzLmNyZWF0ZSh0d2Vlbi5lbmQueCwgdHdlZW4uZW5kLnksIHR3ZWVuLmVuZC56KVxuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0ucG9zaXRpb24sIGVuZCkgOiBlbmRcblxuICAgIHR3ZWVucy5zdGFydFRyYW5zbGF0aW9uKFxuICAgICAgZW50aXR5LFxuICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uLFxuICAgICAgZW5kUG9zaXRpb24sXG4gICAgICBkdXJhdGlvbixcbiAgICAgIGludGVycG9sYXRpb25UeXBlLFxuICAgICAgb25Ud2VlbkVuZCxcbiAgICApXG4gIH1cblxuICAvLyBST1RBVEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICAgIG9uVHdlZW5FbmQ6ICgpID0+IHZvaWQsXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KVxuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlLCByZWxhdGl2ZSB9ID0gdHdlZW5cbiAgICBjb25zdCBlbmQgPSBRdWF0ZXJuaW9uLmZyb21FdWxlckRlZ3JlZXMoXG4gICAgICB0d2Vlbi5lbmQueCxcbiAgICAgIHR3ZWVuLmVuZC55LFxuICAgICAgdHdlZW4uZW5kLnosXG4gICAgKVxuICAgIGNvbnN0IGVuZFJvdGF0aW9uID0gcmVsYXRpdmVcbiAgICAgID8gUXVhdGVybmlvbi5tdWx0aXBseSh0cmFuc2Zvcm0ucm90YXRpb24sIGVuZClcbiAgICAgIDogZW5kXG5cbiAgICB0d2VlbnMuc3RhcnRSb3RhdGlvbihcbiAgICAgIGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbixcbiAgICAgIGVuZFJvdGF0aW9uLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBpbnRlcnBvbGF0aW9uVHlwZSxcbiAgICAgIG9uVHdlZW5FbmQsXG4gICAgKVxuICB9XG5cbiAgLy8gU0NBTEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVTY2FsZUl0ZW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgdHdlZW46IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4sXG4gICAgb25Ud2VlbkVuZDogKCkgPT4gdm9pZCxcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldChlbnRpdHkpXG4gICAgY29uc3QgeyBkdXJhdGlvbiwgaW50ZXJwb2xhdGlvblR5cGUsIHJlbGF0aXZlIH0gPSB0d2VlblxuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopXG4gICAgY29uc3QgZW5kU2NhbGUgPSByZWxhdGl2ZSA/IFZlY3RvcjMuYWRkKHRyYW5zZm9ybS5zY2FsZSwgZW5kKSA6IGVuZFxuXG4gICAgdHdlZW5zLnN0YXJ0U2NhbGluZyhcbiAgICAgIGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybS5zY2FsZSxcbiAgICAgIGVuZFNjYWxlLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBpbnRlcnBvbGF0aW9uVHlwZSxcbiAgICAgIG9uVHdlZW5FbmQsXG4gICAgKVxuICB9XG5cbiAgLy8gU0VUX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlU2V0Q291bnRlcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlID0gcGF5bG9hZC5jb3VudGVyXG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9DT1VOVEVSX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBJTkNSRU1FTlRfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVJbmNyZW1lbnRDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlICs9IDFcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIERFQ1JFQVNFX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlIC09IDFcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIFBMQVlfU09VTkRcbiAgZnVuY3Rpb24gaGFuZGxlUGxheVNvdW5kKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPixcbiAgKSB7XG4gICAgY29uc3QgeyBzcmMsIGxvb3AsIHZvbHVtZSB9ID0gcGF5bG9hZFxuICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIGF1ZGlvQ2xpcFVybDogc3JjLFxuICAgICAgbG9vcCxcbiAgICAgIHBsYXlpbmc6IHRydWUsXG4gICAgICB2b2x1bWU6IHZvbHVtZSA/PyAxLFxuICAgIH0pXG4gIH1cblxuICAvLyBTVE9QX1NPVU5EXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BTb3VuZChcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfU09VTkQ+LFxuICApIHtcbiAgICBjb25zdCBhdWRpb1NvdXJjZSA9IEF1ZGlvU291cmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGlmIChhdWRpb1NvdXJjZSkge1xuICAgICAgYXVkaW9Tb3VyY2UucGxheWluZyA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1ZJU0lCSUxJVFlcbiAgZnVuY3Rpb24gaGFuZGxlU2V0VmlzaWJpbGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+LFxuICApIHtcbiAgICBjb25zdCB7IHZpc2libGUsIGNvbGxpZGVyIH0gPSBwYXlsb2FkXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7IHZpc2libGUgfSlcbiAgICBjb25zdCBnbHRmID0gR2x0ZkNvbnRhaW5lci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBjb25zdCBtZXNoQ29sbGlkZXIgPSBNZXNoQ29sbGlkZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoY29sbGlkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGdsdGYpIHtcbiAgICAgICAgZ2x0Zi5pbnZpc2libGVNZXNoZXNDb2xsaXNpb25NYXNrID0gY29sbGlkZXJcbiAgICAgIH0gZWxzZSBpZiAobWVzaENvbGxpZGVyKSB7XG4gICAgICAgIG1lc2hDb2xsaWRlci5jb2xsaXNpb25NYXNrID0gY29sbGlkZXJcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBVFRBQ0hfVE9fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZUF0dGFjaFRvUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyBhbmNob3JQb2ludElkIH0gPSBwYXlsb2FkXG4gICAgQXZhdGFyQXR0YWNoLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgYW5jaG9yUG9pbnRJZCB9KVxuICB9XG5cbiAgLy8gREVUQUNIX0ZST01fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI+LFxuICApIHtcbiAgICBpZiAoQXZhdGFyQXR0YWNoLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBdmF0YXJBdHRhY2guZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gVEVMRVBPUlQgUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZVRlbGVwb3J0UGxheWVyKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuVEVMRVBPUlRfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBwYXlsb2FkXG4gICAgcmVxdWVzdFRlbGVwb3J0KHtcbiAgICAgIGRlc3RpbmF0aW9uOiBgJHt4fSwke3l9YCxcbiAgICB9KVxuICB9XG5cbiAgLy8gTU9WRSBQTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllcihcbiAgICBfZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLk1PVkVfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIG5ld1JlbGF0aXZlUG9zaXRpb246IHBheWxvYWQucG9zaXRpb24sXG4gICAgICBjYW1lcmFUYXJnZXQ6IHBheWxvYWQuY2FtZXJhVGFyZ2V0LFxuICAgIH1cbiAgICBjb25zb2xlLmxvZygnbW92ZVBsYXllclRvJywgb3B0aW9ucylcbiAgICB2b2lkIG1vdmVQbGF5ZXJUbyhvcHRpb25zKVxuICB9XG5cbiAgLy8gUExBWSBERUZBVUxUIEVNT1RFXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlEZWZhdWx0RW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0RFRkFVTFRfRU1PVEU+LFxuICApIHtcbiAgICBjb25zdCB7IGVtb3RlIH0gPSBwYXlsb2FkXG4gICAgdm9pZCB0cmlnZ2VyRW1vdGUoeyBwcmVkZWZpbmVkRW1vdGU6IGVtb3RlIH0pXG4gIH1cblxuICAvLyBQTEFZIENVU1RPTSBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0NVU1RPTV9FTU9URT4sXG4gICkge1xuICAgIGNvbnN0IHsgc3JjLCBsb29wIH0gPSBwYXlsb2FkXG4gICAgdm9pZCB0cmlnZ2VyU2NlbmVFbW90ZSh7IHNyYywgbG9vcCB9KVxuICB9XG5cbiAgLy8gT1BFTiBMSU5LXG4gIGZ1bmN0aW9uIGhhbmRsZU9wZW5MaW5rKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuT1BFTl9MSU5LPixcbiAgKSB7XG4gICAgY29uc3QgeyB1cmwgfSA9IHBheWxvYWRcbiAgICB2b2lkIG9wZW5FeHRlcm5hbFVybCh7IHVybCB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0VmlkZW9TcmMoe1xuICAgIHNyYyxcbiAgICBkY2xDYXN0LFxuICB9OiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+KSB7XG4gICAgaWYgKGRjbENhc3QpIHtcbiAgICAgIGNvbnN0IHsgc3RyZWFtcyB9ID0gYXdhaXQgZ2V0QWN0aXZlVmlkZW9TdHJlYW1zKHt9KVxuICAgICAgcmV0dXJuIHN0cmVhbXMubGVuZ3RoID4gMCA/IHN0cmVhbXNbMF0udHJhY2tTaWQgOiAnJ1xuICAgIH1cbiAgICByZXR1cm4gc3JjID8/ICcnXG4gIH1cblxuICAvLyBQTEFZX1ZJREVPXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlWaWRlbyhcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+LFxuICApIHtcbiAgICBjb25zdCB2aWRlb1NvdXJjZSA9IFZpZGVvUGxheWVyLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKHZpZGVvU291cmNlICYmIHZpZGVvU291cmNlLnNyYykge1xuICAgICAgdmlkZW9Tb3VyY2UucGxheWluZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gR2V0IHRoZSB2aWRlbyBzcmMgZnJvbSBhIHByb21pc2UgKFZpZGVvIEZpbGUvVmlkZW8gU3RyZWFtL0RDTCBDYXN0KVxuICAgICAgZ2V0VmlkZW9TcmMocGF5bG9hZCkudGhlbigoc3JjKSA9PiB7XG4gICAgICAgIGlmICghc3JjKSByZXR1cm5cblxuICAgICAgICBWaWRlb1BsYXllci5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICAgICAgc3JjLFxuICAgICAgICAgIHZvbHVtZTogcGF5bG9hZC52b2x1bWUgPz8gMSxcbiAgICAgICAgICBsb29wOiBwYXlsb2FkLmxvb3AgPz8gZmFsc2UsXG4gICAgICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBJbml0IHZpZGVvIHBsYXllciBtYXRlcmlhbCB3aGVuIHRoZSBlbnRpdHkgZG9lc24ndCBoYXZlIGEgVmlkZW9QbGF5ZXIgY29tcG9uZW50IGRlZmluZWRcbiAgICAgICAgaW5pdFZpZGVvUGxheWVyQ29tcG9uZW50TWF0ZXJpYWwoXG4gICAgICAgICAgZW50aXR5LFxuICAgICAgICAgIGNvbXBvbmVudHMsXG4gICAgICAgICAgTWF0ZXJpYWwuZ2V0T3JOdWxsKGVudGl0eSksXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVTdG9wVmlkZW8oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IHZpZGVvU291cmNlID0gVmlkZW9QbGF5ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKHZpZGVvU291cmNlKSB7XG4gICAgICB2aWRlb1NvdXJjZS5wbGF5aW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBQTEFZX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5QXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQVVESU9fU1RSRUFNPixcbiAgKSB7XG4gICAgY29uc3QgeyB1cmwsIHZvbHVtZSB9ID0gcGF5bG9hZFxuICAgIEF1ZGlvU3RyZWFtLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIHVybCxcbiAgICAgIHBsYXlpbmc6IHRydWUsXG4gICAgICB2b2x1bWU6IHZvbHVtZSA/PyAxLFxuICAgIH0pXG4gIH1cblxuICAvLyBTVE9QX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wQXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9TdHJlYW0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKGF1ZGlvU291cmNlKSB7XG4gICAgICBhdWRpb1NvdXJjZS5wbGF5aW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBTSE9XX1RFWFRcbiAgZnVuY3Rpb24gaGFuZGxlU2hvd1RleHQoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfVEVYVD4sXG4gICkge1xuICAgIGNvbnN0IHsgdGV4dCwgaGlkZUFmdGVyU2Vjb25kcywgZm9udCwgZm9udFNpemUsIHRleHRBbGlnbiB9ID0gcGF5bG9hZFxuICAgIGNvbnN0IHVpVHJhbnNmb3JtQ29tcG9uZW50ID0gZ2V0VUlUcmFuc2Zvcm0oZW50aXR5KVxuICAgIGlmICh1aVRyYW5zZm9ybUNvbXBvbmVudCkge1xuICAgICAgVWlUZXh0LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgICAgdmFsdWU6IHRleHQsXG4gICAgICAgIGZvbnQ6IGZvbnQgYXMgdW5rbm93biBhcyBGb250LFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgdGV4dEFsaWduOiB0ZXh0QWxpZ24gYXMgdW5rbm93biBhcyBUZXh0QWxpZ25Nb2RlLFxuICAgICAgfSlcbiAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIEFjdGlvblR5cGUuSElERV9URVhULCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIHt9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBISURFX1RFWFRcbiAgZnVuY3Rpb24gaGFuZGxlSGlkZVRleHQoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+LFxuICApIHtcbiAgICBjb25zdCB1aVRleHRDb21wb25lbnQgPSBVaVRleHQuZ2V0T3JOdWxsKGVudGl0eSlcbiAgICBpZiAodWlUZXh0Q29tcG9uZW50KSB7XG4gICAgICBVaVRleHQuZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHk6IEVudGl0eSwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0T3JOdWxsKGVudGl0eSlcbiAgICByZXR1cm4gYWN0aW9ucz8udmFsdWUuZmluZCgoJCkgPT4gJC5uYW1lID09PSBuYW1lKVxuICB9XG5cbiAgLy8gU1RBUlRfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnREZWxheShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfREVMQVk+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbnMsIHRpbWVvdXQgfSA9IHBheWxvYWRcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpXG4gICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIGFjdGlvbk5hbWUsIHRpbWVvdXQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgICAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9ERUxBWVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wRGVsYXkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfREVMQVk+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZFxuICAgIHN0b3BUaW1lb3V0KGVudGl0eSwgYWN0aW9uKVxuICB9XG5cbiAgLy8gU1RBUlRfTE9PUFxuICBmdW5jdGlvbiBoYW5kbGVTdGFydExvb3AoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbnMsIGludGVydmFsIH0gPSBwYXlsb2FkXG4gICAgZm9yIChjb25zdCBhY3Rpb25OYW1lIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKVxuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydEludGVydmFsKGVudGl0eSwgYWN0aW9uTmFtZSwgaW50ZXJ2YWwsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgICAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9MT09QXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BMb29wKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0xPT1A+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZFxuICAgIHN0b3BJbnRlcnZhbChlbnRpdHksIGFjdGlvbilcbiAgfVxuXG4gIC8vIENMT05FX0VOVElUWVxuICBmdW5jdGlvbiBoYW5kbGVDbG9uZUVudGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPixcbiAgKSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gcGF5bG9hZFxuXG4gICAgLy8gY2xvbmUgZW50aXR5XG4gICAgY29uc3QgY2xvbmVkID0gY2xvbmUoZW50aXR5LCBlbmdpbmUsIFRyaWdnZXJzKVxuXG4gICAgLy8gaW5pdGlhbGl6ZVxuICAgIGluaXRBY3Rpb25zKGNsb25lZClcbiAgICBpbml0VHJpZ2dlcnMoY2xvbmVkKVxuXG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE9yQ3JlYXRlTXV0YWJsZShjbG9uZWQpXG4gICAgdHJhbnNmb3JtLnBvc2l0aW9uID0gcG9zaXRpb25cblxuICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGNsb25lZClcbiAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ0xPTkUpXG4gIH1cblxuICAvLyBSRU1PVkVfRU5USVRZXG4gIGZ1bmN0aW9uIGhhbmRsZVJlbW92ZUVudGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+LFxuICApIHtcbiAgICAvLyBSZW1vdmUgYWxsIHRpbWVycyBiZWZvcmUgcmVtb3ZlIHRoZSBlbnRpdHlcbiAgICBzdG9wQWxsVGltZW91dHMoZW50aXR5KVxuICAgIHN0b3BBbGxJbnRlcnZhbHMoZW50aXR5KVxuICAgIGVuZ2luZS5yZW1vdmVFbnRpdHkoZW50aXR5KVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VWlTdGFjayhhbGlnbjogU2NyZWVuQWxpZ25Nb2RlKSB7XG4gICAgY29uc3Qga2V5ID0gYCR7YWxpZ24uYWxpZ25JdGVtc30sJHthbGlnbi5qdXN0aWZ5Q29udGVudH1gXG5cbiAgICBpZiAoIXVpU3RhY2tzLmhhcyhrZXkpKSB7XG4gICAgICB1aVN0YWNrcy5zZXQoa2V5LCBlbmdpbmUuYWRkRW50aXR5KCkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHVpU3RhY2tzLmdldChrZXkpIVxuICB9XG5cbiAgLy8gU0hPV19JTUFHRVxuICBmdW5jdGlvbiBoYW5kbGVTaG93SW1hZ2UoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfSU1BR0U+LFxuICApIHtcbiAgICBjb25zdCB7IHNyYywgdGV4dCwgaGlkZUFmdGVyU2Vjb25kcywgZm9udFNpemUsIGFsaWduLCBoZWlnaHQsIHdpZHRoIH0gPVxuICAgICAgcGF5bG9hZFxuXG4gICAgLy8gR2V0L0NyZWF0ZSBhIFVJIHRyYW5zZm9ybSBmb3IgdGhlIHJvb3QgZW50aXR5XG4gICAgZ2V0VUlUcmFuc2Zvcm0oZW5naW5lLlJvb3RFbnRpdHkpXG5cbiAgICAvLyBHZXQgYSBVSSBTdGFjayBlbnRpdHlcbiAgICBjb25zdCBzY3JlZW5BbGlnbiA9IG1hcEFsaWduVG9TY3JlZW5BbGlnbihhbGlnbilcbiAgICBjb25zdCB1aVN0YWNrID0gZ2V0VWlTdGFjayhzY3JlZW5BbGlnbilcblxuICAgIC8vIFRPRE86IEZpeCBpdGVtcyB3cmFwcGluZ1xuICAgIC8vIEdldC9DcmVhdGUgYSBVSSBUcmFuc2Zvcm0gZm9yIHRoZSBVSSBzdGFja1xuICAgIGNvbnN0IHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybSh1aVN0YWNrKVxuICAgIHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQuYWxpZ25JdGVtcyA9IHNjcmVlbkFsaWduLmFsaWduSXRlbXNcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50Lmp1c3RpZnlDb250ZW50ID0gc2NyZWVuQWxpZ24uanVzdGlmeUNvbnRlbnRcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50LnBvc2l0aW9uVHlwZSA9IFlHUG9zaXRpb25UeXBlLllHUFRfQUJTT0xVVEVcblxuICAgIC8vIENyZWF0ZSBhIFVJIGVudGl0eSBhbmQgYSBUcmFuc2Zvcm0gY29tcG9uZW50IGZvciB0aGUgaW1hZ2VcbiAgICBjb25zdCBpbWFnZUVudGl0eSA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIGNvbnN0IGltYWdlVHJhbnNmb3JtQ29tcG9uZW50ID0gZ2V0VUlUcmFuc2Zvcm0oXG4gICAgICBpbWFnZUVudGl0eSxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgWUdVbml0LllHVV9QT0lOVCxcbiAgICApXG4gICAgaW1hZ2VUcmFuc2Zvcm1Db21wb25lbnQucGFyZW50ID0gdWlTdGFja1xuICAgIGltYWdlVHJhbnNmb3JtQ29tcG9uZW50LnBvaW50ZXJGaWx0ZXIgPSBQb2ludGVyRmlsdGVyTW9kZS5QRk1fQkxPQ0tcblxuICAgIC8vIENyZWF0ZSBCYWNrZ3JvdW5kIENvbXBvbmVudFxuICAgIGdldFVJQmFja2dyb3VuZChpbWFnZUVudGl0eSwgc3JjKVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIC8vIENyZWF0ZSBUZXh0IENvbXBvbmVudFxuICAgICAgLy8gVE9ETzogRml4IHRleHQgd3JhcHBpbmcgYW5kIHNjcm9sbGluZ1xuICAgICAgZ2V0VUlUZXh0KGltYWdlRW50aXR5LCB0ZXh0LCBmb250U2l6ZSwgd2lkdGgpXG4gICAgfVxuXG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5vblBvaW50ZXJEb3duKFxuICAgICAge1xuICAgICAgICBlbnRpdHk6IGltYWdlRW50aXR5LFxuICAgICAgICBvcHRzOiB7XG4gICAgICAgICAgYnV0dG9uOiBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSLFxuICAgICAgICAgIGhvdmVyVGV4dDogJ0NsaWNrJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuc2V0KGVudGl0eSwgaW1hZ2VFbnRpdHkpXG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NMSUNLX0lNQUdFKVxuICAgICAgfSxcbiAgICApXG5cbiAgICBpZiAoaGlkZUFmdGVyU2Vjb25kcykge1xuICAgICAgc3RhcnRUaW1lb3V0KGVudGl0eSwgQWN0aW9uVHlwZS5ISURFX0lNQUdFLCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlSW1hZ2UoZW50aXR5LCB7IGltYWdlRW50aXR5OiBpbWFnZUVudGl0eSB9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBISURFX0lNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVJbWFnZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSElERV9JTUFHRT4sXG4gICkge1xuICAgIGNvbnN0IHsgaW1hZ2VFbnRpdHkgfSA9IHBheWxvYWRcblxuICAgIGlmIChpbWFnZUVudGl0eSkge1xuICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShpbWFnZUVudGl0eSBhcyBFbnRpdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbWFnZSA9IGxhc3RVaUVudGl0eUNsaWNrZWQuZ2V0KGVudGl0eSlcbiAgICAgIGlmIChjbGlja2VkSW1hZ2UpIHtcbiAgICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShjbGlja2VkSW1hZ2UpXG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuZGVsZXRlKGVudGl0eSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
529
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxNQUFNLEVBTU4sbUJBQW1CLEVBRW5CLFlBQVksR0FDYixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzFELE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDeEQsT0FBTyxFQUVMLFVBQVUsRUFHVixXQUFXLEVBQ1gsU0FBUyxFQUNULEtBQUssRUFDTCxhQUFhLEVBQ2IsZ0NBQWdDLEdBQ2pDLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDNUQsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sU0FBUyxDQUFBO0FBQ2hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMzQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2QscUJBQXFCLEdBQ3RCLE1BQU0sTUFBTSxDQUFBO0FBQ2IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFBO0FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0FBQzFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7QUFFckQsSUFBSSxtQkFBbUIsR0FBc0MsSUFBSSxDQUFBO0FBRWpFLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBYztJQUN4QyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDeEIsT0FBTyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixrRUFBa0UsQ0FDbkUsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE1BQWUsRUFDZixVQUE0QjtJQUU1QixNQUFNLEVBQ0osUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixhQUFhLEdBQ2QsR0FBRyxVQUFVLENBQUE7SUFDZCxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBR3BFLG1CQUFtQixHQUFHLFdBQVcsQ0FBQTtJQUVqQyxPQUFPLFNBQVMsYUFBYSxDQUFDLEdBQVc7UUFDdkMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTNELEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDM0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3JCLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxTQUFTLFdBQVcsQ0FBQyxNQUFjO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFNO1FBQ1IsQ0FBQztRQUdELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7UUFHbkMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2hDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQ3pDLElBQUksR0FBRyxFQUFVLENBQ2xCLENBQUE7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDL0IsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQ3pCLE1BQUs7Z0JBQ1AsQ0FBQztnQkFDRDtvQkFDRSxNQUFLO1lBQ1QsQ0FBQztRQUNILENBQUM7UUFHRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDaEMsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3BCLEtBQUssVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7d0JBQy9CLG1CQUFtQixDQUNqQixNQUFNLEVBQ04sVUFBVSxDQUE0QixNQUFNLENBQUMsQ0FDOUMsQ0FBQTt3QkFDRCxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQzt3QkFDL0IsbUJBQW1CLENBQ2pCLE1BQU0sRUFDTixVQUFVLENBQTRCLE1BQU0sQ0FBQyxDQUM5QyxDQUFBO3dCQUNELE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO3dCQUMxQixjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBdUIsTUFBTSxDQUFDLENBQUMsQ0FBQTt3QkFDaEUsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQXlCLE1BQU0sQ0FBQyxDQUFDLENBQUE7d0JBQ3BFLE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUM1QixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUF5QixNQUFNLENBQUMsQ0FBQyxDQUFBO3dCQUNwRSxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO3dCQUNsQyxzQkFBc0IsQ0FDcEIsTUFBTSxFQUNOLFVBQVUsQ0FBK0IsTUFBTSxDQUFDLENBQ2pELENBQUE7d0JBQ0QsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFDakMscUJBQXFCLENBQ25CLE1BQU0sRUFDTixVQUFVLENBQThCLE1BQU0sQ0FBQyxDQUNoRCxDQUFBO3dCQUNELE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUMzQixlQUFlLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBd0IsTUFBTSxDQUFDLENBQUMsQ0FBQTt3QkFDbEUsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQzNCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUF3QixNQUFNLENBQUMsQ0FBQyxDQUFBO3dCQUNsRSxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQzt3QkFDL0IsbUJBQW1CLENBQ2pCLE1BQU0sRUFDTixVQUFVLENBQTRCLE1BQU0sQ0FBQyxDQUM5QyxDQUFBO3dCQUNELE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7d0JBQ2pDLG9CQUFvQixDQUNsQixNQUFNLEVBQ04sVUFBVSxDQUE4QixNQUFNLENBQUMsQ0FDaEQsQ0FBQTt3QkFDRCxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO3dCQUNuQyxzQkFBc0IsQ0FDcEIsTUFBTSxFQUNOLFVBQVUsQ0FBZ0MsTUFBTSxDQUFDLENBQ2xELENBQUE7d0JBQ0QsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQzt3QkFDbEMsZUFBZSxDQUNiLE1BQU0sRUFDTixVQUFVLENBQStCLE1BQU0sQ0FBQyxDQUNqRCxDQUFBO3dCQUNELE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7d0JBQ2xDLGVBQWUsQ0FDYixNQUFNLEVBQ04sVUFBVSxDQUErQixNQUFNLENBQUMsQ0FDakQsQ0FBQTt3QkFDRCxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO3dCQUNsQyxxQkFBcUIsQ0FDbkIsTUFBTSxFQUNOLFVBQVUsQ0FBK0IsTUFBTSxDQUFDLENBQ2pELENBQUE7d0JBQ0QsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQzt3QkFDbEMscUJBQXFCLENBQ25CLE1BQU0sRUFDTixVQUFVLENBQStCLE1BQU0sQ0FBQyxDQUNqRCxDQUFBO3dCQUNELE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO3dCQUNoQyxvQkFBb0IsQ0FDbEIsTUFBTSxFQUNOLFVBQVUsQ0FBNkIsTUFBTSxDQUFDLENBQy9DLENBQUE7d0JBQ0QsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQXlCLE1BQU0sQ0FBQyxDQUFDLENBQUE7d0JBQ3BFLE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7d0JBQ25DLHNCQUFzQixDQUNwQixNQUFNLEVBQ04sVUFBVSxDQUFnQyxNQUFNLENBQUMsQ0FDbEQsQ0FBQTt3QkFDRCxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO3dCQUNsQyxxQkFBcUIsQ0FDbkIsTUFBTSxFQUNOLFVBQVUsQ0FBK0IsTUFBTSxDQUFDLENBQ2pELENBQUE7d0JBQ0QsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7d0JBQzFCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUF1QixNQUFNLENBQUMsQ0FBQyxDQUFBO3dCQUNoRSxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDMUIsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQXVCLE1BQU0sQ0FBQyxDQUFDLENBQUE7d0JBQ2hFLE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO3dCQUMxQixjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBdUIsTUFBTSxDQUFDLENBQUMsQ0FBQTt3QkFDaEUsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQXlCLE1BQU0sQ0FBQyxDQUFDLENBQUE7d0JBQ3BFLE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUMzQixlQUFlLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBd0IsTUFBTSxDQUFDLENBQUMsQ0FBQTt3QkFDbEUsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQzNCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUF3QixNQUFNLENBQUMsQ0FBQyxDQUFBO3dCQUNsRSxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDMUIsY0FBYyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQXVCLE1BQU0sQ0FBQyxDQUFDLENBQUE7d0JBQ2hFLE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixpQkFBaUIsQ0FDZixNQUFNLEVBQ04sVUFBVSxDQUEwQixNQUFNLENBQUMsQ0FDNUMsQ0FBQTt3QkFDRCxNQUFLO29CQUNQLENBQUM7b0JBQ0QsS0FBSyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQzt3QkFDOUIsa0JBQWtCLENBQ2hCLE1BQU0sRUFDTixVQUFVLENBQTJCLE1BQU0sQ0FBQyxDQUM3QyxDQUFBO3dCQUNELE1BQUs7b0JBQ1AsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUMzQixlQUFlLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBd0IsTUFBTSxDQUFDLENBQUMsQ0FBQTt3QkFDbEUsTUFBSztvQkFDUCxDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQzNCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUF3QixNQUFNLENBQUMsQ0FBQyxDQUFBO3dCQUNsRSxNQUFLO29CQUNQLENBQUM7b0JBQ0Q7d0JBQ0UsTUFBSztnQkFDVCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBR0QsU0FBUyxpQkFBaUIsQ0FBQyxNQUFjO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLE1BQU0sRUFBRSxFQUFFO2FBQ1gsQ0FBQyxDQUFBO1lBQ0YsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsTUFBYyxFQUNkLE9BQWlEO1FBRWpELE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBRW5DLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsUUFBUSxDQUFDLE1BQU0sR0FBRztnQkFDaEIsR0FBRyxRQUFRLENBQUMsTUFBTTtnQkFDbEI7b0JBQ0UsSUFBSSxFQUFFLFNBQVM7aUJBQ2hCO2FBQ0YsQ0FBQTtRQUNILENBQUM7UUFFRCxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksS0FBSyxDQUFBO0lBQzNCLENBQUM7SUFHRCxTQUFTLG1CQUFtQixDQUMxQixNQUFjLEVBQ2QsUUFBa0Q7UUFFbEQsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDekIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBR0QsU0FBUyxjQUFjLENBQ3JCLE1BQWMsRUFDZCxPQUE0QztRQUU1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFOUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksU0FBUyxHQUF1QixPQUFPLENBQUMsS0FBSyxDQUFBO1lBQ2pELFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ1gsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMzQixNQUFNLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQTtZQUUvQixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM5QyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUdELFNBQVMsZ0JBQWdCLENBQ3ZCLE1BQWMsRUFDZCxPQUE4QztRQUU5QyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDOUMsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUE7WUFFckUsUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO29CQUMzQyxNQUFLO2dCQUNQLENBQUM7Z0JBQ0QsS0FBSyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDM0IsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQTtvQkFDN0MsTUFBSztnQkFDUCxDQUFDO2dCQUNELEtBQUssU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFBO29CQUM1QyxNQUFLO2dCQUNQLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDUixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtnQkFDeEQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUdELFNBQVMsY0FBYyxDQUNyQixNQUFjLEVBQ2QsS0FBNEMsRUFDNUMsVUFBc0I7UUFFdEIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQTtRQUN2RCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakUsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtRQUV6RSxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLE1BQU0sRUFDTixTQUFTLENBQUMsUUFBUSxFQUNsQixXQUFXLEVBQ1gsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixVQUFVLENBQ1gsQ0FBQTtJQUNILENBQUM7SUFHRCxTQUFTLGdCQUFnQixDQUN2QixNQUFjLEVBQ2QsS0FBNEMsRUFDNUMsVUFBc0I7UUFFdEIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQTtRQUN2RCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQ3JDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNYLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNYLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNaLENBQUE7UUFDRCxNQUFNLFdBQVcsR0FBRyxRQUFRO1lBQzFCLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFFUCxNQUFNLENBQUMsYUFBYSxDQUNsQixNQUFNLEVBQ04sU0FBUyxDQUFDLFFBQVEsRUFDbEIsV0FBVyxFQUNYLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsVUFBVSxDQUNYLENBQUE7SUFDSCxDQUFDO0lBR0QsU0FBUyxlQUFlLENBQ3RCLE1BQWMsRUFDZCxLQUE0QyxFQUM1QyxVQUFzQjtRQUV0QixNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFBO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1FBRW5FLE1BQU0sQ0FBQyxZQUFZLENBQ2pCLE1BQU0sRUFDTixTQUFTLENBQUMsS0FBSyxFQUNmLFFBQVEsRUFDUixRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLFVBQVUsQ0FDWCxDQUFBO0lBQ0gsQ0FBQztJQUdELFNBQVMsZ0JBQWdCLENBQ3ZCLE1BQWMsRUFDZCxPQUE4QztRQUU5QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFaEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtZQUUvQixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM5QyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBR0QsU0FBUyxzQkFBc0IsQ0FDN0IsTUFBYyxFQUNkLFFBQXFEO1FBRXJELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVoRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUE7WUFFbEIsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDOUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUdELFNBQVMscUJBQXFCLENBQzVCLE1BQWMsRUFDZCxRQUFxRDtRQUVyRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFaEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFBO1lBRWxCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzlDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFHRCxTQUFTLGVBQWUsQ0FDdEIsTUFBYyxFQUNkLE9BQTZDO1FBRTdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUNyQyxXQUFXLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUNsQyxZQUFZLEVBQUUsR0FBRztZQUNqQixJQUFJO1lBQ0osT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7U0FDcEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELFNBQVMsZUFBZSxDQUN0QixNQUFjLEVBQ2QsUUFBOEM7UUFFOUMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3hELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFHRCxTQUFTLG1CQUFtQixDQUMxQixNQUFjLEVBQ2QsT0FBaUQ7UUFFakQsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDckMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDeEQsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ25ELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUUxRCxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyw0QkFBNEIsR0FBRyxRQUFRLENBQUE7WUFDOUMsQ0FBQztpQkFBTSxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUN4QixZQUFZLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQTtZQUN2QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFHRCxTQUFTLG9CQUFvQixDQUMzQixNQUFjLEVBQ2QsT0FBbUQ7UUFFbkQsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUNqQyxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUdELFNBQVMsc0JBQXNCLENBQzdCLE1BQWMsRUFDZCxRQUFzRDtRQUV0RCxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM3QixZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBR0QsU0FBUyxvQkFBb0IsQ0FDM0IsT0FBZSxFQUNmLE9BQWtEO1FBRWxELE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ3hCLGVBQWUsQ0FBQztZQUNkLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7U0FDekIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELFNBQVMsZ0JBQWdCLENBQ3ZCLE9BQWUsRUFDZixPQUE4QztRQUU5QyxNQUFNLE9BQU8sR0FBRztZQUNkLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQ3JDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtTQUNuQyxDQUFBO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDcEMsS0FBSyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUdELFNBQVMsc0JBQXNCLENBQzdCLE9BQWUsRUFDZixPQUFxRDtRQUVyRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ3pCLEtBQUssWUFBWSxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUdELFNBQVMscUJBQXFCLENBQzVCLE9BQWUsRUFDZixPQUFvRDtRQUVwRCxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUM3QixLQUFLLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUdELFNBQVMsY0FBYyxDQUNyQixPQUFlLEVBQ2YsT0FBNEM7UUFFNUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN2QixLQUFLLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELEtBQUssVUFBVSxXQUFXLENBQUMsRUFDekIsR0FBRyxFQUNILE9BQU8sR0FDcUM7UUFDNUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxNQUFNLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ25ELE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUN0RCxDQUFDO1FBQ0QsT0FBTyxHQUFHLElBQUksRUFBRSxDQUFBO0lBQ2xCLENBQUM7SUFHRCxTQUFTLGVBQWUsQ0FDdEIsTUFBYyxFQUNkLE9BQW9EO1FBRXBELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUV4RCxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDbkMsV0FBVyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7UUFDNUIsQ0FBQzthQUFNLENBQUM7WUFFTixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxHQUFHO29CQUFFLE9BQU07Z0JBRWhCLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFO29CQUNsQyxHQUFHO29CQUNILE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQzNCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLEtBQUs7b0JBQzNCLE9BQU8sRUFBRSxJQUFJO2lCQUNkLENBQUMsQ0FBQTtnQkFHRixnQ0FBZ0MsQ0FDOUIsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUMzQixDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUdELFNBQVMsZUFBZSxDQUN0QixNQUFjLEVBQ2QsUUFBcUQ7UUFFckQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3hELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFHRCxTQUFTLHFCQUFxQixDQUM1QixNQUFjLEVBQ2QsT0FBb0Q7UUFFcEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDL0IsV0FBVyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDbEMsR0FBRztZQUNILE9BQU8sRUFBRSxJQUFJO1lBQ2IsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFHRCxTQUFTLHFCQUFxQixDQUM1QixNQUFjLEVBQ2QsUUFBcUQ7UUFFckQsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3hELElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsV0FBVyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFHRCxTQUFTLGNBQWMsQ0FDckIsTUFBYyxFQUNkLE9BQTRDO1FBRTVDLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDckUsTUFBTSxvQkFBb0IsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkQsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFO2dCQUM3QixLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsSUFBdUI7Z0JBQzdCLFFBQVE7Z0JBQ1IsU0FBUyxFQUFFLFNBQXFDO2FBQ2pELENBQUMsQ0FBQTtZQUNGLFlBQVksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FDaEUsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FDM0IsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsU0FBUyxjQUFjLENBQ3JCLE1BQWMsRUFDZCxRQUE2QztRQUU3QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsZ0JBQWdCLENBQUMsTUFBYyxFQUFFLElBQVk7UUFDcEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN6QyxPQUFPLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFHRCxTQUFTLGdCQUFnQixDQUN2QixNQUFjLEVBQ2QsT0FBOEM7UUFFOUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDcEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNqQyxNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDbkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUM3QyxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQzVDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtnQkFDcEQsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFHRCxTQUFTLGVBQWUsQ0FDdEIsTUFBYyxFQUNkLE9BQTZDO1FBRTdDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDMUIsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBR0QsU0FBUyxlQUFlLENBQ3RCLE1BQWMsRUFDZCxPQUE2QztRQUU3QyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUNyQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtZQUNuRCxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLGFBQWEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7b0JBQy9DLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtvQkFDNUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO2dCQUNwRCxDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUdELFNBQVMsY0FBYyxDQUNyQixNQUFjLEVBQ2QsT0FBNEM7UUFFNUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUMxQixZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFHRCxTQUFTLGlCQUFpQixDQUN4QixNQUFjLEVBQ2QsT0FBK0M7UUFFL0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUc1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUc5QyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXBCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN0RCxTQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUU3QixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM5QyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBR0QsU0FBUyxrQkFBa0IsQ0FDekIsTUFBYyxFQUNkLFFBQWlEO1FBR2pELGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4QixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFzQjtRQUN4QyxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRXpELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7UUFDdkMsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUUsQ0FBQTtJQUMzQixDQUFDO0lBR0QsU0FBUyxlQUFlLENBQ3RCLE1BQWMsRUFDZCxPQUE2QztRQUU3QyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FDbkUsT0FBTyxDQUFBO1FBR1QsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUdqQyxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUE7UUFJdkMsTUFBTSx5QkFBeUIsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDekQseUJBQXlCLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUE7UUFDN0QseUJBQXlCLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUE7UUFDckUseUJBQXlCLENBQUMsWUFBWSxJQUErQixDQUFBO1FBR3JFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUN0QyxNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FDNUMsV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLElBRVAsQ0FBQTtRQUNELHVCQUF1QixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUE7UUFDeEMsdUJBQXVCLENBQUMsYUFBYSxJQUE4QixDQUFBO1FBR25FLGVBQWUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFFakMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUdULFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUMvQyxDQUFDO1FBRUQsbUJBQW1CLENBQUMsYUFBYSxDQUMvQjtZQUNFLE1BQU0sRUFBRSxXQUFXO1lBQ25CLElBQUksRUFBRTtnQkFDSixNQUFNLEdBQXdCO2dCQUM5QixTQUFTLEVBQUUsT0FBTzthQUNuQjtTQUNGLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQTtZQUM1QyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM5QyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUNoRCxDQUFDLENBQ0YsQ0FBQTtRQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixZQUFZLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQ2pFLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FDdEQsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBR0QsU0FBUyxlQUFlLENBQ3RCLE1BQWMsRUFDZCxPQUE2QztRQUU3QyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBRS9CLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFxQixDQUFDLENBQUE7UUFDNUMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFDakMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3BDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJRW5naW5lLFxuICBFbnRpdHksXG4gIFZpZGVvUGxheWVyLFxuICBNYXRlcmlhbCxcbiAgQXVkaW9TdHJlYW0sXG4gIFVpVGV4dCxcbiAgWUdVbml0LFxuICBUZXh0QWxpZ25Nb2RlLFxuICBGb250LFxuICBZR1Bvc2l0aW9uVHlwZSxcbiAgUG9pbnRlckZpbHRlck1vZGUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIElucHV0QWN0aW9uLFxuICBNZXNoQ29sbGlkZXIsXG59IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgdHdlZW5zIH0gZnJvbSAnQGRjbC1zZGsvdXRpbHMvZGlzdC90d2VlbidcbmltcG9ydCB7IHJlcXVlc3RUZWxlcG9ydCB9IGZyb20gJ35zeXN0ZW0vVXNlckFjdGlvbk1vZHVsZSdcbmltcG9ydCB7XG4gIG1vdmVQbGF5ZXJUbyxcbiAgdHJpZ2dlckVtb3RlLFxuICB0cmlnZ2VyU2NlbmVFbW90ZSxcbiAgb3BlbkV4dGVybmFsVXJsLFxufSBmcm9tICd+c3lzdGVtL1Jlc3RyaWN0ZWRBY3Rpb25zJ1xuaW1wb3J0IHsgZ2V0QWN0aXZlVmlkZW9TdHJlYW1zIH0gZnJvbSAnfnN5c3RlbS9Db21tc0FwaSdcbmltcG9ydCB7XG4gIEFjdGlvblBheWxvYWQsXG4gIEFjdGlvblR5cGUsXG4gIEVuZ2luZUNvbXBvbmVudHMsXG4gIFNjcmVlbkFsaWduTW9kZSxcbiAgVHJpZ2dlclR5cGUsXG4gIFR3ZWVuVHlwZSxcbiAgY2xvbmUsXG4gIGdldENvbXBvbmVudHMsXG4gIGluaXRWaWRlb1BsYXllckNvbXBvbmVudE1hdGVyaWFsLFxufSBmcm9tICcuL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdFZhbHVlLCBpc1ZhbGlkU3RhdGUgfSBmcm9tICcuL3N0YXRlcydcbmltcG9ydCB7IGdldEFjdGlvbkV2ZW50cywgZ2V0VHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vZXZlbnRzJ1xuaW1wb3J0IHtcbiAgc3RhcnRJbnRlcnZhbCxcbiAgc3RhcnRUaW1lb3V0LFxuICBzdG9wQWxsSW50ZXJ2YWxzLFxuICBzdG9wQWxsVGltZW91dHMsXG4gIHN0b3BJbnRlcnZhbCxcbiAgc3RvcFRpbWVvdXQsXG59IGZyb20gJy4vdGltZXInXG5pbXBvcnQgeyBnZXRQYXlsb2FkIH0gZnJvbSAnLi9hY3Rpb24tdHlwZXMnXG5pbXBvcnQge1xuICBnZXRVSUJhY2tncm91bmQsXG4gIGdldFVJVGV4dCxcbiAgZ2V0VUlUcmFuc2Zvcm0sXG4gIG1hcEFsaWduVG9TY3JlZW5BbGlnbixcbn0gZnJvbSAnLi91aSdcbmltcG9ydCB7IGluaXRUcmlnZ2VycyB9IGZyb20gJy4vdHJpZ2dlcnMnXG5cbmNvbnN0IGluaXRlZEVudGl0aWVzID0gbmV3IFNldDxFbnRpdHk+KClcbmNvbnN0IHVpU3RhY2tzID0gbmV3IE1hcDxzdHJpbmcsIEVudGl0eT4oKVxuY29uc3QgbGFzdFVpRW50aXR5Q2xpY2tlZCA9IG5ldyBNYXA8RW50aXR5LCBFbnRpdHk+KClcblxubGV0IGludGVybmFsSW5pdEFjdGlvbnM6ICgoZW50aXR5OiBFbnRpdHkpID0+IHZvaWQpIHwgbnVsbCA9IG51bGxcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRBY3Rpb25zKGVudGl0eTogRW50aXR5KSB7XG4gIGlmIChpbnRlcm5hbEluaXRBY3Rpb25zKSB7XG4gICAgcmV0dXJuIGludGVybmFsSW5pdEFjdGlvbnMoZW50aXR5KVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICBgQ2Fubm90IGNhbGwgaW5pdEFjdGlvbnMgd2hpbGUgYWN0aW9uc1N5c3RlbSBoYXMgbm90IGJlZW4gY3JlYXRlZGAsXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFjdGlvbnNTeXN0ZW0oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgY29tcG9uZW50czogRW5naW5lQ29tcG9uZW50cyxcbikge1xuICBjb25zdCB7XG4gICAgQW5pbWF0b3IsXG4gICAgVHJhbnNmb3JtLFxuICAgIEF1ZGlvU291cmNlLFxuICAgIEF2YXRhckF0dGFjaCxcbiAgICBWaXNpYmlsaXR5Q29tcG9uZW50LFxuICAgIEdsdGZDb250YWluZXIsXG4gIH0gPSBjb21wb25lbnRzXG4gIGNvbnN0IHsgQWN0aW9ucywgU3RhdGVzLCBDb3VudGVyLCBUcmlnZ2VycyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpXG5cbiAgLy8gc2F2ZSBpbnRlcm5hbCByZWZlcmVuY2UgdG8gaW5pdCBmdW5jaW9uXG4gIGludGVybmFsSW5pdEFjdGlvbnMgPSBpbml0QWN0aW9uc1xuXG4gIHJldHVybiBmdW5jdGlvbiBhY3Rpb25zU3lzdGVtKF9kdDogbnVtYmVyKSB7XG4gICAgY29uc3QgZW50aXRpZXNXaXRoQWN0aW9ucyA9IGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoQWN0aW9ucylcblxuICAgIGZvciAoY29uc3QgW2VudGl0eV0gb2YgZW50aXRpZXNXaXRoQWN0aW9ucykge1xuICAgICAgaW5pdEFjdGlvbnMoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGluaXRBY3Rpb25zKGVudGl0eTogRW50aXR5KSB7XG4gICAgaWYgKCFBY3Rpb25zLmhhcyhlbnRpdHkpIHx8IGluaXRlZEVudGl0aWVzLmhhcyhlbnRpdHkpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBnZXQgYWN0aW9ucyBkYXRhXG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0KGVudGl0eSlcblxuICAgIC8vIGluaXRpYWxpemUgYWN0aW9ucyBmb3IgZ2l2ZW4gZW50aXR5XG4gICAgY29uc3QgdHlwZXMgPSBhY3Rpb25zLnZhbHVlLnJlZHVjZShcbiAgICAgICh0eXBlcywgYWN0aW9uKSA9PiB0eXBlcy5hZGQoYWN0aW9uLnR5cGUpLFxuICAgICAgbmV3IFNldDxTdHJpbmc+KCksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OOiB7XG4gICAgICAgICAgaW5pdFBsYXlBbmltYXRpb24oZW50aXR5KVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJpbmQgYWN0aW9uc1xuICAgIGNvbnN0IGFjdGlvbkV2ZW50cyA9IGdldEFjdGlvbkV2ZW50cyhlbnRpdHkpXG4gICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucy52YWx1ZSkge1xuICAgICAgYWN0aW9uRXZlbnRzLm9uKGFjdGlvbi5uYW1lLCAoKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9BTklNQVRJT046IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlBbmltYXRpb24oXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQU5JTUFUSU9OPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wQW5pbWF0aW9uKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FOSU1BVElPTj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfU1RBVEU6IHtcbiAgICAgICAgICAgIGhhbmRsZVNldFN0YXRlKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNFVF9TVEFURT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVEFSVF9UV0VFTjoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRUd2VlbihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TRVRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlU2V0Q291bnRlcihlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfQ09VTlRFUj4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5JTkNSRU1FTlRfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlSW5jcmVtZW50Q291bnRlcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuREVDUkVBU0VfQ09VTlRFUjoge1xuICAgICAgICAgICAgaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ERUNSRUFTRV9DT1VOVEVSPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlBMQVlfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNUT1BfU09VTkQ6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0b3BTb3VuZChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1NPVU5EPihhY3Rpb24pKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlNFVF9WSVNJQklMSVRZOiB7XG4gICAgICAgICAgICBoYW5kbGVTZXRWaXNpYmlsaXR5KFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfVklTSUJJTElUWT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSOiB7XG4gICAgICAgICAgICBoYW5kbGVBdHRhY2hUb1BsYXllcihcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQVRUQUNIX1RPX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgICAgICAgICAgIGVudGl0eSxcbiAgICAgICAgICAgICAgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLkRFVEFDSF9GUk9NX1BMQVlFUj4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlUGxheVZpZGVvKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1ZJREVPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcFZpZGVvKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlUGxheUF1ZGlvU3RyZWFtKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0FVRElPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcEF1ZGlvU3RyZWFtKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZVRlbGVwb3J0UGxheWVyKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5URUxFUE9SVF9QTEFZRVI+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuTU9WRV9QTEFZRVI6IHtcbiAgICAgICAgICAgIGhhbmRsZU1vdmVQbGF5ZXIoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuTU9WRV9QTEFZRVI+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9ERUZBVUxUX0VNT1RFOiB7XG4gICAgICAgICAgICBoYW5kbGVQbGF5RGVmYXVsdEVtb3RlKFxuICAgICAgICAgICAgICBlbnRpdHksXG4gICAgICAgICAgICAgIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0RFRkFVTFRfRU1PVEU+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU6IHtcbiAgICAgICAgICAgIGhhbmRsZVBsYXlDdXN0b21FbW90ZShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUExBWV9DVVNUT01fRU1PVEU+KGFjdGlvbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuT1BFTl9MSU5LOiB7XG4gICAgICAgICAgICBoYW5kbGVPcGVuTGluayhlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5PUEVOX0xJTks+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU0hPV19URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93VGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TSE9XX1RFWFQ+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuSElERV9URVhUOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfREVMQVk6IHtcbiAgICAgICAgICAgIGhhbmRsZVN0YXJ0RGVsYXkoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfREVMQVk+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9ERUxBWToge1xuICAgICAgICAgICAgaGFuZGxlU3RvcERlbGF5KGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfREVMQVk+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RBUlRfTE9PUDoge1xuICAgICAgICAgICAgaGFuZGxlU3RhcnRMb29wKGVudGl0eSwgZ2V0UGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuU1RPUF9MT09QOiB7XG4gICAgICAgICAgICBoYW5kbGVTdG9wTG9vcChlbnRpdHksIGdldFBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0xPT1A+KGFjdGlvbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZOiB7XG4gICAgICAgICAgICBoYW5kbGVDbG9uZUVudGl0eShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPihhY3Rpb24pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk6IHtcbiAgICAgICAgICAgIGhhbmRsZVJlbW92ZUVudGl0eShcbiAgICAgICAgICAgICAgZW50aXR5LFxuICAgICAgICAgICAgICBnZXRQYXlsb2FkPEFjdGlvblR5cGUuUkVNT1ZFX0VOVElUWT4oYWN0aW9uKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5TSE9XX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVTaG93SW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuU0hPV19JTUFHRT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgQWN0aW9uVHlwZS5ISURFX0lNQUdFOiB7XG4gICAgICAgICAgICBoYW5kbGVIaWRlSW1hZ2UoZW50aXR5LCBnZXRQYXlsb2FkPEFjdGlvblR5cGUuSElERV9JTUFHRT4oYWN0aW9uKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGluaXRlZEVudGl0aWVzLmFkZChlbnRpdHkpXG4gIH1cblxuICAvLyBQTEFZX0FOSU1BVElPTlxuICBmdW5jdGlvbiBpbml0UGxheUFuaW1hdGlvbihlbnRpdHk6IEVudGl0eSkge1xuICAgIGlmICghQW5pbWF0b3IuaGFzKGVudGl0eSkpIHtcbiAgICAgIEFuaW1hdG9yLmNyZWF0ZShlbnRpdHksIHtcbiAgICAgICAgc3RhdGVzOiBbXSxcbiAgICAgIH0pXG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUGxheUFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9BTklNQVRJT04+LFxuICApIHtcbiAgICBjb25zdCB7IGFuaW1hdGlvbiwgbG9vcCB9ID0gcGF5bG9hZFxuXG4gICAgY29uc3QgYW5pbWF0b3IgPSBBbmltYXRvci5nZXRNdXRhYmxlKGVudGl0eSlcbiAgICBpZiAoIWFuaW1hdG9yLnN0YXRlcy5zb21lKCgkKSA9PiAkLmNsaXAgPT09IGFuaW1hdGlvbikpIHtcbiAgICAgIGFuaW1hdG9yLnN0YXRlcyA9IFtcbiAgICAgICAgLi4uYW5pbWF0b3Iuc3RhdGVzLFxuICAgICAgICB7XG4gICAgICAgICAgY2xpcDogYW5pbWF0aW9uLFxuICAgICAgICB9LFxuICAgICAgXVxuICAgIH1cblxuICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKGVudGl0eSlcbiAgICBjb25zdCBjbGlwID0gQW5pbWF0b3IuZ2V0Q2xpcChlbnRpdHksIGFuaW1hdGlvbilcbiAgICBjbGlwLnBsYXlpbmcgPSB0cnVlXG4gICAgY2xpcC5sb29wID0gbG9vcCA/PyBmYWxzZVxuICB9XG5cbiAgLy8gU1RPUF9BTklNQVRJT05cbiAgZnVuY3Rpb24gaGFuZGxlU3RvcEFuaW1hdGlvbihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfQU5JTUFUSU9OPixcbiAgKSB7XG4gICAgaWYgKEFuaW1hdG9yLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1NUQVRFXG4gIGZ1bmN0aW9uIGhhbmRsZVNldFN0YXRlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TRVRfU1RBVEU+LFxuICApIHtcbiAgICBjb25zdCBzdGF0ZXMgPSBTdGF0ZXMuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoc3RhdGVzKSB7XG4gICAgICBsZXQgbmV4dFN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXlsb2FkLnN0YXRlXG4gICAgICBuZXh0U3RhdGUgPSBpc1ZhbGlkU3RhdGUoc3RhdGVzLCBuZXh0U3RhdGUpXG4gICAgICAgID8gbmV4dFN0YXRlXG4gICAgICAgIDogZ2V0RGVmYXVsdFZhbHVlKHN0YXRlcylcbiAgICAgIHN0YXRlcy5jdXJyZW50VmFsdWUgPSBuZXh0U3RhdGVcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1NUQVRFX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBTVEFSVF9UV0VFTlxuICBmdW5jdGlvbiBoYW5kbGVTdGFydFR3ZWVuKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4sXG4gICkge1xuICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICBjb25zdCB0cmlnZ2VyRXZlbnRzID0gZ2V0VHJpZ2dlckV2ZW50cyhlbnRpdHkpXG4gICAgICBjb25zdCBvblR3ZWVuRW5kID0gKCkgPT4gdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX1RXRUVOX0VORClcblxuICAgICAgc3dpdGNoIChwYXlsb2FkLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUd2VlblR5cGUuTU9WRV9JVEVNOiB7XG4gICAgICAgICAgaGFuZGxlTW92ZUl0ZW0oZW50aXR5LCBwYXlsb2FkLCBvblR3ZWVuRW5kKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUd2VlblR5cGUuUk9UQVRFX0lURU06IHtcbiAgICAgICAgICBoYW5kbGVSb3RhdGVJdGVtKGVudGl0eSwgcGF5bG9hZCwgb25Ud2VlbkVuZClcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHdlZW5UeXBlLlNDQUxFX0lURU06IHtcbiAgICAgICAgICBoYW5kbGVTY2FsZUl0ZW0oZW50aXR5LCBwYXlsb2FkLCBvblR3ZWVuRW5kKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0d2VlbiB0eXBlOiAke3BheWxvYWQudHlwZX1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTU9WRV9JVEVNXG4gIGZ1bmN0aW9uIGhhbmRsZU1vdmVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICAgIG9uVHdlZW5FbmQ6ICgpID0+IHZvaWQsXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KVxuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlLCByZWxhdGl2ZSB9ID0gdHdlZW5cbiAgICBjb25zdCBlbmQgPSBWZWN0b3IzLmNyZWF0ZSh0d2Vlbi5lbmQueCwgdHdlZW4uZW5kLnksIHR3ZWVuLmVuZC56KVxuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gcmVsYXRpdmUgPyBWZWN0b3IzLmFkZCh0cmFuc2Zvcm0ucG9zaXRpb24sIGVuZCkgOiBlbmRcblxuICAgIHR3ZWVucy5zdGFydFRyYW5zbGF0aW9uKFxuICAgICAgZW50aXR5LFxuICAgICAgdHJhbnNmb3JtLnBvc2l0aW9uLFxuICAgICAgZW5kUG9zaXRpb24sXG4gICAgICBkdXJhdGlvbixcbiAgICAgIGludGVycG9sYXRpb25UeXBlLFxuICAgICAgb25Ud2VlbkVuZCxcbiAgICApXG4gIH1cblxuICAvLyBST1RBVEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVSb3RhdGVJdGVtKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR3ZWVuOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfVFdFRU4+LFxuICAgIG9uVHdlZW5FbmQ6ICgpID0+IHZvaWQsXG4gICkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IFRyYW5zZm9ybS5nZXQoZW50aXR5KVxuICAgIGNvbnN0IHsgZHVyYXRpb24sIGludGVycG9sYXRpb25UeXBlLCByZWxhdGl2ZSB9ID0gdHdlZW5cbiAgICBjb25zdCBlbmQgPSBRdWF0ZXJuaW9uLmZyb21FdWxlckRlZ3JlZXMoXG4gICAgICB0d2Vlbi5lbmQueCxcbiAgICAgIHR3ZWVuLmVuZC55LFxuICAgICAgdHdlZW4uZW5kLnosXG4gICAgKVxuICAgIGNvbnN0IGVuZFJvdGF0aW9uID0gcmVsYXRpdmVcbiAgICAgID8gUXVhdGVybmlvbi5tdWx0aXBseSh0cmFuc2Zvcm0ucm90YXRpb24sIGVuZClcbiAgICAgIDogZW5kXG5cbiAgICB0d2VlbnMuc3RhcnRSb3RhdGlvbihcbiAgICAgIGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybS5yb3RhdGlvbixcbiAgICAgIGVuZFJvdGF0aW9uLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBpbnRlcnBvbGF0aW9uVHlwZSxcbiAgICAgIG9uVHdlZW5FbmQsXG4gICAgKVxuICB9XG5cbiAgLy8gU0NBTEVfSVRFTVxuICBmdW5jdGlvbiBoYW5kbGVTY2FsZUl0ZW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgdHdlZW46IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVEFSVF9UV0VFTj4sXG4gICAgb25Ud2VlbkVuZDogKCkgPT4gdm9pZCxcbiAgKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldChlbnRpdHkpXG4gICAgY29uc3QgeyBkdXJhdGlvbiwgaW50ZXJwb2xhdGlvblR5cGUsIHJlbGF0aXZlIH0gPSB0d2VlblxuICAgIGNvbnN0IGVuZCA9IFZlY3RvcjMuY3JlYXRlKHR3ZWVuLmVuZC54LCB0d2Vlbi5lbmQueSwgdHdlZW4uZW5kLnopXG4gICAgY29uc3QgZW5kU2NhbGUgPSByZWxhdGl2ZSA/IFZlY3RvcjMuYWRkKHRyYW5zZm9ybS5zY2FsZSwgZW5kKSA6IGVuZFxuXG4gICAgdHdlZW5zLnN0YXJ0U2NhbGluZyhcbiAgICAgIGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybS5zY2FsZSxcbiAgICAgIGVuZFNjYWxlLFxuICAgICAgZHVyYXRpb24sXG4gICAgICBpbnRlcnBvbGF0aW9uVHlwZSxcbiAgICAgIG9uVHdlZW5FbmQsXG4gICAgKVxuICB9XG5cbiAgLy8gU0VUX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlU2V0Q291bnRlcihcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlID0gcGF5bG9hZC5jb3VudGVyXG5cbiAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgIHRyaWdnZXJFdmVudHMuZW1pdChUcmlnZ2VyVHlwZS5PTl9DT1VOVEVSX0NIQU5HRSlcbiAgICB9XG4gIH1cblxuICAvLyBJTkNSRU1FTlRfQ09VTlRFUlxuICBmdW5jdGlvbiBoYW5kbGVJbmNyZW1lbnRDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlICs9IDFcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIERFQ1JFQVNFX0NPVU5URVJcbiAgZnVuY3Rpb24gaGFuZGxlRGVjcmVhc2VDb3VudGVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIF9wYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSU5DUkVNRU5UX0NPVU5URVI+LFxuICApIHtcbiAgICBjb25zdCBjb3VudGVyID0gQ291bnRlci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcblxuICAgIGlmIChjb3VudGVyKSB7XG4gICAgICBjb3VudGVyLnZhbHVlIC09IDFcblxuICAgICAgY29uc3QgdHJpZ2dlckV2ZW50cyA9IGdldFRyaWdnZXJFdmVudHMoZW50aXR5KVxuICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NPVU5URVJfQ0hBTkdFKVxuICAgIH1cbiAgfVxuXG4gIC8vIFBMQVlfU09VTkRcbiAgZnVuY3Rpb24gaGFuZGxlUGxheVNvdW5kKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX1NPVU5EPixcbiAgKSB7XG4gICAgY29uc3QgeyBzcmMsIGxvb3AsIHZvbHVtZSB9ID0gcGF5bG9hZFxuICAgIEF1ZGlvU291cmNlLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIGF1ZGlvQ2xpcFVybDogc3JjLFxuICAgICAgbG9vcCxcbiAgICAgIHBsYXlpbmc6IHRydWUsXG4gICAgICB2b2x1bWU6IHZvbHVtZSA/PyAxLFxuICAgIH0pXG4gIH1cblxuICAvLyBTVE9QX1NPVU5EXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BTb3VuZChcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfU09VTkQ+LFxuICApIHtcbiAgICBjb25zdCBhdWRpb1NvdXJjZSA9IEF1ZGlvU291cmNlLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuICAgIGlmIChhdWRpb1NvdXJjZSkge1xuICAgICAgYXVkaW9Tb3VyY2UucGxheWluZyA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLy8gU0VUX1ZJU0lCSUxJVFlcbiAgZnVuY3Rpb24gaGFuZGxlU2V0VmlzaWJpbGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU0VUX1ZJU0lCSUxJVFk+LFxuICApIHtcbiAgICBjb25zdCB7IHZpc2libGUsIGNvbGxpZGVyIH0gPSBwYXlsb2FkXG4gICAgVmlzaWJpbGl0eUNvbXBvbmVudC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7IHZpc2libGUgfSlcbiAgICBjb25zdCBnbHRmID0gR2x0ZkNvbnRhaW5lci5nZXRNdXRhYmxlT3JOdWxsKGVudGl0eSlcbiAgICBjb25zdCBtZXNoQ29sbGlkZXIgPSBNZXNoQ29sbGlkZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG5cbiAgICBpZiAoY29sbGlkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGdsdGYpIHtcbiAgICAgICAgZ2x0Zi5pbnZpc2libGVNZXNoZXNDb2xsaXNpb25NYXNrID0gY29sbGlkZXJcbiAgICAgIH0gZWxzZSBpZiAobWVzaENvbGxpZGVyKSB7XG4gICAgICAgIG1lc2hDb2xsaWRlci5jb2xsaXNpb25NYXNrID0gY29sbGlkZXJcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBVFRBQ0hfVE9fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZUF0dGFjaFRvUGxheWVyKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5BVFRBQ0hfVE9fUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyBhbmNob3JQb2ludElkIH0gPSBwYXlsb2FkXG4gICAgQXZhdGFyQXR0YWNoLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHsgYW5jaG9yUG9pbnRJZCB9KVxuICB9XG5cbiAgLy8gREVUQUNIX0ZST01fUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZURldGFjaEZyb21QbGF5ZXIoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ERVRBQ0hfRlJPTV9QTEFZRVI+LFxuICApIHtcbiAgICBpZiAoQXZhdGFyQXR0YWNoLmhhcyhlbnRpdHkpKSB7XG4gICAgICBBdmF0YXJBdHRhY2guZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLy8gVEVMRVBPUlQgUExBWUVSXG4gIGZ1bmN0aW9uIGhhbmRsZVRlbGVwb3J0UGxheWVyKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuVEVMRVBPUlRfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3QgeyB4LCB5IH0gPSBwYXlsb2FkXG4gICAgcmVxdWVzdFRlbGVwb3J0KHtcbiAgICAgIGRlc3RpbmF0aW9uOiBgJHt4fSwke3l9YCxcbiAgICB9KVxuICB9XG5cbiAgLy8gTU9WRSBQTEFZRVJcbiAgZnVuY3Rpb24gaGFuZGxlTW92ZVBsYXllcihcbiAgICBfZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLk1PVkVfUExBWUVSPixcbiAgKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIG5ld1JlbGF0aXZlUG9zaXRpb246IHBheWxvYWQucG9zaXRpb24sXG4gICAgICBjYW1lcmFUYXJnZXQ6IHBheWxvYWQuY2FtZXJhVGFyZ2V0LFxuICAgIH1cbiAgICBjb25zb2xlLmxvZygnbW92ZVBsYXllclRvJywgb3B0aW9ucylcbiAgICB2b2lkIG1vdmVQbGF5ZXJUbyhvcHRpb25zKVxuICB9XG5cbiAgLy8gUExBWSBERUZBVUxUIEVNT1RFXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlEZWZhdWx0RW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0RFRkFVTFRfRU1PVEU+LFxuICApIHtcbiAgICBjb25zdCB7IGVtb3RlIH0gPSBwYXlsb2FkXG4gICAgdm9pZCB0cmlnZ2VyRW1vdGUoeyBwcmVkZWZpbmVkRW1vdGU6IGVtb3RlIH0pXG4gIH1cblxuICAvLyBQTEFZIENVU1RPTSBFTU9URVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5Q3VzdG9tRW1vdGUoXG4gICAgX2VudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5QTEFZX0NVU1RPTV9FTU9URT4sXG4gICkge1xuICAgIGNvbnN0IHsgc3JjLCBsb29wIH0gPSBwYXlsb2FkXG4gICAgdm9pZCB0cmlnZ2VyU2NlbmVFbW90ZSh7IHNyYywgbG9vcCB9KVxuICB9XG5cbiAgLy8gT1BFTiBMSU5LXG4gIGZ1bmN0aW9uIGhhbmRsZU9wZW5MaW5rKFxuICAgIF9lbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuT1BFTl9MSU5LPixcbiAgKSB7XG4gICAgY29uc3QgeyB1cmwgfSA9IHBheWxvYWRcbiAgICB2b2lkIG9wZW5FeHRlcm5hbFVybCh7IHVybCB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0VmlkZW9TcmMoe1xuICAgIHNyYyxcbiAgICBkY2xDYXN0LFxuICB9OiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+KSB7XG4gICAgaWYgKGRjbENhc3QpIHtcbiAgICAgIGNvbnN0IHsgc3RyZWFtcyB9ID0gYXdhaXQgZ2V0QWN0aXZlVmlkZW9TdHJlYW1zKHt9KVxuICAgICAgcmV0dXJuIHN0cmVhbXMubGVuZ3RoID4gMCA/IHN0cmVhbXNbMF0udHJhY2tTaWQgOiAnJ1xuICAgIH1cbiAgICByZXR1cm4gc3JjID8/ICcnXG4gIH1cblxuICAvLyBQTEFZX1ZJREVPXG4gIGZ1bmN0aW9uIGhhbmRsZVBsYXlWaWRlbyhcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuUExBWV9WSURFT19TVFJFQU0+LFxuICApIHtcbiAgICBjb25zdCB2aWRlb1NvdXJjZSA9IFZpZGVvUGxheWVyLmdldE11dGFibGVPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKHZpZGVvU291cmNlICYmIHZpZGVvU291cmNlLnNyYykge1xuICAgICAgdmlkZW9Tb3VyY2UucGxheWluZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gR2V0IHRoZSB2aWRlbyBzcmMgZnJvbSBhIHByb21pc2UgKFZpZGVvIEZpbGUvVmlkZW8gU3RyZWFtL0RDTCBDYXN0KVxuICAgICAgZ2V0VmlkZW9TcmMocGF5bG9hZCkudGhlbigoc3JjKSA9PiB7XG4gICAgICAgIGlmICghc3JjKSByZXR1cm5cblxuICAgICAgICBWaWRlb1BsYXllci5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCB7XG4gICAgICAgICAgc3JjLFxuICAgICAgICAgIHZvbHVtZTogcGF5bG9hZC52b2x1bWUgPz8gMSxcbiAgICAgICAgICBsb29wOiBwYXlsb2FkLmxvb3AgPz8gZmFsc2UsXG4gICAgICAgICAgcGxheWluZzogdHJ1ZSxcbiAgICAgICAgfSlcblxuICAgICAgICAvLyBJbml0IHZpZGVvIHBsYXllciBtYXRlcmlhbCB3aGVuIHRoZSBlbnRpdHkgZG9lc24ndCBoYXZlIGEgVmlkZW9QbGF5ZXIgY29tcG9uZW50IGRlZmluZWRcbiAgICAgICAgaW5pdFZpZGVvUGxheWVyQ29tcG9uZW50TWF0ZXJpYWwoXG4gICAgICAgICAgZW50aXR5LFxuICAgICAgICAgIGNvbXBvbmVudHMsXG4gICAgICAgICAgTWF0ZXJpYWwuZ2V0T3JOdWxsKGVudGl0eSksXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9WSURFT1xuICBmdW5jdGlvbiBoYW5kbGVTdG9wVmlkZW8oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX1ZJREVPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IHZpZGVvU291cmNlID0gVmlkZW9QbGF5ZXIuZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKHZpZGVvU291cmNlKSB7XG4gICAgICB2aWRlb1NvdXJjZS5wbGF5aW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBQTEFZX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVQbGF5QXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlBMQVlfQVVESU9fU1RSRUFNPixcbiAgKSB7XG4gICAgY29uc3QgeyB1cmwsIHZvbHVtZSB9ID0gcGF5bG9hZFxuICAgIEF1ZGlvU3RyZWFtLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgIHVybCxcbiAgICAgIHBsYXlpbmc6IHRydWUsXG4gICAgICB2b2x1bWU6IHZvbHVtZSA/PyAxLFxuICAgIH0pXG4gIH1cblxuICAvLyBTVE9QX0FVRElPX1NUUkVBTVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wQXVkaW9TdHJlYW0oXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0FVRElPX1NUUkVBTT4sXG4gICkge1xuICAgIGNvbnN0IGF1ZGlvU291cmNlID0gQXVkaW9TdHJlYW0uZ2V0TXV0YWJsZU9yTnVsbChlbnRpdHkpXG4gICAgaWYgKGF1ZGlvU291cmNlKSB7XG4gICAgICBhdWRpb1NvdXJjZS5wbGF5aW5nID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBTSE9XX1RFWFRcbiAgZnVuY3Rpb24gaGFuZGxlU2hvd1RleHQoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfVEVYVD4sXG4gICkge1xuICAgIGNvbnN0IHsgdGV4dCwgaGlkZUFmdGVyU2Vjb25kcywgZm9udCwgZm9udFNpemUsIHRleHRBbGlnbiB9ID0gcGF5bG9hZFxuICAgIGNvbnN0IHVpVHJhbnNmb3JtQ29tcG9uZW50ID0gZ2V0VUlUcmFuc2Zvcm0oZW50aXR5KVxuICAgIGlmICh1aVRyYW5zZm9ybUNvbXBvbmVudCkge1xuICAgICAgVWlUZXh0LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHksIHtcbiAgICAgICAgdmFsdWU6IHRleHQsXG4gICAgICAgIGZvbnQ6IGZvbnQgYXMgdW5rbm93biBhcyBGb250LFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgdGV4dEFsaWduOiB0ZXh0QWxpZ24gYXMgdW5rbm93biBhcyBUZXh0QWxpZ25Nb2RlLFxuICAgICAgfSlcbiAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIEFjdGlvblR5cGUuSElERV9URVhULCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlVGV4dChlbnRpdHksIHt9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBISURFX1RFWFRcbiAgZnVuY3Rpb24gaGFuZGxlSGlkZVRleHQoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgX3BheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5ISURFX1RFWFQ+LFxuICApIHtcbiAgICBjb25zdCB1aVRleHRDb21wb25lbnQgPSBVaVRleHQuZ2V0T3JOdWxsKGVudGl0eSlcbiAgICBpZiAodWlUZXh0Q29tcG9uZW50KSB7XG4gICAgICBVaVRleHQuZGVsZXRlRnJvbShlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHk6IEVudGl0eSwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IEFjdGlvbnMuZ2V0T3JOdWxsKGVudGl0eSlcbiAgICByZXR1cm4gYWN0aW9ucz8udmFsdWUuZmluZCgoJCkgPT4gJC5uYW1lID09PSBuYW1lKVxuICB9XG5cbiAgLy8gU1RBUlRfREVMQVlcbiAgZnVuY3Rpb24gaGFuZGxlU3RhcnREZWxheShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuU1RBUlRfREVMQVk+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbnMsIHRpbWVvdXQgfSA9IHBheWxvYWRcbiAgICBmb3IgKGNvbnN0IGFjdGlvbk5hbWUgb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgYWN0aW9uID0gZmluZEFjdGlvbkJ5TmFtZShlbnRpdHksIGFjdGlvbk5hbWUpXG4gICAgICBpZiAoYWN0aW9uKSB7XG4gICAgICAgIHN0YXJ0VGltZW91dChlbnRpdHksIGFjdGlvbk5hbWUsIHRpbWVvdXQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgICAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9ERUxBWVxuICBmdW5jdGlvbiBoYW5kbGVTdG9wRGVsYXkoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUT1BfREVMQVk+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZFxuICAgIHN0b3BUaW1lb3V0KGVudGl0eSwgYWN0aW9uKVxuICB9XG5cbiAgLy8gU1RBUlRfTE9PUFxuICBmdW5jdGlvbiBoYW5kbGVTdGFydExvb3AoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNUQVJUX0xPT1A+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbnMsIGludGVydmFsIH0gPSBwYXlsb2FkXG4gICAgZm9yIChjb25zdCBhY3Rpb25OYW1lIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGZpbmRBY3Rpb25CeU5hbWUoZW50aXR5LCBhY3Rpb25OYW1lKVxuICAgICAgaWYgKGFjdGlvbikge1xuICAgICAgICBzdGFydEludGVydmFsKGVudGl0eSwgYWN0aW9uTmFtZSwgaW50ZXJ2YWwsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoZW50aXR5KVxuICAgICAgICAgIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU1RPUF9MT09QXG4gIGZ1bmN0aW9uIGhhbmRsZVN0b3BMb29wKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHBheWxvYWQ6IEFjdGlvblBheWxvYWQ8QWN0aW9uVHlwZS5TVE9QX0xPT1A+LFxuICApIHtcbiAgICBjb25zdCB7IGFjdGlvbiB9ID0gcGF5bG9hZFxuICAgIHN0b3BJbnRlcnZhbChlbnRpdHksIGFjdGlvbilcbiAgfVxuXG4gIC8vIENMT05FX0VOVElUWVxuICBmdW5jdGlvbiBoYW5kbGVDbG9uZUVudGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuQ0xPTkVfRU5USVRZPixcbiAgKSB7XG4gICAgY29uc3QgeyBwb3NpdGlvbiB9ID0gcGF5bG9hZFxuXG4gICAgLy8gY2xvbmUgZW50aXR5XG4gICAgY29uc3QgY2xvbmVkID0gY2xvbmUoZW50aXR5LCBlbmdpbmUsIFRyaWdnZXJzKVxuXG4gICAgLy8gaW5pdGlhbGl6ZVxuICAgIGluaXRBY3Rpb25zKGNsb25lZClcbiAgICBpbml0VHJpZ2dlcnMoY2xvbmVkKVxuXG4gICAgY29uc3QgdHJhbnNmb3JtID0gVHJhbnNmb3JtLmdldE9yQ3JlYXRlTXV0YWJsZShjbG9uZWQpXG4gICAgdHJhbnNmb3JtLnBvc2l0aW9uID0gcG9zaXRpb25cblxuICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGNsb25lZClcbiAgICB0cmlnZ2VyRXZlbnRzLmVtaXQoVHJpZ2dlclR5cGUuT05fQ0xPTkUpXG4gIH1cblxuICAvLyBSRU1PVkVfRU5USVRZXG4gIGZ1bmN0aW9uIGhhbmRsZVJlbW92ZUVudGl0eShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBfcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlJFTU9WRV9FTlRJVFk+LFxuICApIHtcbiAgICAvLyBSZW1vdmUgYWxsIHRpbWVycyBiZWZvcmUgcmVtb3ZlIHRoZSBlbnRpdHlcbiAgICBzdG9wQWxsVGltZW91dHMoZW50aXR5KVxuICAgIHN0b3BBbGxJbnRlcnZhbHMoZW50aXR5KVxuICAgIGVuZ2luZS5yZW1vdmVFbnRpdHkoZW50aXR5KVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0VWlTdGFjayhhbGlnbjogU2NyZWVuQWxpZ25Nb2RlKSB7XG4gICAgY29uc3Qga2V5ID0gYCR7YWxpZ24uYWxpZ25JdGVtc30sJHthbGlnbi5qdXN0aWZ5Q29udGVudH1gXG5cbiAgICBpZiAoIXVpU3RhY2tzLmhhcyhrZXkpKSB7XG4gICAgICB1aVN0YWNrcy5zZXQoa2V5LCBlbmdpbmUuYWRkRW50aXR5KCkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHVpU3RhY2tzLmdldChrZXkpIVxuICB9XG5cbiAgLy8gU0hPV19JTUFHRVxuICBmdW5jdGlvbiBoYW5kbGVTaG93SW1hZ2UoXG4gICAgZW50aXR5OiBFbnRpdHksXG4gICAgcGF5bG9hZDogQWN0aW9uUGF5bG9hZDxBY3Rpb25UeXBlLlNIT1dfSU1BR0U+LFxuICApIHtcbiAgICBjb25zdCB7IHNyYywgdGV4dCwgaGlkZUFmdGVyU2Vjb25kcywgZm9udFNpemUsIGFsaWduLCBoZWlnaHQsIHdpZHRoIH0gPVxuICAgICAgcGF5bG9hZFxuXG4gICAgLy8gR2V0L0NyZWF0ZSBhIFVJIHRyYW5zZm9ybSBmb3IgdGhlIHJvb3QgZW50aXR5XG4gICAgZ2V0VUlUcmFuc2Zvcm0oZW5naW5lLlJvb3RFbnRpdHkpXG5cbiAgICAvLyBHZXQgYSBVSSBTdGFjayBlbnRpdHlcbiAgICBjb25zdCBzY3JlZW5BbGlnbiA9IG1hcEFsaWduVG9TY3JlZW5BbGlnbihhbGlnbilcbiAgICBjb25zdCB1aVN0YWNrID0gZ2V0VWlTdGFjayhzY3JlZW5BbGlnbilcblxuICAgIC8vIFRPRE86IEZpeCBpdGVtcyB3cmFwcGluZ1xuICAgIC8vIEdldC9DcmVhdGUgYSBVSSBUcmFuc2Zvcm0gZm9yIHRoZSBVSSBzdGFja1xuICAgIGNvbnN0IHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQgPSBnZXRVSVRyYW5zZm9ybSh1aVN0YWNrKVxuICAgIHVpU3RhY2tUcmFuc2Zvcm1Db21wb25lbnQuYWxpZ25JdGVtcyA9IHNjcmVlbkFsaWduLmFsaWduSXRlbXNcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50Lmp1c3RpZnlDb250ZW50ID0gc2NyZWVuQWxpZ24uanVzdGlmeUNvbnRlbnRcbiAgICB1aVN0YWNrVHJhbnNmb3JtQ29tcG9uZW50LnBvc2l0aW9uVHlwZSA9IFlHUG9zaXRpb25UeXBlLllHUFRfQUJTT0xVVEVcblxuICAgIC8vIENyZWF0ZSBhIFVJIGVudGl0eSBhbmQgYSBUcmFuc2Zvcm0gY29tcG9uZW50IGZvciB0aGUgaW1hZ2VcbiAgICBjb25zdCBpbWFnZUVudGl0eSA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuICAgIGNvbnN0IGltYWdlVHJhbnNmb3JtQ29tcG9uZW50ID0gZ2V0VUlUcmFuc2Zvcm0oXG4gICAgICBpbWFnZUVudGl0eSxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0LFxuICAgICAgWUdVbml0LllHVV9QT0lOVCxcbiAgICApXG4gICAgaW1hZ2VUcmFuc2Zvcm1Db21wb25lbnQucGFyZW50ID0gdWlTdGFja1xuICAgIGltYWdlVHJhbnNmb3JtQ29tcG9uZW50LnBvaW50ZXJGaWx0ZXIgPSBQb2ludGVyRmlsdGVyTW9kZS5QRk1fQkxPQ0tcblxuICAgIC8vIENyZWF0ZSBCYWNrZ3JvdW5kIENvbXBvbmVudFxuICAgIGdldFVJQmFja2dyb3VuZChpbWFnZUVudGl0eSwgc3JjKVxuXG4gICAgaWYgKHRleHQpIHtcbiAgICAgIC8vIENyZWF0ZSBUZXh0IENvbXBvbmVudFxuICAgICAgLy8gVE9ETzogRml4IHRleHQgd3JhcHBpbmcgYW5kIHNjcm9sbGluZ1xuICAgICAgZ2V0VUlUZXh0KGltYWdlRW50aXR5LCB0ZXh0LCBmb250U2l6ZSwgd2lkdGgpXG4gICAgfVxuXG4gICAgcG9pbnRlckV2ZW50c1N5c3RlbS5vblBvaW50ZXJEb3duKFxuICAgICAge1xuICAgICAgICBlbnRpdHk6IGltYWdlRW50aXR5LFxuICAgICAgICBvcHRzOiB7XG4gICAgICAgICAgYnV0dG9uOiBJbnB1dEFjdGlvbi5JQV9QT0lOVEVSLFxuICAgICAgICAgIGhvdmVyVGV4dDogJ0NsaWNrJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuc2V0KGVudGl0eSwgaW1hZ2VFbnRpdHkpXG4gICAgICAgIGNvbnN0IHRyaWdnZXJFdmVudHMgPSBnZXRUcmlnZ2VyRXZlbnRzKGVudGl0eSlcbiAgICAgICAgdHJpZ2dlckV2ZW50cy5lbWl0KFRyaWdnZXJUeXBlLk9OX0NMSUNLX0lNQUdFKVxuICAgICAgfSxcbiAgICApXG5cbiAgICBpZiAoaGlkZUFmdGVyU2Vjb25kcykge1xuICAgICAgc3RhcnRUaW1lb3V0KGVudGl0eSwgQWN0aW9uVHlwZS5ISURFX0lNQUdFLCBoaWRlQWZ0ZXJTZWNvbmRzLCAoKSA9PlxuICAgICAgICBoYW5kbGVIaWRlSW1hZ2UoZW50aXR5LCB7IGltYWdlRW50aXR5OiBpbWFnZUVudGl0eSB9KSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvLyBISURFX0lNQUdFXG4gIGZ1bmN0aW9uIGhhbmRsZUhpZGVJbWFnZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICBwYXlsb2FkOiBBY3Rpb25QYXlsb2FkPEFjdGlvblR5cGUuSElERV9JTUFHRT4sXG4gICkge1xuICAgIGNvbnN0IHsgaW1hZ2VFbnRpdHkgfSA9IHBheWxvYWRcblxuICAgIGlmIChpbWFnZUVudGl0eSkge1xuICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShpbWFnZUVudGl0eSBhcyBFbnRpdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNsaWNrZWRJbWFnZSA9IGxhc3RVaUVudGl0eUNsaWNrZWQuZ2V0KGVudGl0eSlcbiAgICAgIGlmIChjbGlja2VkSW1hZ2UpIHtcbiAgICAgICAgZW5naW5lLnJlbW92ZUVudGl0eShjbGlja2VkSW1hZ2UpXG4gICAgICAgIGxhc3RVaUVudGl0eUNsaWNrZWQuZGVsZXRlKGVudGl0eSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|