obsidian-integration-testing 11.0.0 → 12.0.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/dist/lib/cjs/appium-server-marker.cjs +115 -0
- package/dist/lib/cjs/appium-server-marker.d.cts +81 -0
- package/dist/lib/cjs/cli.cjs +104 -19
- package/dist/lib/cjs/cli.d.cts +16 -8
- package/dist/lib/cjs/community-plugin-registry.cjs +52 -0
- package/dist/lib/cjs/community-plugin-registry.d.cts +116 -0
- package/dist/lib/cjs/context-provider.cjs +12 -1
- package/dist/lib/cjs/context-provider.d.cts +26 -3
- package/dist/lib/cjs/demo-vault-bootstrap.cjs +148 -0
- package/dist/lib/cjs/demo-vault-bootstrap.d.cts +113 -0
- package/dist/lib/cjs/demo-vault-populate.cjs +36 -9
- package/dist/lib/cjs/demo-vault-populate.d.cts +70 -0
- package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/eval-in-obsidian.d.cts +42 -13
- package/dist/lib/cjs/index.cjs +13 -1
- package/dist/lib/cjs/index.d.cts +8 -4
- package/dist/lib/cjs/installer-asset.cjs +1 -1
- package/dist/lib/cjs/installer-asset.d.cts +1 -1
- package/dist/lib/cjs/integration-setup-failed-error.cjs +62 -0
- package/dist/lib/cjs/integration-setup-failed-error.d.cts +66 -0
- package/dist/lib/cjs/jest/global-setup.cjs +2 -2
- package/dist/lib/cjs/jest/global-setup.d.cts +5 -1
- package/dist/lib/cjs/kill-process-tree.cjs +18 -7
- package/dist/lib/cjs/kill-process-tree.d.cts +10 -2
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/mobile-input.cjs +161 -0
- package/dist/lib/cjs/mobile-input.d.cts +160 -0
- package/dist/lib/cjs/namespace-bootstrap.cjs +92 -9
- package/dist/lib/cjs/obsidian-installer.cjs +1 -1
- package/dist/lib/cjs/obsidian-metadata.cjs +123 -17
- package/dist/lib/cjs/obsidian-metadata.d.cts +17 -6
- package/dist/lib/cjs/obsidian-version-switch.cjs +3 -3
- package/dist/lib/cjs/release-catalog.cjs +73 -0
- package/dist/lib/cjs/release-catalog.d.cts +125 -0
- package/dist/lib/cjs/transport-appium.cjs +122 -1
- package/dist/lib/cjs/transport-appium.d.cts +51 -0
- package/dist/lib/cjs/transport-desktop-cdp.cjs +7 -1
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +1 -0
- package/dist/lib/cjs/transport-factory.cjs +237 -32
- package/dist/lib/cjs/transport-factory.d.cts +10 -1
- package/dist/lib/cjs/vitest/global-setup.cjs +13 -7
- package/dist/lib/cjs/vitest/global-setup.d.cts +5 -1
- package/dist/lib/cjs/vitest/setup.cjs +2 -1
- package/dist/lib/cjs/vitest/setup.d.cts +5 -0
- package/dist/lib/cjs/vitest/typings.d.cts +6 -4
- package/dist/lib/cjs/webview-cdp.cjs +264 -0
- package/dist/lib/cjs/webview-cdp.d.cts +152 -0
- package/dist/lib/cjs/wedged-appium-server.cjs +113 -0
- package/dist/lib/cjs/wedged-appium-server.d.cts +187 -0
- package/dist/lib/esm/appium-server-marker.d.mts +81 -0
- package/dist/lib/esm/appium-server-marker.mjs +83 -0
- package/dist/lib/esm/cli.d.mts +16 -8
- package/dist/lib/esm/cli.mjs +110 -19
- package/dist/lib/esm/community-plugin-registry.d.mts +116 -0
- package/dist/lib/esm/community-plugin-registry.mjs +23 -0
- package/dist/lib/esm/context-provider.d.mts +26 -3
- package/dist/lib/esm/context-provider.mjs +10 -1
- package/dist/lib/esm/demo-vault-bootstrap.d.mts +113 -0
- package/dist/lib/esm/demo-vault-bootstrap.mjs +127 -0
- package/dist/lib/esm/demo-vault-populate.d.mts +70 -0
- package/dist/lib/esm/demo-vault-populate.mjs +33 -8
- package/dist/lib/esm/eval-in-obsidian.d.mts +42 -13
- package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
- package/dist/lib/esm/index.d.mts +8 -4
- package/dist/lib/esm/index.mjs +16 -2
- package/dist/lib/esm/installer-asset.d.mts +1 -1
- package/dist/lib/esm/installer-asset.mjs +1 -1
- package/dist/lib/esm/integration-setup-failed-error.d.mts +66 -0
- package/dist/lib/esm/integration-setup-failed-error.mjs +38 -0
- package/dist/lib/esm/jest/global-setup.d.mts +5 -1
- package/dist/lib/esm/jest/global-setup.mjs +2 -2
- package/dist/lib/esm/kill-process-tree.d.mts +10 -2
- package/dist/lib/esm/kill-process-tree.mjs +16 -6
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/mobile-input.d.mts +160 -0
- package/dist/lib/esm/mobile-input.mjs +132 -0
- package/dist/lib/esm/namespace-bootstrap.mjs +95 -9
- package/dist/lib/esm/obsidian-installer.mjs +1 -1
- package/dist/lib/esm/obsidian-metadata.d.mts +17 -6
- package/dist/lib/esm/obsidian-metadata.mjs +123 -17
- package/dist/lib/esm/obsidian-version-switch.mjs +3 -3
- package/dist/lib/esm/release-catalog.d.mts +125 -0
- package/dist/lib/esm/release-catalog.mjs +46 -0
- package/dist/lib/esm/transport-appium.d.mts +51 -0
- package/dist/lib/esm/transport-appium.mjs +126 -1
- package/dist/lib/esm/transport-desktop-cdp.d.mts +1 -0
- package/dist/lib/esm/transport-desktop-cdp.mjs +7 -1
- package/dist/lib/esm/transport-factory.d.mts +10 -1
- package/dist/lib/esm/transport-factory.mjs +249 -35
- package/dist/lib/esm/vitest/global-setup.d.mts +5 -1
- package/dist/lib/esm/vitest/global-setup.mjs +14 -7
- package/dist/lib/esm/vitest/setup.d.mts +5 -0
- package/dist/lib/esm/vitest/setup.mjs +3 -1
- package/dist/lib/esm/vitest/typings.d.mts +6 -4
- package/dist/lib/esm/webview-cdp.d.mts +152 -0
- package/dist/lib/esm/webview-cdp.mjs +236 -0
- package/dist/lib/esm/wedged-appium-server.d.mts +187 -0
- package/dist/lib/esm/wedged-appium-server.mjs +86 -0
- package/package.json +2 -1
|
@@ -48,4 +48,4 @@ ${sanitizedDetail}`);
|
|
|
48
48
|
export {
|
|
49
49
|
evalInObsidian
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V2YWwtaW4tb2JzaWRpYW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFdmFsdWF0ZXMgYSBmdW5jdGlvbiBpbnNpZGUgYSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlIHZpYSBhIHBsdWdnYWJsZSB0cmFuc3BvcnQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgTW9kaWZpZXIsXG4gIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lc3BhY2UgLS0gV2UgbmVlZCB0byByZWZlcmVuY2UgYG9ic2lkaWFuYCBtb2R1bGUuXG5pbXBvcnQgdHlwZSAqIGFzIG9ic2lkaWFuIGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dElkXG59IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC5tanMnO1xuXG5pbXBvcnQge1xuICBnZXRUcmFuc3BvcnRPcHRpb25zLFxuICBnZXRWYXVsdFBhdGhcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwubWpzJztcbmltcG9ydCB7IGVuc3VyZU5hbWVzcGFjZUJvb3RzdHJhcHBlZCB9IGZyb20gJy4vbmFtZXNwYWNlLWJvb3RzdHJhcC5tanMnO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5Lm1qcyc7XG5cbmludGVyZmFjZSBFdmFsRXJyb3JFbnZlbG9wZSB7XG4gIHR5cGU6ICdlcnJvcic7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCBlbnZlbG9wZSByZXR1cm5lZCBieSB0aGUgcmVnaXN0ZXJlZCBgZXZhbFdyYXBwZXJgIGZyb20gaW5zaWRlIHRoZSBPYnNpZGlhbiBwcm9jZXNzLlxuICpcbiAqIC0gYEV2YWxFcnJvckVudmVsb3BlYCBcdTIwMTQgYGNhbGxiYWNrYCB0aHJldzsgYHZhbHVlYCBpcyB0aGUgc2VyaWFsaXplZCBlcnJvci5cbiAqIC0gYEV2YWxVbmRlZmluZWRFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYHVuZGVmaW5lZGAuXG4gKiAtIGBFdmFsVmFsdWVFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYSBKU09OLXNlcmlhbGl6YWJsZSB2YWx1ZS5cbiAqL1xudHlwZSBFdmFsUmVzdWx0RW52ZWxvcGUgPVxuICB8IEV2YWxFcnJvckVudmVsb3BlXG4gIHwgRXZhbFVuZGVmaW5lZEVudmVsb3BlXG4gIHwgRXZhbFZhbHVlRW52ZWxvcGU7XG5cbmludGVyZmFjZSBFdmFsVW5kZWZpbmVkRW52ZWxvcGUge1xuICB0eXBlOiAndW5kZWZpbmVkJztcbn1cblxuaW50ZXJmYWNlIEV2YWxWYWx1ZUVudmVsb3BlIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE5PX09VVFBVVCA9ICcobm8gb3V0cHV0KSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5jbGlja0VsZW1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrRWxlbWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIGNsaWNrLiBUaGUgcG9pbnRlciBpcyBtb3ZlZCB0byBpdHMgY2VudGVyLiBUaGlzIGlzIGEgbGl2ZVxuICAgKiByZW5kZXJlciBET00gbm9kZSBcdTIwMTQgdGhlIGNhbGxiYWNrIHJ1bnMgaW4tcmVuZGVyZXIsIHNvIG5vIGNyb3NzLXByb2Nlc3NcbiAgICogc2VyaWFsaXphdGlvbiBpcyBuZWVkZWQgKHNhbWUgYXMge0BsaW5rIFR5cGVJbnRvRWRpdG9yUGFyYW1zLmVkaXRvcn0pLlxuICAgKi9cbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuY2xpY2tNb3VzZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tNb3VzZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgeCBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBjbGljayBhdC5cbiAgICovXG4gIHJlYWRvbmx5IHg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHkgY29vcmRpbmF0ZSAod2ViLWNvbnRlbnRzIERJUCkgdG8gY2xpY2sgYXQuXG4gICAqL1xuICByZWFkb25seSB5OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBhdXRvbWF0aWNhbGx5IHByb3ZpZGVkIHRvIGV2ZXJ5IHtAbGluayBldmFsSW5PYnNpZGlhbn0gY2FsbGJhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uQXJndW1lbnRzIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiB7QGxpbmsgQXBwfSBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIGxpYnJhcnkgYmFnIGluamVjdGVkIGludG8gZXZlcnkgY2FsbGJhY2sgXHUyMDE0IHNlZSB7QGxpbmsgTGlifS5cbiAgICpcbiAgICogTmV2ZXIgZW1wdHk6IHRoZSBoYXJuZXNzIHByZS1wb3B1bGF0ZXMgYSAqKmJhc2UqKiBzZXQgb2YgcmVuZGVyZXItZHJpdmluZ1xuICAgKiBoZWxwZXJzICh0cnVzdGVkIGlucHV0IFx1MjAxNCBgdHlwZUludG9FZGl0b3JgIC8gYHByZXNzS2V5YCAvIGBtb3ZlTW91c2VgIC9cbiAgICogYGNsaWNrTW91c2VgIC8gYGhvdmVyRWxlbWVudGAgLyBgdW5ob3ZlckVsZW1lbnRgIC8gYGNsaWNrRWxlbWVudGAgXHUyMDE0IHBsdXNcbiAgICogYHdhaXRVbnRpbGAsIGBjcmVhdGVOb3RlYCBhbmQgYG9wZW5TZXR0aW5nc1RhYmApLCBhbmQgcHJvdmlkZXIgcGFja2FnZXNcbiAgICogKGNoaWVmbHkgYG9ic2lkaWFuLWRldi11dGlsc2ApIGBPYmplY3QuYXNzaWduYCB0aGVpciB3aG9sZSByZW5kZXJlci1zYWZlXG4gICAqIGxpYnJhcnkgb24gdG9wIHZpYSB7QGxpbmsgcmVnaXN0ZXJMaWJSZXNvbHZlcn0uIEEgc2VyaWFsaXplZCBjbG9zdXJlIHJlYWNoZXNcbiAgICogZXZlcnkgc2hhcmVkIGhlbHBlciB0aHJvdWdoIGBsaWJgIFx1MjAxNCBgbGliLnR5cGVJbnRvRWRpdG9yKHsgZWRpdG9yLCB0ZXh0IH0pYCxcbiAgICogYGxpYi5nZXRGaWxlT3JOdWxsKHsgYXBwLCBcdTIwMjYgfSlgIFx1MjAxNCBpbnN0ZWFkIG9mIGltcG9ydGluZyBvciBoYW5kLXJvbGxpbmcgdGhlbS5cbiAgICovXG4gIGxpYjogTGliO1xuXG4gIC8qKlxuICAgKiBUaGUgYG9ic2lkaWFuYCBtb2R1bGUsIHJlc29sdmVkIGF0IHJ1bnRpbWUgaW5zaWRlIHRoZSBPYnNpZGlhbiBwcm9jZXNzLlxuICAgKi9cbiAgb2JzaWRpYW5Nb2R1bGU6IHR5cGVvZiBvYnNpZGlhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLmNyZWF0ZU5vdGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5vdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG5vdGUncyBjb250ZW50LiBUaGlzIGV4YWN0IHN0cmluZyBpcyB3aGF0IHRoZSBjcmVhdGVkIG5vdGUgaXMgcmVhZCBiYWNrXG4gICAqIGFnYWluc3QsIHNvIGl0IGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgc3VjY2Vzc2Z1bCB3cml0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggdG8gY3JlYXRlLCBleHRlbnNpb24gaW5jbHVkZWQuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGV2YWxJbk9ic2lkaWFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3QsIFJlc3VsdCwgVENvbnRleHRJZCBleHRlbmRzIENvbnRleHRJZDx1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4ge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGluIHRoZSBPYnNpZGlhbiBjb250ZXh0LlxuICAgKi9cbiAgY2FsbGJhY2soaW5wdXQ6IENvbW1vbkFyZ3VtZW50cyAmIENvbnRleHRBcmd1bWVudHM8VENvbnRleHRJZD4gJiBJbnB1dCk6IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogQSB7QGxpbmsgQ29udGV4dElkfSBsaW5raW5nIHRoaXMgY2FsbCB0byBhIHBlcnNpc3RlbnQgc3RvcmUgb24gYHdpbmRvd2BcbiAgICogaW4gdGhlIE9ic2lkaWFuIHByb2Nlc3MuIFRoZSBjYWxsYmFjayByZWNlaXZlcyBhIHR5cGVkIGBjb250ZXh0YCBvYmplY3RcbiAgICogdGhhdCBzdXJ2aXZlcyBhY3Jvc3MgY2FsbHMgc2hhcmluZyB0aGUgc2FtZSBJRC5cbiAgICpcbiAgICogV2hlbiBvbWl0dGVkLCBgY29udGV4dGAgaXMgYSBmcmVzaCBlbXB0eSBvYmplY3QgZWFjaCBjYWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dElkPzogVENvbnRleHRJZDtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24uIFZhbHVlcyBtYXkgaW5jbHVkZSBmdW5jdGlvbnMgXHUyMDE0XG4gICAqIHRoZXkgYXJlIHNlcmlhbGl6ZWQgdmlhIGB0b1N0cmluZygpYC5cbiAgICovXG4gIHJlYWRvbmx5IGlucHV0PzogSW5wdXQ7XG5cbiAgLyoqXG4gICAqIFNraXBzIHByZS1mbGlnaHQgY2hlY2tzICh2YXVsdCByZWdpc3RyYXRpb24sIENMSSBhdmFpbGFiaWxpdHkpLlxuICAgKiBVc2VkIGludGVybmFsbHkgYnkgdmF1bHQgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwUHJlZmxpZ2h0Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIHRyYW5zcG9ydCBmb3IgdGhpcyBjYWxsLiBXaGVuIG9taXR0ZWQsIHVzZXMgdGhlIHRyYW5zcG9ydFxuICAgKiBjb25maWd1cmVkIHZpYSB0aGUgY29udGV4dCBwcm92aWRlciAoc2V0IGJ5IHRoZSBmcmFtZXdvcmsgYWRhcHRlcidzIGdsb2JhbCBzZXR1cCkuXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BvcnQ/OiBPYnNpZGlhblRyYW5zcG9ydDtcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIE9ic2lkaWFuIHZhdWx0LiBEZWZhdWx0cyB0byBgcHJvY2Vzcy5jd2QoKWAuXG4gICAqL1xuICByZWFkb25seSB2YXVsdFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBwbGFpbiBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cy5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuaG92ZXJFbGVtZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3ZlckVsZW1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gaG92ZXIuIFRoZSBwb2ludGVyIGlzIG1vdmVkIHRvIGl0cyBjZW50ZXIuIFRoaXMgaXMgYSBsaXZlXG4gICAqIHJlbmRlcmVyIERPTSBub2RlIFx1MjAxNCB0aGUgY2FsbGJhY2sgcnVucyBpbi1yZW5kZXJlciwgc28gbm8gY3Jvc3MtcHJvY2Vzc1xuICAgKiBzZXJpYWxpemF0aW9uIGlzIG5lZWRlZCAoc2FtZSBhcyB7QGxpbmsgVHlwZUludG9FZGl0b3JQYXJhbXMuZWRpdG9yfSkuXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBUaGUgc2hhcmVkIGxpYnJhcnkgYmFnIGluamVjdGVkIGludG8gZXZlcnkge0BsaW5rIGV2YWxJbk9ic2lkaWFufSBjYWxsYmFjayBhc1xuICoge0BsaW5rIENvbW1vbkFyZ3VtZW50cy5saWJ9LlxuICpcbiAqIFR3byBsYXllcnMgY29tcG9zZSBpbnRvIHRoaXMgb25lIGJhZy4gVGhlICoqYmFzZSoqIFx1MjAxNCB0aGUgaGFybmVzcy1wcm92aWRlZFxuICogcmVuZGVyZXItZHJpdmluZyBoZWxwZXJzIGRlY2xhcmVkIGJlbG93ICh0aGUgdHJ1c3RlZC1pbnB1dCBwcmltaXRpdmVzIGFuZFxuICoge0BsaW5rIExpYi53YWl0VW50aWx9KSBcdTIwMTQgaXMgYWx3YXlzIHByZXNlbnQuIE9uIHRvcCwgcHJvdmlkZXIgcGFja2FnZXMgcmVnaXN0ZXJcbiAqIGEgcmVuZGVyZXItc2lkZSByZXNvbHZlciB2aWEge0BsaW5rIHJlZ2lzdGVyTGliUmVzb2x2ZXJ9IHRvIGBPYmplY3QuYXNzaWduYFxuICogdGhlaXIgd2hvbGUgcmVuZGVyZXItc2FmZSBsaWJyYXJ5IGF0IHJ1bnRpbWUsIGFuZCBhdWdtZW50IHRoaXMgKiphdWdtZW50YWJsZSoqXG4gKiBpbnRlcmZhY2UgKHRoZSBgaTE4bmV4dGAgYEN1c3RvbVR5cGVPcHRpb25zYCBpZGlvbSkgdmlhXG4gKiBgZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnYCB0byB0eXBlIGl0LiBNdWx0aXBsZSBwcm92aWRlcnNcbiAqIGNvbXBvc2U6IHRoZWlyIGV4cG9ydHMgbWVyZ2UgYXQgcnVudGltZSBhbmQgdGhlaXIgYXVnbWVudGF0aW9ucyBtZXJnZSBpbiB0aGVcbiAqIHR5cGUgc3lzdGVtIChgaW50ZXJmYWNlIExpYiBleHRlbmRzIFx1MjAyNmApLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnIHtcbiAqICAgaW50ZXJmYWNlIExpYiBleHRlbmRzICh0eXBlb2YgaW1wb3J0KCdvYnNpZGlhbi1kZXYtdXRpbHMvX19tZXJnZWQnKSkge31cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpYiB7XG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGNlbnRlciBvZiBhbiBlbGVtZW50IHVzaW5nICoqdHJ1c3RlZCoqIEVsZWN0cm9uIHBvaW50ZXIgaW5wdXQuXG4gICAqXG4gICAqIFRoZSBlbGVtZW50LXJlbGF0aXZlIGNvdW50ZXJwYXJ0IG9mIHtAbGluayBMaWIuY2xpY2tNb3VzZX0sIG1pcnJvcmluZyB0aGVcbiAgICoge0BsaW5rIExpYi5tb3ZlTW91c2V9IC8ge0BsaW5rIExpYi5ob3ZlckVsZW1lbnR9IHNwbGl0LiBVc2VcbiAgICoge0BsaW5rIExpYi5jbGlja01vdXNlfSBkaXJlY3RseSB3aGVuIHRoZSBwb2ludCB0byBjbGljayBpcyAqKm5vdCoqIHRoZVxuICAgKiBlbGVtZW50J3MgY2VudGVyIFx1MjAxNCB0aGUgbWFya2Rvd24gZWRpdG9yJ3MgbWFyZ2luLCBmb3IgaW5zdGFuY2UsIGxpZXMgaW5zaWRlXG4gICAqIGBjbS5zY3JvbGxET01gIGJ1dCBvdXRzaWRlIGAuY20tc2l6ZXJgLCBzbyBubyBlbGVtZW50J3MgY2VudGVyIGxhbmRzIG9uIGl0LlxuICAgKlxuICAgKiBTeW5jaHJvbm91czogaW5qZWN0aW5nIHRoZSB0cnVzdGVkIGNsaWNrIGRvZXMgbm8gcmVhbCBhd2FpdGluZywgc28gdGhlXG4gICAqIGNhbGxlciBkb2VzIG5vdCBuZWVkIHRvIGBhd2FpdGAgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWxlbWVudCB0byBjbGljaywgdGhlIGJ1dHRvbiB0byBwcmVzcyBhbmQgYW55IG1vZGlmaWVyc1xuICAgKiAgIHRvIGhvbGQuXG4gICAqL1xuICBjbGlja0VsZW1lbnQodGhpczogdm9pZCwgcGFyYW1zOiBDbGlja0VsZW1lbnRQYXJhbXMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDbGlja3MgYXQgdGhlIGdpdmVuIHdlYi1jb250ZW50cyBjb29yZGluYXRlcyB1c2luZyAqKnRydXN0ZWQqKiBFbGVjdHJvblxuICAgKiBwb2ludGVyIGlucHV0LCBzbyBDaHJvbWl1bSBzeW50aGVzaXplcyBhIHJlYWwgYGNsaWNrYCAob3IgYGNvbnRleHRtZW51YCxcbiAgICogZm9yIHRoZSByaWdodCBidXR0b24pIHdpdGggYGlzVHJ1c3RlZCA9PT0gdHJ1ZWAuXG4gICAqXG4gICAqIFRoaXMgaXMgd2hhdCBgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycpKWAgY2Fubm90IGRvOlxuICAgKiBPYnNpZGlhbiBhbmQgQ29kZU1pcnJvciBnYXRlIG9uIGBpc1RydXN0ZWRgLCBzbyBhIGRpc3BhdGNoZWQgZXZlbnQgc2lsZW50bHlcbiAgICogZXhlcmNpc2VzIG5vdGhpbmcgd2hpbGUgdGhlIHRlc3Qgc3RpbGwgcGFzc2VzIHdoYXRldmVyIHdlYWtlciBhc3NlcnRpb24gaXRcbiAgICogbWFrZXMuIE9ic2lkaWFuIDEuMTMuNydzIG1hcmtkb3duIHZpZXdwb3J0IChtYXJnaW4pIG1lbnUsIGZvciBleGFtcGxlLFxuICAgKiBvcGVucyBmcm9tIGEgYGNtLnNjcm9sbERPTWAgYGNvbnRleHRtZW51YCBsaXN0ZW5lciBndWFyZGVkIGJ5XG4gICAqIGBlLmlzVHJ1c3RlZGAsIHdoaWNoIGEgZGlzcGF0Y2hlZCBldmVudCBuZXZlciBnZXRzIHBhc3QuXG4gICAqXG4gICAqIEl0IGlzIHRoZSBsb3ctbGV2ZWwgcHJpbWl0aXZlOiBhIHNpbmdsZSB0cnVzdGVkIGBtb3VzZU1vdmVgIFx1MjE5MiBgbW91c2VEb3duYCBcdTIxOTJcbiAgICogYG1vdXNlVXBgIGF0IG9uZSBwb2ludCwgd2l0aCBubyB3YWl0aW5nIGZvciBhbnkgZWZmZWN0IChjYWxsZXJzIHBvbGwgdGhlaXJcbiAgICogb3duIHJlYWRpbmVzcyBzaWduYWwpLiBUaGUgbGVhZGluZyBtb3ZlIGlzIHdoYXQgcHV0cyB0aGUgcG9pbnRlciBvdmVyIHRoZVxuICAgKiBoaXQtdGVzdCB0YXJnZXQgYmVmb3JlIHRoZSBidXR0b24gZ29lcyBkb3duLiBQcmVmZXJcbiAgICoge0BsaW5rIExpYi5jbGlja0VsZW1lbnR9IGZvciBlbGVtZW50LXJlbGF0aXZlIGNsaWNrcy5cbiAgICpcbiAgICogQSByZWFsIGNvbnRleHQgbWVudSBhY3R1YWxseSBvcGVucywgc28gYSBzdWl0ZSBkcml2aW5nIGEgcmlnaHQgY2xpY2sgbXVzdFxuICAgKiBjbG9zZSBpdCAob3IgcmVtb3ZlIHRoZSBsZWZ0b3ZlciBgLm1lbnVgIGVsZW1lbnQpIGJlZm9yZSB0aGUgbmV4dCB0ZXN0LlxuICAgKlxuICAgKiBTeW5jaHJvbm91czogaW5qZWN0aW5nIHRoZSB0cnVzdGVkIGNsaWNrIGRvZXMgbm8gcmVhbCBhd2FpdGluZywgc28gdGhlXG4gICAqIGNhbGxlciBkb2VzIG5vdCBuZWVkIHRvIGBhd2FpdGAgaXQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgd2ViLWNvbnRlbnRzIERJUCBjb29yZGluYXRlcyB0byBjbGljayBhdCwgdGhlIGJ1dHRvbiB0b1xuICAgKiAgIHByZXNzIGFuZCBhbnkgbW9kaWZpZXJzIHRvIGhvbGQuXG4gICAqL1xuICBjbGlja01vdXNlKHRoaXM6IHZvaWQsIHBhcmFtczogQ2xpY2tNb3VzZVBhcmFtcyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBub3RlIGFuZCBkb2VzIG5vdCByZXR1cm4gdW50aWwgaXRzIGNvbnRlbnQgaXMgdmVyaWZpYWJseSBvblxuICAgKiBkaXNrLCByZXdyaXRpbmcgaXQgaWYgaXQgaXMgbm90LlxuICAgKlxuICAgKiBVc2UgdGhpcyBpbnN0ZWFkIG9mIGBhcHAudmF1bHQuY3JlYXRlYCBpbiBhbnkgc3VpdGUgdGhhdCBtYXkgcnVuIG9uXG4gICAqIEFuZHJvaWQuIFRoZSBlbXVsYXRvciB0cmFuc3BvcnQgbG9zZXMgcm91Z2hseSAqKjAuOSAlKiogb2YgYHZhdWx0LmNyZWF0ZWBcbiAgICogd3JpdGVzIChtZWFzdXJlZDogNyBsb3N0IGluIDgwMCBjcmVhdGVzKTogdGhlIGZpbGUgbGFuZHMgKiowIGJ5dGVzKiogb25cbiAgICogZGlzayB3aGlsZSBPYnNpZGlhbidzIGluLW1lbW9yeSBgVEZpbGUuc3RhdGAgcmVwb3J0cyB0aGUgZnVsbCBieXRlIGNvdW50LFxuICAgKiBhbmQgaXQgZG9lcyBub3QgaGVhbCBvbiBpdHMgb3duLiBBIHN1aXRlIGRvaW5nIH4zNCBjcmVhdGVzIHBlciBydW5cbiAgICogdGhlcmVmb3JlIGhhcyBhIH4yNiAlIGNoYW5jZSBvZiBhdCBsZWFzdCBvbmUgbG9zdCB3cml0ZSwgYW5kIHdoaWNoZXZlciB0ZXN0XG4gICAqIGxvc2VzIHRoYXQgbG90dGVyeSBmYWlscyBvbiBhIGB3YWl0VW50aWxgIGZvciBjb250ZW50IHRoYXQgd2FzIG5ldmVyXG4gICAqIHdyaXR0ZW4gXHUyMDE0IHdoaWNoIGlzIHdoeSBpdCByZWFkcyBhcyBhbiB1bnJlbGF0ZWQgcGVyLXRlc3QgZmxha2UgcmF0aGVyIHRoYW5cbiAgICogb25lIHNoYXJlZCBjYXVzZS5cbiAgICpcbiAgICogVmVyaWZpY2F0aW9uIGlzIGJ5ICoqcmVhZGluZyB0aGUgbm90ZSBiYWNrKiosIG5ldmVyIGJ5IGluc3BlY3RpbmdcbiAgICogYFRGaWxlLnN0YXRgOiBgc3RhdGAgaXMgZXhhY3RseSB0aGUgZmllbGQgdGhhdCBsaWVzIGhlcmUuIEEgcmV3cml0ZSB0aHJvdWdoXG4gICAqIGB2YXVsdC5tb2RpZnlgIHdpdGggdGhlIHNhbWUgY29udGVudCBsYW5kcyBjb3JyZWN0bHkgKGFsc28gbWVhc3VyZWQpLCBzbyBhXG4gICAqIGxvc3Qgd3JpdGUgY29zdHMgYSByZXRyeSByYXRoZXIgdGhhbiBhIGZhaWx1cmUuIEEgbm90ZSB3aG9zZSBjb250ZW50IHN0aWxsXG4gICAqIGRvZXMgbm90IG1hdGNoIGFmdGVyIHRoZSBib3VuZGVkIHJldHJpZXMgdGhyb3dzLCBuYW1pbmcgdGhlIHBhdGggYW5kIGJvdGhcbiAgICogbGVuZ3Rocywgc28gYSBnZW51aW5lbHkgYnJva2VuIHdyaXRlIGZhaWxzIGxvdWRseSBpbnN0ZWFkIG9mIHNwaW5uaW5nLlxuICAgKlxuICAgKiBIYXJtbGVzcyBldmVyeXdoZXJlIGVsc2UgXHUyMDE0IG9uIGEgdHJhbnNwb3J0IHRoYXQgZG9lcyBub3QgbG9zZSB3cml0ZXMgdGhlXG4gICAqIHJlYWQtYmFjayBtYXRjaGVzIGZpcnN0IHRpbWUgYW5kIG5vdGhpbmcgaXMgcmV3cml0dGVuLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG5vdGUgcGF0aCBhbmQgY29udGVudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIGZpbGUsIG9uY2UgaXRzIGNvbnRlbnRcbiAgICogICBpcyBjb25maXJtZWQuXG4gICAqL1xuICBjcmVhdGVOb3RlKHRoaXM6IHZvaWQsIHBhcmFtczogQ3JlYXRlTm90ZVBhcmFtcyk6IFByb21pc2U8VEZpbGU+O1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgbW91c2UgcG9pbnRlciB0byB0aGUgY2VudGVyIG9mIGFuIGVsZW1lbnQgdXNpbmcgKip0cnVzdGVkKipcbiAgICogRWxlY3Ryb24gcG9pbnRlciBpbnB1dCwgdGhlbiBwb2xscyB1bnRpbCB0aGUgZWxlbWVudCBhY3R1YWxseSBtYXRjaGVzXG4gICAqIGA6aG92ZXJgLlxuICAgKlxuICAgKiBCZWNhdXNlIHRoZSBtb3ZlIGlzIHRydXN0ZWQgKHNlZSB7QGxpbmsgTGliLm1vdmVNb3VzZX0pLCB0aGUgcmVhbCBgOmhvdmVyYFxuICAgKiBzdGF0ZSB0YWtlcyBlZmZlY3QgaW4gdGhlIENTUyBlbmdpbmUgXHUyMDE0IHJlYWwgdGhlbWUgYHZhcigpYCB2YWx1ZXMgYW5kIHJlYWxcbiAgICogY29tcG9zaXRpbmcgXHUyMDE0IGluc3RlYWQgb2YgYSBoYW5kLXNpbXVsYXRlZCBjYXNjYWRlLiBJdCBwb2xscyB0aGUgbGl2ZVxuICAgKiBgZWxlbWVudC5tYXRjaGVzKCc6aG92ZXInKWAgc3RhdGUgKG5vdCBhIGZpeGVkIGRlbGF5KSwgc28gaXQgaXMgcm9idXN0IHVuZGVyXG4gICAqIHNoYXJlZC1pbnN0YW5jZSBsb2FkLiBJdCB0YXJnZXRzIHRoZSBzaW5nbGUgc2hhcmVkIHdpbmRvdydzICoqZ2xvYmFsKipcbiAgICogcG9pbnRlciwgc28gb25seSBvbmUgZWxlbWVudCBpcyBob3ZlcmVkIGF0IGEgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBlbGVtZW50IHRvIGhvdmVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGVsZW1lbnQgbWF0Y2hlcyBgOmhvdmVyYC5cbiAgICovXG4gIGhvdmVyRWxlbWVudCh0aGlzOiB2b2lkLCBwYXJhbXM6IEhvdmVyRWxlbWVudFBhcmFtcyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBtb3VzZSBwb2ludGVyIHRvIHRoZSBnaXZlbiB3ZWItY29udGVudHMgY29vcmRpbmF0ZXMgdXNpbmcgYVxuICAgKiAqKnRydXN0ZWQqKiBFbGVjdHJvbiBwb2ludGVyIG1vdmUuXG4gICAqXG4gICAqIEEgdHJ1c3RlZCBtb3ZlIChpbmplY3RlZCB2aWEgRWxlY3Ryb24ncyBgd2ViQ29udGVudHMuc2VuZElucHV0RXZlbnRgKVxuICAgKiB1cGRhdGVzIHRoZSByZWFsIHBvaW50ZXIgc3RhdGUgaW4gdGhlIENTUyBlbmdpbmUsIHNvIGA6aG92ZXJgIHJ1bGVzXG4gICAqIGdlbnVpbmVseSBhcHBseSBcdTIwMTQgdW5saWtlIGBkaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdtb3VzZW92ZXInKSlgLFxuICAgKiB3aGljaCBpcyB1bnRydXN0ZWQgYW5kIG5ldmVyIHNldHMgYDpob3ZlcmAuIEl0IHRhcmdldHMgdGhlIHNpbmdsZSBzaGFyZWRcbiAgICogd2luZG93J3MgKipnbG9iYWwqKiBwb2ludGVyLCBzbyBvbmx5IG9uZSBlbGVtZW50IGlzIGhvdmVyZWQgYXQgYSB0aW1lLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBsb3ctbGV2ZWwgcHJpbWl0aXZlOiBpdCBwZXJmb3JtcyBhIHNpbmdsZSBtb3ZlIGFuZCBkb2VzICoqbm90KipcbiAgICogd2FpdCBmb3IgYW55IHN0YXRlIHRvIHNldHRsZSAoY2FsbGVycyBwb2xsIHRoZWlyIG93biByZWFkaW5lc3Mgc2lnbmFsKS5cbiAgICogUHJlZmVyIHtAbGluayBMaWIuaG92ZXJFbGVtZW50fSAvIHtAbGluayBMaWIudW5ob3ZlckVsZW1lbnR9IGZvclxuICAgKiBlbGVtZW50LXJlbGF0aXZlIG1vdmVzOyB1c2UgYG1vdmVNb3VzZWAgZGlyZWN0bHkgd2hlbiBhbiBlbGVtZW50LXJlbGF0aXZlXG4gICAqIHRhcmdldCBkb2VzIG5vdCBmaXQgKGUuZy4gYW4gZWxlbWVudCBzcGFubmluZyB0aGUgZnVsbCB2aWV3cG9ydCB3aWR0aCkuXG4gICAqXG4gICAqIFN5bmNocm9ub3VzOiBpbmplY3RpbmcgdGhlIHRydXN0ZWQgbW92ZSBkb2VzIG5vIHJlYWwgYXdhaXRpbmcsIHNvIHRoZSBjYWxsZXJcbiAgICogZG9lcyBub3QgbmVlZCB0byBgYXdhaXRgIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHdlYi1jb250ZW50cyBESVAgY29vcmRpbmF0ZXMgdG8gbW92ZSB0by5cbiAgICovXG4gIG1vdmVNb3VzZSh0aGlzOiB2b2lkLCBwYXJhbXM6IE1vdmVNb3VzZVBhcmFtcyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIE9wZW5zIE9ic2lkaWFuJ3Mgc2V0dGluZ3MgbW9kYWwgb24gYSBnaXZlbiB0YWIsIGFuZCBkb2VzIG5vdCByZXR1cm4gdW50aWxcbiAgICogdGhhdCB0YWIgaGFzIGFjdHVhbGx5IHJlbmRlcmVkLlxuICAgKlxuICAgKiAqKlRoaXMgZXhpc3RzIGJlY2F1c2UgYGFwcC5zZXR0aW5nLm9wZW4oKWAgb24gaXRzIG93biBkb2VzIG5vdCB3b3JrIGZyb20gYVxuICAgKiB0ZXN0LioqIGBhcHAuc2V0dGluZy5jb250YWluZXJFbGAgaXMgYnVpbHQgYXQgc3RhcnR1cCBidXQgaXMgbmV2ZXIgaW4gdGhlXG4gICAqIGRvY3VtZW50LCBhbmQgYG9wZW4oKWAgZG9lcyBub3QgYXR0YWNoIGl0IFx1MjAxNCBzbyB0aGUgbW9kYWwgYnVpbGRzIGludG8gYVxuICAgKiBkZXRhY2hlZCB0cmVlLCBgb3BlbigpYCByZXR1cm5zIHdpdGhvdXQgdGhyb3dpbmcsIGFuZCBhIHNjcmVlbnNob3QgdGFrZW5cbiAgICogYWZ0ZXJ3YXJkcyBzaG93cyB0aGUgdW50b3VjaGVkIGRvY3VtZW50LiBUaGF0IGlzIHdoYXQgbWFkZSB0aGUgc2V0dGluZ3MgdGFiXG4gICAqIGxvb2sgaW1wb3NzaWJsZSB0byBjYXB0dXJlLCBhbmQgZ290IHJlY29yZGVkIGFzIHN1Y2ggaW4gdHdvIHBsdWdpbnMuXG4gICAqXG4gICAqIFRoZSBmaXggaXMgb25lIHN0ZXAsIGFuZCBpdHMgKipvcmRlciBpcyBsb2FkLWJlYXJpbmcqKjogdGhlIGNvbnRhaW5lciBpc1xuICAgKiBhcHBlbmRlZCB0byBgZG9jdW1lbnQuYm9keWAgKipiZWZvcmUqKiBgb3BlbigpYC4gQXR0YWNoaW5nIGFmdGVyd2FyZHMgaXMgdG9vXG4gICAqIGxhdGUgXHUyMDE0IHdoYXRldmVyIHRoZSBtb2RhbCBkcmV3IG9uIG9wZW4gaGFzIGFscmVhZHkgZ29uZSBpbnRvIHRoZSBkZXRhY2hlZFxuICAgKiBjb250YWluZXIsIHNvIGl0IGVuZHMgdXAgb24gc2NyZWVuIHNob3dpbmcgdGhlIHdyb25nIHRoaW5nLiBUaGF0IGZhaWx1cmVcbiAgICogbG9va3MgbGlrZSBzdWNjZXNzIHVudGlsIHRoZSBjYXB0dXJlZCBmcmFtZSBpcyBleGFtaW5lZCwgd2hpY2ggaXMgdGhlIHRyYXBcbiAgICogdGhpcyBoZWxwZXIgZXhpc3RzIHRvIHJlbW92ZS5cbiAgICpcbiAgICogUmUtYXR0YWNoaW5nIGlzIGlkZW1wb3RlbnQsIHNvIGEgdGFiIGNsb3NlZCB3aXRoIGBhcHAuc2V0dGluZy5jbG9zZSgpYCBjYW5cbiAgICogc2ltcGx5IGJlIHJlLW9wZW5lZC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSB0YWIgdG8gb3BlbiBhbmQgaG93IGxvbmcgdG8gd2FpdCBmb3IgaXQgdG8gcmVuZGVyLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIG5hbWVzIG9mIHRoZSBzZXR0aW5nIHJvd3MgdGhlXG4gICAqICAgdGFiIHJlbmRlcmVkIFx1MjAxNCBib3RoIHRoZSBwcm9vZiBpdCByZW5kZXJlZCBhbmQgd2hhdCBhIGNhbGxlciBhc3NlcnRzIG9uLiBBXG4gICAqICAgdGFiIHRoYXQgbGVnaXRpbWF0ZWx5IHJlbmRlcnMgbm8gYC5zZXR0aW5nLWl0ZW0tbmFtZWAgcm93cyAoSG90a2V5cywgc2F5KVxuICAgKiAgIHJlc29sdmVzIHRvIGFuIGVtcHR5IGFycmF5LlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG5vIHRhYiBjYXJyaWVzIHtAbGluayBPcGVuU2V0dGluZ3NUYWJQYXJhbXMudGFiSWR9LCBvciBpZlxuICAgKiAgIHRoZSB0YWIgZG9lcyBub3QgcmVuZGVyIHdpdGhpbiB0aGUgdGltZW91dC5cbiAgICovXG4gIG9wZW5TZXR0aW5nc1RhYih0aGlzOiB2b2lkLCBwYXJhbXM6IE9wZW5TZXR0aW5nc1RhYlBhcmFtcyk6IFByb21pc2U8c3RyaW5nW10+O1xuXG4gIC8qKlxuICAgKiBQcmVzc2VzIGEgc2luZ2xlIGtleSAob3B0aW9uYWxseSB3aXRoIG1vZGlmaWVycykgdXNpbmcgKip0cnVzdGVkKiogRWxlY3Ryb25cbiAgICoga2V5Ym9hcmQgaW5wdXQsIGZpcmluZyB0aGUgZnVsbCByZWFsIGtleSBwaXBlbGluZSBcdTIwMTRcbiAgICogYGtleWRvd25gIFx1MjE5MiBga2V5cHJlc3NgIFx1MjE5MiBgYmVmb3JlaW5wdXRgIFx1MjE5MiBgaW5wdXRgIFx1MjE5MiBga2V5dXBgLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBrZXktcHJlc3MgYW5hbG9nIG9mIHtAbGluayBMaWIudHlwZUludG9FZGl0b3J9OiBpdCBpbmplY3RzIGFcbiAgICogdHJ1c3RlZCBga2V5RG93bmAgXHUyMTkyIGBjaGFyYCBcdTIxOTIgYGtleVVwYCBzZXF1ZW5jZSB2aWEgRWxlY3Ryb24nc1xuICAgKiBgd2ViQ29udGVudHMuc2VuZElucHV0RXZlbnRgLCBzbyBpdCBpcyBkZWxpdmVyZWQgdG8gdGhlIHdpbmRvdydzIERPTS1mb2N1c2VkXG4gICAqIGVsZW1lbnQgYW5kIGZsb3dzIHRocm91Z2ggdGhlIHJlYWwgaW5wdXQgcGlwZWxpbmUgXHUyMDE0IHVubGlrZVxuICAgKiBgZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudCguLi4pKWAsIHdoaWNoIGlzIHVudHJ1c3RlZCAoYGlzVHJ1c3RlZDpcbiAgICogZmFsc2VgKSBhbmQgaWdub3JlZCBieSBDb2RlTWlycm9yIGFuZCBtb3N0IGtleSBoYW5kbGVycy4gVXNlIGl0IGZvciBzcGVjaWFsXG4gICAqIGtleXMgKGAnRW50ZXInYCwgYCdFc2NhcGUnYCwgYCdUYWInYCwgYXJyb3cga2V5cykgYW5kIG1vZGlmaWVyIGNvbWJpbmF0aW9uc1xuICAgKiAoYFNoaWZ0K0VudGVyYCwgYEN0cmwrQWApIHRoYXQge0BsaW5rIExpYi50eXBlSW50b0VkaXRvcn0gKHdoaWNoIHR5cGVzXG4gICAqIHByaW50YWJsZSB0ZXh0KSBkb2VzIG5vdCBjb3Zlci5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbG93LWxldmVsIHByaW1pdGl2ZTogaXQgaW5qZWN0cyB0aGUga2V5IHByZXNzIGFuZCBkb2VzICoqbm90KipcbiAgICogcG9sbCBmb3IgYW55IGVmZmVjdCAoYSBrZXkgcHJlc3MgaGFzIG5vIHVuaXZlcnNhbCBvYnNlcnZhYmxlIG91dGNvbWUgXHUyMDE0XG4gICAqIGBFbnRlcmAgZWRpdHMgdGhlIGRvY3VtZW50LCBgRXNjYXBlYCBjbG9zZXMgYSBtb2RhbCwgYEFycm93RG93bmAgbW92ZXMgdGhlXG4gICAqIHNlbGVjdGlvbikuIFRoZSBjYWxsZXIgZm9jdXNlcyB0aGUgaW50ZW5kZWQgdGFyZ2V0IGZpcnN0LCB0aGVuIGF3YWl0cyB0aGVcbiAgICogZXhwZWN0ZWQgZWZmZWN0IHZpYSB7QGxpbmsgTGliLndhaXRVbnRpbH0uIEl0IHRhcmdldHMgdGhlIHNpbmdsZSBzaGFyZWRcbiAgICogd2luZG93J3MgKipnbG9iYWwqKiBmb2N1cywgc28gb25seSB0aGUgRE9NLWZvY3VzZWQgZWxlbWVudCByZWNlaXZlcyB0aGUga2V5LlxuICAgKlxuICAgKiBTeW5jaHJvbm91czogaW5qZWN0aW5nIHRoZSB0cnVzdGVkIGtleSBwcmVzcyBkb2VzIG5vIHJlYWwgYXdhaXRpbmcsIHNvIHRoZVxuICAgKiBjYWxsZXIgZG9lcyBub3QgbmVlZCB0byBgYXdhaXRgIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSB0byBwcmVzcyBhbmQgYW55IG1vZGlmaWVycyB0byBob2xkLlxuICAgKi9cbiAgcHJlc3NLZXkodGhpczogdm9pZCwgcGFyYW1zOiBQcmVzc0tleVBhcmFtcyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFR5cGVzIHRleHQgaW50byBhIENvZGVNaXJyb3Ige0BsaW5rIEVkaXRvcn0gdXNpbmcgKip0cnVzdGVkKiogRWxlY3Ryb25cbiAgICoga2V5Ym9hcmQgaW5wdXQuXG4gICAqXG4gICAqIFR5cGluZyBpcyBwcmVzc2luZyBlYWNoIGNoYXJhY3RlciBrZXkgaW4gdHVybjogdGhpcyBmb2N1c2VzIHRoZSBlZGl0b3JcbiAgICogKGNhcmV0IHRvIGVuZCkgYW5kIHByZXNzZXMgZXZlcnkgY29kZSBwb2ludCBvZiBgdGV4dGAgdmlhXG4gICAqIHtAbGluayBMaWIucHJlc3NLZXl9IFx1MjAxNCB0aGUgc2FtZSB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgIGEgcmVhbFxuICAgKiB1c2VyIHByb2R1Y2VzLiBFYWNoIGtleXN0cm9rZSBpcyBkZWxpdmVyZWQgdG8gdGhlIHdpbmRvdydzIERPTS1mb2N1c2VkXG4gICAqIGVsZW1lbnQgYW5kIGZsb3dzIHRocm91Z2ggQ29kZU1pcnJvcidzIHJlYWwgaW5wdXQgcGlwZWxpbmUsIHNvIHRoZSB0eXBlZFxuICAgKiB0ZXh0IHJlYWNoZXMgdGhlIGRvY3VtZW50ICoqb25seSBpZiB0aGUgZWRpdG9yIGdlbnVpbmVseSBob2xkcyBmb2N1cyoqLlxuICAgKiBUaGlzIG1ha2VzIFwidGhlIHVzZXIgdHlwZWQgaW50byB0aGUgZWRpdG9yXCIgYSBmYWl0aGZ1bCBlbmQtdG8tZW5kIGNoZWNrLFxuICAgKiB1bmxpa2UgYGRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoLi4uKSlgICh1bnRydXN0ZWQgXHUyMDE0IGlnbm9yZWQgYnlcbiAgICogQ29kZU1pcnJvcikgb3IgYGV4ZWNDb21tYW5kKCdpbnNlcnRUZXh0JylgIChtdXRhdGVzIHRoZSBzZWxlY3Rpb24gZXZlblxuICAgKiB3aGVuIHRoZSBlZGl0b3IgaXMgbm90IGZvY3VzZWQsIG1hc2tpbmcgZm9jdXMgYnVncyBhcyBmYWxzZSBwb3NpdGl2ZXMpLlxuICAgKlxuICAgKiBBZnRlciBpbmplY3RpbmcgdGhlIGtleXN0cm9rZXMgaXQgcG9sbHMgdW50aWwgdGhlIGRvY3VtZW50IHJlZmxlY3RzIHRoZVxuICAgKiBpbnB1dCwgb3IgYSBib3VuZGVkIHRpbWVvdXQgZWxhcHNlcyAodGhlIGV4cGVjdGVkIG91dGNvbWUgd2hlbiB0aGUgZWRpdG9yXG4gICAqIGlzIHJlYWQtb25seSBhbmQgcmVqZWN0cyB0aGUgaW5wdXQsIG9yIHdoZW4gZm9jdXMgd2FzIHN0b2xlbikuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWRpdG9yIHRvIHR5cGUgaW50byBhbmQgdGhlIHRleHQgdG8gdHlwZS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBrZXlzdHJva2VzIGhhdmUgc2V0dGxlZC5cbiAgICovXG4gIHR5cGVJbnRvRWRpdG9yKHRoaXM6IHZvaWQsIHBhcmFtczogVHlwZUludG9FZGl0b3JQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgbW91c2UgcG9pbnRlciB0byBhIHBvaW50IGp1c3Qgb3V0c2lkZSBhbiBlbGVtZW50J3MgYm91bmRpbmcgYm94XG4gICAqIHVzaW5nIGEgKip0cnVzdGVkKiogRWxlY3Ryb24gcG9pbnRlciBtb3ZlLCB0aGVuIHBvbGxzIHVudGlsIHRoZSBlbGVtZW50IG5vXG4gICAqIGxvbmdlciBtYXRjaGVzIGA6aG92ZXJgLlxuICAgKlxuICAgKiBUaGUgaW52ZXJzZSBvZiB7QGxpbmsgTGliLmhvdmVyRWxlbWVudH0uIEl0IHRhcmdldHMgdGhlIHNpbmdsZSBzaGFyZWRcbiAgICogd2luZG93J3MgKipnbG9iYWwqKiBwb2ludGVyLCBzbyBvbmx5IG9uZSBlbGVtZW50IGlzIGhvdmVyZWQgYXQgYSB0aW1lLiBXaGVuXG4gICAqIGFuIGVsZW1lbnQgc3BhbnMgdGhlIGZ1bGwgdmlld3BvcnQgKG5vIHBvaW50IG91dHNpZGUgaXRzIGJveCBpcyByZWFjaGFibGUpLFxuICAgKiB1c2Uge0BsaW5rIExpYi5tb3ZlTW91c2V9IGRpcmVjdGx5IHRvIG1vdmUgdGhlIHBvaW50ZXIgdG8gYSBrbm93biBlbXB0eVxuICAgKiBjb29yZGluYXRlIGluc3RlYWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWxlbWVudCB0byBtb3ZlIHRoZSBwb2ludGVyIGF3YXkgZnJvbS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBlbGVtZW50IG5vIGxvbmdlciBtYXRjaGVzXG4gICAqICAgYDpob3ZlcmAuXG4gICAqL1xuICB1bmhvdmVyRWxlbWVudCh0aGlzOiB2b2lkLCBwYXJhbXM6IFVuaG92ZXJFbGVtZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogUG9sbHMgYSBwcmVkaWNhdGUgdW50aWwgaXQgYmVjb21lcyB0cnV0aHksIG9yIHJlamVjdHMgb25jZSBhIGJvdW5kZWRcbiAgICogdGltZW91dCBlbGFwc2VzLlxuICAgKlxuICAgKiBJbnRlZ3JhdGlvbi10ZXN0IGBldmFsSW5PYnNpZGlhbmAgY2FsbGJhY2tzIHJvdXRpbmVseSBuZWVkIHRvIHdhaXQgZm9yIGFuXG4gICAqIGFzeW5jaHJvbm91cyBlZmZlY3QgdG8gc2V0dGxlIChhIHZpZXcgdG8gb3BlbiwgYSBET00gbm9kZSB0byBhcHBlYXIsIGFcbiAgICogc2V0dGluZyB0byBhcHBseSkuIEJlY2F1c2UgdGhlIGNhbGxiYWNrIGlzIHNlcmlhbGl6ZWQgdmlhIGB0b1N0cmluZygpYCBhbmRcbiAgICogY2Fubm90IGltcG9ydCBtb2R1bGVzLCBpdCBjYW4ndCByZXVzZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCdcbiAgICogYHJldHJ5V2l0aFRpbWVvdXRgIC8gYHJ1bldpdGhUaW1lb3V0YC4gVGhpcyBoZWxwZXIgaXMgdGhlIHNoYXJlZCwgaW5qZWN0ZWRcbiAgICogcmVwbGFjZW1lbnQgZm9yIHRoZSBwZXItY2xvc3VyZSBwb2xsIGxvb3BzIGNvbnN1bWVycyB3b3VsZCBvdGhlcndpc2VcbiAgICogaGFuZC1yb2xsLlxuICAgKlxuICAgKiBUaGUgYHByZWRpY2F0ZWAgbWF5IGJlIHN5bmNocm9ub3VzIG9yIGFzeW5jaHJvbm91cyBcdTIwMTQgaXQgaXMgYXdhaXRlZCBvbiBldmVyeVxuICAgKiBwb2xsLiBJdCBpcyBjaGVja2VkIGltbWVkaWF0ZWx5LCB0aGVuIHJlLWNoZWNrZWQgZXZlcnlcbiAgICogYGludGVydmFsSW5NaWxsaXNlY29uZHNgIHVudGlsIGl0IHJldHVybnMgdHJ1dGh5IG9yIGB0aW1lb3V0SW5NaWxsaXNlY29uZHNgXG4gICAqIGVsYXBzZXMsIGF0IHdoaWNoIHBvaW50IHRoZSByZXR1cm5lZCB7QGxpbmsgUHJvbWlzZX0gcmVqZWN0cyAodGhlIGVycm9yXG4gICAqIGluY2x1ZGVzIGBtZXNzYWdlYCB3aGVuIHByb3ZpZGVkKS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwcmVkaWNhdGUgdG8gcG9sbCBwbHVzIG9wdGlvbmFsIHRpbWVvdXQsIGludGVydmFsLCBhbmRcbiAgICogICB0aW1lb3V0IG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJlZGljYXRlIGlzIHRydXRoeS5cbiAgICovXG4gIHdhaXRVbnRpbCh0aGlzOiB2b2lkLCBwYXJhbXM6IFdhaXRVbnRpbFBhcmFtcyk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogVGhlIG1vdXNlIGJ1dHRvbiBhIHRydXN0ZWQgY2xpY2sgcHJlc3NlcywgaW4gRWxlY3Ryb24ncyBgc2VuZElucHV0RXZlbnRgXG4gKiBzcGVsbGluZy5cbiAqL1xuZXhwb3J0IHR5cGUgTW91c2VCdXR0b24gPSAnbGVmdCcgfCAnbWlkZGxlJyB8ICdyaWdodCc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5tb3ZlTW91c2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVNb3VzZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgeCBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBtb3ZlIHRoZSBwb2ludGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgeDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgeSBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBtb3ZlIHRoZSBwb2ludGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBMaWIub3BlblNldHRpbmdzVGFifS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuU2V0dGluZ3NUYWJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBzZXR0aW5ncyB0YWIgdG8gb3BlbiBcdTIwMTQgYSBwbHVnaW4gaWQgZm9yIGEgcGx1Z2luJ3Mgb3duIHRhYiwgb3JcbiAgICogYSBjb3JlIHRhYiBpZCAoYCdlZGl0b3InYCwgYCdob3RrZXlzJ2AsIFx1MjAyNikuXG4gICAqXG4gICAqIFJlcXVpcmVkLCBiZWNhdXNlIG9wZW5pbmcgdGhlIG1vZGFsIHdpdGhvdXQgbmFtaW5nIGEgdGFiIHJlbmRlcnMgKipub3RoaW5nKipcbiAgICogb24gYSBoYXJuZXNzLW93bmVkIGluc3RhbmNlOiB0aGUgbW9kYWwgcmVzdG9yZXMgdGhlIGxhc3QgdGFiIHRoZSBwcm9maWxlXG4gICAqIHVzZWQsIGFuZCBhbiBpc29sYXRlZCBwcm9maWxlIGhhcyBuZXZlciBvcGVuZWQgb25lLCBzbyBgYWN0aXZlVGFiYCBzdGF5c1xuICAgKiBgbnVsbGAgYW5kIG5vIHJvdyBpcyBkcmF3bi4gQW4gdW5rbm93biBpZCBpcyByZWplY3RlZCBpbW1lZGlhdGVseSwgbGlzdGluZ1xuICAgKiB0aGUgaWRzIHRoYXQgZG8gZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB0YWJJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIHRoZSBtb2RhbCB0byBvcGVuIGFuZCBmb3IgdGhlIHJlcXVlc3RlZCB0YWIgdG9cbiAgICogcmVuZGVyIGl0cyBjb250ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNTAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVzc0tleVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRvIHByZXNzLCBnaXZlbiBhcyBhbiBFbGVjdHJvbiBBY2NlbGVyYXRvciBrZXkgbmFtZSBcdTIwMTQgZS5nLlxuICAgKiBgJ0VudGVyJ2AsIGAnRXNjYXBlJ2AsIGAnVGFiJ2AsIGAnQmFja3NwYWNlJ2AsIGAnRGVsZXRlJ2AsIGFuIGFycm93IGtleVxuICAgKiAoYCdVcCdgIC8gYCdEb3duJ2AgLyBgJ0xlZnQnYCAvIGAnUmlnaHQnYCksIG9yIGEgcHJpbnRhYmxlIGNoYXJhY3RlclxuICAgKiAoYCdhJ2AsIGAnMSdgKS4gVGhlIHByb2R1Y2VkIGNoYXJhY3RlciAod2hlbiB0aGUga2V5IGluc2VydHMgdGV4dCkgaXMgdGhlXG4gICAqIGxpdGVyYWwgYGtleWAgdmFsdWU7IGNhc2UtY29ycmVjdCB0ZXh0IGJlbG9uZ3MgdG9cbiAgICoge0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0sIG5vdCBhIGtleS1wcmVzcyBwcmltaXRpdmUuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1vZGlmaWVyIGtleXMgdG8gaG9sZCB3aGlsZSB0aGUga2V5IGlzIHByZXNzZWQsIHVzaW5nIE9ic2lkaWFuJ3NcbiAgICoge0BsaW5rIE1vZGlmaWVyfSBuYW1lcyAodGhlIHNhbWUgdmFsdWVzIGFzIGFuIE9ic2lkaWFuIGBIb3RrZXlgKS4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpOyBlYWNoIGlzIG1hcHBlZCB0b1xuICAgKiBFbGVjdHJvbidzIGxvd2VyY2FzZSBgc2VuZElucHV0RXZlbnRgIG1vZGlmaWVyIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbXWBcbiAgICovXG4gIHJlYWRvbmx5IG1vZGlmaWVycz86IHJlYWRvbmx5IE1vZGlmaWVyW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUludG9FZGl0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVkaXRvciB0byB0eXBlIGludG8uIEl0IGlzIGZvY3VzZWQgKHdpdGggdGhlIGNhcmV0IG1vdmVkIHRvIHRoZSBlbmQgb2ZcbiAgICogdGhlIGRvY3VtZW50KSBiZWZvcmUgdGhlIGtleXN0cm9rZXMgYXJlIGluamVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIHR5cGUuIEVhY2ggY29kZSBwb2ludCBpcyBwcmVzc2VkIHZpYSB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fVxuICAgKiAoYSB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgKSwgZXhhY3RseSBhcyBhIHJlYWwgdXNlciB0eXBpbmcuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy51bmhvdmVyRWxlbWVudH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5ob3ZlckVsZW1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gbW92ZSB0aGUgcG9pbnRlciBhd2F5IGZyb20uIFRoZSBwb2ludGVyIGlzIG1vdmVkIHRvIGEgcG9pbnRcbiAgICoganVzdCBvdXRzaWRlIGl0cyBib3VuZGluZyBib3guIFRoaXMgaXMgYSBsaXZlIHJlbmRlcmVyIERPTSBub2RlIFx1MjAxNCB0aGVcbiAgICogY2FsbGJhY2sgcnVucyBpbi1yZW5kZXJlciwgc28gbm8gY3Jvc3MtcHJvY2VzcyBzZXJpYWxpemF0aW9uIGlzIG5lZWRlZFxuICAgKiAoc2FtZSBhcyB7QGxpbmsgVHlwZUludG9FZGl0b3JQYXJhbXMuZWRpdG9yfSkuXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLndhaXRVbnRpbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2FpdFVudGlsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsaW5nIGludGVydmFsIGJldHdlZW4gcHJlZGljYXRlIGNoZWNrcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDUwYFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWxJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGV0YWlsIGFwcGVuZGVkIHRvIHRoZSB0aW1lb3V0IGVycm9yIG1lc3NhZ2UsIGRlc2NyaWJpbmcgd2hhdFxuICAgKiB3YXMgYmVpbmcgd2FpdGVkIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25kaXRpb24gdG8gd2FpdCBmb3IuIFBvbGxlZCBpbW1lZGlhdGVseSwgdGhlbiBvbiBldmVyeSBpbnRlcnZhbCB1bnRpbFxuICAgKiBpdCByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLiBNYXkgYmUgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIFx1MjAxNCBpdCBpc1xuICAgKiBhd2FpdGVkIG9uIGVhY2ggcG9sbC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgYXdhaXRlZCBjb25kaXRpb24gaGFzIGJlZW4gbWV0LlxuICAgKi9cbiAgcHJlZGljYXRlKHRoaXM6IHZvaWQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGJlZm9yZSByZWplY3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV2YWx1YXRlcyBhIGZ1bmN0aW9uIGluc2lkZSB0aGUgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZVxuICogdmlhIHRoZSBhY3RpdmUgdHJhbnNwb3J0IGFuZCByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhbiBpbnB1dCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgYXBwYCwgYG9ic2lkaWFuTW9kdWxlYCxcbiAqIGBjb250ZXh0YCwgYW5kIGFueSBhZGRpdGlvbmFsIGBpbnB1dGAgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuXG4gKiBJdCBpcyBzZXJpYWxpemVkIHZpYSBgdG9TdHJpbmcoKWAgYW5kIGludm9rZWQgYXMgYW4gSUlGRS5cbiAqIFRoZSBmdW5jdGlvbiBtdXN0IGJlIHNlbGYtY29udGFpbmVkIFx1MjAxNCBjbG9zdXJlcyBvdmVyIGxvY2FsIHZhcmlhYmxlcyB3aWxsIG5vdCB3b3JrLlxuICogUGFzcyBhbnkgbmVlZGVkIHZhbHVlcyBhcyBgaW5wdXRgIFx1MjAxNCB0aGV5IGFyZSBKU09OLXNlcmlhbGl6ZWQgYW5kIGRlc2VyaWFsaXplZCBvbiB0aGUgT2JzaWRpYW4gc2lkZS5cbiAqXG4gKiBUaGUgcmVzdWx0IGlzIGBKU09OLnN0cmluZ2lmeWAnZCBvbiB0aGUgT2JzaWRpYW4gc2lkZSBhbmQgcGFyc2VkIGJhY2suXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24gdG8gZXZhbHVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNhbGxiYWNrYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2YWxJbk9ic2lkaWFuPElucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCwgUmVzdWx0LCBUQ29udGV4dElkIGV4dGVuZHMgQ29udGV4dElkPHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcGFyYW1zOiBFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPlxuKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAtLSBgY2FsbGJhY2tgIGNhbiBiZSB1bmJvdW5kLlxuICBjb25zdCB7IGNhbGxiYWNrLCBjb250ZXh0SWQsIGlucHV0ID0ge30sIHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3MgPSBmYWxzZSwgdHJhbnNwb3J0OiB0cmFuc3BvcnRPdmVycmlkZSwgdmF1bHRQYXRoIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGN3ZCA9IHZhdWx0UGF0aCA/PyBnZXRWYXVsdFBhdGgoKSA/PyBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIENoZWNrOiBWYXVsdCBwYXRoIGV4aXN0cyBvbiBkaXNrLlxuICBpZiAodmF1bHRQYXRoICE9PSB1bmRlZmluZWQgJiYgIWV4aXN0c1N5bmModmF1bHRQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVmF1bHQgcGF0aCBkb2VzIG5vdCBleGlzdDogJHt2YXVsdFBhdGh9YCk7XG4gIH1cblxuICBjb25zdCB0cmFuc3BvcnQgPSB0cmFuc3BvcnRPdmVycmlkZSA/PyBhd2FpdCBnZXRPckNyZWF0ZVRyYW5zcG9ydChnZXRUcmFuc3BvcnRPcHRpb25zKCkpO1xuXG4gIGlmICghc2hvdWxkU2tpcFByZWZsaWdodENoZWNrcykge1xuICAgIGF3YWl0IHRyYW5zcG9ydC5wcmVmbGlnaHRDaGVjayhjd2QpO1xuICB9XG5cbiAgYXdhaXQgZW5zdXJlTmFtZXNwYWNlQm9vdHN0cmFwcGVkKHRyYW5zcG9ydCwgY3dkKTtcblxuICBjb25zdCBuYW1lc3BhY2VDYWxsUGFyYW1zOiBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgPSB7XG4gICAgY2FsbGJhY2ssXG4gICAgaW5wdXQsXG4gICAgLi4uKGNvbnRleHRJZCAhPT0gdW5kZWZpbmVkICYmIHsgY29udGV4dElkOiBTdHJpbmcoY29udGV4dElkKSB9KVxuICB9O1xuXG4gIGNvbnN0IGV4cHJlc3Npb24gPSBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwobmFtZXNwYWNlQ2FsbFBhcmFtcyk7XG5cbiAgY29uc3QgcmVzdWx0U3RyaW5nID0gYXdhaXQgdHJhbnNwb3J0LmV2YWx1YXRlKGV4cHJlc3Npb24sIHsgY3dkIH0pO1xuXG4gIGlmIChyZXN1bHRTdHJpbmcgPT09ICcnIHx8IHJlc3VsdFN0cmluZyA9PT0gTk9fT1VUUFVUKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBSZXN1bHQ7XG4gIH1cblxuICBsZXQgZW52ZWxvcGU6IEV2YWxSZXN1bHRFbnZlbG9wZTtcbiAgdHJ5IHtcbiAgICBlbnZlbG9wZSA9IEpTT04ucGFyc2UocmVzdWx0U3RyaW5nKSBhcyBFdmFsUmVzdWx0RW52ZWxvcGU7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IE9ic2lkaWFuIHJldHVybmVkIG5vbi1KU09OIG91dHB1dDogJHtyZXN1bHRTdHJpbmd9YCk7XG4gIH1cblxuICBpZiAoJ3R5cGUnIGluIGVudmVsb3BlKSB7XG4gICAgaWYgKGVudmVsb3BlLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIC8vIFJld3JpdGUgYmFyZS1vcmlnaW4gbG9jYWxob3N0IHN0YWNrIGZyYW1lcyBsaWtlIFwiKGh0dHA6Ly9sb2NhbGhvc3QvOjkxNTozMilcIlxuICAgICAgLy8gU28gVml0ZXN0J3Mgc291cmNlLW1hcCByZXNvbHZlciB3b24ndCBleHRyYWN0IFwiL1wiIGFzIHRoZSBmaWxlIHBhdGggYW5kIGNyYXNoXG4gICAgICAvLyBXaXRoIEVJU0RJUiB3aGVuIGl0IHRyaWVzIHRvIHJlYWRGaWxlU3luYyBvbiB0aGUgcm9vdCBkaXJlY3RvcnkuXG4gICAgICBjb25zdCBzYW5pdGl6ZWREZXRhaWwgPSBlbnZlbG9wZS52YWx1ZVxuICAgICAgICAucmVwbGFjZUFsbCgvXFwoaHR0cHM/OlxcL1xcL2xvY2FsaG9zdFxcLzooPzxsaW5lPlxcZCkvZywgJyhvYnNpZGlhbi13ZWJ2aWV3OiQ8bGluZT4nKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IEVycm9yIGluc2lkZSBPYnNpZGlhbjpcXG4ke3Nhbml0aXplZERldGFpbH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIFJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBlbnZlbG9wZS52YWx1ZSBhcyBSZXN1bHQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFnQkEsU0FBUyxrQkFBa0I7QUFDM0IsT0FBTyxhQUFhO0FBU3BCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw2QkFBNkI7QUFDdEMsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyw0QkFBNEI7QUEyQnJDLE1BQU0sWUFBWTtBQW1rQmxCLGVBQXNCLGVBQ3BCLFFBQ2lCO0FBRWpCLFFBQU0sRUFBRSxVQUFVLFdBQVcsUUFBUSxDQUFDLEdBQUcsNEJBQTRCLE9BQU8sV0FBVyxtQkFBbUIsVUFBVSxJQUFJO0FBQ3hILFFBQU0sTUFBTSxhQUFhLGFBQWEsS0FBSyxRQUFRLElBQUk7QUFHdkQsTUFBSSxjQUFjLFVBQWEsQ0FBQyxXQUFXLFNBQVMsR0FBRztBQUNyRCxVQUFNLElBQUksTUFBTSw4QkFBOEIsU0FBUyxFQUFFO0FBQUEsRUFDM0Q7QUFFQSxRQUFNLFlBQVkscUJBQXFCLE1BQU0scUJBQXFCLG9CQUFvQixDQUFDO0FBRXZGLE1BQUksQ0FBQywyQkFBMkI7QUFDOUIsVUFBTSxVQUFVLGVBQWUsR0FBRztBQUFBLEVBQ3BDO0FBRUEsUUFBTSw0QkFBNEIsV0FBVyxHQUFHO0FBRWhELFFBQU0sc0JBQW1EO0FBQUEsSUFDdkQ7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFJLGNBQWMsVUFBYSxFQUFFLFdBQVcsT0FBTyxTQUFTLEVBQUU7QUFBQSxFQUNoRTtBQUVBLFFBQU0sYUFBYSxzQkFBc0IsbUJBQW1CO0FBRTVELFFBQU0sZUFBZSxNQUFNLFVBQVUsU0FBUyxZQUFZLEVBQUUsSUFBSSxDQUFDO0FBRWpFLE1BQUksaUJBQWlCLE1BQU0saUJBQWlCLFdBQVc7QUFDckQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0osTUFBSTtBQUNGLGVBQVcsS0FBSyxNQUFNLFlBQVk7QUFBQSxFQUNwQyxRQUFRO0FBQ04sVUFBTSxJQUFJLE1BQU0sc0RBQXNELFlBQVksRUFBRTtBQUFBLEVBQ3RGO0FBRUEsTUFBSSxVQUFVLFVBQVU7QUFDdEIsUUFBSSxTQUFTLFNBQVMsU0FBUztBQUk3QixZQUFNLGtCQUFrQixTQUFTLE1BQzlCLFdBQVcseUNBQXlDLDJCQUEyQjtBQUNsRixZQUFNLElBQUksTUFBTTtBQUFBLEVBQTJDLGVBQWUsRUFBRTtBQUFBLElBQzlFO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLFNBQVM7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2V2YWwtaW4tb2JzaWRpYW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFdmFsdWF0ZXMgYSBmdW5jdGlvbiBpbnNpZGUgYSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlIHZpYSBhIHBsdWdnYWJsZSB0cmFuc3BvcnQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgTW9kaWZpZXIsXG4gIFRGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1uYW1lc3BhY2UgLS0gV2UgbmVlZCB0byByZWZlcmVuY2UgYG9ic2lkaWFuYCBtb2R1bGUuXG5pbXBvcnQgdHlwZSAqIGFzIG9ic2lkaWFuIGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgQ29udGV4dEFyZ3VtZW50cyxcbiAgQ29udGV4dElkXG59IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC5tanMnO1xuXG5pbXBvcnQge1xuICBnZXRUcmFuc3BvcnRPcHRpb25zLFxuICBnZXRWYXVsdFBhdGhcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwgfSBmcm9tICcuL2dlbmVyYXRlLWZ1bmN0aW9uLWNhbGwubWpzJztcbmltcG9ydCB7IGVuc3VyZU5hbWVzcGFjZUJvb3RzdHJhcHBlZCB9IGZyb20gJy4vbmFtZXNwYWNlLWJvb3RzdHJhcC5tanMnO1xuaW1wb3J0IHsgZ2V0T3JDcmVhdGVUcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1mYWN0b3J5Lm1qcyc7XG5cbmludGVyZmFjZSBFdmFsRXJyb3JFbnZlbG9wZSB7XG4gIHR5cGU6ICdlcnJvcic7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGlzY3JpbWluYXRlZCBlbnZlbG9wZSByZXR1cm5lZCBieSB0aGUgcmVnaXN0ZXJlZCBgZXZhbFdyYXBwZXJgIGZyb20gaW5zaWRlIHRoZSBPYnNpZGlhbiBwcm9jZXNzLlxuICpcbiAqIC0gYEV2YWxFcnJvckVudmVsb3BlYCBcdTIwMTQgYGNhbGxiYWNrYCB0aHJldzsgYHZhbHVlYCBpcyB0aGUgc2VyaWFsaXplZCBlcnJvci5cbiAqIC0gYEV2YWxVbmRlZmluZWRFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYHVuZGVmaW5lZGAuXG4gKiAtIGBFdmFsVmFsdWVFbnZlbG9wZWAgXHUyMDE0IGBjYWxsYmFja2AgcmV0dXJuZWQgYSBKU09OLXNlcmlhbGl6YWJsZSB2YWx1ZS5cbiAqL1xudHlwZSBFdmFsUmVzdWx0RW52ZWxvcGUgPVxuICB8IEV2YWxFcnJvckVudmVsb3BlXG4gIHwgRXZhbFVuZGVmaW5lZEVudmVsb3BlXG4gIHwgRXZhbFZhbHVlRW52ZWxvcGU7XG5cbmludGVyZmFjZSBFdmFsVW5kZWZpbmVkRW52ZWxvcGUge1xuICB0eXBlOiAndW5kZWZpbmVkJztcbn1cblxuaW50ZXJmYWNlIEV2YWxWYWx1ZUVudmVsb3BlIHtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbmNvbnN0IE5PX09VVFBVVCA9ICcobm8gb3V0cHV0KSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5jbGlja0VsZW1lbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrRWxlbWVudFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIGNsaWNrLiBUaGUgcG9pbnRlciBpcyBtb3ZlZCB0byBpdHMgY2VudGVyLiBUaGlzIGlzIGEgbGl2ZVxuICAgKiByZW5kZXJlciBET00gbm9kZSBcdTIwMTQgdGhlIGNhbGxiYWNrIHJ1bnMgaW4tcmVuZGVyZXIsIHNvIG5vIGNyb3NzLXByb2Nlc3NcbiAgICogc2VyaWFsaXphdGlvbiBpcyBuZWVkZWQgKHNhbWUgYXMge0BsaW5rIFR5cGVJbnRvRWRpdG9yUGFyYW1zLmVkaXRvcn0pLlxuICAgKi9cbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuY2xpY2tNb3VzZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpY2tNb3VzZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbW91c2UgYnV0dG9uIHRvIHByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJ2xlZnQnYFxuICAgKi9cbiAgcmVhZG9ubHkgYnV0dG9uPzogTW91c2VCdXR0b247XG5cbiAgLyoqXG4gICAqIFRoZSBtb2RpZmllciBrZXlzIHRvIGhvbGQsIHVzaW5nIE9ic2lkaWFuJ3Mge0BsaW5rIE1vZGlmaWVyfSBuYW1lcy4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICByZWFkb25seSBtb2RpZmllcnM/OiByZWFkb25seSBNb2RpZmllcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgeCBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBjbGljayBhdC5cbiAgICovXG4gIHJlYWRvbmx5IHg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHkgY29vcmRpbmF0ZSAod2ViLWNvbnRlbnRzIERJUCkgdG8gY2xpY2sgYXQuXG4gICAqL1xuICByZWFkb25seSB5OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29tbW9uIGFyZ3VtZW50cyBhdXRvbWF0aWNhbGx5IHByb3ZpZGVkIHRvIGV2ZXJ5IHtAbGluayBldmFsSW5PYnNpZGlhbn0gY2FsbGJhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uQXJndW1lbnRzIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiB7QGxpbmsgQXBwfSBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIGxpYnJhcnkgYmFnIGluamVjdGVkIGludG8gZXZlcnkgY2FsbGJhY2sgXHUyMDE0IHNlZSB7QGxpbmsgTGlifS5cbiAgICpcbiAgICogTmV2ZXIgZW1wdHk6IHRoZSBoYXJuZXNzIHByZS1wb3B1bGF0ZXMgYSAqKmJhc2UqKiBzZXQgb2YgcmVuZGVyZXItZHJpdmluZ1xuICAgKiBoZWxwZXJzICh0cnVzdGVkIGlucHV0IFx1MjAxNCBgdHlwZUludG9FZGl0b3JgIC8gYHByZXNzS2V5YCAvIGBtb3ZlTW91c2VgIC9cbiAgICogYGNsaWNrTW91c2VgIC8gYGhvdmVyRWxlbWVudGAgLyBgdW5ob3ZlckVsZW1lbnRgIC8gYGNsaWNrRWxlbWVudGAgXHUyMDE0IHBsdXNcbiAgICogYHdhaXRVbnRpbGAsIGBjcmVhdGVOb3RlYCBhbmQgYG9wZW5TZXR0aW5nc1RhYmApLCBhbmQgcHJvdmlkZXIgcGFja2FnZXNcbiAgICogKGNoaWVmbHkgYG9ic2lkaWFuLWRldi11dGlsc2ApIGBPYmplY3QuYXNzaWduYCB0aGVpciB3aG9sZSByZW5kZXJlci1zYWZlXG4gICAqIGxpYnJhcnkgb24gdG9wIHZpYSB7QGxpbmsgcmVnaXN0ZXJMaWJSZXNvbHZlcn0uIEEgc2VyaWFsaXplZCBjbG9zdXJlIHJlYWNoZXNcbiAgICogZXZlcnkgc2hhcmVkIGhlbHBlciB0aHJvdWdoIGBsaWJgIFx1MjAxNCBgbGliLnR5cGVJbnRvRWRpdG9yKHsgZWRpdG9yLCB0ZXh0IH0pYCxcbiAgICogYGxpYi5nZXRGaWxlT3JOdWxsKHsgYXBwLCBcdTIwMjYgfSlgIFx1MjAxNCBpbnN0ZWFkIG9mIGltcG9ydGluZyBvciBoYW5kLXJvbGxpbmcgdGhlbS5cbiAgICovXG4gIGxpYjogTGliO1xuXG4gIC8qKlxuICAgKiBUaGUgYG9ic2lkaWFuYCBtb2R1bGUsIHJlc29sdmVkIGF0IHJ1bnRpbWUgaW5zaWRlIHRoZSBPYnNpZGlhbiBwcm9jZXNzLlxuICAgKi9cbiAgb2JzaWRpYW5Nb2R1bGU6IHR5cGVvZiBvYnNpZGlhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLmNyZWF0ZU5vdGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5vdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIG5vdGUncyBjb250ZW50LiBUaGlzIGV4YWN0IHN0cmluZyBpcyB3aGF0IHRoZSBjcmVhdGVkIG5vdGUgaXMgcmVhZCBiYWNrXG4gICAqIGFnYWluc3QsIHNvIGl0IGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgc3VjY2Vzc2Z1bCB3cml0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggdG8gY3JlYXRlLCBleHRlbnNpb24gaW5jbHVkZWQuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGV2YWxJbk9ic2lkaWFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCBleHRlbmRzIEdlbmVyaWNPYmplY3QsIFJlc3VsdCwgVENvbnRleHRJZCBleHRlbmRzIENvbnRleHRJZDx1bmtub3duPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4ge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGluIHRoZSBPYnNpZGlhbiBjb250ZXh0LlxuICAgKi9cbiAgY2FsbGJhY2soaW5wdXQ6IENvbW1vbkFyZ3VtZW50cyAmIENvbnRleHRBcmd1bWVudHM8VENvbnRleHRJZD4gJiBJbnB1dCk6IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogQSB7QGxpbmsgQ29udGV4dElkfSBsaW5raW5nIHRoaXMgY2FsbCB0byBhIHBlcnNpc3RlbnQgc3RvcmUgb24gYHdpbmRvd2BcbiAgICogaW4gdGhlIE9ic2lkaWFuIHByb2Nlc3MuIFRoZSBjYWxsYmFjayByZWNlaXZlcyBhIHR5cGVkIGBjb250ZXh0YCBvYmplY3RcbiAgICogdGhhdCBzdXJ2aXZlcyBhY3Jvc3MgY2FsbHMgc2hhcmluZyB0aGUgc2FtZSBJRC5cbiAgICpcbiAgICogV2hlbiBvbWl0dGVkLCBgY29udGV4dGAgaXMgYSBmcmVzaCBlbXB0eSBvYmplY3QgZWFjaCBjYWxsLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dElkPzogVENvbnRleHRJZDtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24uIFZhbHVlcyBtYXkgaW5jbHVkZSBmdW5jdGlvbnMgXHUyMDE0XG4gICAqIHRoZXkgYXJlIHNlcmlhbGl6ZWQgdmlhIGB0b1N0cmluZygpYC5cbiAgICovXG4gIHJlYWRvbmx5IGlucHV0PzogSW5wdXQ7XG5cbiAgLyoqXG4gICAqIFNraXBzIHByZS1mbGlnaHQgY2hlY2tzICh2YXVsdCByZWdpc3RyYXRpb24sIENMSSBhdmFpbGFiaWxpdHkpLlxuICAgKiBVc2VkIGludGVybmFsbHkgYnkgdmF1bHQgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwUHJlZmxpZ2h0Q2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIHRyYW5zcG9ydCBmb3IgdGhpcyBjYWxsLiBXaGVuIG9taXR0ZWQsIHVzZXMgdGhlIHRyYW5zcG9ydFxuICAgKiBjb25maWd1cmVkIHZpYSB0aGUgY29udGV4dCBwcm92aWRlciAoc2V0IGJ5IHRoZSBmcmFtZXdvcmsgYWRhcHRlcidzIGdsb2JhbCBzZXR1cCkuXG4gICAqL1xuICByZWFkb25seSB0cmFuc3BvcnQ/OiBPYnNpZGlhblRyYW5zcG9ydDtcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIE9ic2lkaWFuIHZhdWx0LiBEZWZhdWx0cyB0byBgcHJvY2Vzcy5jd2QoKWAuXG4gICAqL1xuICByZWFkb25seSB2YXVsdFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBwbGFpbiBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cy5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDb21tb25Bcmd1bWVudHMuaG92ZXJFbGVtZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3ZlckVsZW1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gaG92ZXIuIFRoZSBwb2ludGVyIGlzIG1vdmVkIHRvIGl0cyBjZW50ZXIuIFRoaXMgaXMgYSBsaXZlXG4gICAqIHJlbmRlcmVyIERPTSBub2RlIFx1MjAxNCB0aGUgY2FsbGJhY2sgcnVucyBpbi1yZW5kZXJlciwgc28gbm8gY3Jvc3MtcHJvY2Vzc1xuICAgKiBzZXJpYWxpemF0aW9uIGlzIG5lZWRlZCAoc2FtZSBhcyB7QGxpbmsgVHlwZUludG9FZGl0b3JQYXJhbXMuZWRpdG9yfSkuXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBUaGUgc2hhcmVkIGxpYnJhcnkgYmFnIGluamVjdGVkIGludG8gZXZlcnkge0BsaW5rIGV2YWxJbk9ic2lkaWFufSBjYWxsYmFjayBhc1xuICoge0BsaW5rIENvbW1vbkFyZ3VtZW50cy5saWJ9LlxuICpcbiAqIFR3byBsYXllcnMgY29tcG9zZSBpbnRvIHRoaXMgb25lIGJhZy4gVGhlICoqYmFzZSoqIFx1MjAxNCB0aGUgaGFybmVzcy1wcm92aWRlZFxuICogcmVuZGVyZXItZHJpdmluZyBoZWxwZXJzIGRlY2xhcmVkIGJlbG93ICh0aGUgdHJ1c3RlZC1pbnB1dCBwcmltaXRpdmVzIGFuZFxuICoge0BsaW5rIExpYi53YWl0VW50aWx9KSBcdTIwMTQgaXMgYWx3YXlzIHByZXNlbnQuIE9uIHRvcCwgcHJvdmlkZXIgcGFja2FnZXMgcmVnaXN0ZXJcbiAqIGEgcmVuZGVyZXItc2lkZSByZXNvbHZlciB2aWEge0BsaW5rIHJlZ2lzdGVyTGliUmVzb2x2ZXJ9IHRvIGBPYmplY3QuYXNzaWduYFxuICogdGhlaXIgd2hvbGUgcmVuZGVyZXItc2FmZSBsaWJyYXJ5IGF0IHJ1bnRpbWUsIGFuZCBhdWdtZW50IHRoaXMgKiphdWdtZW50YWJsZSoqXG4gKiBpbnRlcmZhY2UgKHRoZSBgaTE4bmV4dGAgYEN1c3RvbVR5cGVPcHRpb25zYCBpZGlvbSkgdmlhXG4gKiBgZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnYCB0byB0eXBlIGl0LiBNdWx0aXBsZSBwcm92aWRlcnNcbiAqIGNvbXBvc2U6IHRoZWlyIGV4cG9ydHMgbWVyZ2UgYXQgcnVudGltZSBhbmQgdGhlaXIgYXVnbWVudGF0aW9ucyBtZXJnZSBpbiB0aGVcbiAqIHR5cGUgc3lzdGVtIChgaW50ZXJmYWNlIExpYiBleHRlbmRzIFx1MjAyNmApLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZGVjbGFyZSBtb2R1bGUgJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnIHtcbiAqICAgaW50ZXJmYWNlIExpYiBleHRlbmRzICh0eXBlb2YgaW1wb3J0KCdvYnNpZGlhbi1kZXYtdXRpbHMvX19tZXJnZWQnKSkge31cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpYiB7XG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGNlbnRlciBvZiBhbiBlbGVtZW50IHVzaW5nICoqdHJ1c3RlZCoqIHBvaW50ZXIgaW5wdXQgXHUyMDE0IEVsZWN0cm9uJ3NcbiAgICogYHNlbmRJbnB1dEV2ZW50YCBvbiBkZXNrdG9wLCBhIENEUCB0b3VjaCB0YXAgaW4gdGhlIFdlYlZpZXcgb24gbW9iaWxlLlxuICAgKlxuICAgKiBUaGUgZWxlbWVudC1yZWxhdGl2ZSBjb3VudGVycGFydCBvZiB7QGxpbmsgTGliLmNsaWNrTW91c2V9LCBtaXJyb3JpbmcgdGhlXG4gICAqIHtAbGluayBMaWIubW92ZU1vdXNlfSAvIHtAbGluayBMaWIuaG92ZXJFbGVtZW50fSBzcGxpdC4gVXNlXG4gICAqIHtAbGluayBMaWIuY2xpY2tNb3VzZX0gZGlyZWN0bHkgd2hlbiB0aGUgcG9pbnQgdG8gY2xpY2sgaXMgKipub3QqKiB0aGVcbiAgICogZWxlbWVudCdzIGNlbnRlciBcdTIwMTQgdGhlIG1hcmtkb3duIGVkaXRvcidzIG1hcmdpbiwgZm9yIGluc3RhbmNlLCBsaWVzIGluc2lkZVxuICAgKiBgY20uc2Nyb2xsRE9NYCBidXQgb3V0c2lkZSBgLmNtLXNpemVyYCwgc28gbm8gZWxlbWVudCdzIGNlbnRlciBsYW5kcyBvbiBpdC5cbiAgICpcbiAgICogKipNdXN0IGJlIGF3YWl0ZWQuKiogT24gbW9iaWxlIHRoZSBpbmplY3Rpb24gaXMgYSByb3VuZC10cmlwIHRvIHRoZSBob3N0IFx1MjAxNFxuICAgKiB0aGUgcmVuZGVyZXIgY2Fubm90IHByb2R1Y2UgYSB0cnVzdGVkIGV2ZW50IGl0c2VsZiBcdTIwMTQgc28gYSBtaXNzaW5nIGBhd2FpdGBcbiAgICogd291bGQgbGV0IHRoZSBhc3NlcnRpb24gcnVuIGJlZm9yZSB0aGUgY2xpY2sgbGFuZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGVsZW1lbnQgdG8gY2xpY2ssIHRoZSBidXR0b24gdG8gcHJlc3MgYW5kIGFueSBtb2RpZmllcnNcbiAgICogICB0byBob2xkLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGNsaWNrIGhhcyBiZWVuIGluamVjdGVkLlxuICAgKi9cbiAgY2xpY2tFbGVtZW50KHRoaXM6IHZvaWQsIHBhcmFtczogQ2xpY2tFbGVtZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogQ2xpY2tzIGF0IHRoZSBnaXZlbiB3ZWItY29udGVudHMgY29vcmRpbmF0ZXMgdXNpbmcgKip0cnVzdGVkKiogRWxlY3Ryb25cbiAgICogcG9pbnRlciBpbnB1dCwgc28gQ2hyb21pdW0gc3ludGhlc2l6ZXMgYSByZWFsIGBjbGlja2AgKG9yIGBjb250ZXh0bWVudWAsXG4gICAqIGZvciB0aGUgcmlnaHQgYnV0dG9uKSB3aXRoIGBpc1RydXN0ZWQgPT09IHRydWVgLlxuICAgKlxuICAgKiBUaGlzIGlzIHdoYXQgYGVsZW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnY2xpY2snKSlgIGNhbm5vdCBkbzpcbiAgICogT2JzaWRpYW4gYW5kIENvZGVNaXJyb3IgZ2F0ZSBvbiBgaXNUcnVzdGVkYCwgc28gYSBkaXNwYXRjaGVkIGV2ZW50IHNpbGVudGx5XG4gICAqIGV4ZXJjaXNlcyBub3RoaW5nIHdoaWxlIHRoZSB0ZXN0IHN0aWxsIHBhc3NlcyB3aGF0ZXZlciB3ZWFrZXIgYXNzZXJ0aW9uIGl0XG4gICAqIG1ha2VzLiBPYnNpZGlhbiAxLjEzLjcncyBtYXJrZG93biB2aWV3cG9ydCAobWFyZ2luKSBtZW51LCBmb3IgZXhhbXBsZSxcbiAgICogb3BlbnMgZnJvbSBhIGBjbS5zY3JvbGxET01gIGBjb250ZXh0bWVudWAgbGlzdGVuZXIgZ3VhcmRlZCBieVxuICAgKiBgZS5pc1RydXN0ZWRgLCB3aGljaCBhIGRpc3BhdGNoZWQgZXZlbnQgbmV2ZXIgZ2V0cyBwYXN0LlxuICAgKlxuICAgKiBJdCBpcyB0aGUgbG93LWxldmVsIHByaW1pdGl2ZTogYSBzaW5nbGUgdHJ1c3RlZCBgbW91c2VNb3ZlYCBcdTIxOTIgYG1vdXNlRG93bmAgXHUyMTkyXG4gICAqIGBtb3VzZVVwYCBhdCBvbmUgcG9pbnQsIHdpdGggbm8gd2FpdGluZyBmb3IgYW55IGVmZmVjdCAoY2FsbGVycyBwb2xsIHRoZWlyXG4gICAqIG93biByZWFkaW5lc3Mgc2lnbmFsKS4gVGhlIGxlYWRpbmcgbW92ZSBpcyB3aGF0IHB1dHMgdGhlIHBvaW50ZXIgb3ZlciB0aGVcbiAgICogaGl0LXRlc3QgdGFyZ2V0IGJlZm9yZSB0aGUgYnV0dG9uIGdvZXMgZG93bi4gUHJlZmVyXG4gICAqIHtAbGluayBMaWIuY2xpY2tFbGVtZW50fSBmb3IgZWxlbWVudC1yZWxhdGl2ZSBjbGlja3MuXG4gICAqXG4gICAqIEEgcmVhbCBjb250ZXh0IG1lbnUgYWN0dWFsbHkgb3BlbnMsIHNvIGEgc3VpdGUgZHJpdmluZyBhIHJpZ2h0IGNsaWNrIG11c3RcbiAgICogY2xvc2UgaXQgKG9yIHJlbW92ZSB0aGUgbGVmdG92ZXIgYC5tZW51YCBlbGVtZW50KSBiZWZvcmUgdGhlIG5leHQgdGVzdC5cbiAgICpcbiAgICogKipPbiBtb2JpbGUqKiB0aGUgYnV0dG9uIG1vZGVsIGRvZXMgbm90IHN1cnZpdmUgdGhlIHBvcnQ6IHRvdWNoIGhhcyBub1xuICAgKiBidXR0b25zLCBzbyBgJ2xlZnQnYCAodGhlIGRlZmF1bHQpIGlzIGEgKip0YXAqKiwgYCdyaWdodCdgIGlzIHRoZVxuICAgKiAqKmxvbmctcHJlc3MqKiB0aGF0IG9wZW5zIE9ic2lkaWFuIE1vYmlsZSdzIGNvbnRleHQgbWVudSwgYW5kIGAnbWlkZGxlJ2BcbiAgICogdGhyb3dzIFx1MjAxNCB0aGVyZSBpcyBubyBnZXN0dXJlIGZvciBpdCwgYW5kIGludmVudGluZyBvbmUgd291bGQgYmUgd29yc2UgdGhhblxuICAgKiBzYXlpbmcgc28uIFRoZSBjb29yZGluYXRlcyBhcmUgQ1NTIHBpeGVscyBpbiB0aGUgV2ViVmlldydzIG93biB2aWV3cG9ydCxcbiAgICogd2hpY2ggaXMgd2hhdCBDRFAgdGFrZXMsIHNvIGBkZXZpY2VQaXhlbFJhdGlvYCBuZXZlciBlbnRlcnMgdGhlIHBpY3R1cmUuXG4gICAqXG4gICAqICoqTXVzdCBiZSBhd2FpdGVkKiogXHUyMDE0IHNlZSB7QGxpbmsgTGliLmNsaWNrRWxlbWVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgd2ViLWNvbnRlbnRzIERJUCBjb29yZGluYXRlcyB0byBjbGljayBhdCwgdGhlIGJ1dHRvbiB0b1xuICAgKiAgIHByZXNzIGFuZCBhbnkgbW9kaWZpZXJzIHRvIGhvbGQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgY2xpY2sgaGFzIGJlZW4gaW5qZWN0ZWQuXG4gICAqL1xuICBjbGlja01vdXNlKHRoaXM6IHZvaWQsIHBhcmFtczogQ2xpY2tNb3VzZVBhcmFtcyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBub3RlIGFuZCBkb2VzIG5vdCByZXR1cm4gdW50aWwgaXRzIGNvbnRlbnQgaXMgdmVyaWZpYWJseSBvblxuICAgKiBkaXNrLCByZXdyaXRpbmcgaXQgaWYgaXQgaXMgbm90LlxuICAgKlxuICAgKiBVc2UgdGhpcyBpbnN0ZWFkIG9mIGBhcHAudmF1bHQuY3JlYXRlYCBpbiBhbnkgc3VpdGUgdGhhdCBtYXkgcnVuIG9uXG4gICAqIEFuZHJvaWQuIFRoZSBlbXVsYXRvciB0cmFuc3BvcnQgbG9zZXMgcm91Z2hseSAqKjAuOSAlKiogb2YgYHZhdWx0LmNyZWF0ZWBcbiAgICogd3JpdGVzIChtZWFzdXJlZDogNyBsb3N0IGluIDgwMCBjcmVhdGVzKTogdGhlIGZpbGUgbGFuZHMgKiowIGJ5dGVzKiogb25cbiAgICogZGlzayB3aGlsZSBPYnNpZGlhbidzIGluLW1lbW9yeSBgVEZpbGUuc3RhdGAgcmVwb3J0cyB0aGUgZnVsbCBieXRlIGNvdW50LFxuICAgKiBhbmQgaXQgZG9lcyBub3QgaGVhbCBvbiBpdHMgb3duLiBBIHN1aXRlIGRvaW5nIH4zNCBjcmVhdGVzIHBlciBydW5cbiAgICogdGhlcmVmb3JlIGhhcyBhIH4yNiAlIGNoYW5jZSBvZiBhdCBsZWFzdCBvbmUgbG9zdCB3cml0ZSwgYW5kIHdoaWNoZXZlciB0ZXN0XG4gICAqIGxvc2VzIHRoYXQgbG90dGVyeSBmYWlscyBvbiBhIGB3YWl0VW50aWxgIGZvciBjb250ZW50IHRoYXQgd2FzIG5ldmVyXG4gICAqIHdyaXR0ZW4gXHUyMDE0IHdoaWNoIGlzIHdoeSBpdCByZWFkcyBhcyBhbiB1bnJlbGF0ZWQgcGVyLXRlc3QgZmxha2UgcmF0aGVyIHRoYW5cbiAgICogb25lIHNoYXJlZCBjYXVzZS5cbiAgICpcbiAgICogVmVyaWZpY2F0aW9uIGlzIGJ5ICoqcmVhZGluZyB0aGUgbm90ZSBiYWNrKiosIG5ldmVyIGJ5IGluc3BlY3RpbmdcbiAgICogYFRGaWxlLnN0YXRgOiBgc3RhdGAgaXMgZXhhY3RseSB0aGUgZmllbGQgdGhhdCBsaWVzIGhlcmUuIEEgcmV3cml0ZSB0aHJvdWdoXG4gICAqIGB2YXVsdC5tb2RpZnlgIHdpdGggdGhlIHNhbWUgY29udGVudCBsYW5kcyBjb3JyZWN0bHkgKGFsc28gbWVhc3VyZWQpLCBzbyBhXG4gICAqIGxvc3Qgd3JpdGUgY29zdHMgYSByZXRyeSByYXRoZXIgdGhhbiBhIGZhaWx1cmUuIEEgbm90ZSB3aG9zZSBjb250ZW50IHN0aWxsXG4gICAqIGRvZXMgbm90IG1hdGNoIGFmdGVyIHRoZSBib3VuZGVkIHJldHJpZXMgdGhyb3dzLCBuYW1pbmcgdGhlIHBhdGggYW5kIGJvdGhcbiAgICogbGVuZ3Rocywgc28gYSBnZW51aW5lbHkgYnJva2VuIHdyaXRlIGZhaWxzIGxvdWRseSBpbnN0ZWFkIG9mIHNwaW5uaW5nLlxuICAgKlxuICAgKiBIYXJtbGVzcyBldmVyeXdoZXJlIGVsc2UgXHUyMDE0IG9uIGEgdHJhbnNwb3J0IHRoYXQgZG9lcyBub3QgbG9zZSB3cml0ZXMgdGhlXG4gICAqIHJlYWQtYmFjayBtYXRjaGVzIGZpcnN0IHRpbWUgYW5kIG5vdGhpbmcgaXMgcmV3cml0dGVuLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG5vdGUgcGF0aCBhbmQgY29udGVudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIGZpbGUsIG9uY2UgaXRzIGNvbnRlbnRcbiAgICogICBpcyBjb25maXJtZWQuXG4gICAqL1xuICBjcmVhdGVOb3RlKHRoaXM6IHZvaWQsIHBhcmFtczogQ3JlYXRlTm90ZVBhcmFtcyk6IFByb21pc2U8VEZpbGU+O1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgbW91c2UgcG9pbnRlciB0byB0aGUgY2VudGVyIG9mIGFuIGVsZW1lbnQgdXNpbmcgKip0cnVzdGVkKipcbiAgICogRWxlY3Ryb24gcG9pbnRlciBpbnB1dCwgdGhlbiBwb2xscyB1bnRpbCB0aGUgZWxlbWVudCBhY3R1YWxseSBtYXRjaGVzXG4gICAqIGA6aG92ZXJgLlxuICAgKlxuICAgKiBCZWNhdXNlIHRoZSBtb3ZlIGlzIHRydXN0ZWQgKHNlZSB7QGxpbmsgTGliLm1vdmVNb3VzZX0pLCB0aGUgcmVhbCBgOmhvdmVyYFxuICAgKiBzdGF0ZSB0YWtlcyBlZmZlY3QgaW4gdGhlIENTUyBlbmdpbmUgXHUyMDE0IHJlYWwgdGhlbWUgYHZhcigpYCB2YWx1ZXMgYW5kIHJlYWxcbiAgICogY29tcG9zaXRpbmcgXHUyMDE0IGluc3RlYWQgb2YgYSBoYW5kLXNpbXVsYXRlZCBjYXNjYWRlLiBJdCBwb2xscyB0aGUgbGl2ZVxuICAgKiBgZWxlbWVudC5tYXRjaGVzKCc6aG92ZXInKWAgc3RhdGUgKG5vdCBhIGZpeGVkIGRlbGF5KSwgc28gaXQgaXMgcm9idXN0IHVuZGVyXG4gICAqIHNoYXJlZC1pbnN0YW5jZSBsb2FkLiBJdCB0YXJnZXRzIHRoZSBzaW5nbGUgc2hhcmVkIHdpbmRvdydzICoqZ2xvYmFsKipcbiAgICogcG9pbnRlciwgc28gb25seSBvbmUgZWxlbWVudCBpcyBob3ZlcmVkIGF0IGEgdGltZS5cbiAgICpcbiAgICogKipEZXNrdG9wIG9ubHkgXHUyMDE0IGl0IHRocm93cyBvbiBtb2JpbGUqKiwgZGVsaWJlcmF0ZWx5OiB0b3VjaCBpbnB1dCBoYXMgbm9cbiAgICogaG92ZXIgc3RhdGUsIHNvIHRoZXJlIGlzIG5vdGhpbmcgZmFpdGhmdWwgdG8gaW5qZWN0LiBBIHNpbGVudCBuby1vcCB3b3VsZFxuICAgKiBsZWF2ZSBhIHRlc3QgYXNzZXJ0aW5nIGFnYWluc3QgYSBob3ZlciB0aGF0IG5ldmVyIGhhcHBlbmVkLCB3aGljaCBpcyB0aGVcbiAgICogZXhhY3QgZmFsc2UtY29uZmlkZW5jZSBmYWlsdXJlIHRydXN0ZWQgaW5wdXQgZXhpc3RzIHRvIHByZXZlbnQuIEJyYW5jaCBvblxuICAgKiBgUGxhdGZvcm0uaXNEZXNrdG9wQXBwYCwgb3IgZHJpdmUgdGhlIGVsZW1lbnQgd2l0aCB7QGxpbmsgTGliLmNsaWNrRWxlbWVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWxlbWVudCB0byBob3Zlci5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBlbGVtZW50IG1hdGNoZXMgYDpob3ZlcmAuXG4gICAqL1xuICBob3ZlckVsZW1lbnQodGhpczogdm9pZCwgcGFyYW1zOiBIb3ZlckVsZW1lbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgbW91c2UgcG9pbnRlciB0byB0aGUgZ2l2ZW4gd2ViLWNvbnRlbnRzIGNvb3JkaW5hdGVzIHVzaW5nIGFcbiAgICogKip0cnVzdGVkKiogRWxlY3Ryb24gcG9pbnRlciBtb3ZlLlxuICAgKlxuICAgKiBBIHRydXN0ZWQgbW92ZSAoaW5qZWN0ZWQgdmlhIEVsZWN0cm9uJ3MgYHdlYkNvbnRlbnRzLnNlbmRJbnB1dEV2ZW50YClcbiAgICogdXBkYXRlcyB0aGUgcmVhbCBwb2ludGVyIHN0YXRlIGluIHRoZSBDU1MgZW5naW5lLCBzbyBgOmhvdmVyYCBydWxlc1xuICAgKiBnZW51aW5lbHkgYXBwbHkgXHUyMDE0IHVubGlrZSBgZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudCgnbW91c2VvdmVyJykpYCxcbiAgICogd2hpY2ggaXMgdW50cnVzdGVkIGFuZCBuZXZlciBzZXRzIGA6aG92ZXJgLiBJdCB0YXJnZXRzIHRoZSBzaW5nbGUgc2hhcmVkXG4gICAqIHdpbmRvdydzICoqZ2xvYmFsKiogcG9pbnRlciwgc28gb25seSBvbmUgZWxlbWVudCBpcyBob3ZlcmVkIGF0IGEgdGltZS5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbG93LWxldmVsIHByaW1pdGl2ZTogaXQgcGVyZm9ybXMgYSBzaW5nbGUgbW92ZSBhbmQgZG9lcyAqKm5vdCoqXG4gICAqIHdhaXQgZm9yIGFueSBzdGF0ZSB0byBzZXR0bGUgKGNhbGxlcnMgcG9sbCB0aGVpciBvd24gcmVhZGluZXNzIHNpZ25hbCkuXG4gICAqIFByZWZlciB7QGxpbmsgTGliLmhvdmVyRWxlbWVudH0gLyB7QGxpbmsgTGliLnVuaG92ZXJFbGVtZW50fSBmb3JcbiAgICogZWxlbWVudC1yZWxhdGl2ZSBtb3ZlczsgdXNlIGBtb3ZlTW91c2VgIGRpcmVjdGx5IHdoZW4gYW4gZWxlbWVudC1yZWxhdGl2ZVxuICAgKiB0YXJnZXQgZG9lcyBub3QgZml0IChlLmcuIGFuIGVsZW1lbnQgc3Bhbm5pbmcgdGhlIGZ1bGwgdmlld3BvcnQgd2lkdGgpLlxuICAgKlxuICAgKiAqKkRlc2t0b3Agb25seSBcdTIwMTQgaXQgdGhyb3dzIG9uIG1vYmlsZSoqLCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzXG4gICAqIHtAbGluayBMaWIuaG92ZXJFbGVtZW50fTogdGhlcmUgaXMgbm8gdG91Y2ggcG9pbnRlciB0byBtb3ZlLlxuICAgKlxuICAgKiAqKk11c3QgYmUgYXdhaXRlZCoqIFx1MjAxNCBzZWUge0BsaW5rIExpYi5jbGlja0VsZW1lbnR9LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHdlYi1jb250ZW50cyBESVAgY29vcmRpbmF0ZXMgdG8gbW92ZSB0by5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBtb3ZlIGhhcyBiZWVuIGluamVjdGVkLlxuICAgKi9cbiAgbW92ZU1vdXNlKHRoaXM6IHZvaWQsIHBhcmFtczogTW92ZU1vdXNlUGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogT3BlbnMgT2JzaWRpYW4ncyBzZXR0aW5ncyBtb2RhbCBvbiBhIGdpdmVuIHRhYiwgYW5kIGRvZXMgbm90IHJldHVybiB1bnRpbFxuICAgKiB0aGF0IHRhYiBoYXMgYWN0dWFsbHkgcmVuZGVyZWQuXG4gICAqXG4gICAqICoqVGhpcyBleGlzdHMgYmVjYXVzZSBgYXBwLnNldHRpbmcub3BlbigpYCBvbiBpdHMgb3duIGRvZXMgbm90IHdvcmsgZnJvbSBhXG4gICAqIHRlc3QuKiogYGFwcC5zZXR0aW5nLmNvbnRhaW5lckVsYCBpcyBidWlsdCBhdCBzdGFydHVwIGJ1dCBpcyBuZXZlciBpbiB0aGVcbiAgICogZG9jdW1lbnQsIGFuZCBgb3BlbigpYCBkb2VzIG5vdCBhdHRhY2ggaXQgXHUyMDE0IHNvIHRoZSBtb2RhbCBidWlsZHMgaW50byBhXG4gICAqIGRldGFjaGVkIHRyZWUsIGBvcGVuKClgIHJldHVybnMgd2l0aG91dCB0aHJvd2luZywgYW5kIGEgc2NyZWVuc2hvdCB0YWtlblxuICAgKiBhZnRlcndhcmRzIHNob3dzIHRoZSB1bnRvdWNoZWQgZG9jdW1lbnQuIFRoYXQgaXMgd2hhdCBtYWRlIHRoZSBzZXR0aW5ncyB0YWJcbiAgICogbG9vayBpbXBvc3NpYmxlIHRvIGNhcHR1cmUsIGFuZCBnb3QgcmVjb3JkZWQgYXMgc3VjaCBpbiB0d28gcGx1Z2lucy5cbiAgICpcbiAgICogVGhlIGZpeCBpcyBvbmUgc3RlcCwgYW5kIGl0cyAqKm9yZGVyIGlzIGxvYWQtYmVhcmluZyoqOiB0aGUgY29udGFpbmVyIGlzXG4gICAqIGFwcGVuZGVkIHRvIGBkb2N1bWVudC5ib2R5YCAqKmJlZm9yZSoqIGBvcGVuKClgLiBBdHRhY2hpbmcgYWZ0ZXJ3YXJkcyBpcyB0b29cbiAgICogbGF0ZSBcdTIwMTQgd2hhdGV2ZXIgdGhlIG1vZGFsIGRyZXcgb24gb3BlbiBoYXMgYWxyZWFkeSBnb25lIGludG8gdGhlIGRldGFjaGVkXG4gICAqIGNvbnRhaW5lciwgc28gaXQgZW5kcyB1cCBvbiBzY3JlZW4gc2hvd2luZyB0aGUgd3JvbmcgdGhpbmcuIFRoYXQgZmFpbHVyZVxuICAgKiBsb29rcyBsaWtlIHN1Y2Nlc3MgdW50aWwgdGhlIGNhcHR1cmVkIGZyYW1lIGlzIGV4YW1pbmVkLCB3aGljaCBpcyB0aGUgdHJhcFxuICAgKiB0aGlzIGhlbHBlciBleGlzdHMgdG8gcmVtb3ZlLlxuICAgKlxuICAgKiBSZS1hdHRhY2hpbmcgaXMgaWRlbXBvdGVudCwgc28gYSB0YWIgY2xvc2VkIHdpdGggYGFwcC5zZXR0aW5nLmNsb3NlKClgIGNhblxuICAgKiBzaW1wbHkgYmUgcmUtb3BlbmVkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHRhYiB0byBvcGVuIGFuZCBob3cgbG9uZyB0byB3YWl0IGZvciBpdCB0byByZW5kZXIuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgbmFtZXMgb2YgdGhlIHNldHRpbmcgcm93cyB0aGVcbiAgICogICB0YWIgcmVuZGVyZWQgXHUyMDE0IGJvdGggdGhlIHByb29mIGl0IHJlbmRlcmVkIGFuZCB3aGF0IGEgY2FsbGVyIGFzc2VydHMgb24uIEFcbiAgICogICB0YWIgdGhhdCBsZWdpdGltYXRlbHkgcmVuZGVycyBubyBgLnNldHRpbmctaXRlbS1uYW1lYCByb3dzIChIb3RrZXlzLCBzYXkpXG4gICAqICAgcmVzb2x2ZXMgdG8gYW4gZW1wdHkgYXJyYXkuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gdGFiIGNhcnJpZXMge0BsaW5rIE9wZW5TZXR0aW5nc1RhYlBhcmFtcy50YWJJZH0sIG9yIGlmXG4gICAqICAgdGhlIHRhYiBkb2VzIG5vdCByZW5kZXIgd2l0aGluIHRoZSB0aW1lb3V0LlxuICAgKi9cbiAgb3BlblNldHRpbmdzVGFiKHRoaXM6IHZvaWQsIHBhcmFtczogT3BlblNldHRpbmdzVGFiUGFyYW1zKTogUHJvbWlzZTxzdHJpbmdbXT47XG5cbiAgLyoqXG4gICAqIFByZXNzZXMgYSBzaW5nbGUga2V5IChvcHRpb25hbGx5IHdpdGggbW9kaWZpZXJzKSB1c2luZyAqKnRydXN0ZWQqKiBFbGVjdHJvblxuICAgKiBrZXlib2FyZCBpbnB1dCwgZmlyaW5nIHRoZSBmdWxsIHJlYWwga2V5IHBpcGVsaW5lIFx1MjAxNFxuICAgKiBga2V5ZG93bmAgXHUyMTkyIGBrZXlwcmVzc2AgXHUyMTkyIGBiZWZvcmVpbnB1dGAgXHUyMTkyIGBpbnB1dGAgXHUyMTkyIGBrZXl1cGAuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIGtleS1wcmVzcyBhbmFsb2cgb2Yge0BsaW5rIExpYi50eXBlSW50b0VkaXRvcn06IGl0IGluamVjdHMgYVxuICAgKiB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgIHNlcXVlbmNlIHZpYSBFbGVjdHJvbidzXG4gICAqIGB3ZWJDb250ZW50cy5zZW5kSW5wdXRFdmVudGAsIHNvIGl0IGlzIGRlbGl2ZXJlZCB0byB0aGUgd2luZG93J3MgRE9NLWZvY3VzZWRcbiAgICogZWxlbWVudCBhbmQgZmxvd3MgdGhyb3VnaCB0aGUgcmVhbCBpbnB1dCBwaXBlbGluZSBcdTIwMTQgdW5saWtlXG4gICAqIGBkaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KC4uLikpYCwgd2hpY2ggaXMgdW50cnVzdGVkIChgaXNUcnVzdGVkOlxuICAgKiBmYWxzZWApIGFuZCBpZ25vcmVkIGJ5IENvZGVNaXJyb3IgYW5kIG1vc3Qga2V5IGhhbmRsZXJzLiBVc2UgaXQgZm9yIHNwZWNpYWxcbiAgICoga2V5cyAoYCdFbnRlcidgLCBgJ0VzY2FwZSdgLCBgJ1RhYidgLCBhcnJvdyBrZXlzKSBhbmQgbW9kaWZpZXIgY29tYmluYXRpb25zXG4gICAqIChgU2hpZnQrRW50ZXJgLCBgQ3RybCtBYCkgdGhhdCB7QGxpbmsgTGliLnR5cGVJbnRvRWRpdG9yfSAod2hpY2ggdHlwZXNcbiAgICogcHJpbnRhYmxlIHRleHQpIGRvZXMgbm90IGNvdmVyLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBsb3ctbGV2ZWwgcHJpbWl0aXZlOiBpdCBpbmplY3RzIHRoZSBrZXkgcHJlc3MgYW5kIGRvZXMgKipub3QqKlxuICAgKiBwb2xsIGZvciBhbnkgZWZmZWN0IChhIGtleSBwcmVzcyBoYXMgbm8gdW5pdmVyc2FsIG9ic2VydmFibGUgb3V0Y29tZSBcdTIwMTRcbiAgICogYEVudGVyYCBlZGl0cyB0aGUgZG9jdW1lbnQsIGBFc2NhcGVgIGNsb3NlcyBhIG1vZGFsLCBgQXJyb3dEb3duYCBtb3ZlcyB0aGVcbiAgICogc2VsZWN0aW9uKS4gVGhlIGNhbGxlciBmb2N1c2VzIHRoZSBpbnRlbmRlZCB0YXJnZXQgZmlyc3QsIHRoZW4gYXdhaXRzIHRoZVxuICAgKiBleHBlY3RlZCBlZmZlY3QgdmlhIHtAbGluayBMaWIud2FpdFVudGlsfS4gSXQgdGFyZ2V0cyB0aGUgc2luZ2xlIHNoYXJlZFxuICAgKiB3aW5kb3cncyAqKmdsb2JhbCoqIGZvY3VzLCBzbyBvbmx5IHRoZSBET00tZm9jdXNlZCBlbGVtZW50IHJlY2VpdmVzIHRoZSBrZXkuXG4gICAqXG4gICAqICoqT24gbW9iaWxlKiogdGhlIHNhbWUgc2VxdWVuY2UgaXMgaW5qZWN0ZWQgdGhyb3VnaCB0aGUgV2ViVmlldydzIGRlYnVnZ2VyXG4gICAqIChgSW5wdXQuZGlzcGF0Y2hLZXlFdmVudGApLCB3aGljaCBpcyBlcXVhbGx5IHRydXN0ZWQuIE5hbWVkIGtleXMgKGAnRW50ZXInYCxcbiAgICogYCdFc2NhcGUnYCwgYCdUYWInYCwgYCdCYWNrc3BhY2UnYCwgYCdEZWxldGUnYCwgdGhlIGFycm93cykgYW5kIHNpbmdsZVxuICAgKiBwcmludGFibGUgY2hhcmFjdGVycyBhcmUgc3VwcG9ydGVkOyBhbnkgb3RoZXIgbXVsdGktY2hhcmFjdGVyIG5hbWUgdGhyb3dzXG4gICAqIHJhdGhlciB0aGFuIHByZXNzaW5nIG5vdGhpbmcuXG4gICAqXG4gICAqICoqTXVzdCBiZSBhd2FpdGVkKiogXHUyMDE0IHNlZSB7QGxpbmsgTGliLmNsaWNrRWxlbWVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUga2V5IHRvIHByZXNzIGFuZCBhbnkgbW9kaWZpZXJzIHRvIGhvbGQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUga2V5IHByZXNzIGhhcyBiZWVuXG4gICAqICAgaW5qZWN0ZWQuXG4gICAqL1xuICBwcmVzc0tleSh0aGlzOiB2b2lkLCBwYXJhbXM6IFByZXNzS2V5UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogVHlwZXMgdGV4dCBpbnRvIGEgQ29kZU1pcnJvciB7QGxpbmsgRWRpdG9yfSB1c2luZyAqKnRydXN0ZWQqKiBFbGVjdHJvblxuICAgKiBrZXlib2FyZCBpbnB1dC5cbiAgICpcbiAgICogVHlwaW5nIGlzIHByZXNzaW5nIGVhY2ggY2hhcmFjdGVyIGtleSBpbiB0dXJuOiB0aGlzIGZvY3VzZXMgdGhlIGVkaXRvclxuICAgKiAoY2FyZXQgdG8gZW5kKSBhbmQgcHJlc3NlcyBldmVyeSBjb2RlIHBvaW50IG9mIGB0ZXh0YCB2aWFcbiAgICoge0BsaW5rIExpYi5wcmVzc0tleX0gXHUyMDE0IHRoZSBzYW1lIHRydXN0ZWQgYGtleURvd25gIFx1MjE5MiBgY2hhcmAgXHUyMTkyIGBrZXlVcGAgYSByZWFsXG4gICAqIHVzZXIgcHJvZHVjZXMuIEVhY2gga2V5c3Ryb2tlIGlzIGRlbGl2ZXJlZCB0byB0aGUgd2luZG93J3MgRE9NLWZvY3VzZWRcbiAgICogZWxlbWVudCBhbmQgZmxvd3MgdGhyb3VnaCBDb2RlTWlycm9yJ3MgcmVhbCBpbnB1dCBwaXBlbGluZSwgc28gdGhlIHR5cGVkXG4gICAqIHRleHQgcmVhY2hlcyB0aGUgZG9jdW1lbnQgKipvbmx5IGlmIHRoZSBlZGl0b3IgZ2VudWluZWx5IGhvbGRzIGZvY3VzKiouXG4gICAqIFRoaXMgbWFrZXMgXCJ0aGUgdXNlciB0eXBlZCBpbnRvIHRoZSBlZGl0b3JcIiBhIGZhaXRoZnVsIGVuZC10by1lbmQgY2hlY2ssXG4gICAqIHVubGlrZSBgZGlzcGF0Y2hFdmVudChuZXcgS2V5Ym9hcmRFdmVudCguLi4pKWAgKHVudHJ1c3RlZCBcdTIwMTQgaWdub3JlZCBieVxuICAgKiBDb2RlTWlycm9yKSBvciBgZXhlY0NvbW1hbmQoJ2luc2VydFRleHQnKWAgKG11dGF0ZXMgdGhlIHNlbGVjdGlvbiBldmVuXG4gICAqIHdoZW4gdGhlIGVkaXRvciBpcyBub3QgZm9jdXNlZCwgbWFza2luZyBmb2N1cyBidWdzIGFzIGZhbHNlIHBvc2l0aXZlcykuXG4gICAqXG4gICAqIEFmdGVyIGluamVjdGluZyB0aGUga2V5c3Ryb2tlcyBpdCBwb2xscyB1bnRpbCB0aGUgZG9jdW1lbnQgcmVmbGVjdHMgdGhlXG4gICAqIGlucHV0LCBvciBhIGJvdW5kZWQgdGltZW91dCBlbGFwc2VzICh0aGUgZXhwZWN0ZWQgb3V0Y29tZSB3aGVuIHRoZSBlZGl0b3JcbiAgICogaXMgcmVhZC1vbmx5IGFuZCByZWplY3RzIHRoZSBpbnB1dCwgb3Igd2hlbiBmb2N1cyB3YXMgc3RvbGVuKS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBlZGl0b3IgdG8gdHlwZSBpbnRvIGFuZCB0aGUgdGV4dCB0byB0eXBlLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIGtleXN0cm9rZXMgaGF2ZSBzZXR0bGVkLlxuICAgKi9cbiAgdHlwZUludG9FZGl0b3IodGhpczogdm9pZCwgcGFyYW1zOiBUeXBlSW50b0VkaXRvclBhcmFtcyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIE1vdmVzIHRoZSBtb3VzZSBwb2ludGVyIHRvIGEgcG9pbnQganVzdCBvdXRzaWRlIGFuIGVsZW1lbnQncyBib3VuZGluZyBib3hcbiAgICogdXNpbmcgYSAqKnRydXN0ZWQqKiBFbGVjdHJvbiBwb2ludGVyIG1vdmUsIHRoZW4gcG9sbHMgdW50aWwgdGhlIGVsZW1lbnQgbm9cbiAgICogbG9uZ2VyIG1hdGNoZXMgYDpob3ZlcmAuXG4gICAqXG4gICAqIFRoZSBpbnZlcnNlIG9mIHtAbGluayBMaWIuaG92ZXJFbGVtZW50fS4gSXQgdGFyZ2V0cyB0aGUgc2luZ2xlIHNoYXJlZFxuICAgKiB3aW5kb3cncyAqKmdsb2JhbCoqIHBvaW50ZXIsIHNvIG9ubHkgb25lIGVsZW1lbnQgaXMgaG92ZXJlZCBhdCBhIHRpbWUuIFdoZW5cbiAgICogYW4gZWxlbWVudCBzcGFucyB0aGUgZnVsbCB2aWV3cG9ydCAobm8gcG9pbnQgb3V0c2lkZSBpdHMgYm94IGlzIHJlYWNoYWJsZSksXG4gICAqIHVzZSB7QGxpbmsgTGliLm1vdmVNb3VzZX0gZGlyZWN0bHkgdG8gbW92ZSB0aGUgcG9pbnRlciB0byBhIGtub3duIGVtcHR5XG4gICAqIGNvb3JkaW5hdGUgaW5zdGVhZC5cbiAgICpcbiAgICogKipEZXNrdG9wIG9ubHkgXHUyMDE0IGl0IHRocm93cyBvbiBtb2JpbGUqKiwgZm9yIHRoZSBzYW1lIHJlYXNvbiBhc1xuICAgKiB7QGxpbmsgTGliLmhvdmVyRWxlbWVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZWxlbWVudCB0byBtb3ZlIHRoZSBwb2ludGVyIGF3YXkgZnJvbS5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBlbGVtZW50IG5vIGxvbmdlciBtYXRjaGVzXG4gICAqICAgYDpob3ZlcmAuXG4gICAqL1xuICB1bmhvdmVyRWxlbWVudCh0aGlzOiB2b2lkLCBwYXJhbXM6IFVuaG92ZXJFbGVtZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogUG9sbHMgYSBwcmVkaWNhdGUgdW50aWwgaXQgYmVjb21lcyB0cnV0aHksIG9yIHJlamVjdHMgb25jZSBhIGJvdW5kZWRcbiAgICogdGltZW91dCBlbGFwc2VzLlxuICAgKlxuICAgKiBJbnRlZ3JhdGlvbi10ZXN0IGBldmFsSW5PYnNpZGlhbmAgY2FsbGJhY2tzIHJvdXRpbmVseSBuZWVkIHRvIHdhaXQgZm9yIGFuXG4gICAqIGFzeW5jaHJvbm91cyBlZmZlY3QgdG8gc2V0dGxlIChhIHZpZXcgdG8gb3BlbiwgYSBET00gbm9kZSB0byBhcHBlYXIsIGFcbiAgICogc2V0dGluZyB0byBhcHBseSkuIEJlY2F1c2UgdGhlIGNhbGxiYWNrIGlzIHNlcmlhbGl6ZWQgdmlhIGB0b1N0cmluZygpYCBhbmRcbiAgICogY2Fubm90IGltcG9ydCBtb2R1bGVzLCBpdCBjYW4ndCByZXVzZSBgb2JzaWRpYW4tZGV2LXV0aWxzYCdcbiAgICogYHJldHJ5V2l0aFRpbWVvdXRgIC8gYHJ1bldpdGhUaW1lb3V0YC4gVGhpcyBoZWxwZXIgaXMgdGhlIHNoYXJlZCwgaW5qZWN0ZWRcbiAgICogcmVwbGFjZW1lbnQgZm9yIHRoZSBwZXItY2xvc3VyZSBwb2xsIGxvb3BzIGNvbnN1bWVycyB3b3VsZCBvdGhlcndpc2VcbiAgICogaGFuZC1yb2xsLlxuICAgKlxuICAgKiBUaGUgYHByZWRpY2F0ZWAgbWF5IGJlIHN5bmNocm9ub3VzIG9yIGFzeW5jaHJvbm91cyBcdTIwMTQgaXQgaXMgYXdhaXRlZCBvbiBldmVyeVxuICAgKiBwb2xsLiBJdCBpcyBjaGVja2VkIGltbWVkaWF0ZWx5LCB0aGVuIHJlLWNoZWNrZWQgZXZlcnlcbiAgICogYGludGVydmFsSW5NaWxsaXNlY29uZHNgIHVudGlsIGl0IHJldHVybnMgdHJ1dGh5IG9yIGB0aW1lb3V0SW5NaWxsaXNlY29uZHNgXG4gICAqIGVsYXBzZXMsIGF0IHdoaWNoIHBvaW50IHRoZSByZXR1cm5lZCB7QGxpbmsgUHJvbWlzZX0gcmVqZWN0cyAodGhlIGVycm9yXG4gICAqIGluY2x1ZGVzIGBtZXNzYWdlYCB3aGVuIHByb3ZpZGVkKS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwcmVkaWNhdGUgdG8gcG9sbCBwbHVzIG9wdGlvbmFsIHRpbWVvdXQsIGludGVydmFsLCBhbmRcbiAgICogICB0aW1lb3V0IG1lc3NhZ2UuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcHJlZGljYXRlIGlzIHRydXRoeS5cbiAgICovXG4gIHdhaXRVbnRpbCh0aGlzOiB2b2lkLCBwYXJhbXM6IFdhaXRVbnRpbFBhcmFtcyk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogVGhlIG1vdXNlIGJ1dHRvbiBhIHRydXN0ZWQgY2xpY2sgcHJlc3NlcywgaW4gRWxlY3Ryb24ncyBgc2VuZElucHV0RXZlbnRgXG4gKiBzcGVsbGluZy5cbiAqL1xuZXhwb3J0IHR5cGUgTW91c2VCdXR0b24gPSAnbGVmdCcgfCAnbWlkZGxlJyB8ICdyaWdodCc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy5tb3ZlTW91c2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vdmVNb3VzZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgeCBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBtb3ZlIHRoZSBwb2ludGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgeDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgeSBjb29yZGluYXRlICh3ZWItY29udGVudHMgRElQKSB0byBtb3ZlIHRoZSBwb2ludGVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgeTogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBMaWIub3BlblNldHRpbmdzVGFifS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuU2V0dGluZ3NUYWJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBzZXR0aW5ncyB0YWIgdG8gb3BlbiBcdTIwMTQgYSBwbHVnaW4gaWQgZm9yIGEgcGx1Z2luJ3Mgb3duIHRhYiwgb3JcbiAgICogYSBjb3JlIHRhYiBpZCAoYCdlZGl0b3InYCwgYCdob3RrZXlzJ2AsIFx1MjAyNikuXG4gICAqXG4gICAqIFJlcXVpcmVkLCBiZWNhdXNlIG9wZW5pbmcgdGhlIG1vZGFsIHdpdGhvdXQgbmFtaW5nIGEgdGFiIHJlbmRlcnMgKipub3RoaW5nKipcbiAgICogb24gYSBoYXJuZXNzLW93bmVkIGluc3RhbmNlOiB0aGUgbW9kYWwgcmVzdG9yZXMgdGhlIGxhc3QgdGFiIHRoZSBwcm9maWxlXG4gICAqIHVzZWQsIGFuZCBhbiBpc29sYXRlZCBwcm9maWxlIGhhcyBuZXZlciBvcGVuZWQgb25lLCBzbyBgYWN0aXZlVGFiYCBzdGF5c1xuICAgKiBgbnVsbGAgYW5kIG5vIHJvdyBpcyBkcmF3bi4gQW4gdW5rbm93biBpZCBpcyByZWplY3RlZCBpbW1lZGlhdGVseSwgbGlzdGluZ1xuICAgKiB0aGUgaWRzIHRoYXQgZG8gZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB0YWJJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSB0aW1lIHRvIHdhaXQgZm9yIHRoZSBtb2RhbCB0byBvcGVuIGFuZCBmb3IgdGhlIHJlcXVlc3RlZCB0YWIgdG9cbiAgICogcmVuZGVyIGl0cyBjb250ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNTAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVzc0tleVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHRvIHByZXNzLCBnaXZlbiBhcyBhbiBFbGVjdHJvbiBBY2NlbGVyYXRvciBrZXkgbmFtZSBcdTIwMTQgZS5nLlxuICAgKiBgJ0VudGVyJ2AsIGAnRXNjYXBlJ2AsIGAnVGFiJ2AsIGAnQmFja3NwYWNlJ2AsIGAnRGVsZXRlJ2AsIGFuIGFycm93IGtleVxuICAgKiAoYCdVcCdgIC8gYCdEb3duJ2AgLyBgJ0xlZnQnYCAvIGAnUmlnaHQnYCksIG9yIGEgcHJpbnRhYmxlIGNoYXJhY3RlclxuICAgKiAoYCdhJ2AsIGAnMSdgKS4gVGhlIHByb2R1Y2VkIGNoYXJhY3RlciAod2hlbiB0aGUga2V5IGluc2VydHMgdGV4dCkgaXMgdGhlXG4gICAqIGxpdGVyYWwgYGtleWAgdmFsdWU7IGNhc2UtY29ycmVjdCB0ZXh0IGJlbG9uZ3MgdG9cbiAgICoge0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0sIG5vdCBhIGtleS1wcmVzcyBwcmltaXRpdmUuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1vZGlmaWVyIGtleXMgdG8gaG9sZCB3aGlsZSB0aGUga2V5IGlzIHByZXNzZWQsIHVzaW5nIE9ic2lkaWFuJ3NcbiAgICoge0BsaW5rIE1vZGlmaWVyfSBuYW1lcyAodGhlIHNhbWUgdmFsdWVzIGFzIGFuIE9ic2lkaWFuIGBIb3RrZXlgKS4gYCdNb2QnYFxuICAgKiByZXNvbHZlcyBwZXItcGxhdGZvcm0gKENtZCBvbiBtYWNPUywgQ3RybCBlbHNld2hlcmUpOyBlYWNoIGlzIG1hcHBlZCB0b1xuICAgKiBFbGVjdHJvbidzIGxvd2VyY2FzZSBgc2VuZElucHV0RXZlbnRgIG1vZGlmaWVyIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBbXWBcbiAgICovXG4gIHJlYWRvbmx5IG1vZGlmaWVycz86IHJlYWRvbmx5IE1vZGlmaWVyW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy50eXBlSW50b0VkaXRvcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZUludG9FZGl0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVkaXRvciB0byB0eXBlIGludG8uIEl0IGlzIGZvY3VzZWQgKHdpdGggdGhlIGNhcmV0IG1vdmVkIHRvIHRoZSBlbmQgb2ZcbiAgICogdGhlIGRvY3VtZW50KSBiZWZvcmUgdGhlIGtleXN0cm9rZXMgYXJlIGluamVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZWRpdG9yOiBFZGl0b3I7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHRvIHR5cGUuIEVhY2ggY29kZSBwb2ludCBpcyBwcmVzc2VkIHZpYSB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLnByZXNzS2V5fVxuICAgKiAoYSB0cnVzdGVkIGBrZXlEb3duYCBcdTIxOTIgYGNoYXJgIFx1MjE5MiBga2V5VXBgKSwgZXhhY3RseSBhcyBhIHJlYWwgdXNlciB0eXBpbmcuXG4gICAqL1xuICByZWFkb25seSB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIENvbW1vbkFyZ3VtZW50cy51bmhvdmVyRWxlbWVudH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5ob3ZlckVsZW1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gbW92ZSB0aGUgcG9pbnRlciBhd2F5IGZyb20uIFRoZSBwb2ludGVyIGlzIG1vdmVkIHRvIGEgcG9pbnRcbiAgICoganVzdCBvdXRzaWRlIGl0cyBib3VuZGluZyBib3guIFRoaXMgaXMgYSBsaXZlIHJlbmRlcmVyIERPTSBub2RlIFx1MjAxNCB0aGVcbiAgICogY2FsbGJhY2sgcnVucyBpbi1yZW5kZXJlciwgc28gbm8gY3Jvc3MtcHJvY2VzcyBzZXJpYWxpemF0aW9uIGlzIG5lZWRlZFxuICAgKiAoc2FtZSBhcyB7QGxpbmsgVHlwZUludG9FZGl0b3JQYXJhbXMuZWRpdG9yfSkuXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ29tbW9uQXJndW1lbnRzLndhaXRVbnRpbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2FpdFVudGlsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsaW5nIGludGVydmFsIGJldHdlZW4gcHJlZGljYXRlIGNoZWNrcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDUwYFxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJ2YWxJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgZGV0YWlsIGFwcGVuZGVkIHRvIHRoZSB0aW1lb3V0IGVycm9yIG1lc3NhZ2UsIGRlc2NyaWJpbmcgd2hhdFxuICAgKiB3YXMgYmVpbmcgd2FpdGVkIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25kaXRpb24gdG8gd2FpdCBmb3IuIFBvbGxlZCBpbW1lZGlhdGVseSwgdGhlbiBvbiBldmVyeSBpbnRlcnZhbCB1bnRpbFxuICAgKiBpdCByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLiBNYXkgYmUgc3luY2hyb25vdXMgb3IgYXN5bmNocm9ub3VzIFx1MjAxNCBpdCBpc1xuICAgKiBhd2FpdGVkIG9uIGVhY2ggcG9sbC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgYXdhaXRlZCBjb25kaXRpb24gaGFzIGJlZW4gbWV0LlxuICAgKi9cbiAgcHJlZGljYXRlKHRoaXM6IHZvaWQpOiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGJlZm9yZSByZWplY3RpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA1MDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEV2YWx1YXRlcyBhIGZ1bmN0aW9uIGluc2lkZSB0aGUgcnVubmluZyBPYnNpZGlhbiBpbnN0YW5jZVxuICogdmlhIHRoZSBhY3RpdmUgdHJhbnNwb3J0IGFuZCByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LlxuICpcbiAqIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhbiBpbnB1dCBvYmplY3QgdGhhdCBpbmNsdWRlcyBgYXBwYCwgYG9ic2lkaWFuTW9kdWxlYCxcbiAqIGBjb250ZXh0YCwgYW5kIGFueSBhZGRpdGlvbmFsIGBpbnB1dGAgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuXG4gKiBJdCBpcyBzZXJpYWxpemVkIHZpYSBgdG9TdHJpbmcoKWAgYW5kIGludm9rZWQgYXMgYW4gSUlGRS5cbiAqIFRoZSBmdW5jdGlvbiBtdXN0IGJlIHNlbGYtY29udGFpbmVkIFx1MjAxNCBjbG9zdXJlcyBvdmVyIGxvY2FsIHZhcmlhYmxlcyB3aWxsIG5vdCB3b3JrLlxuICogUGFzcyBhbnkgbmVlZGVkIHZhbHVlcyBhcyBgaW5wdXRgIFx1MjAxNCB0aGV5IGFyZSBKU09OLXNlcmlhbGl6ZWQgYW5kIGRlc2VyaWFsaXplZCBvbiB0aGUgT2JzaWRpYW4gc2lkZS5cbiAqXG4gKiBUaGUgcmVzdWx0IGlzIGBKU09OLnN0cmluZ2lmeWAnZCBvbiB0aGUgT2JzaWRpYW4gc2lkZSBhbmQgcGFyc2VkIGJhY2suXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24gdG8gZXZhbHVhdGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgYGNhbGxiYWNrYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2YWxJbk9ic2lkaWFuPElucHV0IGV4dGVuZHMgR2VuZXJpY09iamVjdCwgUmVzdWx0LCBUQ29udGV4dElkIGV4dGVuZHMgQ29udGV4dElkPHVua25vd24+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcGFyYW1zOiBFdmFsSW5PYnNpZGlhblBhcmFtczxJbnB1dCwgUmVzdWx0LCBUQ29udGV4dElkPlxuKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAtLSBgY2FsbGJhY2tgIGNhbiBiZSB1bmJvdW5kLlxuICBjb25zdCB7IGNhbGxiYWNrLCBjb250ZXh0SWQsIGlucHV0ID0ge30sIHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3MgPSBmYWxzZSwgdHJhbnNwb3J0OiB0cmFuc3BvcnRPdmVycmlkZSwgdmF1bHRQYXRoIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGN3ZCA9IHZhdWx0UGF0aCA/PyBnZXRWYXVsdFBhdGgoKSA/PyBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIENoZWNrOiBWYXVsdCBwYXRoIGV4aXN0cyBvbiBkaXNrLlxuICBpZiAodmF1bHRQYXRoICE9PSB1bmRlZmluZWQgJiYgIWV4aXN0c1N5bmModmF1bHRQYXRoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVmF1bHQgcGF0aCBkb2VzIG5vdCBleGlzdDogJHt2YXVsdFBhdGh9YCk7XG4gIH1cblxuICBjb25zdCB0cmFuc3BvcnQgPSB0cmFuc3BvcnRPdmVycmlkZSA/PyBhd2FpdCBnZXRPckNyZWF0ZVRyYW5zcG9ydChnZXRUcmFuc3BvcnRPcHRpb25zKCkpO1xuXG4gIGlmICghc2hvdWxkU2tpcFByZWZsaWdodENoZWNrcykge1xuICAgIGF3YWl0IHRyYW5zcG9ydC5wcmVmbGlnaHRDaGVjayhjd2QpO1xuICB9XG5cbiAgYXdhaXQgZW5zdXJlTmFtZXNwYWNlQm9vdHN0cmFwcGVkKHRyYW5zcG9ydCwgY3dkKTtcblxuICBjb25zdCBuYW1lc3BhY2VDYWxsUGFyYW1zOiBHZW5lcmF0ZU5hbWVzcGFjZUNhbGxQYXJhbXMgPSB7XG4gICAgY2FsbGJhY2ssXG4gICAgaW5wdXQsXG4gICAgLi4uKGNvbnRleHRJZCAhPT0gdW5kZWZpbmVkICYmIHsgY29udGV4dElkOiBTdHJpbmcoY29udGV4dElkKSB9KVxuICB9O1xuXG4gIGNvbnN0IGV4cHJlc3Npb24gPSBnZW5lcmF0ZU5hbWVzcGFjZUNhbGwobmFtZXNwYWNlQ2FsbFBhcmFtcyk7XG5cbiAgY29uc3QgcmVzdWx0U3RyaW5nID0gYXdhaXQgdHJhbnNwb3J0LmV2YWx1YXRlKGV4cHJlc3Npb24sIHsgY3dkIH0pO1xuXG4gIGlmIChyZXN1bHRTdHJpbmcgPT09ICcnIHx8IHJlc3VsdFN0cmluZyA9PT0gTk9fT1VUUFVUKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZCBhcyBSZXN1bHQ7XG4gIH1cblxuICBsZXQgZW52ZWxvcGU6IEV2YWxSZXN1bHRFbnZlbG9wZTtcbiAgdHJ5IHtcbiAgICBlbnZlbG9wZSA9IEpTT04ucGFyc2UocmVzdWx0U3RyaW5nKSBhcyBFdmFsUmVzdWx0RW52ZWxvcGU7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IE9ic2lkaWFuIHJldHVybmVkIG5vbi1KU09OIG91dHB1dDogJHtyZXN1bHRTdHJpbmd9YCk7XG4gIH1cblxuICBpZiAoJ3R5cGUnIGluIGVudmVsb3BlKSB7XG4gICAgaWYgKGVudmVsb3BlLnR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIC8vIFJld3JpdGUgYmFyZS1vcmlnaW4gbG9jYWxob3N0IHN0YWNrIGZyYW1lcyBsaWtlIFwiKGh0dHA6Ly9sb2NhbGhvc3QvOjkxNTozMilcIlxuICAgICAgLy8gU28gVml0ZXN0J3Mgc291cmNlLW1hcCByZXNvbHZlciB3b24ndCBleHRyYWN0IFwiL1wiIGFzIHRoZSBmaWxlIHBhdGggYW5kIGNyYXNoXG4gICAgICAvLyBXaXRoIEVJU0RJUiB3aGVuIGl0IHRyaWVzIHRvIHJlYWRGaWxlU3luYyBvbiB0aGUgcm9vdCBkaXJlY3RvcnkuXG4gICAgICBjb25zdCBzYW5pdGl6ZWREZXRhaWwgPSBlbnZlbG9wZS52YWx1ZVxuICAgICAgICAucmVwbGFjZUFsbCgvXFwoaHR0cHM/OlxcL1xcL2xvY2FsaG9zdFxcLzooPzxsaW5lPlxcZCkvZywgJyhvYnNpZGlhbi13ZWJ2aWV3OiQ8bGluZT4nKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXZhbEluT2JzaWRpYW46IEVycm9yIGluc2lkZSBPYnNpZGlhbjpcXG4ke3Nhbml0aXplZERldGFpbH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIFJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBlbnZlbG9wZS52YWx1ZSBhcyBSZXN1bHQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUFnQkEsU0FBUyxrQkFBa0I7QUFDM0IsT0FBTyxhQUFhO0FBU3BCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyw2QkFBNkI7QUFDdEMsU0FBUyxtQ0FBbUM7QUFDNUMsU0FBUyw0QkFBNEI7QUEyQnJDLE1BQU0sWUFBWTtBQWdtQmxCLGVBQXNCLGVBQ3BCLFFBQ2lCO0FBRWpCLFFBQU0sRUFBRSxVQUFVLFdBQVcsUUFBUSxDQUFDLEdBQUcsNEJBQTRCLE9BQU8sV0FBVyxtQkFBbUIsVUFBVSxJQUFJO0FBQ3hILFFBQU0sTUFBTSxhQUFhLGFBQWEsS0FBSyxRQUFRLElBQUk7QUFHdkQsTUFBSSxjQUFjLFVBQWEsQ0FBQyxXQUFXLFNBQVMsR0FBRztBQUNyRCxVQUFNLElBQUksTUFBTSw4QkFBOEIsU0FBUyxFQUFFO0FBQUEsRUFDM0Q7QUFFQSxRQUFNLFlBQVkscUJBQXFCLE1BQU0scUJBQXFCLG9CQUFvQixDQUFDO0FBRXZGLE1BQUksQ0FBQywyQkFBMkI7QUFDOUIsVUFBTSxVQUFVLGVBQWUsR0FBRztBQUFBLEVBQ3BDO0FBRUEsUUFBTSw0QkFBNEIsV0FBVyxHQUFHO0FBRWhELFFBQU0sc0JBQW1EO0FBQUEsSUFDdkQ7QUFBQSxJQUNBO0FBQUEsSUFDQSxHQUFJLGNBQWMsVUFBYSxFQUFFLFdBQVcsT0FBTyxTQUFTLEVBQUU7QUFBQSxFQUNoRTtBQUVBLFFBQU0sYUFBYSxzQkFBc0IsbUJBQW1CO0FBRTVELFFBQU0sZUFBZSxNQUFNLFVBQVUsU0FBUyxZQUFZLEVBQUUsSUFBSSxDQUFDO0FBRWpFLE1BQUksaUJBQWlCLE1BQU0saUJBQWlCLFdBQVc7QUFDckQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJO0FBQ0osTUFBSTtBQUNGLGVBQVcsS0FBSyxNQUFNLFlBQVk7QUFBQSxFQUNwQyxRQUFRO0FBQ04sVUFBTSxJQUFJLE1BQU0sc0RBQXNELFlBQVksRUFBRTtBQUFBLEVBQ3RGO0FBRUEsTUFBSSxVQUFVLFVBQVU7QUFDdEIsUUFBSSxTQUFTLFNBQVMsU0FBUztBQUk3QixZQUFNLGtCQUFrQixTQUFTLE1BQzlCLFdBQVcseUNBQXlDLDJCQUEyQjtBQUNsRixZQUFNLElBQUksTUFBTTtBQUFBLEVBQTJDLGVBQWUsRUFBRTtBQUFBLElBQzlFO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLFNBQVM7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -13,10 +13,12 @@ export type { CdpConnection, ConnectToCdpOptions } from './connect-to-cdp.mjs';
|
|
|
13
13
|
export { connectToCdp } from './connect-to-cdp.mjs';
|
|
14
14
|
export type { ContextArguments, ContextOf } from './context-id.mjs';
|
|
15
15
|
export { ContextId } from './context-id.mjs';
|
|
16
|
-
export type { TransportOptionsResolver, VaultPathResolver } from './context-provider.mjs';
|
|
17
|
-
export { setTransportOptionsResolver, setVaultPathResolver } from './context-provider.mjs';
|
|
18
|
-
export type {
|
|
19
|
-
export {
|
|
16
|
+
export type { SetupErrorResolver, TransportOptionsResolver, VaultPathResolver } from './context-provider.mjs';
|
|
17
|
+
export { setSetupErrorResolver, setTransportOptionsResolver, setVaultPathResolver } from './context-provider.mjs';
|
|
18
|
+
export type { BootstrapDemoVaultPluginsParams, BootstrapDemoVaultPluginsResult, InstalledPluginInfo } from './demo-vault-bootstrap.mjs';
|
|
19
|
+
export { bootstrapDemoVaultPlugins, buildDemoVaultPopulateAsync } from './demo-vault-bootstrap.mjs';
|
|
20
|
+
export type { BuildDemoVaultPopulateParams, InjectPluginParams, ResolveMissingInjectedPluginsParams } from './demo-vault-populate.mjs';
|
|
21
|
+
export { buildDemoVaultPopulate, resolveMissingInjectedPlugins } from './demo-vault-populate.mjs';
|
|
20
22
|
export type { ReadDemoVaultTreeParams } from './demo-vault-tree.mjs';
|
|
21
23
|
export { readDemoVaultTree } from './demo-vault-tree.mjs';
|
|
22
24
|
export { DesktopOnlyPluginSkipError } from './desktop-only-plugin-skip-error.mjs';
|
|
@@ -30,6 +32,8 @@ export type { IncompatibleInstallerVersionErrorConstructorParams } from './incom
|
|
|
30
32
|
export { IncompatibleInstallerVersionError } from './incompatible-installer-version-error.mjs';
|
|
31
33
|
export type { InstallerCompatibility, InstallerCompatibilityTier, ResolveInstallerCompatibilityParams } from './installer-compatibility.mjs';
|
|
32
34
|
export { resolveInstallerCompatibility } from './installer-compatibility.mjs';
|
|
35
|
+
export type { IntegrationSetupFailedErrorConstructorParams } from './integration-setup-failed-error.mjs';
|
|
36
|
+
export { IntegrationSetupFailedError } from './integration-setup-failed-error.mjs';
|
|
33
37
|
export type { ComputeLabelBandParams, LabelBandGeometry, LabelScreenshotOptions } from './label-screenshot.mjs';
|
|
34
38
|
export { buildLabelSvg, computeLabelBand, escapeSvgText, labelScreenshot } from './label-screenshot.mjs';
|
|
35
39
|
export type { LibResolver } from './lib-registry.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -9,10 +9,18 @@ import {
|
|
|
9
9
|
import { connectToCdp } from "./connect-to-cdp.mjs";
|
|
10
10
|
import { ContextId } from "./context-id.mjs";
|
|
11
11
|
import {
|
|
12
|
+
setSetupErrorResolver,
|
|
12
13
|
setTransportOptionsResolver,
|
|
13
14
|
setVaultPathResolver
|
|
14
15
|
} from "./context-provider.mjs";
|
|
15
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
bootstrapDemoVaultPlugins,
|
|
18
|
+
buildDemoVaultPopulateAsync
|
|
19
|
+
} from "./demo-vault-bootstrap.mjs";
|
|
20
|
+
import {
|
|
21
|
+
buildDemoVaultPopulate,
|
|
22
|
+
resolveMissingInjectedPlugins
|
|
23
|
+
} from "./demo-vault-populate.mjs";
|
|
16
24
|
import { readDemoVaultTree } from "./demo-vault-tree.mjs";
|
|
17
25
|
import { DesktopOnlyPluginSkipError } from "./desktop-only-plugin-skip-error.mjs";
|
|
18
26
|
import { resolveElectronCompatibility } from "./electron-compatibility.mjs";
|
|
@@ -23,6 +31,7 @@ import {
|
|
|
23
31
|
} from "./fit-screenshot.mjs";
|
|
24
32
|
import { IncompatibleInstallerVersionError } from "./incompatible-installer-version-error.mjs";
|
|
25
33
|
import { resolveInstallerCompatibility } from "./installer-compatibility.mjs";
|
|
34
|
+
import { IntegrationSetupFailedError } from "./integration-setup-failed-error.mjs";
|
|
26
35
|
import {
|
|
27
36
|
buildLabelSvg,
|
|
28
37
|
computeLabelBand,
|
|
@@ -58,11 +67,14 @@ export {
|
|
|
58
67
|
DesktopCdpTransport,
|
|
59
68
|
DesktopOnlyPluginSkipError,
|
|
60
69
|
IncompatibleInstallerVersionError,
|
|
70
|
+
IntegrationSetupFailedError,
|
|
61
71
|
PUBLIC_LATEST,
|
|
62
72
|
RendererFailedToInitializeError,
|
|
63
73
|
SilentAsarFallbackError,
|
|
64
74
|
TemporaryVault,
|
|
75
|
+
bootstrapDemoVaultPlugins,
|
|
65
76
|
buildDemoVaultPopulate,
|
|
77
|
+
buildDemoVaultPopulateAsync,
|
|
66
78
|
buildDeviceMetricsOverride,
|
|
67
79
|
buildLabelSvg,
|
|
68
80
|
captureObsidianScreenshot,
|
|
@@ -87,9 +99,11 @@ export {
|
|
|
87
99
|
resolveAsarFallback,
|
|
88
100
|
resolveElectronCompatibility,
|
|
89
101
|
resolveInstallerCompatibility,
|
|
102
|
+
resolveMissingInjectedPlugins,
|
|
90
103
|
runObsidianVersionMatrix,
|
|
104
|
+
setSetupErrorResolver,
|
|
91
105
|
setTransportOptionsResolver,
|
|
92
106
|
setVaultPathResolver,
|
|
93
107
|
unregisterVault
|
|
94
108
|
};
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgaW50ZWdyYXRpb24gdGVzdGluZyBtb2R1bGUuXG4gKi9cblxuZXhwb3J0IHR5cGUge1xuICBBc2FyRmFsbGJhY2ssXG4gIEFzYXJGYWxsYmFja1RpZXIsXG4gIFJlc29sdmVBc2FyRmFsbGJhY2tQYXJhbXNcbn0gZnJvbSAnLi9hc2FyLWZhbGxiYWNrLWRldGVjdGlvbi5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUFzYXJGYWxsYmFjayB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmV4cG9ydCB0eXBlIHsgQ2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdE9wdGlvbnMgfSBmcm9tICcuL2NhcHR1cmUtb2JzaWRpYW4tc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHsgY2FwdHVyZU9ic2lkaWFuU2NyZWVuc2hvdCB9IGZyb20gJy4vY2FwdHVyZS1vYnNpZGlhbi1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENhcHR1cmVTY3JlZW5zaG90UGFyYW1zLFxuICBQbmdEaW1lbnNpb25zXG59IGZyb20gJy4vY2FwdHVyZS1zY3JlZW5zaG90Lm1qcyc7XG5leHBvcnQge1xuICBidWlsZERldmljZU1ldHJpY3NPdmVycmlkZSxcbiAgZGVjb2RlQmFzZTY0UG5nLFxuICBpc1BuZyxcbiAgcmVhZFBuZ0RpbWVuc2lvbnNcbn0gZnJvbSAnLi9jYXB0dXJlLXNjcmVlbnNob3QubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2RwQ29ubmVjdGlvbixcbiAgQ29ubmVjdFRvQ2RwT3B0aW9uc1xufSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLm1qcyc7XG5leHBvcnQgeyBjb25uZWN0VG9DZHAgfSBmcm9tICcuL2Nvbm5lY3QtdG8tY2RwLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbnRleHRBcmd1bWVudHMsXG4gIENvbnRleHRPZlxufSBmcm9tICcuL2NvbnRleHQtaWQubWpzJztcbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgVmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5leHBvcnQge1xuICBzZXRTZXR1cEVycm9yUmVzb2x2ZXIsXG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNQYXJhbXMsXG4gIEJvb3RzdHJhcERlbW9WYXVsdFBsdWdpbnNSZXN1bHQsXG4gIEluc3RhbGxlZFBsdWdpbkluZm9cbn0gZnJvbSAnLi9kZW1vLXZhdWx0LWJvb3RzdHJhcC5tanMnO1xuZXhwb3J0IHtcbiAgYm9vdHN0cmFwRGVtb1ZhdWx0UGx1Z2lucyxcbiAgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZUFzeW5jXG59IGZyb20gJy4vZGVtby12YXVsdC1ib290c3RyYXAubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnVpbGREZW1vVmF1bHRQb3B1bGF0ZVBhcmFtcyxcbiAgSW5qZWN0UGx1Z2luUGFyYW1zLFxuICBSZXNvbHZlTWlzc2luZ0luamVjdGVkUGx1Z2luc1BhcmFtc1xufSBmcm9tICcuL2RlbW8tdmF1bHQtcG9wdWxhdGUubWpzJztcbmV4cG9ydCB7XG4gIGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGUsXG4gIHJlc29sdmVNaXNzaW5nSW5qZWN0ZWRQbHVnaW5zXG59IGZyb20gJy4vZGVtby12YXVsdC1wb3B1bGF0ZS5tanMnO1xuZXhwb3J0IHR5cGUgeyBSZWFkRGVtb1ZhdWx0VHJlZVBhcmFtcyB9IGZyb20gJy4vZGVtby12YXVsdC10cmVlLm1qcyc7XG5leHBvcnQgeyByZWFkRGVtb1ZhdWx0VHJlZSB9IGZyb20gJy4vZGVtby12YXVsdC10cmVlLm1qcyc7XG5leHBvcnQgeyBEZXNrdG9wT25seVBsdWdpblNraXBFcnJvciB9IGZyb20gJy4vZGVza3RvcC1vbmx5LXBsdWdpbi1za2lwLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEVsZWN0cm9uQ29tcGF0aWJpbGl0eSxcbiAgRWxlY3Ryb25Db21wYXRpYmlsaXR5VGllcixcbiAgUmVzb2x2ZUVsZWN0cm9uQ29tcGF0aWJpbGl0eVBhcmFtc1xufSBmcm9tICcuL2VsZWN0cm9uLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB7IHJlc29sdmVFbGVjdHJvbkNvbXBhdGliaWxpdHkgfSBmcm9tICcuL2VsZWN0cm9uLWNvbXBhdGliaWxpdHkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ2xpY2tFbGVtZW50UGFyYW1zLFxuICBDbGlja01vdXNlUGFyYW1zLFxuICBDb21tb25Bcmd1bWVudHMsXG4gIENyZWF0ZU5vdGVQYXJhbXMsXG4gIEV2YWxJbk9ic2lkaWFuUGFyYW1zLFxuICBHZW5lcmljT2JqZWN0LFxuICBIb3ZlckVsZW1lbnRQYXJhbXMsXG4gIExpYixcbiAgTW91c2VCdXR0b24sXG4gIE1vdmVNb3VzZVBhcmFtcyxcbiAgT3BlblNldHRpbmdzVGFiUGFyYW1zLFxuICBQcmVzc0tleVBhcmFtcyxcbiAgVHlwZUludG9FZGl0b3JQYXJhbXMsXG4gIFVuaG92ZXJFbGVtZW50UGFyYW1zLFxuICBXYWl0VW50aWxQYXJhbXNcbn0gZnJvbSAnLi9ldmFsLWluLW9ic2lkaWFuLm1qcyc7XG5leHBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vZXZhbC1pbi1vYnNpZGlhbi5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBDb21wdXRlRml0VG9DYW52YXNQYXJhbXMsXG4gIEZpdFNjcmVlbnNob3RUb0NhbnZhc09wdGlvbnMsXG4gIEZpdFRvQ2FudmFzR2VvbWV0cnlcbn0gZnJvbSAnLi9maXQtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHtcbiAgY29tcHV0ZUZpdFRvQ2FudmFzLFxuICBmaXRTY3JlZW5zaG90VG9DYW52YXNcbn0gZnJvbSAnLi9maXQtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHR5cGUgeyBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vaW5jb21wYXRpYmxlLWluc3RhbGxlci12ZXJzaW9uLWVycm9yLm1qcyc7XG5leHBvcnQgeyBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3IgfSBmcm9tICcuL2luY29tcGF0aWJsZS1pbnN0YWxsZXItdmVyc2lvbi1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBJbnN0YWxsZXJDb21wYXRpYmlsaXR5LFxuICBJbnN0YWxsZXJDb21wYXRpYmlsaXR5VGllcixcbiAgUmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHlQYXJhbXNcbn0gZnJvbSAnLi9pbnN0YWxsZXItY29tcGF0aWJpbGl0eS5tanMnO1xuZXhwb3J0IHsgcmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHkgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5leHBvcnQgdHlwZSB7IEludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zIH0gZnJvbSAnLi9pbnRlZ3JhdGlvbi1zZXR1cC1mYWlsZWQtZXJyb3IubWpzJztcbmV4cG9ydCB7IEludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvciB9IGZyb20gJy4vaW50ZWdyYXRpb24tc2V0dXAtZmFpbGVkLWVycm9yLm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENvbXB1dGVMYWJlbEJhbmRQYXJhbXMsXG4gIExhYmVsQmFuZEdlb21ldHJ5LFxuICBMYWJlbFNjcmVlbnNob3RPcHRpb25zXG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHtcbiAgYnVpbGRMYWJlbFN2ZyxcbiAgY29tcHV0ZUxhYmVsQmFuZCxcbiAgZXNjYXBlU3ZnVGV4dCxcbiAgbGFiZWxTY3JlZW5zaG90XG59IGZyb20gJy4vbGFiZWwtc2NyZWVuc2hvdC5tanMnO1xuZXhwb3J0IHR5cGUgeyBMaWJSZXNvbHZlciB9IGZyb20gJy4vbGliLXJlZ2lzdHJ5Lm1qcyc7XG5leHBvcnQgeyByZWdpc3RlckxpYlJlc29sdmVyIH0gZnJvbSAnLi9saWItcmVnaXN0cnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5SdW50aW1lVmVyc2lvbnMsXG4gIE9ic2lkaWFuVmVyc2lvbkNoYW5nZWxvZ1VybHMsXG4gIE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyxcbiAgT2JzaWRpYW5WZXJzaW9uTWV0YWRhdGFcbn0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5tanMnO1xuZXhwb3J0IHsgZ2V0VmVyc2lvbk1ldGFkYXRhIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5tanMnO1xuZXhwb3J0IHtcbiAgQ0FUQUxZU1RfTEFURVNULFxuICBQVUJMSUNfTEFURVNUXG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuZXhwb3J0IHR5cGUgeyBPcGVuT2JzaWRpYW5TZXR0aW5nc1RhYk9wdGlvbnMgfSBmcm9tICcuL29wZW4tb2JzaWRpYW4tc2V0dGluZ3MtdGFiLm1qcyc7XG5leHBvcnQgeyBvcGVuT2JzaWRpYW5TZXR0aW5nc1RhYiB9IGZyb20gJy4vb3Blbi1vYnNpZGlhbi1zZXR0aW5ncy10YWIubWpzJztcbmV4cG9ydCB0eXBlIHsgUG9sbEluT2JzaWRpYW5QYXJhbXMgfSBmcm9tICcuL3BvbGwtaW4tb2JzaWRpYW4ubWpzJztcbmV4cG9ydCB7IHBvbGxJbk9ic2lkaWFuIH0gZnJvbSAnLi9wb2xsLWluLW9ic2lkaWFuLm1qcyc7XG5leHBvcnQgeyBSZW5kZXJlckZhaWxlZFRvSW5pdGlhbGl6ZUVycm9yIH0gZnJvbSAnLi9yZW5kZXJlci1mYWlsZWQtdG8taW5pdGlhbGl6ZS1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUgeyBSdW5PYnNpZGlhblZlcnNpb25NYXRyaXhQYXJhbXMgfSBmcm9tICcuL3J1bi12ZXJzaW9uLW1hdHJpeC5tanMnO1xuZXhwb3J0IHsgcnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4IH0gZnJvbSAnLi9ydW4tdmVyc2lvbi1tYXRyaXgubWpzJztcbmV4cG9ydCB0eXBlIHsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB9IGZyb20gJy4vc2lsZW50LWFzYXItZmFsbGJhY2stZXJyb3IubWpzJztcbmV4cG9ydCB7IFNpbGVudEFzYXJGYWxsYmFja0Vycm9yIH0gZnJvbSAnLi9zaWxlbnQtYXNhci1mYWxsYmFjay1lcnJvci5tanMnO1xuZXhwb3J0IHR5cGUge1xuICBQb3B1bGF0ZUZpbGVDb250ZW50LFxuICBQb3B1bGF0ZUZpbGVzUGFyYW1zXG59IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0Lm1qcyc7XG5leHBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vdGVtcG9yYXJ5LXZhdWx0Lm1qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEFwcGl1bVNlc3Npb25JbmZvLFxuICBBcHBpdW1UcmFuc3BvcnRDb25maWdcbn0gZnJvbSAnLi90cmFuc3BvcnQtYXBwaXVtLm1qcyc7XG5leHBvcnQgeyBBcHBpdW1UcmFuc3BvcnQgfSBmcm9tICcuL3RyYW5zcG9ydC1hcHBpdW0ubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgRGVza3RvcENkcFRyYW5zcG9ydENvbmZpZyxcbiAgT3duZWRJbnN0YW5jZUFzYXIsXG4gIE93bmVkSW5zdGFuY2VDb25maWcsXG4gIE93bmVkSW5zdGFuY2VFbmRwb2ludFxufSBmcm9tICcuL3RyYW5zcG9ydC1kZXNrdG9wLWNkcC5tanMnO1xuZXhwb3J0IHsgRGVza3RvcENkcFRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LWRlc2t0b3AtY2RwLm1qcyc7XG5leHBvcnQgeyBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyB9IGZyb20gJy4vdHJhbnNwb3J0LWZhY3RvcnkubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5BbmRyb2lkQXBwaXVtVHJhbnNwb3J0T3B0aW9ucyxcbiAgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zLFxuICBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnNcbn0gZnJvbSAnLi90cmFuc3BvcnQtb3B0aW9ucy5tanMnO1xuZXhwb3J0IHsgY2hlY2tJc01vYmlsZVRyYW5zcG9ydCB9IGZyb20gJy4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQ29uc29sZUNhcHR1cmVIYW5kbGUsXG4gIE9ic2lkaWFuVHJhbnNwb3J0LFxuICBUcmFuc3BvcnRFdmFsT3B0aW9uc1xufSBmcm9tICcuL3RyYW5zcG9ydC5tanMnO1xuZXhwb3J0IHtcbiAgcmVnaXN0ZXJWYXVsdCxcbiAgdW5yZWdpc3RlclZhdWx0XG59IGZyb20gJy4vdmF1bHQtcmVnaXN0cnkubWpzJztcbmV4cG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4Lm1qcyc7XG5leHBvcnQgeyBERUZBVUxUX09CU0lESUFOX1ZFUlNJT05fU1BFQ1MgfSBmcm9tICcuL3ZlcnNpb24tbWF0cml4Lm1qcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFXQSxTQUFTLDJCQUEyQjtBQUVwQyxTQUFTLGlDQUFpQztBQUsxQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1AsU0FBUyxvQkFBb0I7QUFLN0IsU0FBUyxpQkFBaUI7QUFNMUI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBTVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFNUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsa0NBQWtDO0FBTTNDLFNBQVMsb0NBQW9DO0FBa0I3QyxTQUFTLHNCQUFzQjtBQU0vQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMseUNBQXlDO0FBTWxELFNBQVMscUNBQXFDO0FBRTlDLFNBQVMsbUNBQW1DO0FBTTVDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFFUCxTQUFTLDJCQUEyQjtBQU9wQyxTQUFTLDBCQUEwQjtBQUNuQztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsK0JBQStCO0FBRXhDLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsdUNBQXVDO0FBRWhELFNBQVMsZ0NBQWdDO0FBRXpDLFNBQVMsK0JBQStCO0FBS3hDLFNBQVMsc0JBQXNCO0FBSy9CLFNBQVMsdUJBQXVCO0FBT2hDLFNBQVMsMkJBQTJCO0FBQ3BDLFNBQVMsa0NBQWtDO0FBTTNDLFNBQVMsOEJBQThCO0FBTXZDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsU0FBUyxzQ0FBc0M7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* 32-bit / arm64 / all-users sibling assets are deliberately rejected.
|
|
26
26
|
*
|
|
27
27
|
* When the version is present in the baked `metadata.json` catalog (from
|
|
28
|
-
*
|
|
28
|
+
* the `obsidianmd/obsidian-releases` release assets), its exact installer URL is already known;
|
|
29
29
|
* {@link selectInstallerDownloadUrl} picks the platform-correct one and the
|
|
30
30
|
* downloader uses it directly, skipping the release-API lookup and the
|
|
31
31
|
* name-templating fallback entirely.
|
|
@@ -65,4 +65,4 @@ export {
|
|
|
65
65
|
selectInstallerAssetName,
|
|
66
66
|
selectInstallerDownloadUrl
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RhbGxlci1hc3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgaGVscGVycyBmb3IgcmVzb2x2aW5nIHdoaWNoIEdpdEh1YiByZWxlYXNlIGFzc2V0IGlzIHRoZSBkZXNrdG9wXG4gKiAqKmluc3RhbGxlcioqIGZvciBhIGdpdmVuIE9ic2lkaWFuIHZlcnNpb24gYW5kIHBsYXRmb3JtLlxuICpcbiAqIE9ic2lkaWFuIGNoYW5nZWQgaXRzIGluc3RhbGxlciBhc3NldCBuYW1pbmcgY29udmVudGlvbiBwYXJ0d2F5IHRocm91Z2ggaXRzXG4gKiBoaXN0b3J5LCBzbyBhIHZlcnNpb24gY2Fubm90IGJlIHR1cm5lZCBpbnRvIGFuIGFzc2V0IG5hbWUgYnkgc3RyaW5nXG4gKiB0ZW1wbGF0aW5nIGFsb25lOlxuICpcbiAqIC0gKipEb3QqKiBzZXBhcmF0b3Igb24gb2xkZXIgcmVsZWFzZXM6IGBPYnNpZGlhbi48dmVyPi5leGVgICh2ZXJpZmllZCAwLjE0LjVcbiAqICAgdGhyb3VnaCAxLjUuMTIpLCB3aXRoIGEgYC11bml2ZXJzYWxgIGluZml4IG9uIHRoZSBtYWNPUyBkbWdcbiAqICAgKGBPYnNpZGlhbi08dmVyPi11bml2ZXJzYWwuZG1nYCkuXG4gKiAtICoqSHlwaGVuKiogc2VwYXJhdG9yIG9uIG5ld2VyIHJlbGVhc2VzOiBgT2JzaWRpYW4tPHZlcj4uZXhlYCxcbiAqICAgYE9ic2lkaWFuLTx2ZXI+LmRtZ2AgKHZlcmlmaWVkIDEuNi43IG9ud2FyZDsgdGhlIHRyYW5zaXRpb24gaXMgYXJvdW5kIDEuNi4wKS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24tdGltZSBkb3dubG9hZGVyIChgb2JzaWRpYW4taW5zdGFsbGVyLnRzYCkgcXVlcmllcyB0aGVcbiAqIHJlbGVhc2UncyByZWFsIGFzc2V0IGxpc3QgYW5kIHBpY2tzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IG9uZSB3aXRoXG4gKiB7QGxpbmsgc2VsZWN0SW5zdGFsbGVyQXNzZXROYW1lfTsgaWYgdGhhdCBuZXR3b3JrIGNhbGwgaXMgdW5hdmFpbGFibGUgaXRcbiAqIGZhbGxzIGJhY2sgdG8gdHJ5aW5nIGV2ZXJ5IHtAbGluayBidWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXN9IGZvcm0uXG4gKiBCb3RoIGhlbHBlcnMgYXJlIHB1cmUgc28gdGhlIHNlcGFyYXRvci9hcmNoIG1hdHJpeCBzdGF5cyB1bml0LXRlc3RlZCAodGhlXG4gKiBkb3dubG9hZGVyIGl0c2VsZiBuZWVkcyB0aGUgbmV0d29yayBhbmQgaXMgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKS5cbiAqXG4gKiBPbmx5IHRoZSB4NjQgaW5zdGFsbGVyIGlzIHJlc29sdmVkIFx1MjAxNCB0aGUgZXh0cmFjdGlvbiBwYXRoIGlzIHg2NC1vbmx5IFx1MjAxNCBzbyB0aGVcbiAqIDMyLWJpdCAvIGFybTY0IC8gYWxsLXVzZXJzIHNpYmxpbmcgYXNzZXRzIGFyZSBkZWxpYmVyYXRlbHkgcmVqZWN0ZWQuXG4gKlxuICogV2hlbiB0aGUgdmVyc2lvbiBpcyBwcmVzZW50IGluIHRoZSBiYWtlZCBgbWV0YWRhdGEuanNvbmAgY2F0YWxvZyAoZnJvbVxuICogdXBzdHJlYW0gYG9ic2lkaWFuLXZlcnNpb25zLmpzb25gKSwgaXRzIGV4YWN0IGluc3RhbGxlciBVUkwgaXMgYWxyZWFkeSBrbm93bjtcbiAqIHtAbGluayBzZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybH0gcGlja3MgdGhlIHBsYXRmb3JtLWNvcnJlY3Qgb25lIGFuZCB0aGVcbiAqIGRvd25sb2FkZXIgdXNlcyBpdCBkaXJlY3RseSwgc2tpcHBpbmcgdGhlIHJlbGVhc2UtQVBJIGxvb2t1cCBhbmQgdGhlXG4gKiBuYW1lLXRlbXBsYXRpbmcgZmFsbGJhY2sgZW50aXJlbHkuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblZlcnNpb25Eb3dubG9hZHMgfSBmcm9tICcuL29ic2lkaWFuLW1ldGFkYXRhLm1qcyc7XG5cbi8qKlxuICogVGhlIHBsYXRmb3JtLXNwZWNpZmljIHNoYXBlIG9mIGFuIE9ic2lkaWFuIGluc3RhbGxlciBhc3NldCBuYW1lLlxuICovXG5pbnRlcmZhY2UgUGxhdGZvcm1JbnN0YWxsZXJBc3NldFNoYXBlIHtcbiAgLyoqXG4gIExlYWRpbmcgdG9rZW4gb2YgdGhlIGFzc2V0IG5hbWU6IGBPYnNpZGlhbmAgKFdpbmRvd3MvbWFjT1MpIG9yIGBvYnNpZGlhbmAgKExpbnV4KS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gIEZpbGUgZXh0ZW5zaW9uIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LCBlLmcuIGBleGVgLCBgZG1nYCwgYHRhci5nemAuXG4gICAqL1xuICByZWFkb25seSBleHRlbnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogSW5maXhlcyBwZXJtaXR0ZWQgYmV0d2VlbiB0aGUgdmVyc2lvbiBhbmQgdGhlIGV4dGVuc2lvbiBmb3IgdGhlIHByaW1hcnlcbiAgICogKG5vbi1hcmNoKSBhc3NldCwgZS5nLiBgLXVuaXZlcnNhbGAgb24gdGhlIG9sZGVyIG1hY09TIGRtZy4gQW4gZW1wdHkgYXJyYXlcbiAgICogbWVhbnMgdGhlIHZlcnNpb24gaXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgdGhlIGV4dGVuc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wdGlvbmFsSW5maXhlczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbmNvbnN0IFdJTkRPV1NfQVNTRVRfU0hBUEU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSA9IHtcbiAgYmFzZU5hbWU6ICdPYnNpZGlhbicsXG4gIGV4dGVuc2lvbjogJ2V4ZScsXG4gIG9wdGlvbmFsSW5maXhlczogW11cbn07XG5cbmNvbnN0IE1BQ19BU1NFVF9TSEFQRTogUGxhdGZvcm1JbnN0YWxsZXJBc3NldFNoYXBlID0ge1xuICBiYXNlTmFtZTogJ09ic2lkaWFuJyxcbiAgZXh0ZW5zaW9uOiAnZG1nJyxcbiAgb3B0aW9uYWxJbmZpeGVzOiBbJy11bml2ZXJzYWwnXVxufTtcblxuY29uc3QgTElOVVhfQVNTRVRfU0hBUEU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSA9IHtcbiAgYmFzZU5hbWU6ICdvYnNpZGlhbicsXG4gIGV4dGVuc2lvbjogJ3Rhci5neicsXG4gIG9wdGlvbmFsSW5maXhlczogW11cbn07XG5cbi8qKlxuU2VwYXJhdG9yIGZvcm1zIHRyaWVkLCBoeXBoZW4gKG5ld2VyKSBmaXJzdCwgd2hlbiBmYWxsaW5nIGJhY2sgdG8gdGVtcGxhdGVkIG5hbWVzLlxuICovXG5jb25zdCBBU1NFVF9OQU1FX1NFUEFSQVRPUlMgPSBbJy0nLCAnLiddIGFzIGNvbnN0O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBidWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkSW5zdGFsbGVyQXNzZXROYW1lQ2FuZGlkYXRlc1BhcmFtcyB7XG4gIC8qKlxuICBUaGUgcGxhdGZvcm0gdG8gYnVpbGQgY2FuZGlkYXRlIG5hbWVzIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm07XG5cbiAgLyoqXG4gIFRoZSBjb25jcmV0ZSBgeC55LnpgIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdEluc3RhbGxlckFzc2V0TmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SW5zdGFsbGVyQXNzZXROYW1lUGFyYW1zIHtcbiAgLyoqXG4gIFRoZSByZWxlYXNlJ3MgYXNzZXQgbmFtZXMgKGUuZy4gZnJvbSB0aGUgR2l0SHViIHJlbGVhc2UgQVBJKS5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2V0TmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBUaGUgcGxhdGZvcm0gd2hvc2UgaW5zdGFsbGVyIGFzc2V0IHRvIHNlbGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm07XG5cbiAgLyoqXG4gIFRoZSBjb25jcmV0ZSBgeC55LnpgIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdEluc3RhbGxlckRvd25sb2FkVXJsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybFBhcmFtcyB7XG4gIC8qKlxuICBUaGUgdmVyc2lvbidzIGJha2VkIGRvd25sb2FkIFVSTHMsIG9yIGB1bmRlZmluZWRgIHdoZW4gaXQgaXMgYWJzZW50IGZyb20gdGhlIGNhdGFsb2cuXG4gICAqL1xuICByZWFkb25seSBkb3dubG9hZHM6IE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgVGhlIHBsYXRmb3JtIHdob3NlIGluc3RhbGxlciBVUkwgdG8gc2VsZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIGZhbGxiYWNrIGxpc3Qgb2YgaW5zdGFsbGVyIGFzc2V0IG5hbWVzIHRvIHRyeSB3aGVuIHRoZSByZWxlYXNlJ3NcbiAqIHJlYWwgYXNzZXQgbGlzdCBjYW5ub3QgYmUgZmV0Y2hlZCwgY292ZXJpbmcgYm90aCBzZXBhcmF0b3IgZm9ybXMgKGFuZCwgb25cbiAqIG1hY09TLCB0aGUgYC11bml2ZXJzYWxgIGluZml4KS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBsYXRmb3JtIGFuZCB2ZXJzaW9uLlxuICogQHJldHVybnMgQ2FuZGlkYXRlIGFzc2V0IG5hbWVzLCBoeXBoZW4tc2VwYXJhdGVkIGZvcm1zIGZpcnN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJbnN0YWxsZXJBc3NldE5hbWVDYW5kaWRhdGVzKHBhcmFtczogQnVpbGRJbnN0YWxsZXJBc3NldE5hbWVDYW5kaWRhdGVzUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCBzaGFwZSA9IGdldFBsYXRmb3JtQXNzZXRTaGFwZShwYXJhbXMucGxhdGZvcm0pO1xuICBjb25zdCBpbmZpeGVzID0gc2hhcGUub3B0aW9uYWxJbmZpeGVzLmxlbmd0aCA+IDAgPyBbJycsIC4uLnNoYXBlLm9wdGlvbmFsSW5maXhlc10gOiBbJyddO1xuICBjb25zdCBjYW5kaWRhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHNlcGFyYXRvciBvZiBBU1NFVF9OQU1FX1NFUEFSQVRPUlMpIHtcbiAgICBmb3IgKGNvbnN0IGluZml4IG9mIGluZml4ZXMpIHtcbiAgICAgIGNhbmRpZGF0ZXMucHVzaChgJHtzaGFwZS5iYXNlTmFtZX0ke3NlcGFyYXRvcn0ke3BhcmFtcy52ZXJzaW9ufSR7aW5maXh9LiR7c2hhcGUuZXh0ZW5zaW9ufWApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FuZGlkYXRlcztcbn1cblxuLyoqXG4gKiBTZWxlY3RzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IHg2NCBpbnN0YWxsZXIgYXNzZXQgbmFtZSBmcm9tIGEgcmVsZWFzZSdzIGFzc2V0XG4gKiBsaXN0LCB0b2xlcmF0aW5nIGJvdGggdGhlIGRvdC0gYW5kIGh5cGhlbi1zZXBhcmF0ZWQgbmFtaW5nIGNvbnZlbnRpb25zIGFuZFxuICogcmVqZWN0aW5nIHRoZSAzMi1iaXQgLyBhcm02NCAvIGFsbC11c2VycyBzaWJsaW5nIGFzc2V0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGFzc2V0IGxpc3QsIHBsYXRmb3JtLCBhbmQgdmVyc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBhc3NldCBuYW1lLCBvciBgdW5kZWZpbmVkYCBpZiBub25lIG1hdGNoZXMgKGUuZy4gYVxuICogICBjYXRhbHlzdCByZWxlYXNlIHRoYXQgc2hpcHMgbm8gaW5zdGFsbGVyKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEluc3RhbGxlckFzc2V0TmFtZShwYXJhbXM6IFNlbGVjdEluc3RhbGxlckFzc2V0TmFtZVBhcmFtcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhdHRlcm4gPSBidWlsZEFzc2V0TmFtZVBhdHRlcm4oZ2V0UGxhdGZvcm1Bc3NldFNoYXBlKHBhcmFtcy5wbGF0Zm9ybSksIHBhcmFtcy52ZXJzaW9uKTtcbiAgcmV0dXJuIHBhcmFtcy5hc3NldE5hbWVzLmZpbmQoKG5hbWUpID0+IHBhdHRlcm4udGVzdChuYW1lKSk7XG59XG5cbi8qKlxuICogU2VsZWN0cyB0aGUgcGxhdGZvcm0tY29ycmVjdCB4NjQgaW5zdGFsbGVyIGRvd25sb2FkIFVSTCBmcm9tIGEgdmVyc2lvbidzXG4gKiBiYWtlZCBjYXRhbG9nIGVudHJ5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgYmFrZWQgZG93bmxvYWQgVVJMcyBhbmQgdGhlIHBsYXRmb3JtLlxuICogQHJldHVybnMgVGhlIGluc3RhbGxlciBVUkwgZm9yIHRoZSBwbGF0Zm9ybSwgb3IgYHVuZGVmaW5lZGAgd2hlbiB0aGUgdmVyc2lvblxuICogICBoYXMgbm8gY2F0YWxvZyBlbnRyeSBvciBzaGlwcyBubyBkZXNrdG9wIGluc3RhbGxlciBmb3IgaXQgKGUuZy4gYSBjYXRhbHlzdFxuICogICBidWlsZCwgb3IgYSBMaW51eCBgLnRhci5nemAgdGhhdCB3YXMgbmV2ZXIgcHVibGlzaGVkKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEluc3RhbGxlckRvd25sb2FkVXJsKHBhcmFtczogU2VsZWN0SW5zdGFsbGVyRG93bmxvYWRVcmxQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB7IGRvd25sb2FkcyB9ID0gcGFyYW1zO1xuICBpZiAoIWRvd25sb2Fkcykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAocGFyYW1zLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgcmV0dXJuIGRvd25sb2Fkcy5leGU7XG4gIH1cblxuICBpZiAocGFyYW1zLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgIHJldHVybiBkb3dubG9hZHMuZG1nO1xuICB9XG5cbiAgcmV0dXJuIGRvd25sb2Fkcy50YXI7XG59XG5cbi8qKlxuICogQnVpbGRzIGFuIGFuY2hvcmVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyB0aGUgcHJpbWFyeSBpbnN0YWxsZXIgYXNzZXRcbiAqIGZvciBhIHBsYXRmb3JtIHNoYXBlIGFuZCB2ZXJzaW9uLCBhY3Jvc3MgYm90aCBzZXBhcmF0b3IgY29udmVudGlvbnMuXG4gKlxuICogQHBhcmFtIHNoYXBlIC0gVGhlIHBsYXRmb3JtIGFzc2V0IHNoYXBlLlxuICogQHBhcmFtIHZlcnNpb24gLSBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICogQHJldHVybnMgVGhlIG1hdGNoaW5nIHBhdHRlcm4uXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkQXNzZXROYW1lUGF0dGVybihzaGFwZTogUGxhdGZvcm1JbnN0YWxsZXJBc3NldFNoYXBlLCB2ZXJzaW9uOiBzdHJpbmcpOiBSZWdFeHAge1xuICBjb25zdCBpbmZpeEdyb3VwID0gc2hhcGUub3B0aW9uYWxJbmZpeGVzLmxlbmd0aCA+IDBcbiAgICA/IGAoPzoke3NoYXBlLm9wdGlvbmFsSW5maXhlcy5tYXAoKGluZml4KSA9PiBlc2NhcGVSZWdFeHAoaW5maXgpKS5qb2luKCd8Jyl9KT9gXG4gICAgOiAnJztcbiAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgU3RyaW5nLnJhd2BeJHtlc2NhcGVSZWdFeHAoc2hhcGUuYmFzZU5hbWUpfVsuLV0ke2VzY2FwZVJlZ0V4cCh2ZXJzaW9uKX0ke2luZml4R3JvdXB9XFwuJHtlc2NhcGVSZWdFeHAoc2hhcGUuZXh0ZW5zaW9uKX0kYFxuICApO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgYSBzdHJpbmcgZm9yIGxpdGVyYWwgdXNlIGluc2lkZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgcmF3IHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZUFsbCgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFN0cmluZy5yYXdgXFwkJmApO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBpbnN0YWxsZXIgYXNzZXQgc2hhcGUgZm9yIGEgcGxhdGZvcm0uXG4gKlxuICogQHBhcmFtIHBsYXRmb3JtIC0gVGhlIE5vZGUuanMgcGxhdGZvcm0gaWRlbnRpZmllci5cbiAqIEByZXR1cm5zIFRoZSBhc3NldCBzaGFwZSAoTGludXggYC50YXIuZ3pgIGZvciBhbnkgbm9uLVdpbmRvd3MvbWFjT1MgcGxhdGZvcm0pLlxuICovXG5mdW5jdGlvbiBnZXRQbGF0Zm9ybUFzc2V0U2hhcGUocGxhdGZvcm06IE5vZGVKUy5QbGF0Zm9ybSk6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSB7XG4gIGlmIChwbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIHJldHVybiBXSU5ET1dTX0FTU0VUX1NIQVBFO1xuICB9XG5cbiAgaWYgKHBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgIHJldHVybiBNQUNfQVNTRVRfU0hBUEU7XG4gIH1cblxuICByZXR1cm4gTElOVVhfQVNTRVRfU0hBUEU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUF5REEsTUFBTSxzQkFBbUQ7QUFBQSxFQUN2RCxVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxpQkFBaUIsQ0FBQztBQUNwQjtBQUVBLE1BQU0sa0JBQStDO0FBQUEsRUFDbkQsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsaUJBQWlCLENBQUMsWUFBWTtBQUNoQztBQUVBLE1BQU0sb0JBQWlEO0FBQUEsRUFDckQsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsaUJBQWlCLENBQUM7QUFDcEI7QUFLQSxNQUFNLHdCQUF3QixDQUFDLEtBQUssR0FBRztBQTREaEMsU0FBUyxrQ0FBa0MsUUFBMkQ7QUFDM0csUUFBTSxRQUFRLHNCQUFzQixPQUFPLFFBQVE7QUFDbkQsUUFBTSxVQUFVLE1BQU0sZ0JBQWdCLFNBQVMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLGVBQWUsSUFBSSxDQUFDLEVBQUU7QUFDdkYsUUFBTSxhQUF1QixDQUFDO0FBQzlCLGFBQVcsYUFBYSx1QkFBdUI7QUFDN0MsZUFBVyxTQUFTLFNBQVM7QUFDM0IsaUJBQVcsS0FBSyxHQUFHLE1BQU0sUUFBUSxHQUFHLFNBQVMsR0FBRyxPQUFPLE9BQU8sR0FBRyxLQUFLLElBQUksTUFBTSxTQUFTLEVBQUU7QUFBQSxJQUM3RjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFXTyxTQUFTLHlCQUF5QixRQUE0RDtBQUNuRyxRQUFNLFVBQVUsc0JBQXNCLHNCQUFzQixPQUFPLFFBQVEsR0FBRyxPQUFPLE9BQU87QUFDNUYsU0FBTyxPQUFPLFdBQVcsS0FBSyxDQUFDLFNBQVMsUUFBUSxLQUFLLElBQUksQ0FBQztBQUM1RDtBQVdPLFNBQVMsMkJBQTJCLFFBQThEO0FBQ3ZHLFFBQU0sRUFBRSxVQUFVLElBQUk7QUFDdEIsTUFBSSxDQUFDLFdBQVc7QUFDZCxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxhQUFhLFNBQVM7QUFDL0IsV0FBTyxVQUFVO0FBQUEsRUFDbkI7QUFFQSxNQUFJLE9BQU8sYUFBYSxVQUFVO0FBQ2hDLFdBQU8sVUFBVTtBQUFBLEVBQ25CO0FBRUEsU0FBTyxVQUFVO0FBQ25CO0FBVUEsU0FBUyxzQkFBc0IsT0FBb0MsU0FBeUI7QUFDMUYsUUFBTSxhQUFhLE1BQU0sZ0JBQWdCLFNBQVMsSUFDOUMsTUFBTSxNQUFNLGdCQUFnQixJQUFJLENBQUMsVUFBVSxhQUFhLEtBQUssQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLE9BQ3pFO0FBQ0osU0FBTyxJQUFJO0FBQUEsSUFDVCxPQUFPLE9BQU8sYUFBYSxNQUFNLFFBQVEsQ0FBQyxPQUFPLGFBQWEsT0FBTyxDQUFDLEdBQUcsVUFBVSxLQUFLLGFBQWEsTUFBTSxTQUFTLENBQUM7QUFBQSxFQUN2SDtBQUNGO0FBUUEsU0FBUyxhQUFhLE9BQXVCO0FBQzNDLFNBQU8sTUFBTSxXQUFXLHVCQUF1QixPQUFPLFFBQVE7QUFDaEU7QUFRQSxTQUFTLHNCQUFzQixVQUF3RDtBQUNyRixNQUFJLGFBQWEsU0FBUztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksYUFBYSxVQUFVO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luc3RhbGxlci1hc3NldC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgaGVscGVycyBmb3IgcmVzb2x2aW5nIHdoaWNoIEdpdEh1YiByZWxlYXNlIGFzc2V0IGlzIHRoZSBkZXNrdG9wXG4gKiAqKmluc3RhbGxlcioqIGZvciBhIGdpdmVuIE9ic2lkaWFuIHZlcnNpb24gYW5kIHBsYXRmb3JtLlxuICpcbiAqIE9ic2lkaWFuIGNoYW5nZWQgaXRzIGluc3RhbGxlciBhc3NldCBuYW1pbmcgY29udmVudGlvbiBwYXJ0d2F5IHRocm91Z2ggaXRzXG4gKiBoaXN0b3J5LCBzbyBhIHZlcnNpb24gY2Fubm90IGJlIHR1cm5lZCBpbnRvIGFuIGFzc2V0IG5hbWUgYnkgc3RyaW5nXG4gKiB0ZW1wbGF0aW5nIGFsb25lOlxuICpcbiAqIC0gKipEb3QqKiBzZXBhcmF0b3Igb24gb2xkZXIgcmVsZWFzZXM6IGBPYnNpZGlhbi48dmVyPi5leGVgICh2ZXJpZmllZCAwLjE0LjVcbiAqICAgdGhyb3VnaCAxLjUuMTIpLCB3aXRoIGEgYC11bml2ZXJzYWxgIGluZml4IG9uIHRoZSBtYWNPUyBkbWdcbiAqICAgKGBPYnNpZGlhbi08dmVyPi11bml2ZXJzYWwuZG1nYCkuXG4gKiAtICoqSHlwaGVuKiogc2VwYXJhdG9yIG9uIG5ld2VyIHJlbGVhc2VzOiBgT2JzaWRpYW4tPHZlcj4uZXhlYCxcbiAqICAgYE9ic2lkaWFuLTx2ZXI+LmRtZ2AgKHZlcmlmaWVkIDEuNi43IG9ud2FyZDsgdGhlIHRyYW5zaXRpb24gaXMgYXJvdW5kIDEuNi4wKS5cbiAqXG4gKiBUaGUgaW50ZWdyYXRpb24tdGltZSBkb3dubG9hZGVyIChgb2JzaWRpYW4taW5zdGFsbGVyLnRzYCkgcXVlcmllcyB0aGVcbiAqIHJlbGVhc2UncyByZWFsIGFzc2V0IGxpc3QgYW5kIHBpY2tzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IG9uZSB3aXRoXG4gKiB7QGxpbmsgc2VsZWN0SW5zdGFsbGVyQXNzZXROYW1lfTsgaWYgdGhhdCBuZXR3b3JrIGNhbGwgaXMgdW5hdmFpbGFibGUgaXRcbiAqIGZhbGxzIGJhY2sgdG8gdHJ5aW5nIGV2ZXJ5IHtAbGluayBidWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXN9IGZvcm0uXG4gKiBCb3RoIGhlbHBlcnMgYXJlIHB1cmUgc28gdGhlIHNlcGFyYXRvci9hcmNoIG1hdHJpeCBzdGF5cyB1bml0LXRlc3RlZCAodGhlXG4gKiBkb3dubG9hZGVyIGl0c2VsZiBuZWVkcyB0aGUgbmV0d29yayBhbmQgaXMgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKS5cbiAqXG4gKiBPbmx5IHRoZSB4NjQgaW5zdGFsbGVyIGlzIHJlc29sdmVkIFx1MjAxNCB0aGUgZXh0cmFjdGlvbiBwYXRoIGlzIHg2NC1vbmx5IFx1MjAxNCBzbyB0aGVcbiAqIDMyLWJpdCAvIGFybTY0IC8gYWxsLXVzZXJzIHNpYmxpbmcgYXNzZXRzIGFyZSBkZWxpYmVyYXRlbHkgcmVqZWN0ZWQuXG4gKlxuICogV2hlbiB0aGUgdmVyc2lvbiBpcyBwcmVzZW50IGluIHRoZSBiYWtlZCBgbWV0YWRhdGEuanNvbmAgY2F0YWxvZyAoZnJvbVxuICogdGhlIGBvYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzYCByZWxlYXNlIGFzc2V0cyksIGl0cyBleGFjdCBpbnN0YWxsZXIgVVJMIGlzIGFscmVhZHkga25vd247XG4gKiB7QGxpbmsgc2VsZWN0SW5zdGFsbGVyRG93bmxvYWRVcmx9IHBpY2tzIHRoZSBwbGF0Zm9ybS1jb3JyZWN0IG9uZSBhbmQgdGhlXG4gKiBkb3dubG9hZGVyIHVzZXMgaXQgZGlyZWN0bHksIHNraXBwaW5nIHRoZSByZWxlYXNlLUFQSSBsb29rdXAgYW5kIHRoZVxuICogbmFtZS10ZW1wbGF0aW5nIGZhbGxiYWNrIGVudGlyZWx5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uRG93bmxvYWRzIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5tanMnO1xuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBzaGFwZSBvZiBhbiBPYnNpZGlhbiBpbnN0YWxsZXIgYXNzZXQgbmFtZS5cbiAqL1xuaW50ZXJmYWNlIFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSB7XG4gIC8qKlxuICBMZWFkaW5nIHRva2VuIG9mIHRoZSBhc3NldCBuYW1lOiBgT2JzaWRpYW5gIChXaW5kb3dzL21hY09TKSBvciBgb2JzaWRpYW5gIChMaW51eCkuXG4gICAqL1xuICByZWFkb25seSBiYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICBGaWxlIGV4dGVuc2lvbiB3aXRob3V0IHRoZSBsZWFkaW5nIGRvdCwgZS5nLiBgZXhlYCwgYGRtZ2AsIGB0YXIuZ3pgLlxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZml4ZXMgcGVybWl0dGVkIGJldHdlZW4gdGhlIHZlcnNpb24gYW5kIHRoZSBleHRlbnNpb24gZm9yIHRoZSBwcmltYXJ5XG4gICAqIChub24tYXJjaCkgYXNzZXQsIGUuZy4gYC11bml2ZXJzYWxgIG9uIHRoZSBvbGRlciBtYWNPUyBkbWcuIEFuIGVtcHR5IGFycmF5XG4gICAqIG1lYW5zIHRoZSB2ZXJzaW9uIGlzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHRoZSBleHRlbnNpb24uXG4gICAqL1xuICByZWFkb25seSBvcHRpb25hbEluZml4ZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG5jb25zdCBXSU5ET1dTX0FTU0VUX1NIQVBFOiBQbGF0Zm9ybUluc3RhbGxlckFzc2V0U2hhcGUgPSB7XG4gIGJhc2VOYW1lOiAnT2JzaWRpYW4nLFxuICBleHRlbnNpb246ICdleGUnLFxuICBvcHRpb25hbEluZml4ZXM6IFtdXG59O1xuXG5jb25zdCBNQUNfQVNTRVRfU0hBUEU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSA9IHtcbiAgYmFzZU5hbWU6ICdPYnNpZGlhbicsXG4gIGV4dGVuc2lvbjogJ2RtZycsXG4gIG9wdGlvbmFsSW5maXhlczogWyctdW5pdmVyc2FsJ11cbn07XG5cbmNvbnN0IExJTlVYX0FTU0VUX1NIQVBFOiBQbGF0Zm9ybUluc3RhbGxlckFzc2V0U2hhcGUgPSB7XG4gIGJhc2VOYW1lOiAnb2JzaWRpYW4nLFxuICBleHRlbnNpb246ICd0YXIuZ3onLFxuICBvcHRpb25hbEluZml4ZXM6IFtdXG59O1xuXG4vKipcblNlcGFyYXRvciBmb3JtcyB0cmllZCwgaHlwaGVuIChuZXdlcikgZmlyc3QsIHdoZW4gZmFsbGluZyBiYWNrIHRvIHRlbXBsYXRlZCBuYW1lcy5cbiAqL1xuY29uc3QgQVNTRVRfTkFNRV9TRVBBUkFUT1JTID0gWyctJywgJy4nXSBhcyBjb25zdDtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRJbnN0YWxsZXJBc3NldE5hbWVDYW5kaWRhdGVzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEluc3RhbGxlckFzc2V0TmFtZUNhbmRpZGF0ZXNQYXJhbXMge1xuICAvKipcbiAgVGhlIHBsYXRmb3JtIHRvIGJ1aWxkIGNhbmRpZGF0ZSBuYW1lcyBmb3IuXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtO1xuXG4gIC8qKlxuICBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBzZWxlY3RJbnN0YWxsZXJBc3NldE5hbWV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdEluc3RhbGxlckFzc2V0TmFtZVBhcmFtcyB7XG4gIC8qKlxuICBUaGUgcmVsZWFzZSdzIGFzc2V0IG5hbWVzIChlLmcuIGZyb20gdGhlIEdpdEh1YiByZWxlYXNlIEFQSSkuXG4gICAqL1xuICByZWFkb25seSBhc3NldE5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgVGhlIHBsYXRmb3JtIHdob3NlIGluc3RhbGxlciBhc3NldCB0byBzZWxlY3QuXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtO1xuXG4gIC8qKlxuICBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBzZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0SW5zdGFsbGVyRG93bmxvYWRVcmxQYXJhbXMge1xuICAvKipcbiAgVGhlIHZlcnNpb24ncyBiYWtlZCBkb3dubG9hZCBVUkxzLCBvciBgdW5kZWZpbmVkYCB3aGVuIGl0IGlzIGFic2VudCBmcm9tIHRoZSBjYXRhbG9nLlxuICAgKi9cbiAgcmVhZG9ubHkgZG93bmxvYWRzOiBPYnNpZGlhblZlcnNpb25Eb3dubG9hZHMgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gIFRoZSBwbGF0Zm9ybSB3aG9zZSBpbnN0YWxsZXIgVVJMIHRvIHNlbGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm07XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBmYWxsYmFjayBsaXN0IG9mIGluc3RhbGxlciBhc3NldCBuYW1lcyB0byB0cnkgd2hlbiB0aGUgcmVsZWFzZSdzXG4gKiByZWFsIGFzc2V0IGxpc3QgY2Fubm90IGJlIGZldGNoZWQsIGNvdmVyaW5nIGJvdGggc2VwYXJhdG9yIGZvcm1zIChhbmQsIG9uXG4gKiBtYWNPUywgdGhlIGAtdW5pdmVyc2FsYCBpbmZpeCkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwbGF0Zm9ybSBhbmQgdmVyc2lvbi5cbiAqIEByZXR1cm5zIENhbmRpZGF0ZSBhc3NldCBuYW1lcywgaHlwaGVuLXNlcGFyYXRlZCBmb3JtcyBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSW5zdGFsbGVyQXNzZXROYW1lQ2FuZGlkYXRlcyhwYXJhbXM6IEJ1aWxkSW5zdGFsbGVyQXNzZXROYW1lQ2FuZGlkYXRlc1BhcmFtcyk6IHN0cmluZ1tdIHtcbiAgY29uc3Qgc2hhcGUgPSBnZXRQbGF0Zm9ybUFzc2V0U2hhcGUocGFyYW1zLnBsYXRmb3JtKTtcbiAgY29uc3QgaW5maXhlcyA9IHNoYXBlLm9wdGlvbmFsSW5maXhlcy5sZW5ndGggPiAwID8gWycnLCAuLi5zaGFwZS5vcHRpb25hbEluZml4ZXNdIDogWycnXTtcbiAgY29uc3QgY2FuZGlkYXRlczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBzZXBhcmF0b3Igb2YgQVNTRVRfTkFNRV9TRVBBUkFUT1JTKSB7XG4gICAgZm9yIChjb25zdCBpbmZpeCBvZiBpbmZpeGVzKSB7XG4gICAgICBjYW5kaWRhdGVzLnB1c2goYCR7c2hhcGUuYmFzZU5hbWV9JHtzZXBhcmF0b3J9JHtwYXJhbXMudmVyc2lvbn0ke2luZml4fS4ke3NoYXBlLmV4dGVuc2lvbn1gKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59XG5cbi8qKlxuICogU2VsZWN0cyB0aGUgcGxhdGZvcm0tY29ycmVjdCB4NjQgaW5zdGFsbGVyIGFzc2V0IG5hbWUgZnJvbSBhIHJlbGVhc2UncyBhc3NldFxuICogbGlzdCwgdG9sZXJhdGluZyBib3RoIHRoZSBkb3QtIGFuZCBoeXBoZW4tc2VwYXJhdGVkIG5hbWluZyBjb252ZW50aW9ucyBhbmRcbiAqIHJlamVjdGluZyB0aGUgMzItYml0IC8gYXJtNjQgLyBhbGwtdXNlcnMgc2libGluZyBhc3NldHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBhc3NldCBsaXN0LCBwbGF0Zm9ybSwgYW5kIHZlcnNpb24uXG4gKiBAcmV0dXJucyBUaGUgbWF0Y2hpbmcgYXNzZXQgbmFtZSwgb3IgYHVuZGVmaW5lZGAgaWYgbm9uZSBtYXRjaGVzIChlLmcuIGFcbiAqICAgY2F0YWx5c3QgcmVsZWFzZSB0aGF0IHNoaXBzIG5vIGluc3RhbGxlcikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnN0YWxsZXJBc3NldE5hbWUocGFyYW1zOiBTZWxlY3RJbnN0YWxsZXJBc3NldE5hbWVQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBwYXR0ZXJuID0gYnVpbGRBc3NldE5hbWVQYXR0ZXJuKGdldFBsYXRmb3JtQXNzZXRTaGFwZShwYXJhbXMucGxhdGZvcm0pLCBwYXJhbXMudmVyc2lvbik7XG4gIHJldHVybiBwYXJhbXMuYXNzZXROYW1lcy5maW5kKChuYW1lKSA9PiBwYXR0ZXJuLnRlc3QobmFtZSkpO1xufVxuXG4vKipcbiAqIFNlbGVjdHMgdGhlIHBsYXRmb3JtLWNvcnJlY3QgeDY0IGluc3RhbGxlciBkb3dubG9hZCBVUkwgZnJvbSBhIHZlcnNpb24nc1xuICogYmFrZWQgY2F0YWxvZyBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGJha2VkIGRvd25sb2FkIFVSTHMgYW5kIHRoZSBwbGF0Zm9ybS5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YWxsZXIgVVJMIGZvciB0aGUgcGxhdGZvcm0sIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlIHZlcnNpb25cbiAqICAgaGFzIG5vIGNhdGFsb2cgZW50cnkgb3Igc2hpcHMgbm8gZGVza3RvcCBpbnN0YWxsZXIgZm9yIGl0IChlLmcuIGEgY2F0YWx5c3RcbiAqICAgYnVpbGQsIG9yIGEgTGludXggYC50YXIuZ3pgIHRoYXQgd2FzIG5ldmVyIHB1Ymxpc2hlZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RJbnN0YWxsZXJEb3dubG9hZFVybChwYXJhbXM6IFNlbGVjdEluc3RhbGxlckRvd25sb2FkVXJsUGFyYW1zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgeyBkb3dubG9hZHMgfSA9IHBhcmFtcztcbiAgaWYgKCFkb3dubG9hZHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIHJldHVybiBkb3dubG9hZHMuZXhlO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICByZXR1cm4gZG93bmxvYWRzLmRtZztcbiAgfVxuXG4gIHJldHVybiBkb3dubG9hZHMudGFyO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhbiBhbmNob3JlZCByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIHByaW1hcnkgaW5zdGFsbGVyIGFzc2V0XG4gKiBmb3IgYSBwbGF0Zm9ybSBzaGFwZSBhbmQgdmVyc2lvbiwgYWNyb3NzIGJvdGggc2VwYXJhdG9yIGNvbnZlbnRpb25zLlxuICpcbiAqIEBwYXJhbSBzaGFwZSAtIFRoZSBwbGF0Zm9ybSBhc3NldCBzaGFwZS5cbiAqIEBwYXJhbSB2ZXJzaW9uIC0gVGhlIGNvbmNyZXRlIGB4LnkuemAgdmVyc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBtYXRjaGluZyBwYXR0ZXJuLlxuICovXG5mdW5jdGlvbiBidWlsZEFzc2V0TmFtZVBhdHRlcm4oc2hhcGU6IFBsYXRmb3JtSW5zdGFsbGVyQXNzZXRTaGFwZSwgdmVyc2lvbjogc3RyaW5nKTogUmVnRXhwIHtcbiAgY29uc3QgaW5maXhHcm91cCA9IHNoYXBlLm9wdGlvbmFsSW5maXhlcy5sZW5ndGggPiAwXG4gICAgPyBgKD86JHtzaGFwZS5vcHRpb25hbEluZml4ZXMubWFwKChpbmZpeCkgPT4gZXNjYXBlUmVnRXhwKGluZml4KSkuam9pbignfCcpfSk/YFxuICAgIDogJyc7XG4gIHJldHVybiBuZXcgUmVnRXhwKFxuICAgIFN0cmluZy5yYXdgXiR7ZXNjYXBlUmVnRXhwKHNoYXBlLmJhc2VOYW1lKX1bLi1dJHtlc2NhcGVSZWdFeHAodmVyc2lvbil9JHtpbmZpeEdyb3VwfVxcLiR7ZXNjYXBlUmVnRXhwKHNoYXBlLmV4dGVuc2lvbil9JGBcbiAgKTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIGEgc3RyaW5nIGZvciBsaXRlcmFsIHVzZSBpbnNpZGUgYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHJhdyBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2VBbGwoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBTdHJpbmcucmF3YFxcJCZgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgaW5zdGFsbGVyIGFzc2V0IHNoYXBlIGZvciBhIHBsYXRmb3JtLlxuICpcbiAqIEBwYXJhbSBwbGF0Zm9ybSAtIFRoZSBOb2RlLmpzIHBsYXRmb3JtIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyBUaGUgYXNzZXQgc2hhcGUgKExpbnV4IGAudGFyLmd6YCBmb3IgYW55IG5vbi1XaW5kb3dzL21hY09TIHBsYXRmb3JtKS5cbiAqL1xuZnVuY3Rpb24gZ2V0UGxhdGZvcm1Bc3NldFNoYXBlKHBsYXRmb3JtOiBOb2RlSlMuUGxhdGZvcm0pOiBQbGF0Zm9ybUluc3RhbGxlckFzc2V0U2hhcGUge1xuICBpZiAocGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICByZXR1cm4gV0lORE9XU19BU1NFVF9TSEFQRTtcbiAgfVxuXG4gIGlmIChwbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICByZXR1cm4gTUFDX0FTU0VUX1NIQVBFO1xuICB9XG5cbiAgcmV0dXJuIExJTlVYX0FTU0VUX1NIQVBFO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBeURBLE1BQU0sc0JBQW1EO0FBQUEsRUFDdkQsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsaUJBQWlCLENBQUM7QUFDcEI7QUFFQSxNQUFNLGtCQUErQztBQUFBLEVBQ25ELFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLGlCQUFpQixDQUFDLFlBQVk7QUFDaEM7QUFFQSxNQUFNLG9CQUFpRDtBQUFBLEVBQ3JELFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLGlCQUFpQixDQUFDO0FBQ3BCO0FBS0EsTUFBTSx3QkFBd0IsQ0FBQyxLQUFLLEdBQUc7QUE0RGhDLFNBQVMsa0NBQWtDLFFBQTJEO0FBQzNHLFFBQU0sUUFBUSxzQkFBc0IsT0FBTyxRQUFRO0FBQ25ELFFBQU0sVUFBVSxNQUFNLGdCQUFnQixTQUFTLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxlQUFlLElBQUksQ0FBQyxFQUFFO0FBQ3ZGLFFBQU0sYUFBdUIsQ0FBQztBQUM5QixhQUFXLGFBQWEsdUJBQXVCO0FBQzdDLGVBQVcsU0FBUyxTQUFTO0FBQzNCLGlCQUFXLEtBQUssR0FBRyxNQUFNLFFBQVEsR0FBRyxTQUFTLEdBQUcsT0FBTyxPQUFPLEdBQUcsS0FBSyxJQUFJLE1BQU0sU0FBUyxFQUFFO0FBQUEsSUFDN0Y7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBV08sU0FBUyx5QkFBeUIsUUFBNEQ7QUFDbkcsUUFBTSxVQUFVLHNCQUFzQixzQkFBc0IsT0FBTyxRQUFRLEdBQUcsT0FBTyxPQUFPO0FBQzVGLFNBQU8sT0FBTyxXQUFXLEtBQUssQ0FBQyxTQUFTLFFBQVEsS0FBSyxJQUFJLENBQUM7QUFDNUQ7QUFXTyxTQUFTLDJCQUEyQixRQUE4RDtBQUN2RyxRQUFNLEVBQUUsVUFBVSxJQUFJO0FBQ3RCLE1BQUksQ0FBQyxXQUFXO0FBQ2QsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLE9BQU8sYUFBYSxTQUFTO0FBQy9CLFdBQU8sVUFBVTtBQUFBLEVBQ25CO0FBRUEsTUFBSSxPQUFPLGFBQWEsVUFBVTtBQUNoQyxXQUFPLFVBQVU7QUFBQSxFQUNuQjtBQUVBLFNBQU8sVUFBVTtBQUNuQjtBQVVBLFNBQVMsc0JBQXNCLE9BQW9DLFNBQXlCO0FBQzFGLFFBQU0sYUFBYSxNQUFNLGdCQUFnQixTQUFTLElBQzlDLE1BQU0sTUFBTSxnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsYUFBYSxLQUFLLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxPQUN6RTtBQUNKLFNBQU8sSUFBSTtBQUFBLElBQ1QsT0FBTyxPQUFPLGFBQWEsTUFBTSxRQUFRLENBQUMsT0FBTyxhQUFhLE9BQU8sQ0FBQyxHQUFHLFVBQVUsS0FBSyxhQUFhLE1BQU0sU0FBUyxDQUFDO0FBQUEsRUFDdkg7QUFDRjtBQVFBLFNBQVMsYUFBYSxPQUF1QjtBQUMzQyxTQUFPLE1BQU0sV0FBVyx1QkFBdUIsT0FBTyxRQUFRO0FBQ2hFO0FBUUEsU0FBUyxzQkFBc0IsVUFBd0Q7QUFDckYsTUFBSSxhQUFhLFNBQVM7QUFDeEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGFBQWEsVUFBVTtBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* The distinct error thrown in a **test worker** when that project's integration
|
|
5
|
+
* global setup already failed in the main process.
|
|
6
|
+
*
|
|
7
|
+
* Without it a worker whose setup failed gets no transport options at all, and
|
|
8
|
+
* silently rebuilds the owned **desktop** CDP default — so an Android project's
|
|
9
|
+
* suite would run on desktop, and then die on `Failed to parse URL from /json`
|
|
10
|
+
* (an owned instance nobody launched has no CDP endpoint). Every file in the
|
|
11
|
+
* project reported that mask while the real cause appeared once, far above, in
|
|
12
|
+
* the setup log. This error replaces the mask: it is raised before any transport
|
|
13
|
+
* is constructed, and it carries the original setup failure verbatim, so each
|
|
14
|
+
* report names the actual cause.
|
|
15
|
+
*
|
|
16
|
+
* It deliberately carries no stack trace: the failure happened in the global
|
|
17
|
+
* setup, which already logged its own trace, and a second trace pointing into
|
|
18
|
+
* the harness only suggests the harness broke.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Parameters for the {@link IntegrationSetupFailedError} constructor. This is also the
|
|
22
|
+
* shape the framework adapter publishes to its workers (Vitest: `provide('setupError')`).
|
|
23
|
+
*/
|
|
24
|
+
export interface IntegrationSetupFailedErrorConstructorParams {
|
|
25
|
+
/**
|
|
26
|
+
The `name` of the original error the global setup threw, so a caller can tell an
|
|
27
|
+
expected skip (`DesktopOnlyPluginSkipError`) from a real breakage without the
|
|
28
|
+
original error object, which does not survive the trip to a worker.
|
|
29
|
+
*/
|
|
30
|
+
readonly errorName: string;
|
|
31
|
+
/**
|
|
32
|
+
The original setup failure, already stringified by the adapter that caught it.
|
|
33
|
+
*/
|
|
34
|
+
readonly message: string;
|
|
35
|
+
/**
|
|
36
|
+
The transport the failed project is configured for (e.g. `obsidian-android-appium`),
|
|
37
|
+
so the report names the platform the suite was meant to run on.
|
|
38
|
+
*/
|
|
39
|
+
readonly transportLabel: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Thrown when a test worker asks for the ambient transport of a project whose
|
|
43
|
+
* global setup failed. Carries the configured transport, the original error's
|
|
44
|
+
* `name`, and its message, so callers can `instanceof`-match and report the real
|
|
45
|
+
* cause instead of a downstream transport error.
|
|
46
|
+
*/
|
|
47
|
+
export declare class IntegrationSetupFailedError extends Error {
|
|
48
|
+
/**
|
|
49
|
+
The `name` of the original error the global setup threw.
|
|
50
|
+
*/
|
|
51
|
+
readonly errorName: string;
|
|
52
|
+
/**
|
|
53
|
+
The original setup failure, as stringified by the adapter that caught it.
|
|
54
|
+
*/
|
|
55
|
+
readonly originalMessage: string;
|
|
56
|
+
/**
|
|
57
|
+
The transport the failed project is configured for.
|
|
58
|
+
*/
|
|
59
|
+
readonly transportLabel: string;
|
|
60
|
+
/**
|
|
61
|
+
* Creates the error from the failure the global setup published to its workers.
|
|
62
|
+
*
|
|
63
|
+
* @param params - The configured transport plus the original error's name and message.
|
|
64
|
+
*/
|
|
65
|
+
constructor(params: IntegrationSetupFailedErrorConstructorParams);
|
|
66
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class IntegrationSetupFailedError extends Error {
|
|
2
|
+
/**
|
|
3
|
+
The `name` of the original error the global setup threw.
|
|
4
|
+
*/
|
|
5
|
+
errorName;
|
|
6
|
+
/**
|
|
7
|
+
The original setup failure, as stringified by the adapter that caught it.
|
|
8
|
+
*/
|
|
9
|
+
originalMessage;
|
|
10
|
+
/**
|
|
11
|
+
The transport the failed project is configured for.
|
|
12
|
+
*/
|
|
13
|
+
transportLabel;
|
|
14
|
+
/**
|
|
15
|
+
* Creates the error from the failure the global setup published to its workers.
|
|
16
|
+
*
|
|
17
|
+
* @param params - The configured transport plus the original error's name and message.
|
|
18
|
+
*/
|
|
19
|
+
constructor(params) {
|
|
20
|
+
const {
|
|
21
|
+
errorName,
|
|
22
|
+
message,
|
|
23
|
+
transportLabel
|
|
24
|
+
} = params;
|
|
25
|
+
super(
|
|
26
|
+
`Integration setup for transport "${transportLabel}" failed, so its tests cannot run. Original error: ${message}`
|
|
27
|
+
);
|
|
28
|
+
this.name = "IntegrationSetupFailedError";
|
|
29
|
+
this.errorName = errorName;
|
|
30
|
+
this.originalMessage = message;
|
|
31
|
+
this.transportLabel = transportLabel;
|
|
32
|
+
this.stack = `${this.name}: ${this.message}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
IntegrationSetupFailedError
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLXNldHVwLWZhaWxlZC1lcnJvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBkaXN0aW5jdCBlcnJvciB0aHJvd24gaW4gYSAqKnRlc3Qgd29ya2VyKiogd2hlbiB0aGF0IHByb2plY3QncyBpbnRlZ3JhdGlvblxuICogZ2xvYmFsIHNldHVwIGFscmVhZHkgZmFpbGVkIGluIHRoZSBtYWluIHByb2Nlc3MuXG4gKlxuICogV2l0aG91dCBpdCBhIHdvcmtlciB3aG9zZSBzZXR1cCBmYWlsZWQgZ2V0cyBubyB0cmFuc3BvcnQgb3B0aW9ucyBhdCBhbGwsIGFuZFxuICogc2lsZW50bHkgcmVidWlsZHMgdGhlIG93bmVkICoqZGVza3RvcCoqIENEUCBkZWZhdWx0IFx1MjAxNCBzbyBhbiBBbmRyb2lkIHByb2plY3Qnc1xuICogc3VpdGUgd291bGQgcnVuIG9uIGRlc2t0b3AsIGFuZCB0aGVuIGRpZSBvbiBgRmFpbGVkIHRvIHBhcnNlIFVSTCBmcm9tIC9qc29uYFxuICogKGFuIG93bmVkIGluc3RhbmNlIG5vYm9keSBsYXVuY2hlZCBoYXMgbm8gQ0RQIGVuZHBvaW50KS4gRXZlcnkgZmlsZSBpbiB0aGVcbiAqIHByb2plY3QgcmVwb3J0ZWQgdGhhdCBtYXNrIHdoaWxlIHRoZSByZWFsIGNhdXNlIGFwcGVhcmVkIG9uY2UsIGZhciBhYm92ZSwgaW5cbiAqIHRoZSBzZXR1cCBsb2cuIFRoaXMgZXJyb3IgcmVwbGFjZXMgdGhlIG1hc2s6IGl0IGlzIHJhaXNlZCBiZWZvcmUgYW55IHRyYW5zcG9ydFxuICogaXMgY29uc3RydWN0ZWQsIGFuZCBpdCBjYXJyaWVzIHRoZSBvcmlnaW5hbCBzZXR1cCBmYWlsdXJlIHZlcmJhdGltLCBzbyBlYWNoXG4gKiByZXBvcnQgbmFtZXMgdGhlIGFjdHVhbCBjYXVzZS5cbiAqXG4gKiBJdCBkZWxpYmVyYXRlbHkgY2FycmllcyBubyBzdGFjayB0cmFjZTogdGhlIGZhaWx1cmUgaGFwcGVuZWQgaW4gdGhlIGdsb2JhbFxuICogc2V0dXAsIHdoaWNoIGFscmVhZHkgbG9nZ2VkIGl0cyBvd24gdHJhY2UsIGFuZCBhIHNlY29uZCB0cmFjZSBwb2ludGluZyBpbnRvXG4gKiB0aGUgaGFybmVzcyBvbmx5IHN1Z2dlc3RzIHRoZSBoYXJuZXNzIGJyb2tlLlxuICovXG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3J9IGNvbnN0cnVjdG9yLiBUaGlzIGlzIGFsc28gdGhlXG4gKiBzaGFwZSB0aGUgZnJhbWV3b3JrIGFkYXB0ZXIgcHVibGlzaGVzIHRvIGl0cyB3b3JrZXJzIChWaXRlc3Q6IGBwcm92aWRlKCdzZXR1cEVycm9yJylgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlZ3JhdGlvblNldHVwRmFpbGVkRXJyb3JDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgYG5hbWVgIG9mIHRoZSBvcmlnaW5hbCBlcnJvciB0aGUgZ2xvYmFsIHNldHVwIHRocmV3LCBzbyBhIGNhbGxlciBjYW4gdGVsbCBhblxuICBleHBlY3RlZCBza2lwIChgRGVza3RvcE9ubHlQbHVnaW5Ta2lwRXJyb3JgKSBmcm9tIGEgcmVhbCBicmVha2FnZSB3aXRob3V0IHRoZVxuICBvcmlnaW5hbCBlcnJvciBvYmplY3QsIHdoaWNoIGRvZXMgbm90IHN1cnZpdmUgdGhlIHRyaXAgdG8gYSB3b3JrZXIuXG4gICAqL1xuICByZWFkb25seSBlcnJvck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIG9yaWdpbmFsIHNldHVwIGZhaWx1cmUsIGFscmVhZHkgc3RyaW5naWZpZWQgYnkgdGhlIGFkYXB0ZXIgdGhhdCBjYXVnaHQgaXQuXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gIFRoZSB0cmFuc3BvcnQgdGhlIGZhaWxlZCBwcm9qZWN0IGlzIGNvbmZpZ3VyZWQgZm9yIChlLmcuIGBvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bWApLFxuICBzbyB0aGUgcmVwb3J0IG5hbWVzIHRoZSBwbGF0Zm9ybSB0aGUgc3VpdGUgd2FzIG1lYW50IHRvIHJ1biBvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zcG9ydExhYmVsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSB0ZXN0IHdvcmtlciBhc2tzIGZvciB0aGUgYW1iaWVudCB0cmFuc3BvcnQgb2YgYSBwcm9qZWN0IHdob3NlXG4gKiBnbG9iYWwgc2V0dXAgZmFpbGVkLiBDYXJyaWVzIHRoZSBjb25maWd1cmVkIHRyYW5zcG9ydCwgdGhlIG9yaWdpbmFsIGVycm9yJ3NcbiAqIGBuYW1lYCwgYW5kIGl0cyBtZXNzYWdlLCBzbyBjYWxsZXJzIGNhbiBgaW5zdGFuY2VvZmAtbWF0Y2ggYW5kIHJlcG9ydCB0aGUgcmVhbFxuICogY2F1c2UgaW5zdGVhZCBvZiBhIGRvd25zdHJlYW0gdHJhbnNwb3J0IGVycm9yLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25TZXR1cEZhaWxlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgVGhlIGBuYW1lYCBvZiB0aGUgb3JpZ2luYWwgZXJyb3IgdGhlIGdsb2JhbCBzZXR1cCB0aHJldy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlcnJvck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIG9yaWdpbmFsIHNldHVwIGZhaWx1cmUsIGFzIHN0cmluZ2lmaWVkIGJ5IHRoZSBhZGFwdGVyIHRoYXQgY2F1Z2h0IGl0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9yaWdpbmFsTWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICBUaGUgdHJhbnNwb3J0IHRoZSBmYWlsZWQgcHJvamVjdCBpcyBjb25maWd1cmVkIGZvci5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc3BvcnRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlcnJvciBmcm9tIHRoZSBmYWlsdXJlIHRoZSBnbG9iYWwgc2V0dXAgcHVibGlzaGVkIHRvIGl0cyB3b3JrZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbmZpZ3VyZWQgdHJhbnNwb3J0IHBsdXMgdGhlIG9yaWdpbmFsIGVycm9yJ3MgbmFtZSBhbmQgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgY29uc3Qge1xuICAgICAgZXJyb3JOYW1lLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHRyYW5zcG9ydExhYmVsXG4gICAgfSA9IHBhcmFtcztcbiAgICBzdXBlcihcbiAgICAgIGBJbnRlZ3JhdGlvbiBzZXR1cCBmb3IgdHJhbnNwb3J0IFwiJHt0cmFuc3BvcnRMYWJlbH1cIiBmYWlsZWQsIHNvIGl0cyB0ZXN0cyBjYW5ub3QgcnVuLiBgXG4gICAgICAgICsgYE9yaWdpbmFsIGVycm9yOiAke21lc3NhZ2V9YFxuICAgICk7XG4gICAgdGhpcy5uYW1lID0gJ0ludGVncmF0aW9uU2V0dXBGYWlsZWRFcnJvcic7XG4gICAgdGhpcy5lcnJvck5hbWUgPSBlcnJvck5hbWU7XG4gICAgdGhpcy5vcmlnaW5hbE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMudHJhbnNwb3J0TGFiZWwgPSB0cmFuc3BvcnRMYWJlbDtcbiAgICAvLyBUaGUgZ2xvYmFsIHNldHVwIGFscmVhZHkgbG9nZ2VkIHRoZSBvcmlnaW5hbCBmYWlsdXJlIHdpdGggaXRzIG93biB0cmFjZS4gQSBzZWNvbmQgdHJhY2UsIHBvaW50aW5nXG4gICAgLy8gQXQgdGhlIGhhcm5lc3MgaW50ZXJuYWxzIHRoYXQgbWVyZWx5IHJlLXJhaXNlZCBpdCwgaXMgd2hhdCBtYWtlcyB0aGUgcmVhbCBjYXVzZSBoYXJkIHRvIGZpbmQuXG4gICAgdGhpcy5zdGFjayA9IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQWtETyxNQUFNLG9DQUFvQyxNQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJckM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ULFlBQVksUUFBc0Q7QUFDdkUsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsSUFBSTtBQUNKO0FBQUEsTUFDRSxvQ0FBb0MsY0FBYyxzREFDM0IsT0FBTztBQUFBLElBQ2hDO0FBQ0EsU0FBSyxPQUFPO0FBQ1osU0FBSyxZQUFZO0FBQ2pCLFNBQUssa0JBQWtCO0FBQ3ZCLFNBQUssaUJBQWlCO0FBR3RCLFNBQUssUUFBUSxHQUFHLEtBQUssSUFBSSxLQUFLLEtBQUssT0FBTztBQUFBLEVBQzVDO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -56,8 +56,12 @@ export interface CreateSetupOptions {
|
|
|
56
56
|
* Returns files/folders to write into the vault before Obsidian opens it (see
|
|
57
57
|
* {@link CoreSetupParams.populate}). A thunk so large fixtures are built lazily,
|
|
58
58
|
* once, in the setup process.
|
|
59
|
+
*
|
|
60
|
+
* May return a promise, so the map can be built by something that needs the network — notably
|
|
61
|
+
* `buildDemoVaultPopulateAsync`, which installs a demo vault's missing community plugins before
|
|
62
|
+
* reading them. A synchronous thunk (e.g. `buildDemoVaultPopulate`) is unchanged.
|
|
59
63
|
*/
|
|
60
|
-
populate?(this: void): PopulateFilesParams
|
|
64
|
+
populate?(this: void): PopulateFilesParams | Promise<PopulateFilesParams>;
|
|
61
65
|
}
|
|
62
66
|
/**
|
|
63
67
|
* A Jest `globalSetup` / `globalTeardown` module's `setup` / `teardown` pair.
|
|
@@ -17,7 +17,7 @@ function createSetup(options) {
|
|
|
17
17
|
setupResult = await coreSetup({
|
|
18
18
|
enableCommunityPlugins: options?.enableCommunityPlugins,
|
|
19
19
|
installPlugin: options?.installPlugin,
|
|
20
|
-
populate: options?.populate?.(),
|
|
20
|
+
populate: await options?.populate?.(),
|
|
21
21
|
transportOptions
|
|
22
22
|
});
|
|
23
23
|
globalThis.__obsidianIntegrationTesting = {
|
|
@@ -54,4 +54,4 @@ export {
|
|
|
54
54
|
setup,
|
|
55
55
|
teardown
|
|
56
56
|
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2plc3QvZ2xvYmFsLXNldHVwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSmVzdCBnbG9iYWwgc2V0dXAgYW5kIHRlYXJkb3duIGFkYXB0ZXIuXG4gKlxuICogRGVsZWdhdGVzIHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgY29yZSBhbmQgYnJpZGdlcyBjb250ZXh0XG4gKiB0byB0ZXN0IHdvcmtlcnMgdmlhIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcblxuaW1wb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5pbXBvcnQge1xuICBjb3JlU2V0dXAsXG4gIGNvcmVUZWFyZG93blxufSBmcm9tICcuLi9nbG9iYWwtc2V0dXAtY29yZS5tanMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcblxuLyoqXG4gKiBTaGFwZSBvZiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYC5cbiAqXG4gKiBDb25zdW1lcnMgbWF5IHByZS1wb3B1bGF0ZSBgdHJhbnNwb3J0T3B0aW9uc2AgYmVmb3JlIHRoZSBnbG9iYWwgc2V0dXAgcnVuc1xuICogKGUuZy4sIHZpYSBKZXN0IGNvbmZpZyBgZ2xvYmFsc2ApLiBUaGUgc2V0dXAgdGhlbiBhZGRzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwge1xuICAvKipcbiAgVGVtcCB2YXVsdCBwYXRoLCBzZXQgYnkgdGhlIGdsb2JhbCBzZXR1cCBmb3IgdGVzdCB3b3JrZXJzLlxuICAgKi9cbiAgdGVtcG9yYXJ5VmF1bHRQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUcmFuc3BvcnQgb3B0aW9ucy4gU2V0IGJ5IHRoZSBjb25zdW1lciBiZWZvcmUgc2V0dXAsIG9yIGJ5IHRoZSBzZXR1cCBpdHNlbGYuXG4gICAqL1xuICB0cmFuc3BvcnRPcHRpb25zPzogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAtLSBSZXF1aXJlZCBmb3IgYGRlY2xhcmUgZ2xvYmFsYCBhdWdtZW50YXRpb24uICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBOYW1lc3BhY2UgZm9yIGFsbCBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZ2AgZ2xvYmFsIHN0YXRlLlxuICAgKiBDb25zdW1lcnMgY29uZmlndXJlIHRyYW5zcG9ydCBvcHRpb25zIGhlcmU7IHRoZSBzZXR1cCBwb3B1bGF0ZXMgdGhlIHJlc3QuXG4gICAqL1xuICB2YXIgX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZzogT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwgfCB1bmRlZmluZWQ7XG59XG4vKiBlc2xpbnQtZW5hYmxlIHZhcnMtb24tdG9wIC0tIEVuZCBvZiBgZGVjbGFyZSBnbG9iYWxgIGJsb2NrLiAqL1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udGVtcG9yYXJ5VmF1bHRQYXRoKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb21tdW5pdHktcGx1Z2luIGlkcyB0byBlbmFibGUgaW4gdGhlIHZhdWx0IGluIGFkZGl0aW9uIHRvIHRoZSBwbHVnaW4tdW5kZXItdGVzdCxcbiAgICogYWZ0ZXIgaXQgaXMgZW5hYmxlZCAoc2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuZW5hYmxlQ29tbXVuaXR5UGx1Z2luc30pLiBTZWVkIGVhY2hcbiAgICogcGx1Z2luJ3MgYnVpbHQgZmlsZXMgdmlhIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMucG9wdWxhdGV9IChlLmcuIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKVxuICAgKiBzbyB0aGUgZW5hYmxlIGZpbmRzIHRoZW0gb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbW11bml0eVBsdWdpbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIGJ1aWx0IHBsdWdpbiBpbiB0aGUgdGVtcCB2YXVsdC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLiBTZXQgdG8gYGZhbHNlYCBmb3IgYSAqKm5vbi1wbHVnaW4qKiBjb25zdW1lciB0aGF0IG9ubHkgbmVlZHMgYVxuICAgKiByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCB0byBgZXZhbEluT2JzaWRpYW5gIGFnYWluc3QgXHUyMDE0IHRoZSBvd25lZCBpbnN0YW5jZSBpc1xuICAgKiBzdGlsbCBsYXVuY2hlZCBhbmQgaXRzIGVuZHBvaW50IHB1Ymxpc2hlZCB0byB3b3JrZXJzLCBzbyByZS1leHBvcnRpbmdcbiAgICogYGNyZWF0ZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfSlgIHJldXNlcyB0aGUgc2FtZSBhdHRhY2ggd2lyaW5nIHdpdGggbm9cbiAgICogcGx1Z2luIGNvcHkvZW5hYmxlLiBTZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKi9cbiAgcG9wdWxhdGU/KHRoaXM6IHZvaWQpOiBQb3B1bGF0ZUZpbGVzUGFyYW1zO1xufVxuXG4vKipcbiAqIEEgSmVzdCBgZ2xvYmFsU2V0dXBgIC8gYGdsb2JhbFRlYXJkb3duYCBtb2R1bGUncyBgc2V0dXBgIC8gYHRlYXJkb3duYCBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEplc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQpOiBQcm9taXNlPHZvaWQ+O1xuICB0ZWFyZG93bih0aGlzOiB2b2lkKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgSmVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBzZXR1cC4gVGhlIHBsYWluIHtAbGluayBzZXR1cH0gLyB7QGxpbmsgdGVhcmRvd259IGV4cG9ydHMgYXJlIHRoZSBuby1wb3B1bGF0ZVxuICogY2FzZSAoYGNyZWF0ZVNldHVwKClgKS4gUGFzcyBgeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9YCBmb3IgYSBub24tcGx1Z2luIGNvbnN1bWVyXG4gKiB0aGF0IG9ubHkgbmVlZHMgYSByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCAoc2VlIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMuaW5zdGFsbFBsdWdpbn0pLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gU2V0dXAgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBgc2V0dXBgIGFuZCBgdGVhcmRvd25gIGZ1bmN0aW9ucyB0byByZS1leHBvcnQgZnJvbSBhIGBnbG9iYWxTZXR1cGAgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2V0dXAob3B0aW9ucz86IENyZWF0ZVNldHVwT3B0aW9ucyk6IEplc3RHbG9iYWxTZXR1cCB7XG4gIGxldCBzZXR1cFJlc3VsdDogQ29yZVNldHVwUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7IHNldHVwLCB0ZWFyZG93biB9O1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldHVwKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRyYW5zcG9ydE9wdGlvbnMgPSBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnRyYW5zcG9ydE9wdGlvbnM7XG5cbiAgICBzZXR1cFJlc3VsdCA9IGF3YWl0IGNvcmVTZXR1cCh7XG4gICAgICBlbmFibGVDb21tdW5pdHlQbHVnaW5zOiBvcHRpb25zPy5lbmFibGVDb21tdW5pdHlQbHVnaW5zLFxuICAgICAgaW5zdGFsbFBsdWdpbjogb3B0aW9ucz8uaW5zdGFsbFBsdWdpbixcbiAgICAgIHBvcHVsYXRlOiBvcHRpb25zPy5wb3B1bGF0ZT8uKCksXG4gICAgICB0cmFuc3BvcnRPcHRpb25zXG4gICAgfSk7XG5cbiAgICBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcgPSB7XG4gICAgICAuLi5nbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcsXG4gICAgICB0ZW1wb3JhcnlWYXVsdFBhdGg6IHNldHVwUmVzdWx0LnRlbXBvcmFyeVZhdWx0LnBhdGgsXG4gICAgICB0cmFuc3BvcnRPcHRpb25zOiBzZXR1cFJlc3VsdC50cmFuc3BvcnRPcHRpb25zXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRlYXJkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGNvcmVUZWFyZG93bihzZXR1cFJlc3VsdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0ZW1wb3JhcnkgdmF1bHQgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBSZWFkcyB0aGUgdmF1bHQgcGF0aCBmcm9tIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcudGVtcG9yYXJ5VmF1bHRQYXRoYCxcbiAqIHdoaWNoIGlzIHNldCBieSB0aGUgSmVzdCBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBvcmFyeVZhdWx0KCk6IFRlbXBvcmFyeVZhdWx0IHtcbiAgY29uc3QgdGVtcG9yYXJ5VmF1bHRQYXRoID0gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50ZW1wb3JhcnlWYXVsdFBhdGg7XG4gIGlmICghdGVtcG9yYXJ5VmF1bHRQYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2dsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50ZW1wb3JhcnlWYXVsdFBhdGggaXMgbm90IHNldC4gRGlkIHlvdSBjb25maWd1cmUgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy9qZXN0LWdsb2JhbC1zZXR1cCBhcyBhIEplc3QgZ2xvYmFsU2V0dXA/J1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wb3JhcnlWYXVsdCh0ZW1wb3JhcnlWYXVsdFBhdGgpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRyYW5zcG9ydCBvcHRpb25zIHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRyYW5zcG9ydCBvcHRpb25zLCBvciBgdW5kZWZpbmVkYCBpZiBub3QgY29uZmlndXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRyYW5zcG9ydE9wdGlvbnMoKTogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udHJhbnNwb3J0T3B0aW9ucztcbn1cblxuY29uc3QgZGVmYXVsdEdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoKTtcblxuLyoqXG4gKiBKZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbiAobm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIENvcGllcyB0aGUgYnVpbHQgcGx1Z2luIGludG8gYSB0ZW1wb3JhcnkgdmF1bHQsIGVuYWJsZXMgaXQgdmlhIGEgcmVuZGVyZXIgZXZhbFxuICogb3ZlciB0aGUgdHJhbnNwb3J0LCBhbmQgcG9wdWxhdGVzIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgIGZvciB0ZXN0cy5cbiAqXG4gKiBUcmFuc3BvcnQgb3B0aW9ucyBhcmUgcmVhZCBmcm9tIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmcudHJhbnNwb3J0T3B0aW9uc2AuXG4gKiBTZXQgdGhpcyBpbiB5b3VyIEplc3QgY29uZmlnIHZpYSB0aGUgYGdsb2JhbHNgIG9wdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHNldHVwIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gZGVmYXVsdEdsb2JhbFNldHVwLnNldHVwO1xuXG4vKipcbiAqIEplc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuXG4vLyBKZXN0J3MgYGdsb2JhbFNldHVwYCBjb25maWcgY2FuIHJlZmVyZW5jZSB0aGlzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIGl0cyBkZWZhdWx0IGV4cG9ydCBpcyB0aGUgc2V0dXAgZnVuY3Rpb24uXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQgLS0gSmVzdCdzIGdsb2JhbFNldHVwIGxvYWRlciByZXF1aXJlcyBhIGRlZmF1bHQtZXhwb3J0IGZ1bmN0aW9uLlxuZXhwb3J0IGRlZmF1bHQgc2V0dXA7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFlQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxzQkFBc0I7QUE4Qi9CLDRCQUE0QixNQUFNLFdBQVcsOEJBQThCLGdCQUFnQjtBQUMzRixxQkFBcUIsTUFBTSxXQUFXLDhCQUE4QixrQkFBa0I7QUFrRC9FLFNBQVMsWUFBWSxTQUErQztBQUN6RSxNQUFJO0FBRUosU0FBTyxFQUFFLE9BQUFBLFFBQU8sVUFBQUMsVUFBUztBQUV6QixpQkFBZUQsU0FBdUI7QUFDcEMsVUFBTSxtQkFBbUIsV0FBVyw4QkFBOEI7QUFFbEUsa0JBQWMsTUFBTSxVQUFVO0FBQUEsTUFDNUIsd0JBQXdCLFNBQVM7QUFBQSxNQUNqQyxlQUFlLFNBQVM7QUFBQSxNQUN4QixVQUFVLFNBQVMsV0FBVztBQUFBLE1BQzlCO0FBQUEsSUFDRixDQUFDO0FBRUQsZUFBVywrQkFBK0I7QUFBQSxNQUN4QyxHQUFHLFdBQVc7QUFBQSxNQUNkLG9CQUFvQixZQUFZLGVBQWU7QUFBQSxNQUMvQyxrQkFBa0IsWUFBWTtBQUFBLElBQ2hDO0FBQUEsRUFDRjtBQUVBLGlCQUFlQyxZQUEwQjtBQUN2QyxVQUFNLGFBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFVTyxTQUFTLG9CQUFvQztBQUNsRCxRQUFNLHFCQUFxQixXQUFXLDhCQUE4QjtBQUNwRSxNQUFJLENBQUMsb0JBQW9CO0FBQ3ZCLFVBQU0sSUFBSTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFNBQU8sSUFBSSxlQUFlLGtCQUFrQjtBQUM5QztBQU9PLFNBQVMsc0JBQTREO0FBQzFFLFNBQU8sV0FBVyw4QkFBOEI7QUFDbEQ7QUFFQSxNQUFNLHFCQUFxQixZQUFZO0FBYWhDLE1BQU0sUUFBUSxtQkFBbUI7QUFTakMsTUFBTSxXQUFXLG1CQUFtQjtBQUkzQyxJQUFPLHVCQUFROyIsCiAgIm5hbWVzIjogWyJzZXR1cCIsICJ0ZWFyZG93biJdCn0K
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2plc3QvZ2xvYmFsLXNldHVwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogSmVzdCBnbG9iYWwgc2V0dXAgYW5kIHRlYXJkb3duIGFkYXB0ZXIuXG4gKlxuICogRGVsZWdhdGVzIHRvIHRoZSBmcmFtZXdvcmstYWdub3N0aWMgY29yZSBhbmQgYnJpZGdlcyBjb250ZXh0XG4gKiB0byB0ZXN0IHdvcmtlcnMgdmlhIGBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcblxuaW1wb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5pbXBvcnQge1xuICBjb3JlU2V0dXAsXG4gIGNvcmVUZWFyZG93blxufSBmcm9tICcuLi9nbG9iYWwtc2V0dXAtY29yZS5tanMnO1xuaW1wb3J0IHsgVGVtcG9yYXJ5VmF1bHQgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcblxuLyoqXG4gKiBTaGFwZSBvZiBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYC5cbiAqXG4gKiBDb25zdW1lcnMgbWF5IHByZS1wb3B1bGF0ZSBgdHJhbnNwb3J0T3B0aW9uc2AgYmVmb3JlIHRoZSBnbG9iYWwgc2V0dXAgcnVuc1xuICogKGUuZy4sIHZpYSBKZXN0IGNvbmZpZyBgZ2xvYmFsc2ApLiBUaGUgc2V0dXAgdGhlbiBhZGRzIGB0ZW1wb3JhcnlWYXVsdFBhdGhgLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwge1xuICAvKipcbiAgVGVtcCB2YXVsdCBwYXRoLCBzZXQgYnkgdGhlIGdsb2JhbCBzZXR1cCBmb3IgdGVzdCB3b3JrZXJzLlxuICAgKi9cbiAgdGVtcG9yYXJ5VmF1bHRQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICBUcmFuc3BvcnQgb3B0aW9ucy4gU2V0IGJ5IHRoZSBjb25zdW1lciBiZWZvcmUgc2V0dXAsIG9yIGJ5IHRoZSBzZXR1cCBpdHNlbGYuXG4gICAqL1xuICB0cmFuc3BvcnRPcHRpb25zPzogT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIHwgdW5kZWZpbmVkO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAtLSBSZXF1aXJlZCBmb3IgYGRlY2xhcmUgZ2xvYmFsYCBhdWdtZW50YXRpb24uICovXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8qKlxuICAgKiBOYW1lc3BhY2UgZm9yIGFsbCBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZ2AgZ2xvYmFsIHN0YXRlLlxuICAgKiBDb25zdW1lcnMgY29uZmlndXJlIHRyYW5zcG9ydCBvcHRpb25zIGhlcmU7IHRoZSBzZXR1cCBwb3B1bGF0ZXMgdGhlIHJlc3QuXG4gICAqL1xuICB2YXIgX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZzogT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdHbG9iYWwgfCB1bmRlZmluZWQ7XG59XG4vKiBlc2xpbnQtZW5hYmxlIHZhcnMtb24tdG9wIC0tIEVuZCBvZiBgZGVjbGFyZSBnbG9iYWxgIGJsb2NrLiAqL1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udGVtcG9yYXJ5VmF1bHRQYXRoKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb21tdW5pdHktcGx1Z2luIGlkcyB0byBlbmFibGUgaW4gdGhlIHZhdWx0IGluIGFkZGl0aW9uIHRvIHRoZSBwbHVnaW4tdW5kZXItdGVzdCxcbiAgICogYWZ0ZXIgaXQgaXMgZW5hYmxlZCAoc2VlIHtAbGluayBDb3JlU2V0dXBQYXJhbXMuZW5hYmxlQ29tbXVuaXR5UGx1Z2luc30pLiBTZWVkIGVhY2hcbiAgICogcGx1Z2luJ3MgYnVpbHQgZmlsZXMgdmlhIHtAbGluayBDcmVhdGVTZXR1cE9wdGlvbnMucG9wdWxhdGV9IChlLmcuIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgKVxuICAgKiBzbyB0aGUgZW5hYmxlIGZpbmRzIHRoZW0gb24gZGlzay5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUNvbW11bml0eVBsdWdpbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIGJ1aWx0IHBsdWdpbiBpbiB0aGUgdGVtcCB2YXVsdC4gRGVmYXVsdHNcbiAgICogdG8gYHRydWVgLiBTZXQgdG8gYGZhbHNlYCBmb3IgYSAqKm5vbi1wbHVnaW4qKiBjb25zdW1lciB0aGF0IG9ubHkgbmVlZHMgYVxuICAgKiByZWdpc3RlcmVkLCBlbXB0eSB2YXVsdCB0byBgZXZhbEluT2JzaWRpYW5gIGFnYWluc3QgXHUyMDE0IHRoZSBvd25lZCBpbnN0YW5jZSBpc1xuICAgKiBzdGlsbCBsYXVuY2hlZCBhbmQgaXRzIGVuZHBvaW50IHB1Ymxpc2hlZCB0byB3b3JrZXJzLCBzbyByZS1leHBvcnRpbmdcbiAgICogYGNyZWF0ZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfSlgIHJldXNlcyB0aGUgc2FtZSBhdHRhY2ggd2lyaW5nIHdpdGggbm9cbiAgICogcGx1Z2luIGNvcHkvZW5hYmxlLiBTZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5pbnN0YWxsUGx1Z2lufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxQbHVnaW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKlxuICAgKiBNYXkgcmV0dXJuIGEgcHJvbWlzZSwgc28gdGhlIG1hcCBjYW4gYmUgYnVpbHQgYnkgc29tZXRoaW5nIHRoYXQgbmVlZHMgdGhlIG5ldHdvcmsgXHUyMDE0IG5vdGFibHlcbiAgICogYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVBc3luY2AsIHdoaWNoIGluc3RhbGxzIGEgZGVtbyB2YXVsdCdzIG1pc3NpbmcgY29tbXVuaXR5IHBsdWdpbnMgYmVmb3JlXG4gICAqIHJlYWRpbmcgdGhlbS4gQSBzeW5jaHJvbm91cyB0aHVuayAoZS5nLiBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWApIGlzIHVuY2hhbmdlZC5cbiAgICovXG4gIHBvcHVsYXRlPyh0aGlzOiB2b2lkKTogUG9wdWxhdGVGaWxlc1BhcmFtcyB8IFByb21pc2U8UG9wdWxhdGVGaWxlc1BhcmFtcz47XG59XG5cbi8qKlxuICogQSBKZXN0IGBnbG9iYWxTZXR1cGAgLyBgZ2xvYmFsVGVhcmRvd25gIG1vZHVsZSdzIGBzZXR1cGAgLyBgdGVhcmRvd25gIHBhaXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSmVzdEdsb2JhbFNldHVwIHtcbiAgc2V0dXAodGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG4gIHRlYXJkb3duKHRoaXM6IHZvaWQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBKZXN0IGdsb2JhbCBzZXR1cC90ZWFyZG93biBwYWlyLCBvcHRpb25hbGx5IHByZS1wb3B1bGF0aW5nIHRoZSB2YXVsdFxuICogYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IFx1MjAxNCB1c2UgdGhpcyBmb3IgYSBkZWRpY2F0ZWQgbGFyZ2UtdmF1bHQvcGVyZm9ybWFuY2VcbiAqIHNldHVwLiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLiBQYXNzIGB7IGluc3RhbGxQbHVnaW46IGZhbHNlIH1gIGZvciBhIG5vbi1wbHVnaW4gY29uc3VtZXJcbiAqIHRoYXQgb25seSBuZWVkcyBhIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IChzZWUge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5pbnN0YWxsUGx1Z2lufSkuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBTZXR1cCBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBzZXR1cGAgYW5kIGB0ZWFyZG93bmAgZnVuY3Rpb25zIHRvIHJlLWV4cG9ydCBmcm9tIGEgYGdsb2JhbFNldHVwYCBtb2R1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZXR1cChvcHRpb25zPzogQ3JlYXRlU2V0dXBPcHRpb25zKTogSmVzdEdsb2JhbFNldHVwIHtcbiAgbGV0IHNldHVwUmVzdWx0OiBDb3JlU2V0dXBSZXN1bHQgfCB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHsgc2V0dXAsIHRlYXJkb3duIH07XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2V0dXAoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHJhbnNwb3J0T3B0aW9ucyA9IGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZz8udHJhbnNwb3J0T3B0aW9ucztcblxuICAgIHNldHVwUmVzdWx0ID0gYXdhaXQgY29yZVNldHVwKHtcbiAgICAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IG9wdGlvbnM/LmVuYWJsZUNvbW11bml0eVBsdWdpbnMsXG4gICAgICBpbnN0YWxsUGx1Z2luOiBvcHRpb25zPy5pbnN0YWxsUGx1Z2luLFxuICAgICAgcG9wdWxhdGU6IGF3YWl0IG9wdGlvbnM/LnBvcHVsYXRlPy4oKSxcbiAgICAgIHRyYW5zcG9ydE9wdGlvbnNcbiAgICB9KTtcblxuICAgIGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZyA9IHtcbiAgICAgIC4uLmdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZyxcbiAgICAgIHRlbXBvcmFyeVZhdWx0UGF0aDogc2V0dXBSZXN1bHQudGVtcG9yYXJ5VmF1bHQucGF0aCxcbiAgICAgIHRyYW5zcG9ydE9wdGlvbnM6IHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gdGVhcmRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgY29yZVRlYXJkb3duKHNldHVwUmVzdWx0KTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRlbXBvcmFyeSB2YXVsdCBwcm92aWRlZCBieSB0aGUgZ2xvYmFsIHNldHVwLlxuICpcbiAqIFJlYWRzIHRoZSB2YXVsdCBwYXRoIGZyb20gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50ZW1wb3JhcnlWYXVsdFBhdGhgLFxuICogd2hpY2ggaXMgc2V0IGJ5IHRoZSBKZXN0IGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdGVtcG9yYXJ5IHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5VmF1bHQoKTogVGVtcG9yYXJ5VmF1bHQge1xuICBjb25zdCB0ZW1wb3JhcnlWYXVsdFBhdGggPSBnbG9iYWxUaGlzLl9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc/LnRlbXBvcmFyeVZhdWx0UGF0aDtcbiAgaWYgKCF0ZW1wb3JhcnlWYXVsdFBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nLnRlbXBvcmFyeVZhdWx0UGF0aCBpcyBub3Qgc2V0LiBEaWQgeW91IGNvbmZpZ3VyZSBvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL2plc3QtZ2xvYmFsLXNldHVwIGFzIGEgSmVzdCBnbG9iYWxTZXR1cD8nXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbmV3IFRlbXBvcmFyeVZhdWx0KHRlbXBvcmFyeVZhdWx0UGF0aCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdHJhbnNwb3J0IG9wdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdHJhbnNwb3J0IG9wdGlvbnMsIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBjb25maWd1cmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNwb3J0T3B0aW9ucygpOiBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2xvYmFsVGhpcy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nPy50cmFuc3BvcnRPcHRpb25zO1xufVxuXG5jb25zdCBkZWZhdWx0R2xvYmFsU2V0dXAgPSBjcmVhdGVTZXR1cCgpO1xuXG4vKipcbiAqIEplc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChubyBwcmUtcG9wdWxhdGlvbikuXG4gKlxuICogQ29waWVzIHRoZSBidWlsdCBwbHVnaW4gaW50byBhIHRlbXBvcmFyeSB2YXVsdCwgZW5hYmxlcyBpdCB2aWEgYSByZW5kZXJlciBldmFsXG4gKiBvdmVyIHRoZSB0cmFuc3BvcnQsIGFuZCBwb3B1bGF0ZXMgYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZ2AgZm9yIHRlc3RzLlxuICpcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGFyZSByZWFkIGZyb20gYGdsb2JhbFRoaXMuX19vYnNpZGlhbkludGVncmF0aW9uVGVzdGluZy50cmFuc3BvcnRPcHRpb25zYC5cbiAqIFNldCB0aGlzIGluIHlvdXIgSmVzdCBjb25maWcgdmlhIHRoZSBgZ2xvYmFsc2Agb3B0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gc2V0dXAgY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXAgPSBkZWZhdWx0R2xvYmFsU2V0dXAuc2V0dXA7XG5cbi8qKlxuICogSmVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGVhcmRvd24gY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3QgdGVhcmRvd24gPSBkZWZhdWx0R2xvYmFsU2V0dXAudGVhcmRvd247XG5cbi8vIEplc3QncyBgZ2xvYmFsU2V0dXBgIGNvbmZpZyBjYW4gcmVmZXJlbmNlIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGJlY2F1c2UgaXRzIGRlZmF1bHQgZXhwb3J0IGlzIHRoZSBzZXR1cCBmdW5jdGlvbi5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1kZWZhdWx0LWV4cG9ydCAtLSBKZXN0J3MgZ2xvYmFsU2V0dXAgbG9hZGVyIHJlcXVpcmVzIGEgZGVmYXVsdC1leHBvcnQgZnVuY3Rpb24uXG5leHBvcnQgZGVmYXVsdCBzZXR1cDtcbiJdLAogICJtYXBwaW5ncyI6ICJBQWVBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHNCQUFzQjtBQThCL0IsNEJBQTRCLE1BQU0sV0FBVyw4QkFBOEIsZ0JBQWdCO0FBQzNGLHFCQUFxQixNQUFNLFdBQVcsOEJBQThCLGtCQUFrQjtBQXNEL0UsU0FBUyxZQUFZLFNBQStDO0FBQ3pFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxTQUF1QjtBQUNwQyxVQUFNLG1CQUFtQixXQUFXLDhCQUE4QjtBQUVsRSxrQkFBYyxNQUFNLFVBQVU7QUFBQSxNQUM1Qix3QkFBd0IsU0FBUztBQUFBLE1BQ2pDLGVBQWUsU0FBUztBQUFBLE1BQ3hCLFVBQVUsTUFBTSxTQUFTLFdBQVc7QUFBQSxNQUNwQztBQUFBLElBQ0YsQ0FBQztBQUVELGVBQVcsK0JBQStCO0FBQUEsTUFDeEMsR0FBRyxXQUFXO0FBQUEsTUFDZCxvQkFBb0IsWUFBWSxlQUFlO0FBQUEsTUFDL0Msa0JBQWtCLFlBQVk7QUFBQSxJQUNoQztBQUFBLEVBQ0Y7QUFFQSxpQkFBZUMsWUFBMEI7QUFDdkMsVUFBTSxhQUFhLFdBQVc7QUFBQSxFQUNoQztBQUNGO0FBVU8sU0FBUyxvQkFBb0M7QUFDbEQsUUFBTSxxQkFBcUIsV0FBVyw4QkFBOEI7QUFDcEUsTUFBSSxDQUFDLG9CQUFvQjtBQUN2QixVQUFNLElBQUk7QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPLElBQUksZUFBZSxrQkFBa0I7QUFDOUM7QUFPTyxTQUFTLHNCQUE0RDtBQUMxRSxTQUFPLFdBQVcsOEJBQThCO0FBQ2xEO0FBRUEsTUFBTSxxQkFBcUIsWUFBWTtBQWFoQyxNQUFNLFFBQVEsbUJBQW1CO0FBU2pDLE1BQU0sV0FBVyxtQkFBbUI7QUFJM0MsSUFBTyx1QkFBUTsiLAogICJuYW1lcyI6IFsic2V0dXAiLCAidGVhcmRvd24iXQp9Cg==
|
|
@@ -7,10 +7,18 @@ import type { ChildProcess } from 'node:child_process';
|
|
|
7
7
|
/**
|
|
8
8
|
* Kills a child process and its entire process tree.
|
|
9
9
|
*
|
|
10
|
+
* @param child - The child process to kill.
|
|
11
|
+
*/
|
|
12
|
+
export declare function killProcessTree(child: ChildProcess): void;
|
|
13
|
+
/**
|
|
14
|
+
* Kills a process tree by PID, for a process this run did not spawn itself — an
|
|
15
|
+
* Appium server left listening by an earlier run, identified through its marker
|
|
16
|
+
* (`appium-server-marker.ts`).
|
|
17
|
+
*
|
|
10
18
|
* On Windows, `child.kill()` only sends SIGTERM to the direct process,
|
|
11
19
|
* leaving spawned grandchildren (e.g. Electron renderer/GPU helpers, QEMU,
|
|
12
20
|
* UiAutomator) alive. `taskkill /F /T /PID` forcefully terminates the entire tree.
|
|
13
21
|
*
|
|
14
|
-
* @param
|
|
22
|
+
* @param pid - The PID whose process tree to kill.
|
|
15
23
|
*/
|
|
16
|
-
export declare function
|
|
24
|
+
export declare function killProcessTreeByPid(pid: number): void;
|