valtech-components 4.0.1038 → 4.0.1040
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/esm2022/lib/components/molecules/select-input/select-input.component.mjs +5 -3
- package/esm2022/lib/services/auth/auth.service.mjs +6 -2
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/lib/services/firebase/storage.service.mjs +49 -1
- package/esm2022/lib/services/firebase/types.mjs +1 -1
- package/esm2022/lib/services/i18n/i18n.service.mjs +10 -5
- package/esm2022/lib/services/preferences/preferences.service.mjs +25 -4
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +344 -265
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/phone-display/phone-display.component.d.ts +1 -1
- package/lib/services/auth/types.d.ts +2 -0
- package/lib/services/firebase/storage.service.d.ts +11 -1
- package/lib/services/firebase/types.d.ts +34 -0
- package/lib/services/preferences/preferences.service.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -28,4 +28,4 @@ export const INITIAL_MFA_STATE = {
|
|
|
28
28
|
mfaToken: null,
|
|
29
29
|
method: null,
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBc01IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWM7SUFDM0MsZUFBZSxFQUFFLEtBQUs7SUFDdEIsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSTtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsRUFBRTtJQUNULFdBQVcsRUFBRSxFQUFFO0lBQ2YsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFrQkY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBb0I7SUFDaEQsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGlwb3MgZSBpbnRlcmZhY2VzIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24gZGUgVmFsdGVjaC5cbiAqIEFsaW5lYWRvcyBjb24gZWwgYmFja2VuZCBBdXRoVjIuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJR1VSQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGVjaEF1dGhDb25maWcge1xuICAvKiogVVJMIGJhc2UgZGUgbGEgQVBJIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20nKSAqL1xuICBhcGlVcmw6IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBlbmRwb2ludHMgZGUgYXV0aCAoZGVmYXVsdDogJy92Mi9hdXRoJykgKi9cbiAgYXV0aFByZWZpeD86IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBsYXMgY2xhdmVzIGRlIGxvY2FsU3RvcmFnZSAoZGVmYXVsdDogJ3ZhbHRlY2hfYXV0aF8nKSAqL1xuICBzdG9yYWdlUHJlZml4Pzogc3RyaW5nO1xuICAvKiogVGllbXBvIGFudGVzIGRlIGV4cGlyYWNpw7NuIHBhcmEgcmVmcmVzY2FyIHRva2VuIGVuIHNlZ3VuZG9zIChkZWZhdWx0OiA2MCkgKi9cbiAgcmVmcmVzaEJlZm9yZUV4cGlyeT86IG51bWJlcjtcbiAgLyoqIEhhYmlsaXRhciBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlbmFibGVUYWJTeW5jPzogYm9vbGVhbjtcbiAgLyoqIFJ1dGEgZGUgcmVkaXJlY2Npw7NuIGN1YW5kbyBubyBhdXRlbnRpY2FkbyAoZGVmYXVsdDogJy9sb2dpbicpICovXG4gIGxvZ2luUm91dGU/OiBzdHJpbmc7XG4gIC8qKiBSdXRhIGRlIHJlZGlyZWNjacOzbiBjdWFuZG8geWEgYXV0ZW50aWNhZG8gKGRlZmF1bHQ6ICcvJykgKi9cbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xuICAvKiogUnV0YSBwYXJhIGFjY2VzbyBkZW5lZ2FkbyAoZGVmYXVsdDogJy91bmF1dGhvcml6ZWQnKSAqL1xuICB1bmF1dGhvcml6ZWRSb3V0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFByZWZpam9zIGRlIHJ1dGFzIHDDumJsaWNhcyBxdWUgbnVuY2EgZGViZW4gc2VyIGVtcHVqYWRhcyBhIGxvZ2luL2hvbWUgcG9yXG4gICAqIGV2ZW50b3MgZ2xvYmFsZXMgZGUgc2VzacOzbiAobG9nb3V0IGNyb3NzLXRhYiwgc3dpdGNoIGRlIG9yZ2FuaXphY2nDs24gb1xuICAgKiByZWZyZXNoIGZhbGxpZG8pLiDDmnRpbCBwYXJhIGxpbmtzIGNvbXBhcnRpYmxlcyBjb21vIGAvYnV5Lzp0b2tlbmAsXG4gICAqIGAvc2VsbGVyLzp0b2tlbmAsIGAvdGlja2V0Lzp0b2tlbmAgbyBsYW5kaW5ncyBww7pibGljYXMuXG4gICAqXG4gICAqIENhZGEgYXBwIGRlYmUgZGVjbGFyYXIgc3VzIHByb3Bpb3MgcHJlZmlqb3MgZW4gYHByb3ZpZGVWYWx0ZWNoQXV0aCguLi4pYC5cbiAgICogTGEgbGliIG5vIGRlYmUgaGFyZGNvZGVhciBydXRhcyBkZSBwcm9kdWN0b3MgY29uY3JldG9zLlxuICAgKi9cbiAgcHVibGljUm91dGVQcmVmaXhlcz86IHN0cmluZ1tdO1xuICAvKiogSGFiaWxpdGFyIGludGVncmFjacOzbiBjb24gRmlyZWJhc2VTZXJ2aWNlIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgZW5hYmxlRmlyZWJhc2VJbnRlZ3JhdGlvbj86IGJvb2xlYW47XG4gIC8qKiBIYWJpbGl0YXIgcmVnaXN0cm8gYXV0b23DoXRpY28gZGUgZGV2aWNlIHRva2VucyBwYXJhIHB1c2ggbm90aWZpY2F0aW9ucyAoZGVmYXVsdDogZmFsc2UpICovXG4gIGVuYWJsZURldmljZVJlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBcHBJRCBkZSBlc3RhIGFwcCBkZW50cm8gZGVsIGZhY3RvcnkgKGVqOiAnc2hvd2Nhc2UnLCAnc2lnaWZ5JywgJ215dmFsdGVjaCcpLlxuICAgKiBVc2FkbyBwb3IgTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSBwYXJhIGRlY2lkaXIgc2kgdW5hIG5vdGlmaWNhY2nDs25cbiAgICogYXB1bnRhIGEgbGEgYXBwIGFjdHVhbCBvIHJlcXVpZXJlIGhhbmRvZmYgY3Jvc3MtYXBwLlxuICAgKi9cbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYXBhIGFwcElkIOKGkiBiYXNlVXJsIGFic29sdXRhIHBhcmEgaGFuZG9mZiBjcm9zcy1hcHAuXG4gICAqIEVqOiB7IHNpZ2lmeTogJ2h0dHBzOi8vc2lnaWZ5LmNvbScsIG15dmFsdGVjaDogJ2h0dHBzOi8vYXBwLm15dmFsdGVjaC5jb20nIH1cbiAgICogTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSB1c2EgZXN0ZSBtYXAgYWwgZGlzcGFyYXIgaGFuZG9mZiBhIG90cmEgYXBwLlxuICAgKi9cbiAgYXBwVXJscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBIYWJpbGl0YXIgc2luY3Jvbml6YWNpw7NuIHJlYWN0aXZhIGRlIHBlcm1pc29zIHZpYSBGaXJlc3RvcmUgb25TbmFwc2hvdCAoZGVmYXVsdDogZmFsc2UpLlxuICAgKiBSZXF1aWVyZSBlbmFibGVGaXJlYmFzZUludGVncmF0aW9uOiB0cnVlLiBDdWFuZG8gdW4gYWRtaW4gYXNpZ25hIG8gcmV2b2NhIHVuIHJvbCxcbiAgICogZWwgZnJvbnRlbmQgYWN0dWFsaXphIHJvbGVzL3Blcm1pc29zIHNpbiByZWNhcmdhciBsYSBww6FnaW5hICh+MS0zcyBsYXRlbmNpYSkuXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBiYWNrZW5kIHRlbmdhIFN5bmNSQkFDVG9GaXJlc3RvcmUgYWN0aXZvLlxuICAgKi9cbiAgZW5hYmxlRmlyZXN0b3JlUkJBQz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCb290c3RyYXBlYXIgbGEgc2VzacOzbiBkZXNkZSBsYSBjb29raWUtaGludCBkZSBmYW1pbGlhIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAgeSBlbiBlbCBhcnJhbnF1ZSBOTyBoYXkgYWNjZXNzIHRva2VuIGVuIGVsIHN0b3JhZ2UgZGUgZXN0ZVxuICAgKiBvcmlnaW4gUEVSTyBleGlzdGUgbGEgY29va2llIEpTLXJlYWRhYmxlIGRlIFwic2VzacOzbiBhY3RpdmEgZW4gbGEgZmFtaWxpYVwiXG4gICAqICh2ZXIgYGxvZ2dlZEluSGludENvb2tpZWApLCBgaW5pdGlhbGl6ZSgpYCBpbnRlbnRhIHVuIGAvcmVmcmVzaGAgcGFyYVxuICAgKiBpbnN0YWxhciBsYSBzZXNpw7NuIGNyb3NzLW9yaWdpbi4gRWwgcmVmcmVzaCB0b2tlbiBIdHRwT25seSBkZWwgYmFja2VuZCBlc1xuICAgKiBgU2FtZVNpdGU9Tm9uZWAg4oaSIHZpYWphIGEgbGEgQVBJIGRlc2RlIGN1YWxxdWllciBhcHAgZGVsIGZhY3RvcnksIGFzw60gcXVlIHVuXG4gICAqIHVzdWFyaW8gbG9ndWVhZG8gZW4gb3RyYSBhcHAgKGVqLiBzaG93Y2FzZSkgcXVlZGEgYXV0ZW50aWNhZG8gYWwgZW50cmFyIGFcbiAgICogZXN0YSBzaW4gcmUtbG9ndWVhciBuaSBoYW5kb2ZmIGV4cGzDrWNpdG8uXG4gICAqXG4gICAqIEVsIGludGVudG8gZXMgKipibG9xdWVhbnRlKiogKGEgZGlmZXJlbmNpYSBkZWwgcmVmcmVzaCBkZSBmb25kbyBkZWwgdG9rZW5cbiAgICogZXhwaXJhZG8pOiBubyBoYXkgY2xhaW1zIHF1ZSByZXN0YXVyYXIgZGUgZm9ybWEgb3B0aW1pc3RhLCBhc8OtIHF1ZSBzZSBlc3BlcmFcbiAgICogcGFyYSBxdWUgbG9zIGd1YXJkcyAoYGF1dGhHdWFyZGAvYGd1ZXN0R3VhcmRgKSB2ZWFuIGVsIGVzdGFkbyBjb3JyZWN0by4gU29sb1xuICAgKiBhZmVjdGEgYSB2aXNpdGFudGVzIENPTiBsYSBoaW50IChzZXNpw7NuIGRlIGZhbWlsaWEpLCBubyBhIGFuw7NuaW1vcy4gRWwgc3BsYXNoXG4gICAqIHByZS1ib290c3RyYXAgZGVsIGBpbmRleC5odG1sYCBjdWJyZSBsYSBsYXRlbmNpYSBkZWwgY29sZCBzdGFydC5cbiAgICpcbiAgICogQ2F2ZWF0OiBsYSBoaW50IHRpZW5lIGBEb21haW49Lm15dmFsdGVjaC5jb21gIOKGkiBlbiBkZXYgKGFwcHMgZW4gYCoud2ViLmFwcGApXG4gICAqIG5vIGVzIGxlZ2libGUgeSBlbCByZWZyZXNoIGNyb3NzLXNpdGUgc2UgYmxvcXVlYTsgZWwgaW50ZW50byBmYWxsYSBsaW1waW8geVxuICAgKiBsYSBhcHAgc2lndWUgY29tbyBpbnZpdGFkby4gRnVuY2lvbmEgZW4gcHJvZCAoZG9taW5pb3MgYCoubXl2YWx0ZWNoLmNvbWApLlxuICAgKi9cbiAgYm9vdHN0cmFwU2Vzc2lvbkZyb21IaW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE5vbWJyZSBkZSBsYSBjb29raWUgSlMtcmVhZGFibGUgcXVlIGluZGljYSBzZXNpw7NuIGFjdGl2YSBlbiBsYSBmYW1pbGlhXG4gICAqIChkZWZhdWx0OiAndmFsdGVjaF9sb2dnZWRfaW4nKS4gTGEgc2V0ZWEgZWwgYmFja2VuZCBlbiBsb2dpbi9sb2dvdXRcbiAgICogKGBIdHRwT25seTpmYWxzZWAsIGBEb21haW49Lm15dmFsdGVjaC5jb21gKS4gRXMgdW4gaGludCBkZSBVSSwgbm8gdW5hXG4gICAqIGNyZWRlbmNpYWwg4oCUIGVsIHRva2VuIHJlYWwgdmEgZW4gbGEgY29va2llIEh0dHBPbmx5IGB2YWx0ZWNoX3JlZnJlc2hgLlxuICAgKi9cbiAgbG9nZ2VkSW5IaW50Q29va2llPzogc3RyaW5nO1xuICAvKipcbiAgICogQm9vdHN0cmFwZWFyIGxhIHNlc2nDs24gdsOtYSBlbCBBdXRoIFByb3h5IENlbnRyYWwgY3VhbmRvIGVzdGEgYXBwIE5PXG4gICAqIGNvbXBhcnRlIGRvbWluaW8gcmHDrXogY29uIGVsIHJlc3RvIGRlbCBmYWN0b3J5IChBRFItMDUwLCBNb2RvIEIg4oCUIGVqLiB1blxuICAgKiBwcm9kdWN0byBjb24gZG9taW5pbyBwcm9waW8gY29tbyBgc2lnaWZ5LmNvbWAsIGEgZGlmZXJlbmNpYSBkZSBiaW5nby9cbiAgICogc2hvd2Nhc2UgYmFqbyBgKi5teXZhbHRlY2guY29tYCkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAsIG5vIGhheSBhY2Nlc3MgdG9rZW4gbG9jYWwgTkkgY29va2llLWhpbnQgbGVnaWJsZVxuICAgKiAoYGJvb3RzdHJhcFNlc3Npb25Gcm9tSGludGAgbm8gYXBsaWNhIGVuIGVzdGUgZG9taW5pbyDigJQgbGEgY29va2llXG4gICAqIGBEb21haW49Lm15dmFsdGVjaC5jb21gIG51bmNhIGxsZWdhIGFxdcOtKSwgZSBgaW5pdGlhbGl6ZSgpYCBubyB2aWVuZSBkZVxuICAgKiB1biByZXRvcm5vIGRlbCBicmlkZ2UgKHZlciBtw6FzIGFiYWpvKSwgbGEgYXBwIGhhY2UgdW5hIG5hdmVnYWNpw7NuIGRlXG4gICAqIHDDoWdpbmEgY29tcGxldGEgYSBgc3NvQnJpZGdlVXJsYCBjb24gYHJlZGlyZWN0X3VyaWAgPSBsYSBVUkwgYWN0dWFsLlxuICAgKlxuICAgKiBFbCBiYWNrZW5kIHZhbGlkYSBsYSBjb29raWUgYHZhbHRlY2hfcmVmcmVzaGAgKEh0dHBPbmx5LCBzw7NsbyB2aXNpYmxlIGVuXG4gICAqIHN1IHByb3BpbyBkb21pbmlvKSB5OlxuICAgKiAgIC0gc2kgaGF5IHNlc2nDs24gYWN0aXZhOiByZWRpcmlnZSBkZSB2dWVsdGEgY29uIGA/aGFuZG9mZj1UT0tFTmAg4oCUIGVsXG4gICAqICAgICBgQVBQX0lOSVRJQUxJWkVSYCBkZSBgSGFuZG9mZlNlcnZpY2UuZGV0ZWN0QW5kRXhjaGFuZ2VIYW5kb2ZmKClgXG4gICAqICAgICAoeWEgcmVxdWVyaWRvIHBvciBjcm9zcy1hcHAgaGFuZG9mZiwgdmVyIGZyb250ZW5kL0NMQVVERS5tZCkgaW5zdGFsYVxuICAgKiAgICAgbGEgc2VzacOzbiBzaW4gcGVkaXIgY3JlZGVuY2lhbGVzLlxuICAgKiAgIC0gc2kgbm8gaGF5IHNlc2nDs246IHJlZGlyaWdlIGRlIHZ1ZWx0YSBzaW4gYD9oYW5kb2ZmYCDigJQgbGEgYXBwIGNhZSBhXG4gICAqICAgICBpbnZpdGFkbywgY29tcG9ydGFtaWVudG8gbm9ybWFsLlxuICAgKlxuICAgKiBFbCB1c3VhcmlvIHZlIHVuYSByZWRpcmVjY2nDs24gYnJldmUgKGRvcyBjYXJnYXMgZGUgcMOhZ2luYSksIHRhbCBjb21vXG4gICAqIGRvY3VtZW50YSBlbCBBRFItMDUwIHBhcmEgZXN0ZSBtb2RvIOKAlCBubyBoYXkgZm9ybWEgZGUgZXZpdGFybGEgc2luXG4gICAqIGlmcmFtZS9wb3B1cCwgeSBlc29zIHJvbXBlbiBjb24gZWwgYmxvcXVlbyBkZSBjb29raWVzIGRlIHRlcmNlcm9zLlxuICAgKlxuICAgKiBSZXF1aWVyZSBgc3NvQnJpZGdlVXJsYCBzZXRlYWRvIHkgZWwgYEFQUF9JTklUSUFMSVpFUmAgZGUgaGFuZG9mZlxuICAgKiBjYWJsZWFkbyBlbiBgbWFpbi50c2AgKG1pc21vIHJlcXVpc2l0byBxdWUgZWwgaGFuZG9mZiBjcm9zcy1hcHAgbWFudWFsKS5cbiAgICovXG4gIGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVSTCBjb21wbGV0YSBkZWwgZW5kcG9pbnQgYEdFVCAvdjIvYXV0aC9zc28tYnJpZGdlYCBkZWwgQXV0aCBQcm94eVxuICAgKiBDZW50cmFsIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20vdjIvYXV0aC9zc28tYnJpZGdlJykuIFJlcXVlcmlkb1xuICAgKiBjdWFuZG8gYGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlYCBlcyBgdHJ1ZWAuXG4gICAqL1xuICBzc29CcmlkZ2VVcmw/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFU1RBRE8gREUgQVVURU5USUNBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvIGNvbXBsZXRvIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTdGF0ZSB7XG4gIC8qKiBVc3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgLyoqIEVzdGFkbyBkZSBjYXJnYSBpbmljaWFsICovXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIFRva2VuIGRlIGFjY2VzbyBhY3R1YWwgKi9cbiAgYWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUb2tlbiBkZSByZWZyZXNjbyBhY3R1YWwgKi9cbiAgcmVmcmVzaFRva2VuOiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGVsIHVzdWFyaW8gKi9cbiAgdXNlcklkOiBzdHJpbmcgfCBudWxsO1xuICAvKiogRW1haWwgZGVsIHVzdWFyaW8gKi9cbiAgZW1haWw6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBOb21icmUgY29tcGxldG8gZGVsIHVzdWFyaW8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgaGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIChwb2JsYWRvIHRyYXMgYGdldFByb2ZpbGUoKWApICovXG4gIGF2YXRhclVybD86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUZWzDqWZvbm8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgcGhvbmU/OiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvIChmb3JtYXRvICdyZXNvdXJjZTphY3Rpb24nKSAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIC8qKiBVc3VhcmlvIGVzIHN1cGVyIGFkbWluICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIFVzdWFyaW8gdGllbmUgc3VzY3JpcGNpw7NuIHByZW1pdW0gYWN0aXZhIChubyB2ZSBhZHMpICovXG4gIGlzUHJlbWl1bTogYm9vbGVhbjtcbiAgLyoqIFRpbWVzdGFtcCBkZSBleHBpcmFjacOzbiBkZWwgYWNjZXNzVG9rZW4gKG1zKSAqL1xuICBleHBpcmVzQXQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgZXhpc3RlKSAqL1xuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFVzZXIge1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgZGVsIHVzdWFyaW8gKGVqOiBAdmljdG9ydikgKi9cbiAgaGFuZGxlPzogc3RyaW5nO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZGVsIHVzdWFyaW8gKi9cbiAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICBtZmFFbmFibGVkPzogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xufVxuXG4vKipcbiAqIEVycm9yIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9BVVRIX1NUQVRFOiBBdXRoU3RhdGUgPSB7XG4gIGlzQXV0aGVudGljYXRlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgYWNjZXNzVG9rZW46IG51bGwsXG4gIHJlZnJlc2hUb2tlbjogbnVsbCxcbiAgdXNlcklkOiBudWxsLFxuICBlbWFpbDogbnVsbCxcbiAgYWN0aXZlT3JnOiBudWxsLFxuICByb2xlczogW10sXG4gIHBlcm1pc3Npb25zOiBbXSxcbiAgaXNTdXBlckFkbWluOiBmYWxzZSxcbiAgaXNQcmVtaXVtOiBmYWxzZSxcbiAgZXhwaXJlc0F0OiBudWxsLFxuICBlcnJvcjogbnVsbCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRkFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBNw6l0b2RvcyBkZSBNRkEgc29wb3J0YWRvcyAqL1xuZXhwb3J0IHR5cGUgTUZBTWV0aG9kID0gJ0VNQUlMJyB8ICdTTVMnIHwgJ1RPVFAnO1xuXG4vKipcbiAqIEVzdGFkbyBkZSBNRkEgcGVuZGllbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVBlbmRpbmdTdGF0ZSB7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBtZmFUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWV0aG9kOiBNRkFNZXRob2QgfCBudWxsO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUZBX1NUQVRFOiBNRkFQZW5kaW5nU3RhdGUgPSB7XG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgbWZhVG9rZW46IG51bGwsXG4gIG1ldGhvZDogbnVsbCxcbn07XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3VsdCB7XG4gIGNvZGVTZW50OiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIE1GQSBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTdGF0dXMge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBtZXRob2Q6IE1GQU1ldGhvZCB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RQIE1GQSAoR29vZ2xlIEF1dGhlbnRpY2F0b3IpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNldHVwIGRlIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUFNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2VjcmV0byBUT1RQIGVuIGJhc2UzMiAocGFyYSBlbnRyYWRhIG1hbnVhbCkgKi9cbiAgc2VjcmV0OiBzdHJpbmc7XG4gIC8qKiBVUkwgcGFyYSBnZW5lcmFyIFFSIGNvZGUgKG90cGF1dGg6Ly8uLi4pICovXG4gIHFyQ29kZVVybDogc3RyaW5nO1xuICAvKiogQ8OzZGlnb3MgZGUgcmVzcGFsZG8gZGUgdW4gc29sbyB1c28gKi9cbiAgYmFja3VwQ29kZXM6IHN0cmluZ1tdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBzZXR1cCBkZSBUT1RQLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRPVFBWZXJpZnlTZXR1cFJlcXVlc3Qge1xuICAvKiogQ8OzZGlnbyBUT1RQIGRlIDYgZMOtZ2l0b3MgKi9cbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgc2V0dXAgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQVmVyaWZ5U2V0dXBSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZGVzaGFiaWxpdGFyIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUERpc2FibGVSZXF1ZXN0IHtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXNoYWJpbGl0YXIgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWdlbmVyYXIgY8OzZGlnb3MgZGUgcmVzcGFsZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnZW5lcmF0ZUJhY2t1cENvZGVzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBiYWNrdXBDb2Rlczogc3RyaW5nW107XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW50aWRhZCBkZSBjw7NkaWdvcyBkZSByZXNwYWxkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrdXBDb2Rlc0NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVRVUVTVFMvUkVTUE9OU0VTIChhbGluZWFkb3MgY29uIGJhY2tlbmQgQXV0aFYyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSB2ZXJpZmljYXIgZW1haWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgZW1haWwuXG4gKiBTaSBlcyBleGl0b3NvLCBpbmNsdXllIHRva2VucyBwYXJhIGF1dG8tbG9naW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHZlcmlmaWVkOiBib29sZWFuO1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBmaXJlYmFzZVRva2VuPzogc3RyaW5nO1xuICBleHBpcmVzSW4/OiBudW1iZXI7XG4gIHRva2VuVHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgYWN0aXZhciB1bmEgY3VlbnRhIHByZS1hcHJvdmlzaW9uYWRhIHBvciB1bmEgb3JnYW5pemFjacOzblxuICogKEFEUi0wMjMpOiBlbCB1c3VhcmlvIGRlZmluZSBzdSBjb250cmFzZcOxYSBjb24gZWwgdG9rZW4gZGVsIGVubGFjZSBkZSBlbWFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXF1ZXN0IHtcbiAgdG9rZW46IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBhY3RpdmFjacOzbiBkZSBjdWVudGEuIEVuIMOpeGl0byBpbmNsdXllIHRva2VucyBkZSBhdXRvLXNpZ25pblxuICogKG1pc21vIHNoYXBlIHF1ZSB2ZXJpZnktZW1haWwpIOKAlCBlbCB1c3VhcmlvIHF1ZWRhIGxvZ3VlYWRvIHRyYXMgYWN0aXZhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjdGl2YXRlZDogYm9vbGVhbjtcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xuICB0b2tlblR5cGU/OiBzdHJpbmc7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHJlZW52aWFyIGPDs2RpZ28gZGUgdmVyaWZpY2FjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRDb2RlUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHR5cGU6ICdFTUFJTF9WRVJJRlknIHwgJ1BBU1NXT1JEX1JFU0VUJztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWVudsOtbyBkZSBjw7NkaWdvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc2VuZENvZGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHNlbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAocGFyYSBkZXRlY2Npw7NuIGRlIG51ZXZvIGRpc3Bvc2l0aXZvKSAqL1xuICBwbGF0Zm9ybT86IERldmljZVBsYXRmb3JtO1xuICAvKiogTmF2ZWdhZG9yIChzb2xvIHdlYikgKi9cbiAgYnJvd3Nlcj86IHN0cmluZztcbiAgLyoqIFNpc3RlbWEgb3BlcmF0aXZvICovXG4gIG9zPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBkZXZpY2VOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbiAgdG9rZW5UeXBlPzogc3RyaW5nO1xuICBtZmFSZXF1aXJlZD86IGJvb2xlYW47XG4gIG1mYVRva2VuPzogc3RyaW5nO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIC8qKiBJbmRpY2Egc2kgZWwgbG9naW4gZnVlIGRlc2RlIHVuIGRpc3Bvc2l0aXZvIG51ZXZvL25vIHJlY29ub2NpZG8gKi9cbiAgaXNOZXdEZXZpY2U/OiBib29sZWFuO1xuICAvKiogSUQgZGVsIGRpc3Bvc2l0aXZvIHVzYWRvIHBhcmEgZWwgbG9naW4gKi9cbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBJZGlvbWEgcHJlZmVyaWRvIGRlbCB1c3VhcmlvIChwYXJhIHNpbmNyb25pemFyIGNvbiBpMThuKSAqL1xuICBsYW5ndWFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFWZXJpZnlSZXF1ZXN0IHtcbiAgbWZhVG9rZW46IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBhcHBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2ZXJpZmljYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVZlcmlmeVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICB0b2tlblR5cGU6IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIElkaW9tYSBwcmVmZXJpZG8gZGVsIHVzdWFyaW8gKHBhcmEgc2luY3Jvbml6YXIgY29uIGkxOG4pICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGFjdGl2ZU9yZ0lkPzogc3RyaW5nIHwgbnVsbDtcbiAgYXBwSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVmcmVzY2FyIHRva2VuLlxuICogSW1wbGVtZW50YSB0b2tlbiByb3RhdGlvbjogY2FkYSByZWZyZXNoIGdlbmVyYSB1biBudWV2byByZWZyZXNoIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nOyAvLyBUb2tlbiByb3RhdGlvbjogbnVldm8gcmVmcmVzaCB0b2tlblxuICBleHBpcmVzSW46IG51bWJlcjtcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgbG9nb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ291dFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsb2dvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nb3V0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIG9idGVuZXIgcGVybWlzb3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UGVybWlzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlcXVlc3Qge1xuICBtZXRob2Q6IE1GQU1ldGhvZDtcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2V0dXAgZGUgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb2RlU2VudDogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBjb25maXJtYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQUNvbmZpcm1SZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNvbmZpcm1hciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBQ29uZmlybVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWV0aG9kOiBNRkFNZXRob2Q7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbi8qKlxuICogQWNlcHRhIGBwYXNzd29yZGAgKGN1ZW50YSBjb24gY29udHJhc2XDsWEpIG8gYG1mYUNvZGVgIChjdWVudGEgT0F1dGgtb25seVxuICogY29uIFRPVFAgcXVlIHBydWViYSBwb3Nlc2nDs24gZGVsIHNlZ3VuZG8gZmFjdG9yKS4gVW5vIHJlcXVlcmlkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFEaXNhYmxlUmVxdWVzdCB7XG4gIHBhc3N3b3JkPzogc3RyaW5nO1xuICBtZmFDb2RlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGluaWNpYXIgcmVjdXBlcmFjacOzbiBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGZvcmdvdCBwYXNzd29yZCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZXNldGVhciBjb250cmFzZcOxYSBjb24gY8OzZGlnby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZXNldCBwYXNzd29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBpbmljaWFyIHJlc2V0IGRlIE1GQSBwb3IgZW1haWwgKHVzZXIgcGVyZGnDsyBzdSAywrogZmFjdG9yKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFSZXNldFJlcXVlc3RSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBNRkEgcmVzZXQgcmVxdWVzdCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkIOKAlCBhbnRpLWVudW1lcmFjacOzbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRSZXF1ZXN0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNvbmZpcm1hciBlbCByZXNldCBkZSBNRkEgY29uIGVsIGPDs2RpZ28gcmVjaWJpZG8gcG9yIGVtYWlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVJlc2V0Q29uZmlybVJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgTUZBIHJlc2V0IGNvbmZpcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRDb25maXJtUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNhbWJpYXIgY29udHJhc2XDsWEgKHVzdWFyaW8gYXV0ZW50aWNhZG8pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZVBhc3N3b3JkUmVxdWVzdCB7XG4gIGN1cnJlbnRQYXNzd29yZDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNhbWJpbyBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZWxpbWluYXIgY3VlbnRhLlxuICogVXN1YXJpb3MgY29uIGNvbnRyYXNlw7FhOiBlbnZpYXIgYHBhc3N3b3JkYC5cbiAqIFVzdWFyaW9zIE9BdXRoIHNpbiBjb250cmFzZcOxYTogZW52aWFyIGBjb2RlYCAob2J0ZW5pZG8gdmlhIHNlbmREZWxldGVBY2NvdW50Q29kZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQWNjb3VudFJlcXVlc3Qge1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgY29kZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBlbnZpYXIgY8OzZGlnbyBkZSBjb25maXJtYWNpw7NuIGRlIGVsaW1pbmFjacOzbiBkZSBjdWVudGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZERlbGV0ZUFjY291bnRDb2RlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGVsaW1pbmFyIGN1ZW50YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVBY2NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZWxldGVkOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgb2J0ZW5lciBwZXJmaWwgZGVsIHVzdWFyaW8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgZGVsIHVzdWFyaW8gKi9cbiAgaGFuZGxlPzogc3RyaW5nO1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZGVsIHVzdWFyaW8gKi9cbiAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICBlbWFpbFZlcmlmaWVkOiBib29sZWFuO1xuICBwaG9uZVZlcmlmaWVkOiBib29sZWFuO1xuICBtZmFFbmFibGVkOiBib29sZWFuO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIC8qKiBUcnVlIHNpIGxhIGN1ZW50YSB0aWVuZSBjb250cmFzZcOxYSBzZXRlYWRhIChmYWxzZSBwYXJhIE9BdXRoLW9ubHkgc2luIHBhc3N3b3JkKS4gKi9cbiAgaGFzUGFzc3dvcmQ/OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGFjdHVhbGl6YXIgcGVyZmlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVByb2ZpbGVSZXF1ZXN0IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWN0dWFsaXphciBwZXJmaWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXBkYXRlZDogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVQREFURSBBVkFUQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGFjdHVhbGl6YXIgYXZhdGFyIGRlbCB1c3VhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUF2YXRhclJlcXVlc3Qge1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZW4gRmlyZWJhc2UgU3RvcmFnZSAqL1xuICBhdmF0YXJVcmw6IHN0cmluZztcbiAgLyoqIFVSTCBkZWwgdGh1bWJuYWlsIChvcGNpb25hbCkgKi9cbiAgYXZhdGFyVGh1bWJuYWlsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjdHVhbGl6YXIgYXZhdGFyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUF2YXRhclJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYXZhdGFyVXJsOiBzdHJpbmc7XG4gIGF2YXRhclRodW1ibmFpbD86IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFVkVOVE9TIERFIFNJTkNST05JWkFDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNXSVRDSCBPUkdBTklaQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNhbWJpYXIgZGUgb3JnYW5pemFjacOzbiBhY3RpdmEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoT3JnUmVxdWVzdCB7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmc7XG4gIGFwcElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNhbWJpbyBkZSBvcmdhbml6YWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaE9yZ1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbjogc3RyaW5nO1xuICBhY3RpdmVPcmc6IHN0cmluZztcbiAgLyoqIE51ZXZvIEpXVCBjb24gYWN0aXZlT3JnIGFjdHVhbGl6YWRvLiBFbCBGRSBsbyBhbG1hY2VuYSBwYXJhIHF1ZSBlbFxuICAgKiAgYm9vdHN0cmFwIHBvc3QtcmVmcmVzaCB1c2UgbGEgb3JnIGNvcnJlY3RhIGVuIHZleiBkZWwgSldUIGNhY2hlYWRvLiAqL1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlRPUyBERSBTSU5DUk9OSVpBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBUaXBvcyBkZSBldmVudG9zIGRlIHNpbmNyb25pemFjacOzbiBlbnRyZSBwZXN0YcOxYXMgKi9cbmV4cG9ydCB0eXBlIEF1dGhTeW5jRXZlbnRUeXBlID1cbiAgfCAnTE9HSU4nXG4gIHwgJ0xPR09VVCdcbiAgfCAnVE9LRU5fUkVGUkVTSCdcbiAgfCAnUEVSTUlTU0lPTlNfVVBEQVRFJ1xuICB8ICdPUkdfU1dJVENIJztcblxuLyoqXG4gKiBFdmVudG8gZGUgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7Fhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoU3luY0V2ZW50IHtcbiAgdHlwZTogQXV0aFN5bmNFdmVudFR5cGU7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBwYXlsb2FkPzoge1xuICAgIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICAgIHJlZnJlc2hUb2tlbj86IHN0cmluZzsgLy8gVG9rZW4gcm90YXRpb24gc3VwcG9ydFxuICAgIGV4cGlyZXNBdD86IG51bWJlcjtcbiAgICBhY3RpdmVPcmc/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBKV1QgQ0xBSU1TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENsYWltcyBkZWwgSldUIGRlIGFjY2Vzby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKV1RDbGFpbXMge1xuICAvKiogVXNlciBJRCAqL1xuICB1aWQ6IHN0cmluZztcbiAgLyoqIEVtYWlsICovXG4gIGVtYWlsOiBzdHJpbmc7XG4gIC8qKiBTZXNzaW9uIElEICovXG4gIHNpZD86IHN0cmluZztcbiAgLyoqIFVzdWFyaW8gdGllbmUgc3VzY3JpcGNpw7NuIHByZW1pdW0gYWN0aXZhICovXG4gIHByZW1pdW0/OiBib29sZWFuO1xuICAvKiogQWN0aXZlIG9yZ2FuaXphdGlvbiBJRCAoSldUIGNsYWltIFwib3JnXCIpICovXG4gIG9yZz86IHN0cmluZztcbiAgLyoqIFBsYXRmb3JtIGFkbWluIOKAlCBieXBhc3MgdG90YWwgZGUgUkJBQyBlbiB0b2RvcyBsb3Mgc2VydmljaW9zICovXG4gIGFkbWluPzogYm9vbGVhbjtcbiAgLyoqIElzc3VlZCBhdCAqL1xuICBpYXQ6IG51bWJlcjtcbiAgLyoqIEV4cGlyYXRpb24gKi9cbiAgZXhwOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVE9SQUdFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIERhdG9zIHBlcnNpc3RpZG9zIGVuIHN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVkQXV0aFN0YXRlIHtcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG4gIGlzUHJlbWl1bT86IGJvb2xlYW47XG4gIGV4cGlyZXNBdD86IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVklDRSBSRUdJU1RSQVRJT04gKFB1c2ggTm90aWZpY2F0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUGxhdGFmb3JtYXMgc29wb3J0YWRhcyBwYXJhIHB1c2ggbm90aWZpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgRGV2aWNlUGxhdGZvcm0gPSAnd2ViJyB8ICdpb3MnIHwgJ2FuZHJvaWQnO1xuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWdpc3RyYXIgdW4gZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJEZXZpY2VSZXF1ZXN0IHtcbiAgLyoqIEZDTSB0b2tlbiBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgdG9rZW46IHN0cmluZztcbiAgLyoqIFBsYXRhZm9ybWEgZGVsIGRpc3Bvc2l0aXZvICovXG4gIHBsYXRmb3JtOiBEZXZpY2VQbGF0Zm9ybTtcbiAgLyoqIE5hdmVnYWRvciAoc29sbyB3ZWIpICovXG4gIGJyb3dzZXI/OiBzdHJpbmc7XG4gIC8qKiBTaXN0ZW1hIG9wZXJhdGl2byAqL1xuICBvcz86IHN0cmluZztcbiAgLyoqIFZlcnNpw7NuIGRlIGxhIGFwbGljYWNpw7NuICovXG4gIGFwcFZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBOb21icmUgYW1pZ2FibGUgZGVsIGRpc3Bvc2l0aXZvICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBNZXRhZGF0YSBhZGljaW9uYWwgKi9cbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHJlZ2lzdHJvIGRlIGRpc3Bvc2l0aXZvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyRGV2aWNlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZXZpY2U6IHtcbiAgICBkZXZpY2VJZDogc3RyaW5nO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgcGxhdGZvcm06IERldmljZVBsYXRmb3JtO1xuICAgIGJyb3dzZXI/OiBzdHJpbmc7XG4gICAgb3M/OiBzdHJpbmc7XG4gICAgbGFzdEFjdGl2ZTogc3RyaW5nO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB9O1xuICAvKiogdHJ1ZSBzaSBlcyB1biBudWV2byBkaXNwb3NpdGl2bywgZmFsc2Ugc2kgc2UgYWN0dWFsaXrDsyB1bm8gZXhpc3RlbnRlICovXG4gIGlzTmV3OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3VsdGFkbyBkZSBoYWJpbGl0YXIgbm90aWZpY2FjaW9uZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hYmxlTm90aWZpY2F0aW9uc1Jlc3VsdCB7XG4gIC8qKiBTaSBzZSBvdG9yZ2Fyb24gbG9zIHBlcm1pc29zICovXG4gIGdyYW50ZWQ6IGJvb2xlYW47XG4gIC8qKiBGQ00gdG9rZW4gKHNvbG8gc2kgZ3JhbnRlZD10cnVlKSAqL1xuICB0b2tlbj86IHN0cmluZztcbiAgLyoqIFNpIGVsIGRpc3Bvc2l0aXZvIGZ1ZSByZWdpc3RyYWRvIGVuIGVsIGJhY2tlbmQgKi9cbiAgcmVnaXN0ZXJlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIHBlcm1pc29zIGRlIG5vdGlmaWNhY2nDs24uXG4gKi9cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblBlcm1pc3Npb25TdGF0ZSA9ICdncmFudGVkJyB8ICdkZW5pZWQnIHwgJ2RlZmF1bHQnIHwgJ3Vuc3VwcG9ydGVkJztcblxuLyoqXG4gKiBSZXN1bHRhZG8gZGVsIHJlZ2lzdHJvIG1hbnVhbCBkZSBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckRldmljZVJlc3VsdCB7XG4gIC8qKiBTaSBlbCBkaXNwb3NpdGl2byBmdWUgcmVnaXN0cmFkbyBleGl0b3NhbWVudGUgKi9cbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbiAgLyoqIElEIGRlbCBkaXNwb3NpdGl2byAoc29sbyBzaSByZWdpc3RlcmVkPXRydWUpICovXG4gIGRldmljZUlkPzogc3RyaW5nO1xuICAvKiogRkNNIHRva2VuIHVzYWRvIHBhcmEgZWwgcmVnaXN0cm8gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBNZW5zYWplIGRlIGVycm9yIChzb2xvIHNpIHJlZ2lzdGVyZWQ9ZmFsc2UpICovXG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVWSUNFIE1BTkFHRU1FTlQgKERldGVjY2nDs24gZGUgZGlzcG9zaXRpdm9zIG51ZXZvcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvcyBwb3NpYmxlcyBkZSB1biBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IHR5cGUgRGV2aWNlU3RhdHVzID0gJ2FjdGl2ZScgfCAncGVuZGluZ19hcHByb3ZhbCcgfCAnYmxvY2tlZCc7XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGNvbXBsZXRhIGRlIHVuIGRpc3Bvc2l0aXZvIHJlZ2lzdHJhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGV2aWNlSW5mbyB7XG4gIC8qKiBJRCDDum5pY28gZGVsIGRpc3Bvc2l0aXZvICovXG4gIGRldmljZUlkOiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAqL1xuICBwbGF0Zm9ybTogRGV2aWNlUGxhdGZvcm07XG4gIC8qKiBOYXZlZ2Fkb3IgKHNvbG8gd2ViKSAqL1xuICBicm93c2VyPzogc3RyaW5nO1xuICAvKiogU2lzdGVtYSBvcGVyYXRpdm8gKi9cbiAgb3M/OiBzdHJpbmc7XG4gIC8qKiBOb21icmUgYW1pZ2FibGUgZGVsIGRpc3Bvc2l0aXZvICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBFc3RhZG8gYWN0dWFsIGRlbCBkaXNwb3NpdGl2byAqL1xuICBzdGF0dXM6IERldmljZVN0YXR1cztcbiAgLyoqIERpcmVjY2nDs24gSVAgZGVsIMO6bHRpbW8gYWNjZXNvICovXG4gIGlwQWRkcmVzcz86IHN0cmluZztcbiAgLyoqIFViaWNhY2nDs24gZ2VvZ3LDoWZpY2EgYXByb3hpbWFkYSAqL1xuICBsb2NhdGlvbj86IHN0cmluZztcbiAgLyoqIMOabHRpbWEgYWN0aXZpZGFkICovXG4gIGxhc3RBY3RpdmU6IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIGNyZWFjacOzbi9yZWdpc3RybyAqL1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIGFwcm9iYWNpw7NuIChzaSBhcGxpY2EpICovXG4gIGFwcHJvdmVkQXQ/OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBibG9xdWVvIChzaSBhcGxpY2EpICovXG4gIGJsb2NrZWRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsaXN0YXIgZGlzcG9zaXRpdm9zIGRlbCB1c3VhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3REZXZpY2VzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZXZpY2VzOiBEZXZpY2VJbmZvW107XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWNjacOzbiBzb2JyZSBkaXNwb3NpdGl2byAoYmxvY2svYXBwcm92ZS9kZWxldGUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUFjdGlvblJlc3VsdCB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFU1NJT04gTUFOQUdFTUVOVCAoR2VzdGnDs24gZGUgc2VzaW9uZXMgYWN0aXZhcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGRlIHVuYSBzZXNpw7NuIGFjdGl2YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uSW5mbyB7XG4gIC8qKiBJRCDDum5pY28gZGUgbGEgc2VzacOzbiAqL1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgLyoqIElEIGRlbCBkaXNwb3NpdGl2byBhc29jaWFkbyAoc2kgZXhpc3RlKSAqL1xuICBkZXZpY2VJZD86IHN0cmluZztcbiAgLyoqIEluZm9ybWFjacOzbiBkZWwgZGlzcG9zaXRpdm8gKFVzZXItQWdlbnQpICovXG4gIGRldmljZUluZm8/OiBzdHJpbmc7XG4gIC8qKiBEaXJlY2Npw7NuIElQIGRlIGxhIHNlc2nDs24gKi9cbiAgaXA/OiBzdHJpbmc7XG4gIC8qKiBVYmljYWNpw7NuIGdlb2dyw6FmaWNhIGFwcm94aW1hZGEgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBjcmVhY2nDs24gZGUgbGEgc2VzacOzbiAqL1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIGV4cGlyYWNpw7NuIGRlIGxhIHNlc2nDs24gKi9cbiAgZXhwaXJlc0F0OiBzdHJpbmc7XG4gIC8qKiBJbmRpY2Egc2kgZXMgbGEgc2VzacOzbiBhY3R1YWwgZGVsIHVzdWFyaW8gKi9cbiAgaXNDdXJyZW50OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGxpc3RhciBzZXNpb25lcyBhY3RpdmFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTZXNzaW9uc1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc2Vzc2lvbnM6IFNlc3Npb25JbmZvW107XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmV2b2NhciBzZXNpw7NuKGVzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXZva2VTZXNzaW9uc1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgLyoqIE7Dum1lcm8gZGUgc2VzaW9uZXMgcmV2b2NhZGFzICovXG4gIHNlc3Npb25zUmV2b2tlZDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVWSUNFIEFDVElPTiAoQWNjaW9uZXMgZGVzZGUgZW1haWwgZGUgYWxlcnRhKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZWplY3V0YXIgYWNjacOzbiBkZSBkaXNwb3NpdGl2byBkZXNkZSBlbWFpbC5cbiAqIEVsIHRva2VuIHZpZW5lIGVuIGxhIFVSTCBkZWwgZW1haWwgZGUgYWxlcnRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUFjdGlvblJlcXVlc3Qge1xuICAvKiogVG9rZW4gSldUIGRlIGFjY2nDs24gKDI0aCwgdW4gc29sbyB1c28pICovXG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgZWplY3V0YXIgYWNjacOzbiBkZSBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBY3Rpb25SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIC8qKiBTaSBsYSBhY2Npw7NuIGZ1ZSBlamVjdXRhZGEgZXhpdG9zYW1lbnRlICovXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIC8qKiBBY2Npw7NuIGVqZWN1dGFkYSAocmVmdXNlLCBhcHByb3ZlLCBibG9jaykgKi9cbiAgYWN0aW9uOiBzdHJpbmc7XG4gIC8qKiBJRCBkZWwgZGlzcG9zaXRpdm8gYWZlY3RhZG8gKi9cbiAgZGV2aWNlSWQ6IHN0cmluZztcbiAgLyoqIE7Dum1lcm8gZGUgc2VzaW9uZXMgcmV2b2NhZGFzIChzaSBhY3Rpb249cmVmdXNlL2Jsb2NrKSAqL1xuICBzZXNzaW9uc1Jldm9rZWQ/OiBudW1iZXI7XG4gIC8qKiBNZW5zYWplIGRlc2NyaXB0aXZvICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2YWxpZGFyIHRva2VuIGRlIGFjY2nDs24gKHNpbiBlamVjdXRhcikuXG4gKiBVc2FkbyBwYXJhIG1vc3RyYXIgY29uZmlybWFjacOzbiBhbCB1c3VhcmlvIGFudGVzIGRlIGVqZWN1dGFyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRlQWN0aW9uUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2kgZWwgdG9rZW4gZXMgdsOhbGlkbyAqL1xuICB2YWxpZDogYm9vbGVhbjtcbiAgLyoqIFRpcG8gZGUgYWNjacOzbiAoZGV2aWNlOnJlZnVzZSwgZGV2aWNlOmFwcHJvdmUsIGV0Yy4pICovXG4gIGFjdGlvblR5cGU/OiBzdHJpbmc7XG4gIC8qKiBUaXBvIGRlIHJlY3Vyc28gb2JqZXRpdm8gKGRldmljZSwgZG9jdW1lbnQsIGV0Yy4pICovXG4gIHRhcmdldFR5cGU/OiBzdHJpbmc7XG4gIC8qKiBJRCBkZWwgcmVjdXJzbyBvYmpldGl2byAqL1xuICB0YXJnZXRJZD86IHN0cmluZztcbiAgLyoqIE1lbnNhamUgZGUgZXJyb3IgKHNpIHZhbGlkPWZhbHNlKSAqL1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT0FVVEggKExvZ2luIHNvY2lhbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUHJvdmVlZG9yZXMgT0F1dGggc29wb3J0YWRvcy5cbiAqL1xuZXhwb3J0IHR5cGUgT0F1dGhQcm92aWRlciA9ICdnb29nbGUnIHwgJ2FwcGxlJyB8ICdtaWNyb3NvZnQnIHwgJ2ZhY2Vib29rJztcblxuLyoqXG4gKiBSZXN1bHRhZG8gZXhpdG9zbyBkZSBmbHVqbyBPQXV0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aFJlc3VsdCB7XG4gIC8qKiBUb2tlbiBkZSBhY2Nlc28gSldUICovXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIC8qKiBUb2tlbiBkZSByZWZyZXNjbyAqL1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgLyoqIFRva2VuIGRlIEZpcmViYXNlIChzaSBlc3TDoSBoYWJpbGl0YWRvKSAqL1xuICBmaXJlYmFzZVRva2VuPzogc3RyaW5nO1xuICAvKiogVGllbXBvIGRlIGV4cGlyYWNpw7NuIGVuIHNlZ3VuZG9zICovXG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICAvKiogUm9sZXMgZGVsIHVzdWFyaW8gKi9cbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvICovXG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIC8qKiBJbmRpY2Egc2kgZXMgdW4gdXN1YXJpbyBudWV2byAocmVjacOpbiBjcmVhZG8pICovXG4gIGlzTmV3VXNlcj86IGJvb2xlYW47XG4gIC8qKiBJbmRpY2Egc2kgbGEgY3VlbnRhIGZ1ZSB2aW5jdWxhZGEgYSB1c3VhcmlvIGV4aXN0ZW50ZSAqL1xuICBsaW5rZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogYHRydWVgIHNpIGVsIGJhY2tlbmQgZXhpZ2UgdmVyaWZpY2FjacOzbiBNRkEgdHJhcyBlbCBPQXV0aC4gRW4gZXNlIGNhc29cbiAgICogTk8gdmllbmVuIGBhY2Nlc3NUb2tlbmAvYHJlZnJlc2hUb2tlbmAg4oCUIGVsIGZsdWpvIGNvbnRpbsO6YSBjb24gYG1mYVRva2VuYC5cbiAgICovXG4gIG1mYVJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqIFRva2VuIHRlbXBvcmFsIHBhcmEgZWwgY2hhbGxlbmdlIE1GQSAocHJlc2VudGUgc2kgYG1mYVJlcXVpcmVkYCkuICovXG4gIG1mYVRva2VuPzogc3RyaW5nO1xuICAvKiogTcOpdG9kbyBNRkEgY29uZmlndXJhZG8gcG9yIGVsIHVzdWFyaW8gKHByZXNlbnRlIHNpIGBtZmFSZXF1aXJlZGApLiAqL1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIC8qKlxuICAgKiBgdHJ1ZWAgc2kgbGEgY3VlbnRhIHF1ZWTDsyBTSU4gY29ycmVvIHBvcnF1ZSBlbCBwcm92ZWVkb3Igbm8gZW50cmVnw7MgdW5vXG4gICAqIChjYXNvIHTDrXBpY286IGN1ZW50YSBkZSBGYWNlYm9vayBjcmVhZGEgY29uIHRlbMOpZm9ubywgbyBwZXJtaXNvIGRlIGVtYWlsXG4gICAqIGRlbmVnYWRvIGVuIGVsIGRpw6Fsb2dvIGRlIGNvbnNlbnRpbWllbnRvKS5cbiAgICpcbiAgICogRWwgdXN1YXJpbyB5YSBlc3TDoSBhdXRlbnRpY2FkbzogY29tcGxldGFyIGVsIE9BdXRoIHBydWViYSBxdWUgZXMgZHVlw7FvIGRlXG4gICAqIGxhIGN1ZW50YSBkZWwgcHJvdmVlZG9yLiBQZXJvIHNpbiBjb3JyZW8gbm8gaGF5IHJlY3VwZXJhY2nDs24gZGUgYWNjZXNvLCBuaVxuICAgKiBNRkEgcG9yIGVtYWlsLCBuaSBub3RpZmljYWNpb25lcywgYXPDrSBxdWUgbGEgYXBwIGRlYmVyw61hIGRlcml2YXJsbyBhbCBhbHRhXG4gICAqIGRlIGNvcnJlbyAoYEF1dGhTZXJ2aWNlLmFkZEVtYWlsYCkuXG4gICAqL1xuICByZXF1aXJlc0VtYWlsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFcnJvciBkZSBPQXV0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aEVycm9yIHtcbiAgLyoqIEPDs2RpZ28gZGUgZXJyb3IgKi9cbiAgY29kZTogc3RyaW5nO1xuICAvKiogTWVuc2FqZSBkZXNjcmlwdGl2byAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0b3MgZW52aWFkb3MgZGVzZGUgcG9wdXAgY2FsbGJhY2sgdmlhIHBvc3RNZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoQ2FsbGJhY2tEYXRhIHtcbiAgLyoqIFRpcG8gZGUgbWVuc2FqZSAqL1xuICB0eXBlOiAnb2F1dGgtY2FsbGJhY2snO1xuICAvKiogVG9rZW5zIChzaSDDqXhpdG8pICovXG4gIHRva2Vucz86IE9BdXRoUmVzdWx0O1xuICAvKiogRXJyb3IgKHNpIGZhbGzDsykgKi9cbiAgZXJyb3I/OiBPQXV0aEVycm9yO1xuICAvKipcbiAgICogTm9uY2UgZGVsIG9wZW5lciAoTS0wNykuIEVsIHBvcHVwIGxvIHJlY2liZSBkZWwgYmFja2VuZCAocm91bmQtdHJpcCBwb3IgZWxcbiAgICogT0F1dGhTdGF0ZSBmaXJtYWRvKSB5IGxvIHJlZW52w61hOyBlbCBvcGVuZXIgbG8gdmVyaWZpY2EgY29udHJhIGVsIHF1ZSBnZW5lcsOzXG4gICAqIGVuIG1lbW9yaWEg4oaSIHJlY2hhemEgdW4gb2F1dGhfY2FsbGJhY2tfZGF0YSBmb3JqYWRvIGVuIGxvY2FsU3RvcmFnZSBwb3IgWFNTLlxuICAgKi9cbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvdmVlZG9yIE9BdXRoIHZpbmN1bGFkbyBhbCB1c3VhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZFByb3ZpZGVyIHtcbiAgLyoqIE5vbWJyZSBkZWwgcHJvdmVlZG9yICovXG4gIHByb3ZpZGVyOiBPQXV0aFByb3ZpZGVyO1xuICAvKiogRW1haWwgYXNvY2lhZG8gYWwgcHJvdmVlZG9yICovXG4gIGVtYWlsOiBzdHJpbmc7XG4gIC8qKiBOb21icmUgZGVsIHVzdWFyaW8gZW4gZWwgcHJvdmVlZG9yICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZGUgaW1hZ2VuIGRlIHBlcmZpbCAqL1xuICBwaWN0dXJlPzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgdmluY3VsYWNpw7NuICovXG4gIGxpbmtlZEF0OiBzdHJpbmc7XG4gIC8qKiDDmmx0aW1hIHZleiBxdWUgc2UgdXPDsyBwYXJhIGxvZ2luICovXG4gIGxhc3RVc2VkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmVyaWZpY2FyIHNpIHRpZW5lIGNvbnRyYXNlw7FhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhhc1Bhc3N3b3JkUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBoYXNQYXNzd29yZDogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhBTkRMRSAoVXNlcm5hbWUpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBhY3R1YWxpemFyIGhhbmRsZSAoQHVzZXJuYW1lKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVIYW5kbGVSZXF1ZXN0IHtcbiAgaGFuZGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWN0dWFsaXphciBoYW5kbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlSGFuZGxlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBoYW5kbGU6IHN0cmluZztcbiAgdXBkYXRlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIGRpc3BvbmliaWxpZGFkIGRlIGhhbmRsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja0hhbmRsZVJlcXVlc3Qge1xuICBoYW5kbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2ZXJpZmljYXIgZGlzcG9uaWJpbGlkYWQgZGUgaGFuZGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrSGFuZGxlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBoYW5kbGU6IHN0cmluZztcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElOS0VEIFBST1ZJREVSUyAoT0F1dGgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIG9idGVuZXIgcHJvdmVlZG9yZXMgT0F1dGggdmluY3VsYWRvcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRMaW5rZWRQcm92aWRlcnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHByb3ZpZGVyczogTGlua2VkUHJvdmlkZXJbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZGVzdmluY3VsYXIgdW4gcHJvdmVlZG9yIE9BdXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVubGlua1Byb3ZpZGVyUmVxdWVzdCB7XG4gIHByb3ZpZGVyOiBPQXV0aFByb3ZpZGVyO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGRlc3ZpbmN1bGFyIHByb3ZlZWRvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmxpbmtQcm92aWRlclJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdW5saW5rZWQ6IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1BSUwgQ0hBTkdFIOKAlCAzLXN0ZXAgZmxvd1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhdGVFbWFpbENoYW5nZVJlcXVlc3Qge1xuICBjdXJyZW50UGFzc3dvcmQ6IHN0cmluZztcbiAgbmV3RW1haWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0aWF0ZUVtYWlsQ2hhbmdlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBwZW5kaW5nRW1haWw6IHN0cmluZztcbiAgcmVxdWVzdExvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUVtYWlsQ2hhbmdlU3RlcDFSZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1FbWFpbENoYW5nZVN0ZXAxUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB2ZXJpZmllZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtRW1haWxDaGFuZ2VTdGVwMlJlcXVlc3Qge1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUVtYWlsQ2hhbmdlU3RlcDJSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG5ld0VtYWlsOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUxUQSBERSBDT1JSRU8g4oCUIGN1ZW50YXMgc2luIGVtYWlsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhcmEgY3VlbnRhcyBjcmVhZGFzIHbDrWEgdW4gcHJvdmVlZG9yIE9BdXRoIHF1ZSBubyBlbnRyZWdhIGNvcnJlbyAodmVyXG4vLyBPQXV0aFJlc3VsdC5yZXF1aXJlc0VtYWlsKS4gQSBkaWZlcmVuY2lhIGRlbCBjYW1iaW8gZGUgZW1haWwsIG5vIHBpZGVcbi8vIGNvbnRyYXNlw7FhOiBlc3RhcyBjdWVudGFzIHNvbiBPQXV0aC1vbmx5IHkgbm8gdGllbmVuIHVuYS5cblxuZXhwb3J0IGludGVyZmFjZSBBZGRFbWFpbFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZEVtYWlsUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogQ29ycmVvIHBlbmRpZW50ZSwgZW5tYXNjYXJhZG8gKFwibioqKkBlamVtcGxvLmNvbVwiKS4gKi9cbiAgcGVuZGluZ0VtYWlsOiBzdHJpbmc7XG4gIC8qKiBNaW51dG9zIGRlIHZpZ2VuY2lhIGRlbCBjw7NkaWdvIGVudmlhZG8uICovXG4gIGV4cGlyZXNJbk1pbjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1BZGRFbWFpbFJlcXVlc3Qge1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUFkZEVtYWlsUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICB2ZXJpZmllZDogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBc01IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWM7SUFDM0MsZUFBZSxFQUFFLEtBQUs7SUFDdEIsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSTtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsRUFBRTtJQUNULFdBQVcsRUFBRSxFQUFFO0lBQ2YsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFrQkY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBb0I7SUFDaEQsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGlwb3MgZSBpbnRlcmZhY2VzIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24gZGUgVmFsdGVjaC5cbiAqIEFsaW5lYWRvcyBjb24gZWwgYmFja2VuZCBBdXRoVjIuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJR1VSQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGVjaEF1dGhDb25maWcge1xuICAvKiogVVJMIGJhc2UgZGUgbGEgQVBJIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20nKSAqL1xuICBhcGlVcmw6IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBlbmRwb2ludHMgZGUgYXV0aCAoZGVmYXVsdDogJy92Mi9hdXRoJykgKi9cbiAgYXV0aFByZWZpeD86IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBsYXMgY2xhdmVzIGRlIGxvY2FsU3RvcmFnZSAoZGVmYXVsdDogJ3ZhbHRlY2hfYXV0aF8nKSAqL1xuICBzdG9yYWdlUHJlZml4Pzogc3RyaW5nO1xuICAvKiogVGllbXBvIGFudGVzIGRlIGV4cGlyYWNpw7NuIHBhcmEgcmVmcmVzY2FyIHRva2VuIGVuIHNlZ3VuZG9zIChkZWZhdWx0OiA2MCkgKi9cbiAgcmVmcmVzaEJlZm9yZUV4cGlyeT86IG51bWJlcjtcbiAgLyoqIEhhYmlsaXRhciBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlbmFibGVUYWJTeW5jPzogYm9vbGVhbjtcbiAgLyoqIFJ1dGEgZGUgcmVkaXJlY2Npw7NuIGN1YW5kbyBubyBhdXRlbnRpY2FkbyAoZGVmYXVsdDogJy9sb2dpbicpICovXG4gIGxvZ2luUm91dGU/OiBzdHJpbmc7XG4gIC8qKiBSdXRhIGRlIHJlZGlyZWNjacOzbiBjdWFuZG8geWEgYXV0ZW50aWNhZG8gKGRlZmF1bHQ6ICcvJykgKi9cbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xuICAvKiogUnV0YSBwYXJhIGFjY2VzbyBkZW5lZ2FkbyAoZGVmYXVsdDogJy91bmF1dGhvcml6ZWQnKSAqL1xuICB1bmF1dGhvcml6ZWRSb3V0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFByZWZpam9zIGRlIHJ1dGFzIHDDumJsaWNhcyBxdWUgbnVuY2EgZGViZW4gc2VyIGVtcHVqYWRhcyBhIGxvZ2luL2hvbWUgcG9yXG4gICAqIGV2ZW50b3MgZ2xvYmFsZXMgZGUgc2VzacOzbiAobG9nb3V0IGNyb3NzLXRhYiwgc3dpdGNoIGRlIG9yZ2FuaXphY2nDs24gb1xuICAgKiByZWZyZXNoIGZhbGxpZG8pLiDDmnRpbCBwYXJhIGxpbmtzIGNvbXBhcnRpYmxlcyBjb21vIGAvYnV5Lzp0b2tlbmAsXG4gICAqIGAvc2VsbGVyLzp0b2tlbmAsIGAvdGlja2V0Lzp0b2tlbmAgbyBsYW5kaW5ncyBww7pibGljYXMuXG4gICAqXG4gICAqIENhZGEgYXBwIGRlYmUgZGVjbGFyYXIgc3VzIHByb3Bpb3MgcHJlZmlqb3MgZW4gYHByb3ZpZGVWYWx0ZWNoQXV0aCguLi4pYC5cbiAgICogTGEgbGliIG5vIGRlYmUgaGFyZGNvZGVhciBydXRhcyBkZSBwcm9kdWN0b3MgY29uY3JldG9zLlxuICAgKi9cbiAgcHVibGljUm91dGVQcmVmaXhlcz86IHN0cmluZ1tdO1xuICAvKiogSGFiaWxpdGFyIGludGVncmFjacOzbiBjb24gRmlyZWJhc2VTZXJ2aWNlIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgZW5hYmxlRmlyZWJhc2VJbnRlZ3JhdGlvbj86IGJvb2xlYW47XG4gIC8qKiBIYWJpbGl0YXIgcmVnaXN0cm8gYXV0b23DoXRpY28gZGUgZGV2aWNlIHRva2VucyBwYXJhIHB1c2ggbm90aWZpY2F0aW9ucyAoZGVmYXVsdDogZmFsc2UpICovXG4gIGVuYWJsZURldmljZVJlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBcHBJRCBkZSBlc3RhIGFwcCBkZW50cm8gZGVsIGZhY3RvcnkgKGVqOiAnc2hvd2Nhc2UnLCAnc2lnaWZ5JywgJ215dmFsdGVjaCcpLlxuICAgKiBVc2FkbyBwb3IgTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSBwYXJhIGRlY2lkaXIgc2kgdW5hIG5vdGlmaWNhY2nDs25cbiAgICogYXB1bnRhIGEgbGEgYXBwIGFjdHVhbCBvIHJlcXVpZXJlIGhhbmRvZmYgY3Jvc3MtYXBwLlxuICAgKi9cbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYXBhIGFwcElkIOKGkiBiYXNlVXJsIGFic29sdXRhIHBhcmEgaGFuZG9mZiBjcm9zcy1hcHAuXG4gICAqIEVqOiB7IHNpZ2lmeTogJ2h0dHBzOi8vc2lnaWZ5LmNvbScsIG15dmFsdGVjaDogJ2h0dHBzOi8vYXBwLm15dmFsdGVjaC5jb20nIH1cbiAgICogTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSB1c2EgZXN0ZSBtYXAgYWwgZGlzcGFyYXIgaGFuZG9mZiBhIG90cmEgYXBwLlxuICAgKi9cbiAgYXBwVXJscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBIYWJpbGl0YXIgc2luY3Jvbml6YWNpw7NuIHJlYWN0aXZhIGRlIHBlcm1pc29zIHZpYSBGaXJlc3RvcmUgb25TbmFwc2hvdCAoZGVmYXVsdDogZmFsc2UpLlxuICAgKiBSZXF1aWVyZSBlbmFibGVGaXJlYmFzZUludGVncmF0aW9uOiB0cnVlLiBDdWFuZG8gdW4gYWRtaW4gYXNpZ25hIG8gcmV2b2NhIHVuIHJvbCxcbiAgICogZWwgZnJvbnRlbmQgYWN0dWFsaXphIHJvbGVzL3Blcm1pc29zIHNpbiByZWNhcmdhciBsYSBww6FnaW5hICh+MS0zcyBsYXRlbmNpYSkuXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBiYWNrZW5kIHRlbmdhIFN5bmNSQkFDVG9GaXJlc3RvcmUgYWN0aXZvLlxuICAgKi9cbiAgZW5hYmxlRmlyZXN0b3JlUkJBQz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCb290c3RyYXBlYXIgbGEgc2VzacOzbiBkZXNkZSBsYSBjb29raWUtaGludCBkZSBmYW1pbGlhIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAgeSBlbiBlbCBhcnJhbnF1ZSBOTyBoYXkgYWNjZXNzIHRva2VuIGVuIGVsIHN0b3JhZ2UgZGUgZXN0ZVxuICAgKiBvcmlnaW4gUEVSTyBleGlzdGUgbGEgY29va2llIEpTLXJlYWRhYmxlIGRlIFwic2VzacOzbiBhY3RpdmEgZW4gbGEgZmFtaWxpYVwiXG4gICAqICh2ZXIgYGxvZ2dlZEluSGludENvb2tpZWApLCBgaW5pdGlhbGl6ZSgpYCBpbnRlbnRhIHVuIGAvcmVmcmVzaGAgcGFyYVxuICAgKiBpbnN0YWxhciBsYSBzZXNpw7NuIGNyb3NzLW9yaWdpbi4gRWwgcmVmcmVzaCB0b2tlbiBIdHRwT25seSBkZWwgYmFja2VuZCBlc1xuICAgKiBgU2FtZVNpdGU9Tm9uZWAg4oaSIHZpYWphIGEgbGEgQVBJIGRlc2RlIGN1YWxxdWllciBhcHAgZGVsIGZhY3RvcnksIGFzw60gcXVlIHVuXG4gICAqIHVzdWFyaW8gbG9ndWVhZG8gZW4gb3RyYSBhcHAgKGVqLiBzaG93Y2FzZSkgcXVlZGEgYXV0ZW50aWNhZG8gYWwgZW50cmFyIGFcbiAgICogZXN0YSBzaW4gcmUtbG9ndWVhciBuaSBoYW5kb2ZmIGV4cGzDrWNpdG8uXG4gICAqXG4gICAqIEVsIGludGVudG8gZXMgKipibG9xdWVhbnRlKiogKGEgZGlmZXJlbmNpYSBkZWwgcmVmcmVzaCBkZSBmb25kbyBkZWwgdG9rZW5cbiAgICogZXhwaXJhZG8pOiBubyBoYXkgY2xhaW1zIHF1ZSByZXN0YXVyYXIgZGUgZm9ybWEgb3B0aW1pc3RhLCBhc8OtIHF1ZSBzZSBlc3BlcmFcbiAgICogcGFyYSBxdWUgbG9zIGd1YXJkcyAoYGF1dGhHdWFyZGAvYGd1ZXN0R3VhcmRgKSB2ZWFuIGVsIGVzdGFkbyBjb3JyZWN0by4gU29sb1xuICAgKiBhZmVjdGEgYSB2aXNpdGFudGVzIENPTiBsYSBoaW50IChzZXNpw7NuIGRlIGZhbWlsaWEpLCBubyBhIGFuw7NuaW1vcy4gRWwgc3BsYXNoXG4gICAqIHByZS1ib290c3RyYXAgZGVsIGBpbmRleC5odG1sYCBjdWJyZSBsYSBsYXRlbmNpYSBkZWwgY29sZCBzdGFydC5cbiAgICpcbiAgICogQ2F2ZWF0OiBsYSBoaW50IHRpZW5lIGBEb21haW49Lm15dmFsdGVjaC5jb21gIOKGkiBlbiBkZXYgKGFwcHMgZW4gYCoud2ViLmFwcGApXG4gICAqIG5vIGVzIGxlZ2libGUgeSBlbCByZWZyZXNoIGNyb3NzLXNpdGUgc2UgYmxvcXVlYTsgZWwgaW50ZW50byBmYWxsYSBsaW1waW8geVxuICAgKiBsYSBhcHAgc2lndWUgY29tbyBpbnZpdGFkby4gRnVuY2lvbmEgZW4gcHJvZCAoZG9taW5pb3MgYCoubXl2YWx0ZWNoLmNvbWApLlxuICAgKi9cbiAgYm9vdHN0cmFwU2Vzc2lvbkZyb21IaW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE5vbWJyZSBkZSBsYSBjb29raWUgSlMtcmVhZGFibGUgcXVlIGluZGljYSBzZXNpw7NuIGFjdGl2YSBlbiBsYSBmYW1pbGlhXG4gICAqIChkZWZhdWx0OiAndmFsdGVjaF9sb2dnZWRfaW4nKS4gTGEgc2V0ZWEgZWwgYmFja2VuZCBlbiBsb2dpbi9sb2dvdXRcbiAgICogKGBIdHRwT25seTpmYWxzZWAsIGBEb21haW49Lm15dmFsdGVjaC5jb21gKS4gRXMgdW4gaGludCBkZSBVSSwgbm8gdW5hXG4gICAqIGNyZWRlbmNpYWwg4oCUIGVsIHRva2VuIHJlYWwgdmEgZW4gbGEgY29va2llIEh0dHBPbmx5IGB2YWx0ZWNoX3JlZnJlc2hgLlxuICAgKi9cbiAgbG9nZ2VkSW5IaW50Q29va2llPzogc3RyaW5nO1xuICAvKipcbiAgICogQm9vdHN0cmFwZWFyIGxhIHNlc2nDs24gdsOtYSBlbCBBdXRoIFByb3h5IENlbnRyYWwgY3VhbmRvIGVzdGEgYXBwIE5PXG4gICAqIGNvbXBhcnRlIGRvbWluaW8gcmHDrXogY29uIGVsIHJlc3RvIGRlbCBmYWN0b3J5IChBRFItMDUwLCBNb2RvIEIg4oCUIGVqLiB1blxuICAgKiBwcm9kdWN0byBjb24gZG9taW5pbyBwcm9waW8gY29tbyBgc2lnaWZ5LmNvbWAsIGEgZGlmZXJlbmNpYSBkZSBiaW5nby9cbiAgICogc2hvd2Nhc2UgYmFqbyBgKi5teXZhbHRlY2guY29tYCkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAsIG5vIGhheSBhY2Nlc3MgdG9rZW4gbG9jYWwgTkkgY29va2llLWhpbnQgbGVnaWJsZVxuICAgKiAoYGJvb3RzdHJhcFNlc3Npb25Gcm9tSGludGAgbm8gYXBsaWNhIGVuIGVzdGUgZG9taW5pbyDigJQgbGEgY29va2llXG4gICAqIGBEb21haW49Lm15dmFsdGVjaC5jb21gIG51bmNhIGxsZWdhIGFxdcOtKSwgZSBgaW5pdGlhbGl6ZSgpYCBubyB2aWVuZSBkZVxuICAgKiB1biByZXRvcm5vIGRlbCBicmlkZ2UgKHZlciBtw6FzIGFiYWpvKSwgbGEgYXBwIGhhY2UgdW5hIG5hdmVnYWNpw7NuIGRlXG4gICAqIHDDoWdpbmEgY29tcGxldGEgYSBgc3NvQnJpZGdlVXJsYCBjb24gYHJlZGlyZWN0X3VyaWAgPSBsYSBVUkwgYWN0dWFsLlxuICAgKlxuICAgKiBFbCBiYWNrZW5kIHZhbGlkYSBsYSBjb29raWUgYHZhbHRlY2hfcmVmcmVzaGAgKEh0dHBPbmx5LCBzw7NsbyB2aXNpYmxlIGVuXG4gICAqIHN1IHByb3BpbyBkb21pbmlvKSB5OlxuICAgKiAgIC0gc2kgaGF5IHNlc2nDs24gYWN0aXZhOiByZWRpcmlnZSBkZSB2dWVsdGEgY29uIGA/aGFuZG9mZj1UT0tFTmAg4oCUIGVsXG4gICAqICAgICBgQVBQX0lOSVRJQUxJWkVSYCBkZSBgSGFuZG9mZlNlcnZpY2UuZGV0ZWN0QW5kRXhjaGFuZ2VIYW5kb2ZmKClgXG4gICAqICAgICAoeWEgcmVxdWVyaWRvIHBvciBjcm9zcy1hcHAgaGFuZG9mZiwgdmVyIGZyb250ZW5kL0NMQVVERS5tZCkgaW5zdGFsYVxuICAgKiAgICAgbGEgc2VzacOzbiBzaW4gcGVkaXIgY3JlZGVuY2lhbGVzLlxuICAgKiAgIC0gc2kgbm8gaGF5IHNlc2nDs246IHJlZGlyaWdlIGRlIHZ1ZWx0YSBzaW4gYD9oYW5kb2ZmYCDigJQgbGEgYXBwIGNhZSBhXG4gICAqICAgICBpbnZpdGFkbywgY29tcG9ydGFtaWVudG8gbm9ybWFsLlxuICAgKlxuICAgKiBFbCB1c3VhcmlvIHZlIHVuYSByZWRpcmVjY2nDs24gYnJldmUgKGRvcyBjYXJnYXMgZGUgcMOhZ2luYSksIHRhbCBjb21vXG4gICAqIGRvY3VtZW50YSBlbCBBRFItMDUwIHBhcmEgZXN0ZSBtb2RvIOKAlCBubyBoYXkgZm9ybWEgZGUgZXZpdGFybGEgc2luXG4gICAqIGlmcmFtZS9wb3B1cCwgeSBlc29zIHJvbXBlbiBjb24gZWwgYmxvcXVlbyBkZSBjb29raWVzIGRlIHRlcmNlcm9zLlxuICAgKlxuICAgKiBSZXF1aWVyZSBgc3NvQnJpZGdlVXJsYCBzZXRlYWRvIHkgZWwgYEFQUF9JTklUSUFMSVpFUmAgZGUgaGFuZG9mZlxuICAgKiBjYWJsZWFkbyBlbiBgbWFpbi50c2AgKG1pc21vIHJlcXVpc2l0byBxdWUgZWwgaGFuZG9mZiBjcm9zcy1hcHAgbWFudWFsKS5cbiAgICovXG4gIGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVSTCBjb21wbGV0YSBkZWwgZW5kcG9pbnQgYEdFVCAvdjIvYXV0aC9zc28tYnJpZGdlYCBkZWwgQXV0aCBQcm94eVxuICAgKiBDZW50cmFsIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20vdjIvYXV0aC9zc28tYnJpZGdlJykuIFJlcXVlcmlkb1xuICAgKiBjdWFuZG8gYGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlYCBlcyBgdHJ1ZWAuXG4gICAqL1xuICBzc29CcmlkZ2VVcmw/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFU1RBRE8gREUgQVVURU5USUNBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvIGNvbXBsZXRvIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTdGF0ZSB7XG4gIC8qKiBVc3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgLyoqIEVzdGFkbyBkZSBjYXJnYSBpbmljaWFsICovXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIFRva2VuIGRlIGFjY2VzbyBhY3R1YWwgKi9cbiAgYWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUb2tlbiBkZSByZWZyZXNjbyBhY3R1YWwgKi9cbiAgcmVmcmVzaFRva2VuOiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGVsIHVzdWFyaW8gKi9cbiAgdXNlcklkOiBzdHJpbmcgfCBudWxsO1xuICAvKiogRW1haWwgZGVsIHVzdWFyaW8gKi9cbiAgZW1haWw6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBOb21icmUgY29tcGxldG8gZGVsIHVzdWFyaW8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgaGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIChwb2JsYWRvIHRyYXMgYGdldFByb2ZpbGUoKWApICovXG4gIGF2YXRhclVybD86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUZWzDqWZvbm8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgcGhvbmU/OiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvIChmb3JtYXRvICdyZXNvdXJjZTphY3Rpb24nKSAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIC8qKiBVc3VhcmlvIGVzIHN1cGVyIGFkbWluICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIFVzdWFyaW8gdGllbmUgc3VzY3JpcGNpw7NuIHByZW1pdW0gYWN0aXZhIChubyB2ZSBhZHMpICovXG4gIGlzUHJlbWl1bTogYm9vbGVhbjtcbiAgLyoqIFRpbWVzdGFtcCBkZSBleHBpcmFjacOzbiBkZWwgYWNjZXNzVG9rZW4gKG1zKSAqL1xuICBleHBpcmVzQXQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgZXhpc3RlKSAqL1xuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFVzZXIge1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgZGVsIHVzdWFyaW8gKGVqOiBAdmljdG9ydikgKi9cbiAgaGFuZGxlPzogc3RyaW5nO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZGVsIHVzdWFyaW8gKi9cbiAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICBtZmFFbmFibGVkPzogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xufVxuXG4vKipcbiAqIEVycm9yIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9BVVRIX1NUQVRFOiBBdXRoU3RhdGUgPSB7XG4gIGlzQXV0aGVudGljYXRlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgYWNjZXNzVG9rZW46IG51bGwsXG4gIHJlZnJlc2hUb2tlbjogbnVsbCxcbiAgdXNlcklkOiBudWxsLFxuICBlbWFpbDogbnVsbCxcbiAgYWN0aXZlT3JnOiBudWxsLFxuICByb2xlczogW10sXG4gIHBlcm1pc3Npb25zOiBbXSxcbiAgaXNTdXBlckFkbWluOiBmYWxzZSxcbiAgaXNQcmVtaXVtOiBmYWxzZSxcbiAgZXhwaXJlc0F0OiBudWxsLFxuICBlcnJvcjogbnVsbCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRkFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBNw6l0b2RvcyBkZSBNRkEgc29wb3J0YWRvcyAqL1xuZXhwb3J0IHR5cGUgTUZBTWV0aG9kID0gJ0VNQUlMJyB8ICdTTVMnIHwgJ1RPVFAnO1xuXG4vKipcbiAqIEVzdGFkbyBkZSBNRkEgcGVuZGllbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVBlbmRpbmdTdGF0ZSB7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBtZmFUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWV0aG9kOiBNRkFNZXRob2QgfCBudWxsO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUZBX1NUQVRFOiBNRkFQZW5kaW5nU3RhdGUgPSB7XG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgbWZhVG9rZW46IG51bGwsXG4gIG1ldGhvZDogbnVsbCxcbn07XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3VsdCB7XG4gIGNvZGVTZW50OiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIE1GQSBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTdGF0dXMge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBtZXRob2Q6IE1GQU1ldGhvZCB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RQIE1GQSAoR29vZ2xlIEF1dGhlbnRpY2F0b3IpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNldHVwIGRlIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUFNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2VjcmV0byBUT1RQIGVuIGJhc2UzMiAocGFyYSBlbnRyYWRhIG1hbnVhbCkgKi9cbiAgc2VjcmV0OiBzdHJpbmc7XG4gIC8qKiBVUkwgcGFyYSBnZW5lcmFyIFFSIGNvZGUgKG90cGF1dGg6Ly8uLi4pICovXG4gIHFyQ29kZVVybDogc3RyaW5nO1xuICAvKiogQ8OzZGlnb3MgZGUgcmVzcGFsZG8gZGUgdW4gc29sbyB1c28gKi9cbiAgYmFja3VwQ29kZXM6IHN0cmluZ1tdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBzZXR1cCBkZSBUT1RQLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRPVFBWZXJpZnlTZXR1cFJlcXVlc3Qge1xuICAvKiogQ8OzZGlnbyBUT1RQIGRlIDYgZMOtZ2l0b3MgKi9cbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgc2V0dXAgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQVmVyaWZ5U2V0dXBSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZGVzaGFiaWxpdGFyIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUERpc2FibGVSZXF1ZXN0IHtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXNoYWJpbGl0YXIgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWdlbmVyYXIgY8OzZGlnb3MgZGUgcmVzcGFsZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnZW5lcmF0ZUJhY2t1cENvZGVzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBiYWNrdXBDb2Rlczogc3RyaW5nW107XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW50aWRhZCBkZSBjw7NkaWdvcyBkZSByZXNwYWxkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrdXBDb2Rlc0NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVRVUVTVFMvUkVTUE9OU0VTIChhbGluZWFkb3MgY29uIGJhY2tlbmQgQXV0aFYyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSB2ZXJpZmljYXIgZW1haWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgZW1haWwuXG4gKiBTaSBlcyBleGl0b3NvLCBpbmNsdXllIHRva2VucyBwYXJhIGF1dG8tbG9naW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHZlcmlmaWVkOiBib29sZWFuO1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBmaXJlYmFzZVRva2VuPzogc3RyaW5nO1xuICBleHBpcmVzSW4/OiBudW1iZXI7XG4gIHRva2VuVHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgYWN0aXZhciB1bmEgY3VlbnRhIHByZS1hcHJvdmlzaW9uYWRhIHBvciB1bmEgb3JnYW5pemFjacOzblxuICogKEFEUi0wMjMpOiBlbCB1c3VhcmlvIGRlZmluZSBzdSBjb250cmFzZcOxYSBjb24gZWwgdG9rZW4gZGVsIGVubGFjZSBkZSBlbWFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXF1ZXN0IHtcbiAgdG9rZW46IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBhY3RpdmFjacOzbiBkZSBjdWVudGEuIEVuIMOpeGl0byBpbmNsdXllIHRva2VucyBkZSBhdXRvLXNpZ25pblxuICogKG1pc21vIHNoYXBlIHF1ZSB2ZXJpZnktZW1haWwpIOKAlCBlbCB1c3VhcmlvIHF1ZWRhIGxvZ3VlYWRvIHRyYXMgYWN0aXZhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjdGl2YXRlZDogYm9vbGVhbjtcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xuICB0b2tlblR5cGU/OiBzdHJpbmc7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHJlZW52aWFyIGPDs2RpZ28gZGUgdmVyaWZpY2FjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRDb2RlUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHR5cGU6ICdFTUFJTF9WRVJJRlknIHwgJ1BBU1NXT1JEX1JFU0VUJztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWVudsOtbyBkZSBjw7NkaWdvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc2VuZENvZGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHNlbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAocGFyYSBkZXRlY2Npw7NuIGRlIG51ZXZvIGRpc3Bvc2l0aXZvKSAqL1xuICBwbGF0Zm9ybT86IERldmljZVBsYXRmb3JtO1xuICAvKiogTmF2ZWdhZG9yIChzb2xvIHdlYikgKi9cbiAgYnJvd3Nlcj86IHN0cmluZztcbiAgLyoqIFNpc3RlbWEgb3BlcmF0aXZvICovXG4gIG9zPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBkZXZpY2VOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbiAgdG9rZW5UeXBlPzogc3RyaW5nO1xuICBtZmFSZXF1aXJlZD86IGJvb2xlYW47XG4gIG1mYVRva2VuPzogc3RyaW5nO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIC8qKiBJbmRpY2Egc2kgZWwgbG9naW4gZnVlIGRlc2RlIHVuIGRpc3Bvc2l0aXZvIG51ZXZvL25vIHJlY29ub2NpZG8gKi9cbiAgaXNOZXdEZXZpY2U/OiBib29sZWFuO1xuICAvKiogSUQgZGVsIGRpc3Bvc2l0aXZvIHVzYWRvIHBhcmEgZWwgbG9naW4gKi9cbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBJZGlvbWEgcHJlZmVyaWRvIGRlbCB1c3VhcmlvIChwYXJhIHNpbmNyb25pemFyIGNvbiBpMThuKSAqL1xuICBsYW5ndWFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFWZXJpZnlSZXF1ZXN0IHtcbiAgbWZhVG9rZW46IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBhcHBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2ZXJpZmljYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVZlcmlmeVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICB0b2tlblR5cGU6IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIElkaW9tYSBwcmVmZXJpZG8gZGVsIHVzdWFyaW8gKHBhcmEgc2luY3Jvbml6YXIgY29uIGkxOG4pICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGFjdGl2ZU9yZ0lkPzogc3RyaW5nIHwgbnVsbDtcbiAgYXBwSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVmcmVzY2FyIHRva2VuLlxuICogSW1wbGVtZW50YSB0b2tlbiByb3RhdGlvbjogY2FkYSByZWZyZXNoIGdlbmVyYSB1biBudWV2byByZWZyZXNoIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nOyAvLyBUb2tlbiByb3RhdGlvbjogbnVldm8gcmVmcmVzaCB0b2tlblxuICBleHBpcmVzSW46IG51bWJlcjtcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgbG9nb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ291dFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsb2dvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nb3V0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIG9idGVuZXIgcGVybWlzb3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UGVybWlzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlcXVlc3Qge1xuICBtZXRob2Q6IE1GQU1ldGhvZDtcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2V0dXAgZGUgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb2RlU2VudDogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBjb25maXJtYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQUNvbmZpcm1SZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNvbmZpcm1hciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBQ29uZmlybVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWV0aG9kOiBNRkFNZXRob2Q7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbi8qKlxuICogQWNlcHRhIGBwYXNzd29yZGAgKGN1ZW50YSBjb24gY29udHJhc2XDsWEpIG8gYG1mYUNvZGVgIChjdWVudGEgT0F1dGgtb25seVxuICogY29uIFRPVFAgcXVlIHBydWViYSBwb3Nlc2nDs24gZGVsIHNlZ3VuZG8gZmFjdG9yKS4gVW5vIHJlcXVlcmlkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFEaXNhYmxlUmVxdWVzdCB7XG4gIHBhc3N3b3JkPzogc3RyaW5nO1xuICBtZmFDb2RlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGluaWNpYXIgcmVjdXBlcmFjacOzbiBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGZvcmdvdCBwYXNzd29yZCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZXNldGVhciBjb250cmFzZcOxYSBjb24gY8OzZGlnby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZXNldCBwYXNzd29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBpbmljaWFyIHJlc2V0IGRlIE1GQSBwb3IgZW1haWwgKHVzZXIgcGVyZGnDsyBzdSAywrogZmFjdG9yKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFSZXNldFJlcXVlc3RSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBNRkEgcmVzZXQgcmVxdWVzdCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkIOKAlCBhbnRpLWVudW1lcmFjacOzbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRSZXF1ZXN0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNvbmZpcm1hciBlbCByZXNldCBkZSBNRkEgY29uIGVsIGPDs2RpZ28gcmVjaWJpZG8gcG9yIGVtYWlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVJlc2V0Q29uZmlybVJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgTUZBIHJlc2V0IGNvbmZpcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRDb25maXJtUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNhbWJpYXIgY29udHJhc2XDsWEgKHVzdWFyaW8gYXV0ZW50aWNhZG8pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZVBhc3N3b3JkUmVxdWVzdCB7XG4gIGN1cnJlbnRQYXNzd29yZDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNhbWJpbyBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZWxpbWluYXIgY3VlbnRhLlxuICogVXN1YXJpb3MgY29uIGNvbnRyYXNlw7FhOiBlbnZpYXIgYHBhc3N3b3JkYC5cbiAqIFVzdWFyaW9zIE9BdXRoIHNpbiBjb250cmFzZcOxYTogZW52aWFyIGBjb2RlYCAob2J0ZW5pZG8gdmlhIHNlbmREZWxldGVBY2NvdW50Q29kZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQWNjb3VudFJlcXVlc3Qge1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgY29kZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBlbnZpYXIgY8OzZGlnbyBkZSBjb25maXJtYWNpw7NuIGRlIGVsaW1pbmFjacOzbiBkZSBjdWVudGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZERlbGV0ZUFjY291bnRDb2RlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGVsaW1pbmFyIGN1ZW50YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVBY2NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZWxldGVkOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgb2J0ZW5lciBwZXJmaWwgZGVsIHVzdWFyaW8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBJZGlvbWEgcHJlZmVyaWRvIGRlbCB1c3VhcmlvICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuICAvKiogVXNlcm5hbWUvaGFuZGxlIGRlbCB1c3VhcmlvICovXG4gIGhhbmRsZT86IHN0cmluZztcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIGRlbCB1c3VhcmlvICovXG4gIGF2YXRhclVybD86IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgcGhvbmVWZXJpZmllZDogYm9vbGVhbjtcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xuICAvKiogVHJ1ZSBzaSBsYSBjdWVudGEgdGllbmUgY29udHJhc2XDsWEgc2V0ZWFkYSAoZmFsc2UgcGFyYSBPQXV0aC1vbmx5IHNpbiBwYXNzd29yZCkuICovXG4gIGhhc1Bhc3N3b3JkPzogYm9vbGVhbjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBhY3R1YWxpemFyIHBlcmZpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVQcm9maWxlUmVxdWVzdCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHBob25lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjdHVhbGl6YXIgcGVyZmlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVByb2ZpbGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHVwZGF0ZWQ6IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVUERBVEUgQVZBVEFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBhY3R1YWxpemFyIGF2YXRhciBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVBdmF0YXJSZXF1ZXN0IHtcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIGVuIEZpcmViYXNlIFN0b3JhZ2UgKi9cbiAgYXZhdGFyVXJsOiBzdHJpbmc7XG4gIC8qKiBVUkwgZGVsIHRodW1ibmFpbCAob3BjaW9uYWwpICovXG4gIGF2YXRhclRodW1ibmFpbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBhY3R1YWxpemFyIGF2YXRhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVBdmF0YXJSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGF2YXRhclVybDogc3RyaW5nO1xuICBhdmF0YXJUaHVtYm5haWw/OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlRPUyBERSBTSU5DUk9OSVpBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTV0lUQ0ggT1JHQU5JWkFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBjYW1iaWFyIGRlIG9yZ2FuaXphY2nDs24gYWN0aXZhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaE9yZ1JlcXVlc3Qge1xuICBvcmdhbml6YXRpb25JZDogc3RyaW5nO1xuICBhcHBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW1iaW8gZGUgb3JnYW5pemFjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW46IHN0cmluZztcbiAgYWN0aXZlT3JnOiBzdHJpbmc7XG4gIC8qKiBOdWV2byBKV1QgY29uIGFjdGl2ZU9yZyBhY3R1YWxpemFkby4gRWwgRkUgbG8gYWxtYWNlbmEgcGFyYSBxdWUgZWxcbiAgICogIGJvb3RzdHJhcCBwb3N0LXJlZnJlc2ggdXNlIGxhIG9yZyBjb3JyZWN0YSBlbiB2ZXogZGVsIEpXVCBjYWNoZWFkby4gKi9cbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVWRU5UT1MgREUgU0lOQ1JPTklaQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogVGlwb3MgZGUgZXZlbnRvcyBkZSBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzICovXG5leHBvcnQgdHlwZSBBdXRoU3luY0V2ZW50VHlwZSA9XG4gIHwgJ0xPR0lOJ1xuICB8ICdMT0dPVVQnXG4gIHwgJ1RPS0VOX1JFRlJFU0gnXG4gIHwgJ1BFUk1JU1NJT05TX1VQREFURSdcbiAgfCAnT1JHX1NXSVRDSCc7XG5cbi8qKlxuICogRXZlbnRvIGRlIHNpbmNyb25pemFjacOzbiBlbnRyZSBwZXN0YcOxYXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFN5bmNFdmVudCB7XG4gIHR5cGU6IEF1dGhTeW5jRXZlbnRUeXBlO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgcGF5bG9hZD86IHtcbiAgICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7IC8vIFRva2VuIHJvdGF0aW9uIHN1cHBvcnRcbiAgICBleHBpcmVzQXQ/OiBudW1iZXI7XG4gICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSldUIENMQUlNU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDbGFpbXMgZGVsIEpXVCBkZSBhY2Nlc28uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSldUQ2xhaW1zIHtcbiAgLyoqIFVzZXIgSUQgKi9cbiAgdWlkOiBzdHJpbmc7XG4gIC8qKiBFbWFpbCAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiogU2Vzc2lvbiBJRCAqL1xuICBzaWQ/OiBzdHJpbmc7XG4gIC8qKiBVc3VhcmlvIHRpZW5lIHN1c2NyaXBjacOzbiBwcmVtaXVtIGFjdGl2YSAqL1xuICBwcmVtaXVtPzogYm9vbGVhbjtcbiAgLyoqIEFjdGl2ZSBvcmdhbml6YXRpb24gSUQgKEpXVCBjbGFpbSBcIm9yZ1wiKSAqL1xuICBvcmc/OiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBhZG1pbiDigJQgYnlwYXNzIHRvdGFsIGRlIFJCQUMgZW4gdG9kb3MgbG9zIHNlcnZpY2lvcyAqL1xuICBhZG1pbj86IGJvb2xlYW47XG4gIC8qKiBJc3N1ZWQgYXQgKi9cbiAgaWF0OiBudW1iZXI7XG4gIC8qKiBFeHBpcmF0aW9uICovXG4gIGV4cDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RPUkFHRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBEYXRvcyBwZXJzaXN0aWRvcyBlbiBzdG9yYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZEF1dGhTdGF0ZSB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICBpc1ByZW1pdW0/OiBib29sZWFuO1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBERVZJQ0UgUkVHSVNUUkFUSU9OIChQdXNoIE5vdGlmaWNhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFBsYXRhZm9ybWFzIHNvcG9ydGFkYXMgcGFyYSBwdXNoIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIERldmljZVBsYXRmb3JtID0gJ3dlYicgfCAnaW9zJyB8ICdhbmRyb2lkJztcblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgcmVnaXN0cmFyIHVuIGRpc3Bvc2l0aXZvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyRGV2aWNlUmVxdWVzdCB7XG4gIC8qKiBGQ00gdG9rZW4gZGVsIGRpc3Bvc2l0aXZvICovXG4gIHRva2VuOiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAqL1xuICBwbGF0Zm9ybTogRGV2aWNlUGxhdGZvcm07XG4gIC8qKiBOYXZlZ2Fkb3IgKHNvbG8gd2ViKSAqL1xuICBicm93c2VyPzogc3RyaW5nO1xuICAvKiogU2lzdGVtYSBvcGVyYXRpdm8gKi9cbiAgb3M/OiBzdHJpbmc7XG4gIC8qKiBWZXJzacOzbiBkZSBsYSBhcGxpY2FjacOzbiAqL1xuICBhcHBWZXJzaW9uPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgYWRpY2lvbmFsICovXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWdpc3RybyBkZSBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckRldmljZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGV2aWNlOiB7XG4gICAgZGV2aWNlSWQ6IHN0cmluZztcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHBsYXRmb3JtOiBEZXZpY2VQbGF0Zm9ybTtcbiAgICBicm93c2VyPzogc3RyaW5nO1xuICAgIG9zPzogc3RyaW5nO1xuICAgIGxhc3RBY3RpdmU6IHN0cmluZztcbiAgICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgfTtcbiAgLyoqIHRydWUgc2kgZXMgdW4gbnVldm8gZGlzcG9zaXRpdm8sIGZhbHNlIHNpIHNlIGFjdHVhbGl6w7MgdW5vIGV4aXN0ZW50ZSAqL1xuICBpc05ldzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgaGFiaWxpdGFyIG5vdGlmaWNhY2lvbmVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuYWJsZU5vdGlmaWNhdGlvbnNSZXN1bHQge1xuICAvKiogU2kgc2Ugb3Rvcmdhcm9uIGxvcyBwZXJtaXNvcyAqL1xuICBncmFudGVkOiBib29sZWFuO1xuICAvKiogRkNNIHRva2VuIChzb2xvIHNpIGdyYW50ZWQ9dHJ1ZSkgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBTaSBlbCBkaXNwb3NpdGl2byBmdWUgcmVnaXN0cmFkbyBlbiBlbCBiYWNrZW5kICovXG4gIHJlZ2lzdGVyZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVzdGFkbyBkZSBwZXJtaXNvcyBkZSBub3RpZmljYWNpw7NuLlxuICovXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QZXJtaXNzaW9uU3RhdGUgPSAnZ3JhbnRlZCcgfCAnZGVuaWVkJyB8ICdkZWZhdWx0JyB8ICd1bnN1cHBvcnRlZCc7XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlbCByZWdpc3RybyBtYW51YWwgZGUgZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJEZXZpY2VSZXN1bHQge1xuICAvKiogU2kgZWwgZGlzcG9zaXRpdm8gZnVlIHJlZ2lzdHJhZG8gZXhpdG9zYW1lbnRlICovXG4gIHJlZ2lzdGVyZWQ6IGJvb2xlYW47XG4gIC8qKiBJRCBkZWwgZGlzcG9zaXRpdm8gKHNvbG8gc2kgcmVnaXN0ZXJlZD10cnVlKSAqL1xuICBkZXZpY2VJZD86IHN0cmluZztcbiAgLyoqIEZDTSB0b2tlbiB1c2FkbyBwYXJhIGVsIHJlZ2lzdHJvICovXG4gIHRva2VuPzogc3RyaW5nO1xuICAvKiogTWVuc2FqZSBkZSBlcnJvciAoc29sbyBzaSByZWdpc3RlcmVkPWZhbHNlKSAqL1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVklDRSBNQU5BR0VNRU5UIChEZXRlY2Npw7NuIGRlIGRpc3Bvc2l0aXZvcyBudWV2b3MpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEVzdGFkb3MgcG9zaWJsZXMgZGUgdW4gZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCB0eXBlIERldmljZVN0YXR1cyA9ICdhY3RpdmUnIHwgJ3BlbmRpbmdfYXBwcm92YWwnIHwgJ2Jsb2NrZWQnO1xuXG4vKipcbiAqIEluZm9ybWFjacOzbiBjb21wbGV0YSBkZSB1biBkaXNwb3NpdGl2byByZWdpc3RyYWRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUluZm8ge1xuICAvKiogSUQgw7puaWNvIGRlbCBkaXNwb3NpdGl2byAqL1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICAvKiogUGxhdGFmb3JtYSBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgcGxhdGZvcm06IERldmljZVBsYXRmb3JtO1xuICAvKiogTmF2ZWdhZG9yIChzb2xvIHdlYikgKi9cbiAgYnJvd3Nlcj86IHN0cmluZztcbiAgLyoqIFNpc3RlbWEgb3BlcmF0aXZvICovXG4gIG9zPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogRXN0YWRvIGFjdHVhbCBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgc3RhdHVzOiBEZXZpY2VTdGF0dXM7XG4gIC8qKiBEaXJlY2Npw7NuIElQIGRlbCDDumx0aW1vIGFjY2VzbyAqL1xuICBpcEFkZHJlc3M/OiBzdHJpbmc7XG4gIC8qKiBVYmljYWNpw7NuIGdlb2dyw6FmaWNhIGFwcm94aW1hZGEgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKiDDmmx0aW1hIGFjdGl2aWRhZCAqL1xuICBsYXN0QWN0aXZlOiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBjcmVhY2nDs24vcmVnaXN0cm8gKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBhcHJvYmFjacOzbiAoc2kgYXBsaWNhKSAqL1xuICBhcHByb3ZlZEF0Pzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgYmxvcXVlbyAoc2kgYXBsaWNhKSAqL1xuICBibG9ja2VkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgbGlzdGFyIGRpc3Bvc2l0aXZvcyBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0RGV2aWNlc1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGV2aWNlczogRGV2aWNlSW5mb1tdO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjY2nDs24gc29icmUgZGlzcG9zaXRpdm8gKGJsb2NrL2FwcHJvdmUvZGVsZXRlKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBY3Rpb25SZXN1bHQge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRVNTSU9OIE1BTkFHRU1FTlQgKEdlc3Rpw7NuIGRlIHNlc2lvbmVzIGFjdGl2YXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEluZm9ybWFjacOzbiBkZSB1bmEgc2VzacOzbiBhY3RpdmEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkluZm8ge1xuICAvKiogSUQgw7puaWNvIGRlIGxhIHNlc2nDs24gKi9cbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIC8qKiBJRCBkZWwgZGlzcG9zaXRpdm8gYXNvY2lhZG8gKHNpIGV4aXN0ZSkgKi9cbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBJbmZvcm1hY2nDs24gZGVsIGRpc3Bvc2l0aXZvIChVc2VyLUFnZW50KSAqL1xuICBkZXZpY2VJbmZvPzogc3RyaW5nO1xuICAvKiogRGlyZWNjacOzbiBJUCBkZSBsYSBzZXNpw7NuICovXG4gIGlwPzogc3RyaW5nO1xuICAvKiogVWJpY2FjacOzbiBnZW9ncsOhZmljYSBhcHJveGltYWRhICovXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgY3JlYWNpw7NuIGRlIGxhIHNlc2nDs24gKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBleHBpcmFjacOzbiBkZSBsYSBzZXNpw7NuICovXG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICAvKiogSW5kaWNhIHNpIGVzIGxhIHNlc2nDs24gYWN0dWFsIGRlbCB1c3VhcmlvICovXG4gIGlzQ3VycmVudDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsaXN0YXIgc2VzaW9uZXMgYWN0aXZhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0U2Vzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHNlc3Npb25zOiBTZXNzaW9uSW5mb1tdO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHJldm9jYXIgc2VzacOzbihlcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV2b2tlU2Vzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIC8qKiBOw7ptZXJvIGRlIHNlc2lvbmVzIHJldm9jYWRhcyAqL1xuICBzZXNzaW9uc1Jldm9rZWQ6IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVklDRSBBQ1RJT04gKEFjY2lvbmVzIGRlc2RlIGVtYWlsIGRlIGFsZXJ0YSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGVqZWN1dGFyIGFjY2nDs24gZGUgZGlzcG9zaXRpdm8gZGVzZGUgZW1haWwuXG4gKiBFbCB0b2tlbiB2aWVuZSBlbiBsYSBVUkwgZGVsIGVtYWlsIGRlIGFsZXJ0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBY3Rpb25SZXF1ZXN0IHtcbiAgLyoqIFRva2VuIEpXVCBkZSBhY2Npw7NuICgyNGgsIHVuIHNvbG8gdXNvKSAqL1xuICB0b2tlbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGVqZWN1dGFyIGFjY2nDs24gZGUgZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGV2aWNlQWN0aW9uUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2kgbGEgYWNjacOzbiBmdWUgZWplY3V0YWRhIGV4aXRvc2FtZW50ZSAqL1xuICBzdWNjZXNzOiBib29sZWFuO1xuICAvKiogQWNjacOzbiBlamVjdXRhZGEgKHJlZnVzZSwgYXBwcm92ZSwgYmxvY2spICovXG4gIGFjdGlvbjogc3RyaW5nO1xuICAvKiogSUQgZGVsIGRpc3Bvc2l0aXZvIGFmZWN0YWRvICovXG4gIGRldmljZUlkOiBzdHJpbmc7XG4gIC8qKiBOw7ptZXJvIGRlIHNlc2lvbmVzIHJldm9jYWRhcyAoc2kgYWN0aW9uPXJlZnVzZS9ibG9jaykgKi9cbiAgc2Vzc2lvbnNSZXZva2VkPzogbnVtYmVyO1xuICAvKiogTWVuc2FqZSBkZXNjcmlwdGl2byAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmFsaWRhciB0b2tlbiBkZSBhY2Npw7NuIChzaW4gZWplY3V0YXIpLlxuICogVXNhZG8gcGFyYSBtb3N0cmFyIGNvbmZpcm1hY2nDs24gYWwgdXN1YXJpbyBhbnRlcyBkZSBlamVjdXRhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZUFjdGlvblJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgLyoqIFNpIGVsIHRva2VuIGVzIHbDoWxpZG8gKi9cbiAgdmFsaWQ6IGJvb2xlYW47XG4gIC8qKiBUaXBvIGRlIGFjY2nDs24gKGRldmljZTpyZWZ1c2UsIGRldmljZTphcHByb3ZlLCBldGMuKSAqL1xuICBhY3Rpb25UeXBlPzogc3RyaW5nO1xuICAvKiogVGlwbyBkZSByZWN1cnNvIG9iamV0aXZvIChkZXZpY2UsIGRvY3VtZW50LCBldGMuKSAqL1xuICB0YXJnZXRUeXBlPzogc3RyaW5nO1xuICAvKiogSUQgZGVsIHJlY3Vyc28gb2JqZXRpdm8gKi9cbiAgdGFyZ2V0SWQ/OiBzdHJpbmc7XG4gIC8qKiBNZW5zYWplIGRlIGVycm9yIChzaSB2YWxpZD1mYWxzZSkgKi9cbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9BVVRIIChMb2dpbiBzb2NpYWwpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFByb3ZlZWRvcmVzIE9BdXRoIHNvcG9ydGFkb3MuXG4gKi9cbmV4cG9ydCB0eXBlIE9BdXRoUHJvdmlkZXIgPSAnZ29vZ2xlJyB8ICdhcHBsZScgfCAnbWljcm9zb2Z0JyB8ICdmYWNlYm9vayc7XG5cbi8qKlxuICogUmVzdWx0YWRvIGV4aXRvc28gZGUgZmx1am8gT0F1dGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhSZXN1bHQge1xuICAvKiogVG9rZW4gZGUgYWNjZXNvIEpXVCAqL1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICAvKiogVG9rZW4gZGUgcmVmcmVzY28gKi9cbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIC8qKiBUb2tlbiBkZSBGaXJlYmFzZSAoc2kgZXN0w6EgaGFiaWxpdGFkbykgKi9cbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgLyoqIFRpZW1wbyBkZSBleHBpcmFjacOzbiBlbiBzZWd1bmRvcyAqL1xuICBleHBpcmVzSW46IG51bWJlcjtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzPzogc3RyaW5nW107XG4gIC8qKiBQZXJtaXNvcyBkZWwgdXN1YXJpbyAqL1xuICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuICAvKiogSW5kaWNhIHNpIGVzIHVuIHVzdWFyaW8gbnVldm8gKHJlY2nDqW4gY3JlYWRvKSAqL1xuICBpc05ld1VzZXI/OiBib29sZWFuO1xuICAvKiogSW5kaWNhIHNpIGxhIGN1ZW50YSBmdWUgdmluY3VsYWRhIGEgdXN1YXJpbyBleGlzdGVudGUgKi9cbiAgbGlua2VkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGB0cnVlYCBzaSBlbCBiYWNrZW5kIGV4aWdlIHZlcmlmaWNhY2nDs24gTUZBIHRyYXMgZWwgT0F1dGguIEVuIGVzZSBjYXNvXG4gICAqIE5PIHZpZW5lbiBgYWNjZXNzVG9rZW5gL2ByZWZyZXNoVG9rZW5gIOKAlCBlbCBmbHVqbyBjb250aW7DumEgY29uIGBtZmFUb2tlbmAuXG4gICAqL1xuICBtZmFSZXF1aXJlZD86IGJvb2xlYW47XG4gIC8qKiBUb2tlbiB0ZW1wb3JhbCBwYXJhIGVsIGNoYWxsZW5nZSBNRkEgKHByZXNlbnRlIHNpIGBtZmFSZXF1aXJlZGApLiAqL1xuICBtZmFUb2tlbj86IHN0cmluZztcbiAgLyoqIE3DqXRvZG8gTUZBIGNvbmZpZ3VyYWRvIHBvciBlbCB1c3VhcmlvIChwcmVzZW50ZSBzaSBgbWZhUmVxdWlyZWRgKS4gKi9cbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xuICAvKipcbiAgICogYHRydWVgIHNpIGxhIGN1ZW50YSBxdWVkw7MgU0lOIGNvcnJlbyBwb3JxdWUgZWwgcHJvdmVlZG9yIG5vIGVudHJlZ8OzIHVub1xuICAgKiAoY2FzbyB0w61waWNvOiBjdWVudGEgZGUgRmFjZWJvb2sgY3JlYWRhIGNvbiB0ZWzDqWZvbm8sIG8gcGVybWlzbyBkZSBlbWFpbFxuICAgKiBkZW5lZ2FkbyBlbiBlbCBkacOhbG9nbyBkZSBjb25zZW50aW1pZW50bykuXG4gICAqXG4gICAqIEVsIHVzdWFyaW8geWEgZXN0w6EgYXV0ZW50aWNhZG86IGNvbXBsZXRhciBlbCBPQXV0aCBwcnVlYmEgcXVlIGVzIGR1ZcOxbyBkZVxuICAgKiBsYSBjdWVudGEgZGVsIHByb3ZlZWRvci4gUGVybyBzaW4gY29ycmVvIG5vIGhheSByZWN1cGVyYWNpw7NuIGRlIGFjY2VzbywgbmlcbiAgICogTUZBIHBvciBlbWFpbCwgbmkgbm90aWZpY2FjaW9uZXMsIGFzw60gcXVlIGxhIGFwcCBkZWJlcsOtYSBkZXJpdmFybG8gYWwgYWx0YVxuICAgKiBkZSBjb3JyZW8gKGBBdXRoU2VydmljZS5hZGRFbWFpbGApLlxuICAgKi9cbiAgcmVxdWlyZXNFbWFpbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXJyb3IgZGUgT0F1dGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhFcnJvciB7XG4gIC8qKiBDw7NkaWdvIGRlIGVycm9yICovXG4gIGNvZGU6IHN0cmluZztcbiAgLyoqIE1lbnNhamUgZGVzY3JpcHRpdm8gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERhdG9zIGVudmlhZG9zIGRlc2RlIHBvcHVwIGNhbGxiYWNrIHZpYSBwb3N0TWVzc2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aENhbGxiYWNrRGF0YSB7XG4gIC8qKiBUaXBvIGRlIG1lbnNhamUgKi9cbiAgdHlwZTogJ29hdXRoLWNhbGxiYWNrJztcbiAgLyoqIFRva2VucyAoc2kgw6l4aXRvKSAqL1xuICB0b2tlbnM/OiBPQXV0aFJlc3VsdDtcbiAgLyoqIEVycm9yIChzaSBmYWxsw7MpICovXG4gIGVycm9yPzogT0F1dGhFcnJvcjtcbiAgLyoqXG4gICAqIE5vbmNlIGRlbCBvcGVuZXIgKE0tMDcpLiBFbCBwb3B1cCBsbyByZWNpYmUgZGVsIGJhY2tlbmQgKHJvdW5kLXRyaXAgcG9yIGVsXG4gICAqIE9BdXRoU3RhdGUgZmlybWFkbykgeSBsbyByZWVudsOtYTsgZWwgb3BlbmVyIGxvIHZlcmlmaWNhIGNvbnRyYSBlbCBxdWUgZ2VuZXLDs1xuICAgKiBlbiBtZW1vcmlhIOKGkiByZWNoYXphIHVuIG9hdXRoX2NhbGxiYWNrX2RhdGEgZm9yamFkbyBlbiBsb2NhbFN0b3JhZ2UgcG9yIFhTUy5cbiAgICovXG4gIG5vbmNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3ZlZWRvciBPQXV0aCB2aW5jdWxhZG8gYWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rZWRQcm92aWRlciB7XG4gIC8qKiBOb21icmUgZGVsIHByb3ZlZWRvciAqL1xuICBwcm92aWRlcjogT0F1dGhQcm92aWRlcjtcbiAgLyoqIEVtYWlsIGFzb2NpYWRvIGFsIHByb3ZlZWRvciAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiogTm9tYnJlIGRlbCB1c3VhcmlvIGVuIGVsIHByb3ZlZWRvciAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogVVJMIGRlIGltYWdlbiBkZSBwZXJmaWwgKi9cbiAgcGljdHVyZT86IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIHZpbmN1bGFjacOzbiAqL1xuICBsaW5rZWRBdDogc3RyaW5nO1xuICAvKiogw5psdGltYSB2ZXogcXVlIHNlIHVzw7MgcGFyYSBsb2dpbiAqL1xuICBsYXN0VXNlZEF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhciBzaSB0aWVuZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXNQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgaGFzUGFzc3dvcmQ6IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIQU5ETEUgKFVzZXJuYW1lKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgYWN0dWFsaXphciBoYW5kbGUgKEB1c2VybmFtZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlSGFuZGxlUmVxdWVzdCB7XG4gIGhhbmRsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjdHVhbGl6YXIgaGFuZGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUhhbmRsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgaGFuZGxlOiBzdHJpbmc7XG4gIHVwZGF0ZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBkaXNwb25pYmlsaWRhZCBkZSBoYW5kbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tIYW5kbGVSZXF1ZXN0IHtcbiAgaGFuZGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmVyaWZpY2FyIGRpc3BvbmliaWxpZGFkIGRlIGhhbmRsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja0hhbmRsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgaGFuZGxlOiBzdHJpbmc7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTktFRCBQUk9WSURFUlMgKE9BdXRoKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBvYnRlbmVyIHByb3ZlZWRvcmVzIE9BdXRoIHZpbmN1bGFkb3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TGlua2VkUHJvdmlkZXJzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBwcm92aWRlcnM6IExpbmtlZFByb3ZpZGVyW107XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGRlc3ZpbmN1bGFyIHVuIHByb3ZlZWRvciBPQXV0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmxpbmtQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcjogT0F1dGhQcm92aWRlcjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXN2aW5jdWxhciBwcm92ZWVkb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5saW5rUHJvdmlkZXJSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHVubGlua2VkOiBib29sZWFuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVNQUlMIENIQU5HRSDigJQgMy1zdGVwIGZsb3dcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRpYXRlRW1haWxDaGFuZ2VSZXF1ZXN0IHtcbiAgY3VycmVudFBhc3N3b3JkOiBzdHJpbmc7XG4gIG5ld0VtYWlsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhdGVFbWFpbENoYW5nZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgcGVuZGluZ0VtYWlsOiBzdHJpbmc7XG4gIHJlcXVlc3RMb2NhdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1FbWFpbENoYW5nZVN0ZXAxUmVxdWVzdCB7XG4gIGNvZGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtRW1haWxDaGFuZ2VTdGVwMVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdmVyaWZpZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUVtYWlsQ2hhbmdlU3RlcDJSZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1FbWFpbENoYW5nZVN0ZXAyUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBuZXdFbWFpbDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFMVEEgREUgQ09SUkVPIOKAlCBjdWVudGFzIHNpbiBlbWFpbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXJhIGN1ZW50YXMgY3JlYWRhcyB2w61hIHVuIHByb3ZlZWRvciBPQXV0aCBxdWUgbm8gZW50cmVnYSBjb3JyZW8gKHZlclxuLy8gT0F1dGhSZXN1bHQucmVxdWlyZXNFbWFpbCkuIEEgZGlmZXJlbmNpYSBkZWwgY2FtYmlvIGRlIGVtYWlsLCBubyBwaWRlXG4vLyBjb250cmFzZcOxYTogZXN0YXMgY3VlbnRhcyBzb24gT0F1dGgtb25seSB5IG5vIHRpZW5lbiB1bmEuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkRW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRFbWFpbFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgLyoqIENvcnJlbyBwZW5kaWVudGUsIGVubWFzY2FyYWRvIChcIm4qKipAZWplbXBsby5jb21cIikuICovXG4gIHBlbmRpbmdFbWFpbDogc3RyaW5nO1xuICAvKiogTWludXRvcyBkZSB2aWdlbmNpYSBkZWwgY8OzZGlnbyBlbnZpYWRvLiAqL1xuICBleHBpcmVzSW5NaW46IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtQWRkRW1haWxSZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1BZGRFbWFpbFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgdmVyaWZpZWQ6IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -11,6 +11,7 @@ import { getAuth } from 'firebase/auth';
|
|
|
11
11
|
import { deleteObject, getDownloadURL, getMetadata, listAll, ref, uploadBytesResumable, } from '@angular/fire/storage';
|
|
12
12
|
import { BehaviorSubject } from 'rxjs';
|
|
13
13
|
import { VALTECH_FIREBASE_CONFIG } from './config';
|
|
14
|
+
import { IMAGE_DEFAULTS, ImageService } from '../image';
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
15
16
|
import * as i1 from "@angular/fire/storage";
|
|
16
17
|
/**
|
|
@@ -45,6 +46,7 @@ export class StorageService {
|
|
|
45
46
|
constructor(storage) {
|
|
46
47
|
this.storage = storage;
|
|
47
48
|
this.config = inject(VALTECH_FIREBASE_CONFIG, { optional: true });
|
|
49
|
+
this.imageService = inject(ImageService);
|
|
48
50
|
}
|
|
49
51
|
/**
|
|
50
52
|
* Prefija el path de storage con el appId si está configurado.
|
|
@@ -290,6 +292,52 @@ export class StorageService {
|
|
|
290
292
|
}
|
|
291
293
|
return sdkResult;
|
|
292
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Procesa y sube una imagen.
|
|
297
|
+
*
|
|
298
|
+
* A diferencia de `uploadAndGetUrl`, este método es específico para imágenes:
|
|
299
|
+
* comprime por defecto con `ImageService` y puede generar un thumbnail en un
|
|
300
|
+
* path separado. Para archivos que deben conservarse byte a byte, usar
|
|
301
|
+
* `uploadAndGetUrl`.
|
|
302
|
+
*/
|
|
303
|
+
async uploadImageAndGetUrl(path, file, options) {
|
|
304
|
+
const { compress = true, compression, thumbnailPath, thumbnailSize, thumbnailMetadata, ...metadata } = options ?? {};
|
|
305
|
+
const processed = compress
|
|
306
|
+
? await this.imageService.compress(file, compression)
|
|
307
|
+
: {
|
|
308
|
+
blob: await this.materialize(file),
|
|
309
|
+
width: 0,
|
|
310
|
+
height: 0,
|
|
311
|
+
size: file.size,
|
|
312
|
+
};
|
|
313
|
+
const imageContentType = compress
|
|
314
|
+
? (compression?.mimeType ?? IMAGE_DEFAULTS.mimeType)
|
|
315
|
+
: (metadata.contentType ?? file.type ?? 'application/octet-stream');
|
|
316
|
+
const result = await this.uploadAndGetUrl(path, processed.blob, {
|
|
317
|
+
...metadata,
|
|
318
|
+
contentType: imageContentType,
|
|
319
|
+
});
|
|
320
|
+
let thumbnail;
|
|
321
|
+
if (thumbnailPath) {
|
|
322
|
+
const thumb = await this.imageService.thumbnail(processed.blob, thumbnailSize);
|
|
323
|
+
thumbnail = await this.uploadAndGetUrl(thumbnailPath, thumb.blob, {
|
|
324
|
+
...metadata,
|
|
325
|
+
...thumbnailMetadata,
|
|
326
|
+
contentType: thumbnailMetadata?.contentType ?? IMAGE_DEFAULTS.mimeType,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
return {
|
|
330
|
+
...result,
|
|
331
|
+
thumbnail,
|
|
332
|
+
processed: {
|
|
333
|
+
originalSize: file.size,
|
|
334
|
+
size: processed.blob.size,
|
|
335
|
+
width: processed.width,
|
|
336
|
+
height: processed.height,
|
|
337
|
+
compressed: compress,
|
|
338
|
+
},
|
|
339
|
+
};
|
|
340
|
+
}
|
|
293
341
|
/**
|
|
294
342
|
* Sube un archivo desde una Data URL (base64).
|
|
295
343
|
*
|
|
@@ -601,4 +649,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
601
649
|
type: Injectable,
|
|
602
650
|
args: [{ providedIn: 'root' }]
|
|
603
651
|
}], ctorParameters: () => [{ type: i1.Storage }] });
|
|
604
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCw4RUFBOEU7QUFDOUUsMkRBQTJEO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLE9BQU8sRUFDUCxHQUFHLEVBRUgsb0JBQW9CLEdBR3JCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQVNuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFBb0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUY1QixXQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFOUIsQ0FBQztJQUV4Qzs7Ozs7OztPQU9HO0lBQ0ssaUJBQWlCLENBQUMsSUFBWSxFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ3hELElBQUksVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbkQsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsU0FBUztJQUNULDhFQUE4RTtJQUU5RTs7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LGVBQWUsQ0FBQyxLQUFjO1FBQ3BDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxHQUFJLEtBQTJCLENBQUMsSUFBSSxDQUFDO1lBRS9DLFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSywwQkFBMEI7b0JBQzdCLE9BQU8sc0JBQXNCLENBQUM7Z0JBQ2hDLEtBQUssc0JBQXNCO29CQUN6QixPQUFPLCtDQUErQyxDQUFDO2dCQUN6RCxLQUFLLGtCQUFrQjtvQkFDckIsT0FBTyw0QkFBNEIsQ0FBQztnQkFDdEMsS0FBSyx3QkFBd0I7b0JBQzNCLE9BQU8sMkNBQTJDLENBQUM7Z0JBQ3JELEtBQUssMEJBQTBCO29CQUM3QixPQUFPLDBCQUEwQixDQUFDO2dCQUNwQyxLQUFLLDhCQUE4QjtvQkFDakMsT0FBTyxxQ0FBcUMsQ0FBQztnQkFDL0MsS0FBSyxxQkFBcUI7b0JBQ3hCLE9BQU8seUJBQXlCLENBQUM7Z0JBQ25DLEtBQUssMEJBQTBCO29CQUM3QixPQUFPLG9CQUFvQixDQUFDO2dCQUM5QjtvQkFDRSxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUkscUNBQXFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLHFDQUFxQyxDQUFDO0lBQy9DLENBQUM7K0dBL2xCVSxjQUFjO21IQUFkLGNBQWMsY0FERCxNQUFNOzs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0b3JhZ2UgU2VydmljZVxuICpcbiAqIFNlcnZpY2lvIHBhcmEgb3BlcmFjaW9uZXMgZGUgRmlyZWJhc2UgU3RvcmFnZS5cbiAqIFNvcG9ydGEgdXBsb2FkIGNvbiB0cmFja2luZyBkZSBwcm9ncmVzbywgZG93bmxvYWQgeSBnZXN0acOzbiBkZSBhcmNoaXZvcy5cbiAqL1xuXG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIGdldEF1dGg6IHNvbG8gcGFyYSBlbCBmYWxsYmFjayBSRVNUIGRlIHVwbG9hZEFuZEdldFVybCDigJQgZWwgaWRUb2tlbiBjb24gcXVlXG4vLyBzZSBmaXJtYSBlbCByZWludGVudG8gY3VhbmRvIGVsIGNhbmFsIFhIUiBkZWwgU0RLIGZhbGxhLlxuaW1wb3J0IHsgZ2V0QXV0aCB9IGZyb20gJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHtcbiAgZGVsZXRlT2JqZWN0LFxuICBnZXREb3dubG9hZFVSTCxcbiAgZ2V0TWV0YWRhdGEsXG4gIGxpc3RBbGwsXG4gIHJlZixcbiAgU3RvcmFnZSxcbiAgdXBsb2FkQnl0ZXNSZXN1bWFibGUsXG4gIFVwbG9hZE1ldGFkYXRhLFxuICBVcGxvYWRUYXNrU25hcHNob3QsXG59IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvc3RvcmFnZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVkFMVEVDSF9GSVJFQkFTRV9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQge1xuICBTdG9yYWdlTGlzdFJlc3VsdCxcbiAgU3RvcmFnZU1ldGFkYXRhLFxuICBVcGxvYWRQcm9ncmVzcyxcbiAgVXBsb2FkUmVzdWx0LFxuICBVcGxvYWRTdGF0ZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBGaXJlYmFzZSBTdG9yYWdlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQge1xuICogICBwcml2YXRlIHN0b3JhZ2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICpcbiAqICAgdXBsb2FkUHJvZ3Jlc3MgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAqICAgZG93bmxvYWRVcmwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gKlxuICogICBhc3luYyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcbiAqICAgICBjb25zdCBmaWxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcz8uWzBdO1xuICogICAgIGlmICghZmlsZSkgcmV0dXJuO1xuICpcbiAqICAgICAvLyBVcGxvYWQgY29uIHByb2dyZXNvXG4gKiAgICAgdGhpcy5zdG9yYWdlLnVwbG9hZChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gLCBmaWxlKS5zdWJzY3JpYmUoe1xuICogICAgICAgbmV4dDogKHByb2dyZXNzKSA9PiB0aGlzLnVwbG9hZFByb2dyZXNzLnNldChwcm9ncmVzcy5wZXJjZW50YWdlKSxcbiAqICAgICAgIGNvbXBsZXRlOiBhc3luYyAoKSA9PiB7XG4gKiAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXREb3dubG9hZFVybChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gKTtcbiAqICAgICAgICAgdGhpcy5kb3dubG9hZFVybC5zZXQodXJsKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2UpIHt9XG5cbiAgLyoqXG4gICAqIFByZWZpamEgZWwgcGF0aCBkZSBzdG9yYWdlIGNvbiBlbCBhcHBJZCBzaSBlc3TDoSBjb25maWd1cmFkby5cbiAgICogU2kgbm8gaGF5IGFwcElkIG8gc2tpcFByZWZpeCBlcyB0cnVlLCByZXRvcm5hIGVsIHBhdGggc2luIG1vZGlmaWNhci5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIG9yaWdpbmFsXG4gICAqIEBwYXJhbSBza2lwUHJlZml4IC0gU2kgZXMgdHJ1ZSwgbm8gYXBsaWNhIGVsIHByZWZpeCAow7p0aWwgcGFyYSBwYXRocyBjb21wYXJ0aWRvcyBjb21vIGF2YXRhcmVzKVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgcHJlZml4U3RvcmFnZVBhdGgocGF0aDogc3RyaW5nLCBza2lwUHJlZml4ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmIChza2lwUHJlZml4IHx8ICF0aGlzLmNvbmZpZz8uYXBwSWQpIHJldHVybiBwYXRoO1xuICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy5hcHBJZH0vJHtwYXRofWA7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVBMT0FEXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8gY29uIHRyYWNraW5nIGRlIHByb2dyZXNvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZW4gU3RvcmFnZSBkb25kZSBndWFyZGFyIGVsIGFyY2hpdm9cbiAgICogQHBhcmFtIGZpbGUgLSBBcmNoaXZvIGEgc3ViaXIgKEZpbGUgbyBCbG9iKVxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBNZXRhZGF0YSBvcGNpb25hbCAoY29udGVudFR5cGUsIGN1c3RvbU1ldGFkYXRhKVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHF1ZSBlbWl0ZSBlbCBwcm9ncmVzbyB5IGNvbXBsZXRhIGN1YW5kbyB0ZXJtaW5hXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gVXBsb2FkIGLDoXNpY29cbiAgICogc3RvcmFnZS51cGxvYWQoJ2ltYWdlcy9waG90by5qcGcnLCBmaWxlKS5zdWJzY3JpYmUoe1xuICAgKiAgIG5leHQ6IChwcm9ncmVzcykgPT4gY29uc29sZS5sb2coYCR7cHJvZ3Jlc3MucGVyY2VudGFnZX0lYCksXG4gICAqICAgY29tcGxldGU6ICgpID0+IGNvbnNvbGUubG9nKCdVcGxvYWQgY29tcGxldGFkbycpXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBDb24gbWV0YWRhdGFcbiAgICogc3RvcmFnZS51cGxvYWQoJ2RvY3MvcmVwb3J0LnBkZicsIGZpbGUsIHtcbiAgICogICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAqICAgY3VzdG9tTWV0YWRhdGE6IHsgdXBsb2FkZWRCeTogJ3VzZXIxMjMnIH1cbiAgICogfSkuc3Vic2NyaWJlKC4uLik7XG4gICAqIGBgYFxuICAgKi9cbiAgdXBsb2FkKHBhdGg6IHN0cmluZywgZmlsZTogRmlsZSB8IEJsb2IsIG1ldGFkYXRhPzogU3RvcmFnZU1ldGFkYXRhKTogT2JzZXJ2YWJsZTxVcGxvYWRQcm9ncmVzcz4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCwgbWV0YWRhdGE/LnNraXBQcmVmaXgpO1xuICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgIGNvbnN0IHVwbG9hZE1ldGFkYXRhOiBVcGxvYWRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRlbnRUeXBlOiBtZXRhZGF0YT8uY29udGVudFR5cGUgfHwgKGZpbGUgaW5zdGFuY2VvZiBGaWxlID8gZmlsZS50eXBlIDogdW5kZWZpbmVkKSxcbiAgICAgIGN1c3RvbU1ldGFkYXRhOiBtZXRhZGF0YT8uY3VzdG9tTWV0YWRhdGEsXG4gICAgICAvLyBEZWZhdWx0IGFncmVzaXZvOiBnZXREb3dubG9hZFVSTCBkZXZ1ZWx2ZSBVUkxzIGNvbiB0b2tlbiDDum5pY28gcG9yXG4gICAgICAvLyB2ZXJzacOzbiBkZWwgb2JqZXRvIOKGkiByZS1zdWJpciBlbCBhcmNoaXZvIGNhbWJpYSBlbCBVUkwgKGNhY2hlLWJ1c3RcbiAgICAgIC8vIG5hdHVyYWwpLiBFbCBjb25zdW1pZG9yIHB1ZWRlIG92ZXJyaWRlIHBhc2FuZG8gY2FjaGVDb250cm9sIGV4cGzDrWNpdG8uXG4gICAgICBjYWNoZUNvbnRyb2w6IG1ldGFkYXRhPy5jYWNoZUNvbnRyb2wgPz8gJ3B1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCcsXG4gICAgfTtcblxuICAgIGNvbnN0IHRhc2sgPSB1cGxvYWRCeXRlc1Jlc3VtYWJsZShzdG9yYWdlUmVmLCBmaWxlLCB1cGxvYWRNZXRhZGF0YSk7XG4gICAgY29uc3QgcHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVcGxvYWRQcm9ncmVzcz4oe1xuICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgIHRvdGFsQnl0ZXM6IGZpbGUuc2l6ZSxcbiAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICBzdGF0ZTogJ3J1bm5pbmcnLFxuICAgIH0pO1xuXG4gICAgdGFzay5vbihcbiAgICAgICdzdGF0ZV9jaGFuZ2VkJyxcbiAgICAgIChzbmFwc2hvdDogVXBsb2FkVGFza1NuYXBzaG90KSA9PiB7XG4gICAgICAgIHByb2dyZXNzJC5uZXh0KHtcbiAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiBzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkLFxuICAgICAgICAgIHRvdGFsQnl0ZXM6IHNuYXBzaG90LnRvdGFsQnl0ZXMsXG4gICAgICAgICAgcGVyY2VudGFnZTogTWF0aC5yb3VuZCgoc25hcHNob3QuYnl0ZXNUcmFuc2ZlcnJlZCAvIHNuYXBzaG90LnRvdGFsQnl0ZXMpICogMTAwKSxcbiAgICAgICAgICBzdGF0ZTogdGhpcy5tYXBUYXNrU3RhdGUoc25hcHNob3Quc3RhdGUpLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHByb2dyZXNzJC5uZXh0KHtcbiAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiAwLFxuICAgICAgICAgIHRvdGFsQnl0ZXM6IGZpbGUuc2l6ZSxcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgIHN0YXRlOiAnZXJyb3InLFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvZ3Jlc3MkLmVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBwcm9ncmVzcyQubmV4dCh7XG4gICAgICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogZmlsZS5zaXplLFxuICAgICAgICAgIHRvdGFsQnl0ZXM6IGZpbGUuc2l6ZSxcbiAgICAgICAgICBwZXJjZW50YWdlOiAxMDAsXG4gICAgICAgICAgc3RhdGU6ICdzdWNjZXNzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2dyZXNzJC5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gcHJvZ3Jlc3MkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIExlZSBlbCBhcmNoaXZvIENPTVBMRVRPIGEgbWVtb3JpYSB5IGRldnVlbHZlIHVuIEJsb2IgYXV0b2NvbnRlbmlkby5cbiAgICpcbiAgICogTm8gZXMgdW5hIGNvcGlhIHBvciBndXN0bzogZW4gU2FmYXJpLCB1biBgRmlsZWAgcXVlIG5vIGVzdMOhIHBsZW5hbWVudGVcbiAgICogbWF0ZXJpYWxpemFkbyBlbiBkaXNjbyDigJQgdMOtcGljbyBkZSBmb3RvcyBsbGVnYWRhcyBkZWwgaVBob25lIHbDrWFcbiAgICogRm90b3MvaUNsb3VkIOKAlCBoYWNlIGZhbGxhciBsYSBsZWN0dXJhIGRlbCBTREsgZGUgU3RvcmFnZSBlbiBlbCBlbnbDrW8sIHBvclxuICAgKiBzdXMgZG9zIGNhbWlub3MgKHVwbG9hZEJ5dGVzIHkgdXBsb2FkQnl0ZXNSZXN1bWFibGUpLCBjb24gdW5cbiAgICogYHN0b3JhZ2UvdW5rbm93bmAgb3BhY28uIEVsIG1pc21vIFNhZmFyaSBzdWJlIHNpbiBwcm9ibGVtYSBhcmNoaXZvcyBsb2NhbGVzXG4gICAqIGRlIG90cmEgcHJvY2VkZW5jaWEsIGFzw60gcXVlIGVsIGJ1ZyBhcGFyZWNlIFwiYSB2ZWNlc1wiIHkgc2luIG1lbnNhamUgw7p0aWwuXG4gICAqIGBhcnJheUJ1ZmZlcigpYCBmdWVyemEgbGEgbGVjdHVyYSBjb21wbGV0YTsgZWwgQmxvYiByZXN1bHRhbnRlIHlhIG5vXG4gICAqIGRlcGVuZGUgZGVsIGJhY2tpbmcgZmlsZS4gQ2FzbyByZWFsOiBiaW5nbyBpbWFnZS1waWNrZXIsIDIwMjYtMDgtMDUuXG4gICAqXG4gICAqIFVuIEJsb2IgKG5vLUZpbGUpIHlhIG5hY2nDsyBlbiBtZW1vcmlhIOKAlCBzZSBkZXZ1ZWx2ZSB0YWwgY3VhbC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIG1hdGVyaWFsaXplKGZpbGU6IEZpbGUgfCBCbG9iKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIEZpbGUpKSByZXR1cm4gZmlsZTtcbiAgICBjb25zdCBjb250ZW5pZG8gPSBhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCk7XG4gICAgcmV0dXJuIG5ldyBCbG9iKFtjb250ZW5pZG9dLCB7IHR5cGU6IGZpbGUudHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWludGVudG8gcG9yIFJFU1QgY3VhbmRvIGVsIFNESyBmYWxsYSBsYSBzdWJpZGEuXG4gICAqXG4gICAqIEVsIFNESyB2YSBwb3IgWE1MSHR0cFJlcXVlc3QgeSBzdSBkZXRhbGxlIGRlIGVycm9yIGVzIGB4aHIuc3RhdHVzVGV4dGAsIHF1ZVxuICAgKiBzb2JyZSBIVFRQLzIgdmllbmUgc2llbXByZSB2YWPDrW8g4oCUIHVuIGZhbGxvIGRlbCBTREsgZXMgaWxlZ2libGUgeSwgZW4gbG9zXG4gICAqIGVudG9ybm9zIGRvbmRlIGFsZ28gaW50ZXJmaWVyZSBjb24gWEhSLCBhZGVtw6FzIGV2aXRhYmxlOiBlc3RlIGNhbWlubyB1c2FcbiAgICogYGZldGNoYCBjb24gYHVwbG9hZFR5cGU9bWVkaWFgIChjdWVycG8gYmluYXJpbyBzaW1wbGUpLiBMYSBVUkwgc2UgYXJtYSBjb25cbiAgICogZWwgZG93bmxvYWRUb2tlbiBkZSBsYSByZXNwdWVzdGEgcG9ycXVlIGdldERvd25sb2FkVVJMIHRhbWJpw6luIHZhIHBvciBYSFIuXG4gICAqXG4gICAqIERldnVlbHZlIG51bGwgc2kgdGFtcG9jbyBwdWRvIOKAlCBlbCBjYWxsZXIgcmVwb3J0YSBlbCBlcnJvciBvcmlnaW5hbCBkZWwgU0RLLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdXBsb2FkVmlhUmVzdChcbiAgICBwcmVmaXhlZFBhdGg6IHN0cmluZyxcbiAgICBibG9iOiBCbG9iLFxuICAgIGNvbnRlbnRUeXBlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxVcGxvYWRSZXN1bHQgfCBudWxsPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgZ2V0QXV0aCgpLmN1cnJlbnRVc2VyPy5nZXRJZFRva2VuKCk7XG4gICAgICBjb25zdCBidWNrZXQgPSB0aGlzLnN0b3JhZ2UuYXBwLm9wdGlvbnMuc3RvcmFnZUJ1Y2tldDtcbiAgICAgIGlmICghdG9rZW4gfHwgIWJ1Y2tldCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IG5vbWJyZSA9IGVuY29kZVVSSUNvbXBvbmVudChwcmVmaXhlZFBhdGgpO1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGZldGNoKFxuICAgICAgICBgaHR0cHM6Ly9maXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vdjAvYi8ke2J1Y2tldH0vbz9uYW1lPSR7bm9tYnJlfSZ1cGxvYWRUeXBlPW1lZGlhYCxcbiAgICAgICAge1xuICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgIGhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEZpcmViYXNlICR7dG9rZW59YCwgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRUeXBlIH0sXG4gICAgICAgICAgYm9keTogYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKCFyZXNwLm9rKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTdG9yYWdlXSBSRVNUIGZhbGxiYWNrIGZhaWxlZDonLCB7XG4gICAgICAgICAgcGF0aDogcHJlZml4ZWRQYXRoLFxuICAgICAgICAgIHN0YXR1czogcmVzcC5zdGF0dXMsXG4gICAgICAgICAgYm9keTogKGF3YWl0IHJlc3AudGV4dCgpKS5yZXBsYWNlKC9cXHMrL2csICcgJykuc2xpY2UoMCwgMzAwKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgbWV0YSA9IChhd2FpdCByZXNwLmpzb24oKSkgYXMge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBzaXplPzogc3RyaW5nO1xuICAgICAgICBjb250ZW50VHlwZT86IHN0cmluZztcbiAgICAgICAgZG93bmxvYWRUb2tlbnM/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgICAgLy8gVW4gMjAwIG5vIHBydWViYSBxdWUgbGxlZ8OzIGVsIGNvbnRlbmlkbzogU2FmYXJpIGhhIGVudmlhZG8gY3VlcnBvc1xuICAgICAgLy8gdmFjw61vcyBxdWUgU3RvcmFnZSBhY2VwdGEgY29tbyBvYmpldG9zIGRlIDAgYnl0ZXMuIFZlcmlmaWNhciB5IGxpbXBpYXIuXG4gICAgICBpZiAoTnVtYmVyKG1ldGEuc2l6ZSA/PyAtMSkgIT09IGJsb2Iuc2l6ZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdbU3RvcmFnZV0gUkVTVCBmYWxsYmFjayBzaXplIG1pc21hdGNoOicsIHtcbiAgICAgICAgICBwYXRoOiBwcmVmaXhlZFBhdGgsXG4gICAgICAgICAgZXNwZXJhZG86IGJsb2Iuc2l6ZSxcbiAgICAgICAgICBndWFyZGFkbzogbWV0YS5zaXplLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgZmV0Y2goYGh0dHBzOi8vZmlyZWJhc2VzdG9yYWdlLmdvb2dsZWFwaXMuY29tL3YwL2IvJHtidWNrZXR9L28vJHtub21icmV9YCwge1xuICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgRmlyZWJhc2UgJHt0b2tlbn1gIH0sXG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZHQgPSBtZXRhLmRvd25sb2FkVG9rZW5zPy5zcGxpdCgnLCcpWzBdO1xuICAgICAgY29uc3QgZG93bmxvYWRVcmwgPVxuICAgICAgICBgaHR0cHM6Ly9maXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vdjAvYi8ke2J1Y2tldH0vby8ke25vbWJyZX0/YWx0PW1lZGlhYCArXG4gICAgICAgIChkdCA/IGAmdG9rZW49JHtkdH1gIDogJycpO1xuICAgICAgY29uc29sZS5sb2coJ1tTdG9yYWdlXSB1cGxvYWQgT0sgKFJFU1QgZmFsbGJhY2spOicsIHsgcGF0aDogcHJlZml4ZWRQYXRoIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZG93bmxvYWRVcmwsXG4gICAgICAgIGZ1bGxQYXRoOiBwcmVmaXhlZFBhdGgsXG4gICAgICAgIG5hbWU6IHByZWZpeGVkUGF0aC5zcGxpdCgnLycpLnBvcCgpIHx8IHByZWZpeGVkUGF0aCxcbiAgICAgICAgc2l6ZTogYmxvYi5zaXplLFxuICAgICAgICBjb250ZW50VHlwZTogbWV0YS5jb250ZW50VHlwZSB8fCBjb250ZW50VHlwZSxcbiAgICAgICAgbWV0YWRhdGE6IHt9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignW1N0b3JhZ2VdIFJFU1QgZmFsbGJhY2sgdGhyZXc6JywgeyBwYXRoOiBwcmVmaXhlZFBhdGgsIGVycm9yIH0pO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN1YmUgdW4gYXJjaGl2byB5IHJldG9ybmEgbGEgVVJMIGRlIGRlc2NhcmdhIGFsIGNvbXBsZXRhci5cbiAgICpcbiAgICogUm9idXN0ZWNpZG8gcGFyYSBlbCBjYXNvIFNhZmFyaS9pUGhvbmUgKHZlciBgbWF0ZXJpYWxpemVgKTogbGVlIGVsIGFyY2hpdm9cbiAgICogYSBtZW1vcmlhIGFudGVzIGRlIHN1YmlybG8sIHZlcmlmaWNhIHF1ZSBlbCB0YW1hw7FvIGd1YXJkYWRvIGNvaW5jaWRhIHksIHNpXG4gICAqIGVsIFNESyBmYWxsYSwgcmVpbnRlbnRhIHVuYSB2ZXogcG9yIFJFU1QgYW50ZXMgZGUgcmVjaGF6YXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkIGNvbiBVUkwgZGUgZGVzY2FyZ2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLnVwbG9hZEFuZEdldFVybCgnYXZhdGFycy91c2VyMTIzLmpwZycsIGZpbGUpO1xuICAgKiBjb25zb2xlLmxvZygnVVJMOicsIHJlc3VsdC5kb3dubG9hZFVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkQW5kR2V0VXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlIHwgQmxvYixcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCwgbWV0YWRhdGE/LnNraXBQcmVmaXgpO1xuICAgIGNvbnNvbGUubG9nKCdbU3RvcmFnZV0gdXBsb2FkQW5kR2V0VXJsIHN0YXJ0OicsIHsgcGF0aDogcHJlZml4ZWRQYXRoLCBzaXplOiBmaWxlLnNpemUgfSk7XG5cbiAgICBjb25zdCBjb250ZW50VHlwZSA9IG1ldGFkYXRhPy5jb250ZW50VHlwZSB8fCBmaWxlLnR5cGUgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7XG4gICAgY29uc3QgYmxvYiA9IGF3YWl0IHRoaXMubWF0ZXJpYWxpemUoZmlsZSk7XG5cbiAgICBjb25zdCBzZGtSZXN1bHQgPSBhd2FpdCBuZXcgUHJvbWlzZTxVcGxvYWRSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMudXBsb2FkKHBhdGgsIGJsb2IsIHsgLi4ubWV0YWRhdGEsIGNvbnRlbnRUeXBlIH0pLnN1YnNjcmliZSh7XG4gICAgICAgIGNvbXBsZXRlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSBhd2FpdCBnZXREb3dubG9hZFVSTChzdG9yYWdlUmVmKTtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZE1ldGFkYXRhID0gYXdhaXQgZ2V0TWV0YWRhdGEoc3RvcmFnZVJlZik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1N0b3JhZ2VdIHVwbG9hZCBPSzonLCB7XG4gICAgICAgICAgICAgIHBhdGg6IHByZWZpeGVkUGF0aCxcbiAgICAgICAgICAgICAgdXJsOiBkb3dubG9hZFVybC5zbGljZSgwLCA2MCkgKyAn4oCmJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIGRvd25sb2FkVXJsLFxuICAgICAgICAgICAgICBmdWxsUGF0aDogc3RvcmVkTWV0YWRhdGEuZnVsbFBhdGgsXG4gICAgICAgICAgICAgIG5hbWU6IHN0b3JlZE1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgIHNpemU6IHN0b3JlZE1ldGFkYXRhLnNpemUsXG4gICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBzdG9yZWRNZXRhZGF0YS5jb250ZW50VHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyxcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IHN0b3JlZE1ldGFkYXRhLmN1c3RvbU1ldGFkYXRhIHx8IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTdG9yYWdlXSBnZXREb3dubG9hZFVSTC9tZXRhZGF0YSBmYWlsZWQ6Jywge1xuICAgICAgICAgICAgICBwYXRoOiBwcmVmaXhlZFBhdGgsXG4gICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWplY3QodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1N0b3JhZ2VdIHVwbG9hZCBmYWlsZWQ6JywgeyBwYXRoOiBwcmVmaXhlZFBhdGgsIGVycm9yIH0pO1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KS5jYXRjaChhc3luYyBvcmlnaW5hbEVycm9yID0+IHtcbiAgICAgIGNvbnN0IHJlc2NhdGFkbyA9IGF3YWl0IHRoaXMudXBsb2FkVmlhUmVzdChwcmVmaXhlZFBhdGgsIGJsb2IsIGNvbnRlbnRUeXBlKTtcbiAgICAgIGlmIChyZXNjYXRhZG8pIHJldHVybiByZXNjYXRhZG87XG4gICAgICB0aHJvdyBvcmlnaW5hbEVycm9yO1xuICAgIH0pO1xuXG4gICAgLy8gVmVyaWZpY2FjacOzbiBkZSBjb250ZW5pZG8gdGFtYmnDqW4gZW4gZWwgY2FtaW5vIFNESzogdW4gb2JqZXRvIGRlIDAgYnl0ZXNcbiAgICAvLyBjb24gVVJMIHbDoWxpZGEgZXMgcGVvciBxdWUgdW4gZXJyb3Ig4oCUIGxhIGltYWdlbiBcInN1YmVcIiB5IG51bmNhIGNhcmdhLlxuICAgIGlmIChzZGtSZXN1bHQuc2l6ZSAhPT0gYmxvYi5zaXplKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbU3RvcmFnZV0gc2l6ZSBtaXNtYXRjaCB0cmFzIHN1YmlyOicsIHtcbiAgICAgICAgcGF0aDogcHJlZml4ZWRQYXRoLFxuICAgICAgICBlc3BlcmFkbzogYmxvYi5zaXplLFxuICAgICAgICBndWFyZGFkbzogc2RrUmVzdWx0LnNpemUsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IGRlbGV0ZU9iamVjdChyZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpKS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbCBhcmNoaXZvIG5vIHNlIHN1YmnDsyBjb21wbGV0by4gSW50w6ludGFsbyBkZSBudWV2by4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHNka1Jlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8gZGVzZGUgdW5hIERhdGEgVVJMIChiYXNlNjQpLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZW4gU3RvcmFnZVxuICAgKiBAcGFyYW0gZGF0YVVybCAtIERhdGEgVVJMIChlajogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwuLi4nKVxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBNZXRhZGF0YSBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSZXN1bHRhZG8gZGVsIHVwbG9hZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIERlc2RlIGNhbnZhc1xuICAgKiBjb25zdCBkYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JhZ2UudXBsb2FkRnJvbURhdGFVcmwoJ2ltYWdlcy9kcmF3aW5nLnBuZycsIGRhdGFVcmwpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHVwbG9hZEZyb21EYXRhVXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkYXRhVXJsOiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBTdG9yYWdlTWV0YWRhdGFcbiAgKTogUHJvbWlzZTxVcGxvYWRSZXN1bHQ+IHtcbiAgICAvLyBFeHRyYWVyIGNvbnRlbnQgdHlwZSB5IGRhdG9zIGJhc2U2NFxuICAgIGNvbnN0IG1hdGNoZXMgPSBkYXRhVXJsLm1hdGNoKC9eZGF0YTooW147XSspO2Jhc2U2NCwoLispJC8pO1xuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhIFVSTCBpbnbDoWxpZGEnKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50VHlwZSA9IG1hdGNoZXNbMV07XG4gICAgY29uc3QgYmFzZTY0RGF0YSA9IG1hdGNoZXNbMl07XG5cbiAgICAvLyBDb252ZXJ0aXIgYmFzZTY0IGEgQmxvYlxuICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcbiAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcblxuICAgIHJldHVybiB0aGlzLnVwbG9hZEFuZEdldFVybChwYXRoLCBibG9iLCB7XG4gICAgICBjb250ZW50VHlwZSxcbiAgICAgIC4uLm1ldGFkYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERPV05MT0FEXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIFVSTCBkZSBkZXNjYXJnYSBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm8gZW4gU3RvcmFnZVxuICAgKiBAcmV0dXJucyBVUkwgZGUgZGVzY2FyZ2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB1cmwgPSBhd2FpdCBzdG9yYWdlLmdldERvd25sb2FkVXJsKCdpbWFnZXMvcGhvdG8uanBnJyk7XG4gICAqIC8vIFVzYXIgZW4gPGltZyBbc3JjXT1cInVybFwiPlxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldERvd25sb2FkVXJsKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIHJldHVybiBhd2FpdCBnZXREb3dubG9hZFVSTChzdG9yYWdlUmVmKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgbWV0YWRhdGEgZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBhcmNoaXZvXG4gICAqIEByZXR1cm5zIE1ldGFkYXRhIGRlbCBhcmNoaXZvXG4gICAqL1xuICBhc3luYyBnZXRNZXRhZGF0YShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFN0b3JhZ2VNZXRhZGF0YSAmIHsgc2l6ZTogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IGdldE1ldGFkYXRhKHN0b3JhZ2VSZWYpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudFR5cGU6IG1ldGFkYXRhLmNvbnRlbnRUeXBlLFxuICAgICAgICBjdXN0b21NZXRhZGF0YTogbWV0YWRhdGEuY3VzdG9tTWV0YWRhdGEsXG4gICAgICAgIGNhY2hlQ29udHJvbDogbWV0YWRhdGEuY2FjaGVDb250cm9sLFxuICAgICAgICBzaXplOiBtZXRhZGF0YS5zaXplLFxuICAgICAgICBuYW1lOiBtZXRhZGF0YS5uYW1lLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERFTEVURVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRWxpbWluYSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm8gYSBlbGltaW5hclxuICAgKiBAcGFyYW0gb3B0aW9ucy5za2lwUHJlZml4IC0gU2kgZXMgdHJ1ZSwgbm8gYXBsaWNhIGVsIHByZWZpeCBkZSBhcHBJZCAocGFyYVxuICAgKiAgIGJvcnJhciB1biBhcmNoaXZvIHN1YmlkbyBjb24gYHVwbG9hZEFuZEdldFVybChwYXRoLCBmaWxlLCB7IHNraXBQcmVmaXg6XG4gICAqICAgdHJ1ZSB9KWAgaGF5IHF1ZSBwYXNhciBlbCBtaXNtbyBmbGFnLCBvIGVsIHBhdGggcXVlZGEgbWFsIGFybWFkbyB5IGVsXG4gICAqICAgZGVsZXRlIGZhbGxhIGNvbnRyYSB1biBvYmpldG8gcXVlIG5vIGV4aXN0ZSkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgc3RvcmFnZS5kZWxldGUoJ2ltYWdlcy9vbGQtcGhvdG8uanBnJyk7XG4gICAqIGF3YWl0IHN0b3JhZ2UuZGVsZXRlKCdhcHBzL21lcm90ei9vcmdzL3gvcHVibGljL2ltYWdlcy9wYXJ0cy95L3oucG5nJywgeyBza2lwUHJlZml4OiB0cnVlIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiB7IHNraXBQcmVmaXg/OiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoLCBvcHRpb25zPy5za2lwUHJlZml4KTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgYXdhaXQgZGVsZXRlT2JqZWN0KHN0b3JhZ2VSZWYpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSBtw7psdGlwbGVzIGFyY2hpdm9zLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aHMgLSBBcnJheSBkZSBydXRhcyBhIGVsaW1pbmFyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgc3RvcmFnZS5kZWxldGVNdWx0aXBsZShbXG4gICAqICAgJ2ltYWdlcy9waG90bzEuanBnJyxcbiAgICogICAnaW1hZ2VzL3Bob3RvMi5qcGcnXG4gICAqIF0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGRlbGV0ZU11bHRpcGxlKHBhdGhzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHBhdGhzLm1hcChwYXRoID0+IHRoaXMuZGVsZXRlKHBhdGgpKSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTElTVFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTGlzdGEgYXJjaGl2b3MgZW4gdW4gZGlyZWN0b3Jpby5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBkaXJlY3RvcmlvXG4gICAqIEByZXR1cm5zIExpc3RhIGRlIHJ1dGFzIGRlIGFyY2hpdm9zXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS5saXN0KCdpbWFnZXMvJyk7XG4gICAqIGNvbnNvbGUubG9nKHJlc3VsdC5pdGVtcyk7IC8vIFsnaW1hZ2VzL3Bob3RvMS5qcGcnLCAnaW1hZ2VzL3Bob3RvMi5qcGcnXVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGxpc3QocGF0aDogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlTGlzdFJlc3VsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBsaXN0QWxsKHN0b3JhZ2VSZWYpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogcmVzdWx0Lml0ZW1zLm1hcChpdGVtID0+IGl0ZW0uZnVsbFBhdGgpLFxuICAgICAgICBuZXh0UGFnZVRva2VuOiB1bmRlZmluZWQsIC8vIGxpc3RBbGwgbm8gc29wb3J0YSBwYWdpbmFjacOzblxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVUSUxJREFERVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdlbmVyYSB1biBub21icmUgZGUgYXJjaGl2byDDum5pY28gY29uIHRpbWVzdGFtcC5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbCBkZWwgYXJjaGl2b1xuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBOb21icmUgw7puaWNvXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdW5pcXVlTmFtZSA9IHN0b3JhZ2UuZ2VuZXJhdGVGaWxlTmFtZSgncGhvdG8uanBnJywgJ3VzZXIxMjMnKTtcbiAgICogLy8gPT4gJ3VzZXIxMjNfMTcwMzA5MTIzNDU2N19waG90by5qcGcnXG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuZXJhdGVGaWxlTmFtZShvcmlnaW5hbE5hbWU6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNhbml0aXplZE5hbWUgPSBvcmlnaW5hbE5hbWUucmVwbGFjZSgvW15hLXpBLVowLTkuLV0vZywgJ18nKTtcblxuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7dGltZXN0YW1wfV8ke3Nhbml0aXplZE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RpbWVzdGFtcH1fJHtzYW5pdGl6ZWROYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhIHVuYSBydXRhIMO6bmljYSBwYXJhIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgLSBEaXJlY3RvcmlvIGJhc2VcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbFxuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSdXRhIGNvbXBsZXRhIMO6bmljYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBhdGggPSBzdG9yYWdlLmdlbmVyYXRlUGF0aCgndXBsb2FkcycsICdwaG90by5qcGcnLCAndXNlcjEyMycpO1xuICAgKiAvLyA9PiAndXBsb2Fkcy91c2VyMTIzXzE3MDMwOTEyMzQ1NjdfcGhvdG8uanBnJ1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmVyYXRlUGF0aChkaXJlY3Rvcnk6IHN0cmluZywgb3JpZ2luYWxOYW1lOiBzdHJpbmcsIHByZWZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmdlbmVyYXRlRmlsZU5hbWUob3JpZ2luYWxOYW1lLCBwcmVmaXgpO1xuICAgIGNvbnN0IGNsZWFuRGlyID0gZGlyZWN0b3J5LnJlcGxhY2UoL1xcLyskLywgJycpOyAvLyBSZW1vdmVyIC8gZmluYWxcbiAgICByZXR1cm4gYCR7Y2xlYW5EaXJ9LyR7ZmlsZU5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGV4dGVuc2nDs24gZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIC0gTm9tYnJlIGRlbCBhcmNoaXZvXG4gICAqIEByZXR1cm5zIEV4dGVuc2nDs24gKHNpbiBlbCBwdW50bylcbiAgICovXG4gIGdldEV4dGVuc2lvbihmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IGZpbGVuYW1lLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0cy5wb3AoKSEudG9Mb3dlckNhc2UoKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW5hIGltYWdlbiBiYXPDoW5kb3NlIGVuIHN1IGV4dGVuc2nDs24uXG4gICAqL1xuICBpc0ltYWdlKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEV4dGVuc2lvbihmaWxlbmFtZSk7XG4gICAgcmV0dXJuIFsnanBnJywgJ2pwZWcnLCAncG5nJywgJ2dpZicsICd3ZWJwJywgJ3N2ZycsICdibXAnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW4gZG9jdW1lbnRvLlxuICAgKi9cbiAgaXNEb2N1bWVudChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXh0ID0gdGhpcy5nZXRFeHRlbnNpb24oZmlsZW5hbWUpO1xuICAgIHJldHVybiBbJ3BkZicsICdkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICd0eHQnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVTRVIgQVZBVEFSIEhFTFBFUlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIENvbnN0cnV5ZSBsYSBVUkwgZGUgYXZhdGFyIGRlIHVuIHVzdWFyaW8uXG4gICAqXG4gICAqIExvcyBhdmF0YXJlcyBzZSBhbG1hY2VuYW4gZW4gcGF0aHMgcHJlZGVjaWJsZXM6IGB1c2Vycy97dXNlcklkfS9hdmF0YXIuanBnYFxuICAgKiBFc3RvIHBlcm1pdGUgcXVlIGN1YWxxdWllciBhcHAgcHVlZGEgbW9zdHJhciBhdmF0YXJlcyBzaW4gcGVkaXIgbGEgVVJMIGFsIGJhY2tlbmQsXG4gICAqIHNvbG8gbmVjZXNpdGEgZWwgdXNlcklkLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcklkIC0gSUQgZGVsIHVzdWFyaW8gKFVMSUQpXG4gICAqIEBwYXJhbSB0eXBlIC0gJ2F2YXRhcicgcGFyYSBpbWFnZW4gY29tcGxldGEsICd0aHVtYicgcGFyYSB0aHVtYm5haWxcbiAgICogQHJldHVybnMgVVJMIGRpcmVjdGEgZGUgRmlyZWJhc2UgU3RvcmFnZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIE1vc3RyYXIgYXZhdGFyIGRlIGN1YWxxdWllciB1c3VhcmlvXG4gICAqIGNvbnN0IGF2YXRhclVybCA9IHN0b3JhZ2UuZ2V0VXNlckF2YXRhclVybCgnMDFBQkNELi4uJyk7XG4gICAqIGNvbnN0IHRodW1iVXJsID0gc3RvcmFnZS5nZXRVc2VyQXZhdGFyVXJsKCcwMUFCQ0QuLi4nLCAndGh1bWInKTtcbiAgICpcbiAgICogLy8gQ29uIGNhY2hlLWJ1c3RpbmdcbiAgICogY29uc3QgZnJlc2hVcmwgPSBzdG9yYWdlLmdldFVzZXJBdmF0YXJVcmwodXNlcklkKSArIGAmdD0ke0RhdGUubm93KCl9YDtcbiAgICogYGBgXG4gICAqL1xuICBnZXRVc2VyQXZhdGFyVXJsKHVzZXJJZDogc3RyaW5nLCB0eXBlOiAnYXZhdGFyJyB8ICd0aHVtYicgPSAnYXZhdGFyJyk6IHN0cmluZyB7XG4gICAgY29uc3QgYnVja2V0ID0gdGhpcy5jb25maWc/LmZpcmViYXNlPy5zdG9yYWdlQnVja2V0IHx8ICdteXZhbHRlY2gtZGV2LmZpcmViYXNlc3RvcmFnZS5hcHAnO1xuICAgIGNvbnN0IHBhdGggPSBgdXNlcnMvJHt1c2VySWR9LyR7dHlwZX0uanBnYDtcbiAgICByZXR1cm4gYGh0dHBzOi8vZmlyZWJhc2VzdG9yYWdlLmdvb2dsZWFwaXMuY29tL3YwL2IvJHtidWNrZXR9L28vJHtlbmNvZGVVUklDb21wb25lbnQocGF0aCl9P2FsdD1tZWRpYWA7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTcOJVE9ET1MgUFJJVkFET1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE1hcGVhIGVsIGVzdGFkbyBkZSBsYSB0YXJlYSBkZSB1cGxvYWRcbiAgICovXG4gIHByaXZhdGUgbWFwVGFza1N0YXRlKHN0YXRlOiBzdHJpbmcpOiBVcGxvYWRTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSAncnVubmluZyc6XG4gICAgICAgIHJldHVybiAncnVubmluZyc7XG4gICAgICBjYXNlICdwYXVzZWQnOlxuICAgICAgICByZXR1cm4gJ3BhdXNlZCc7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgcmV0dXJuICdzdWNjZXNzJztcbiAgICAgIGNhc2UgJ2NhbmNlbGVkJzpcbiAgICAgICAgcmV0dXJuICdjYW5jZWxlZCc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdydW5uaW5nJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmllcnRlIGVycm9yZXMgZGUgU3RvcmFnZSBhIG1lbnNhamVzIGVuIGVzcGHDsW9sXG4gICAqL1xuICBwcml2YXRlIGdldEVycm9yTWVzc2FnZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSAoZXJyb3IgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGU7XG5cbiAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICBjYXNlICdzdG9yYWdlL29iamVjdC1ub3QtZm91bmQnOlxuICAgICAgICAgIHJldHVybiAnRWwgYXJjaGl2byBubyBleGlzdGUnO1xuICAgICAgICBjYXNlICdzdG9yYWdlL3VuYXV0aG9yaXplZCc6XG4gICAgICAgICAgcmV0dXJuICdObyB0aWVuZXMgcGVybWlzbyBwYXJhIGFjY2VkZXIgYSBlc3RlIGFyY2hpdm8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2NhbmNlbGVkJzpcbiAgICAgICAgICByZXR1cm4gJ0xhIG9wZXJhY2nDs24gZnVlIGNhbmNlbGFkYSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvcXVvdGEtZXhjZWVkZWQnOlxuICAgICAgICAgIHJldHVybiAnU2UgaGEgZXhjZWRpZG8gbGEgY3VvdGEgZGUgYWxtYWNlbmFtaWVudG8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtY2hlY2tzdW0nOlxuICAgICAgICAgIHJldHVybiAnRWwgYXJjaGl2byBlc3TDoSBjb3JydXB0byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvcmV0cnktbGltaXQtZXhjZWVkZWQnOlxuICAgICAgICAgIHJldHVybiAnRXJyb3IgZGUgY29uZXhpw7NuLiBJbnRlbnRhIGRlIG51ZXZvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9pbnZhbGlkLXVybCc6XG4gICAgICAgICAgcmV0dXJuICdVUkwgZGUgYXJjaGl2byBpbnbDoWxpZGEnO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtYXJndW1lbnQnOlxuICAgICAgICAgIHJldHVybiAnQXJndW1lbnRvIGludsOhbGlkbyc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2UgfHwgJ0Vycm9yIGRlIGFsbWFjZW5hbWllbnRvIGRlc2Nvbm9jaWRvJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gJ0Vycm9yIGRlIGFsbWFjZW5hbWllbnRvIGRlc2Nvbm9jaWRvJztcbiAgfVxufVxuIl19
|
|
652
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCw4RUFBOEU7QUFDOUUsMkRBQTJEO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLE9BQU8sRUFDUCxHQUFHLEVBRUgsb0JBQW9CLEdBR3JCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFVbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQUV4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFJekIsWUFBb0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUg1QixXQUFNLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRXhDOzs7Ozs7O09BT0c7SUFDSyxpQkFBaUIsQ0FBQyxJQUFZLEVBQUUsVUFBVSxHQUFHLEtBQUs7UUFDeEQsSUFBSSxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuRCxPQUFPLEdBQUcsSUFBSSxD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QixDQUFDO2dCQUNuQyxLQUFLLDBCQUEwQjtvQkFDN0IsT0FBTyxvQkFBb0IsQ0FBQztnQkFDOUI7b0JBQ0UsT0FBTyxLQUFLLENBQUMsT0FBTyxJQUFJLHFDQUFxQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxxQ0FBcUMsQ0FBQztJQUMvQyxDQUFDOytHQS9wQlUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdG9yYWdlIFNlcnZpY2VcbiAqXG4gKiBTZXJ2aWNpbyBwYXJhIG9wZXJhY2lvbmVzIGRlIEZpcmViYXNlIFN0b3JhZ2UuXG4gKiBTb3BvcnRhIHVwbG9hZCBjb24gdHJhY2tpbmcgZGUgcHJvZ3Jlc28sIGRvd25sb2FkIHkgZ2VzdGnDs24gZGUgYXJjaGl2b3MuXG4gKi9cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBnZXRBdXRoOiBzb2xvIHBhcmEgZWwgZmFsbGJhY2sgUkVTVCBkZSB1cGxvYWRBbmRHZXRVcmwg4oCUIGVsIGlkVG9rZW4gY29uIHF1ZVxuLy8gc2UgZmlybWEgZWwgcmVpbnRlbnRvIGN1YW5kbyBlbCBjYW5hbCBYSFIgZGVsIFNESyBmYWxsYS5cbmltcG9ydCB7IGdldEF1dGggfSBmcm9tICdmaXJlYmFzZS9hdXRoJztcbmltcG9ydCB7XG4gIGRlbGV0ZU9iamVjdCxcbiAgZ2V0RG93bmxvYWRVUkwsXG4gIGdldE1ldGFkYXRhLFxuICBsaXN0QWxsLFxuICByZWYsXG4gIFN0b3JhZ2UsXG4gIHVwbG9hZEJ5dGVzUmVzdW1hYmxlLFxuICBVcGxvYWRNZXRhZGF0YSxcbiAgVXBsb2FkVGFza1NuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtcbiAgSW1hZ2VVcGxvYWRPcHRpb25zLFxuICBJbWFnZVVwbG9hZFJlc3VsdCxcbiAgU3RvcmFnZUxpc3RSZXN1bHQsXG4gIFN0b3JhZ2VNZXRhZGF0YSxcbiAgVXBsb2FkUHJvZ3Jlc3MsXG4gIFVwbG9hZFJlc3VsdCxcbiAgVXBsb2FkU3RhdGUsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgSU1BR0VfREVGQVVMVFMsIEltYWdlU2VydmljZSB9IGZyb20gJy4uL2ltYWdlJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIEZpcmViYXNlIFN0b3JhZ2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCB7XG4gKiAgIHByaXZhdGUgc3RvcmFnZSA9IGluamVjdChTdG9yYWdlU2VydmljZSk7XG4gKlxuICogICB1cGxvYWRQcm9ncmVzcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICogICBkb3dubG9hZFVybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAqXG4gKiAgIGFzeW5jIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCkge1xuICogICAgIGNvbnN0IGZpbGUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZpbGVzPy5bMF07XG4gKiAgICAgaWYgKCFmaWxlKSByZXR1cm47XG4gKlxuICogICAgIC8vIFVwbG9hZCBjb24gcHJvZ3Jlc29cbiAqICAgICB0aGlzLnN0b3JhZ2UudXBsb2FkKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWAsIGZpbGUpLnN1YnNjcmliZSh7XG4gKiAgICAgICBuZXh0OiAocHJvZ3Jlc3MpID0+IHRoaXMudXBsb2FkUHJvZ3Jlc3Muc2V0KHByb2dyZXNzLnBlcmNlbnRhZ2UpLFxuICogICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAqICAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldERvd25sb2FkVXJsKGB1cGxvYWRzLyR7ZmlsZS5uYW1lfWApO1xuICogICAgICAgICB0aGlzLmRvd25sb2FkVXJsLnNldCh1cmwpO1xuICogICAgICAgfVxuICogICAgIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfRklSRUJBU0VfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGltYWdlU2VydmljZSA9IGluamVjdChJbWFnZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSkge31cblxuICAvKipcbiAgICogUHJlZmlqYSBlbCBwYXRoIGRlIHN0b3JhZ2UgY29uIGVsIGFwcElkIHNpIGVzdMOhIGNvbmZpZ3VyYWRvLlxuICAgKiBTaSBubyBoYXkgYXBwSWQgbyBza2lwUHJlZml4IGVzIHRydWUsIHJldG9ybmEgZWwgcGF0aCBzaW4gbW9kaWZpY2FyLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgb3JpZ2luYWxcbiAgICogQHBhcmFtIHNraXBQcmVmaXggLSBTaSBlcyB0cnVlLCBubyBhcGxpY2EgZWwgcHJlZml4ICjDunRpbCBwYXJhIHBhdGhzIGNvbXBhcnRpZG9zIGNvbW8gYXZhdGFyZXMpXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBwcmVmaXhTdG9yYWdlUGF0aChwYXRoOiBzdHJpbmcsIHNraXBQcmVmaXggPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgaWYgKHNraXBQcmVmaXggfHwgIXRoaXMuY29uZmlnPy5hcHBJZCkgcmV0dXJuIHBhdGg7XG4gICAgcmV0dXJuIGAke3RoaXMuY29uZmlnLmFwcElkfS8ke3BhdGh9YDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVUExPQURcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFN1YmUgdW4gYXJjaGl2byBjb24gdHJhY2tpbmcgZGUgcHJvZ3Jlc28uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlIGRvbmRlIGd1YXJkYXIgZWwgYXJjaGl2b1xuICAgKiBAcGFyYW0gZmlsZSAtIEFyY2hpdm8gYSBzdWJpciAoRmlsZSBvIEJsb2IpXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsIChjb250ZW50VHlwZSwgY3VzdG9tTWV0YWRhdGEpXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgcXVlIGVtaXRlIGVsIHByb2dyZXNvIHkgY29tcGxldGEgY3VhbmRvIHRlcm1pbmFcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBVcGxvYWQgYsOhc2ljb1xuICAgKiBzdG9yYWdlLnVwbG9hZCgnaW1hZ2VzL3Bob3RvLmpwZycsIGZpbGUpLnN1YnNjcmliZSh7XG4gICAqICAgbmV4dDogKHByb2dyZXNzKSA9PiBjb25zb2xlLmxvZyhgJHtwcm9ncmVzcy5wZXJjZW50YWdlfSVgKSxcbiAgICogICBjb21wbGV0ZTogKCkgPT4gY29uc29sZS5sb2coJ1VwbG9hZCBjb21wbGV0YWRvJylcbiAgICogfSk7XG4gICAqXG4gICAqIC8vIENvbiBtZXRhZGF0YVxuICAgKiBzdG9yYWdlLnVwbG9hZCgnZG9jcy9yZXBvcnQucGRmJywgZmlsZSwge1xuICAgKiAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vcGRmJyxcbiAgICogICBjdXN0b21NZXRhZGF0YTogeyB1cGxvYWRlZEJ5OiAndXNlcjEyMycgfVxuICAgKiB9KS5zdWJzY3JpYmUoLi4uKTtcbiAgICogYGBgXG4gICAqL1xuICB1cGxvYWQocGF0aDogc3RyaW5nLCBmaWxlOiBGaWxlIHwgQmxvYiwgbWV0YWRhdGE/OiBTdG9yYWdlTWV0YWRhdGEpOiBPYnNlcnZhYmxlPFVwbG9hZFByb2dyZXNzPiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoLCBtZXRhZGF0YT8uc2tpcFByZWZpeCk7XG4gICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgY29uc3QgdXBsb2FkTWV0YWRhdGE6IFVwbG9hZE1ldGFkYXRhID0ge1xuICAgICAgY29udGVudFR5cGU6IG1ldGFkYXRhPy5jb250ZW50VHlwZSB8fCAoZmlsZSBpbnN0YW5jZW9mIEZpbGUgPyBmaWxlLnR5cGUgOiB1bmRlZmluZWQpLFxuICAgICAgY3VzdG9tTWV0YWRhdGE6IG1ldGFkYXRhPy5jdXN0b21NZXRhZGF0YSxcbiAgICAgIC8vIERlZmF1bHQgYWdyZXNpdm86IGdldERvd25sb2FkVVJMIGRldnVlbHZlIFVSTHMgY29uIHRva2VuIMO6bmljbyBwb3JcbiAgICAgIC8vIHZlcnNpw7NuIGRlbCBvYmpldG8g4oaSIHJlLXN1YmlyIGVsIGFyY2hpdm8gY2FtYmlhIGVsIFVSTCAoY2FjaGUtYnVzdFxuICAgICAgLy8gbmF0dXJhbCkuIEVsIGNvbnN1bWlkb3IgcHVlZGUgb3ZlcnJpZGUgcGFzYW5kbyBjYWNoZUNvbnRyb2wgZXhwbMOtY2l0by5cbiAgICAgIGNhY2hlQ29udHJvbDogbWV0YWRhdGE/LmNhY2hlQ29udHJvbCA/PyAncHVibGljLCBtYXgtYWdlPTMxNTM2MDAwJyxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFzayA9IHVwbG9hZEJ5dGVzUmVzdW1hYmxlKHN0b3JhZ2VSZWYsIGZpbGUsIHVwbG9hZE1ldGFkYXRhKTtcbiAgICBjb25zdCBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVwbG9hZFByb2dyZXNzPih7XG4gICAgICBieXRlc1RyYW5zZmVycmVkOiAwLFxuICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgIHN0YXRlOiAncnVubmluZycsXG4gICAgfSk7XG5cbiAgICB0YXNrLm9uKFxuICAgICAgJ3N0YXRlX2NoYW5nZWQnLFxuICAgICAgKHNuYXBzaG90OiBVcGxvYWRUYXNrU25hcHNob3QpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IHNuYXBzaG90LmJ5dGVzVHJhbnNmZXJyZWQsXG4gICAgICAgICAgdG90YWxCeXRlczogc25hcHNob3QudG90YWxCeXRlcyxcbiAgICAgICAgICBwZXJjZW50YWdlOiBNYXRoLnJvdW5kKChzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkIC8gc25hcHNob3QudG90YWxCeXRlcykgKiAxMDApLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLm1hcFRhc2tTdGF0ZShzbmFwc2hvdC5zdGF0ZSksXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IDAsXG4gICAgICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgc3RhdGU6ICdlcnJvcicsXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9ncmVzcyQuZXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHByb2dyZXNzJC5uZXh0KHtcbiAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiBmaWxlLnNpemUsXG4gICAgICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgICBzdGF0ZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvZ3Jlc3MkLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBwcm9ncmVzcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogTGVlIGVsIGFyY2hpdm8gQ09NUExFVE8gYSBtZW1vcmlhIHkgZGV2dWVsdmUgdW4gQmxvYiBhdXRvY29udGVuaWRvLlxuICAgKlxuICAgKiBObyBlcyB1bmEgY29waWEgcG9yIGd1c3RvOiBlbiBTYWZhcmksIHVuIGBGaWxlYCBxdWUgbm8gZXN0w6EgcGxlbmFtZW50ZVxuICAgKiBtYXRlcmlhbGl6YWRvIGVuIGRpc2NvIOKAlCB0w61waWNvIGRlIGZvdG9zIGxsZWdhZGFzIGRlbCBpUGhvbmUgdsOtYVxuICAgKiBGb3Rvcy9pQ2xvdWQg4oCUIGhhY2UgZmFsbGFyIGxhIGxlY3R1cmEgZGVsIFNESyBkZSBTdG9yYWdlIGVuIGVsIGVudsOtbywgcG9yXG4gICAqIHN1cyBkb3MgY2FtaW5vcyAodXBsb2FkQnl0ZXMgeSB1cGxvYWRCeXRlc1Jlc3VtYWJsZSksIGNvbiB1blxuICAgKiBgc3RvcmFnZS91bmtub3duYCBvcGFjby4gRWwgbWlzbW8gU2FmYXJpIHN1YmUgc2luIHByb2JsZW1hIGFyY2hpdm9zIGxvY2FsZXNcbiAgICogZGUgb3RyYSBwcm9jZWRlbmNpYSwgYXPDrSBxdWUgZWwgYnVnIGFwYXJlY2UgXCJhIHZlY2VzXCIgeSBzaW4gbWVuc2FqZSDDunRpbC5cbiAgICogYGFycmF5QnVmZmVyKClgIGZ1ZXJ6YSBsYSBsZWN0dXJhIGNvbXBsZXRhOyBlbCBCbG9iIHJlc3VsdGFudGUgeWEgbm9cbiAgICogZGVwZW5kZSBkZWwgYmFja2luZyBmaWxlLiBDYXNvIHJlYWw6IGJpbmdvIGltYWdlLXBpY2tlciwgMjAyNi0wOC0wNS5cbiAgICpcbiAgICogVW4gQmxvYiAobm8tRmlsZSkgeWEgbmFjacOzIGVuIG1lbW9yaWEg4oCUIHNlIGRldnVlbHZlIHRhbCBjdWFsLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbWF0ZXJpYWxpemUoZmlsZTogRmlsZSB8IEJsb2IpOiBQcm9taXNlPEJsb2I+IHtcbiAgICBpZiAoIShmaWxlIGluc3RhbmNlb2YgRmlsZSkpIHJldHVybiBmaWxlO1xuICAgIGNvbnN0IGNvbnRlbmlkbyA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICByZXR1cm4gbmV3IEJsb2IoW2NvbnRlbmlkb10sIHsgdHlwZTogZmlsZS50eXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlaW50ZW50byBwb3IgUkVTVCBjdWFuZG8gZWwgU0RLIGZhbGxhIGxhIHN1YmlkYS5cbiAgICpcbiAgICogRWwgU0RLIHZhIHBvciBYTUxIdHRwUmVxdWVzdCB5IHN1IGRldGFsbGUgZGUgZXJyb3IgZXMgYHhoci5zdGF0dXNUZXh0YCwgcXVlXG4gICAqIHNvYnJlIEhUVFAvMiB2aWVuZSBzaWVtcHJlIHZhY8OtbyDigJQgdW4gZmFsbG8gZGVsIFNESyBlcyBpbGVnaWJsZSB5LCBlbiBsb3NcbiAgICogZW50b3Jub3MgZG9uZGUgYWxnbyBpbnRlcmZpZXJlIGNvbiBYSFIsIGFkZW3DoXMgZXZpdGFibGU6IGVzdGUgY2FtaW5vIHVzYVxuICAgKiBgZmV0Y2hgIGNvbiBgdXBsb2FkVHlwZT1tZWRpYWAgKGN1ZXJwbyBiaW5hcmlvIHNpbXBsZSkuIExhIFVSTCBzZSBhcm1hIGNvblxuICAgKiBlbCBkb3dubG9hZFRva2VuIGRlIGxhIHJlc3B1ZXN0YSBwb3JxdWUgZ2V0RG93bmxvYWRVUkwgdGFtYmnDqW4gdmEgcG9yIFhIUi5cbiAgICpcbiAgICogRGV2dWVsdmUgbnVsbCBzaSB0YW1wb2NvIHB1ZG8g4oCUIGVsIGNhbGxlciByZXBvcnRhIGVsIGVycm9yIG9yaWdpbmFsIGRlbCBTREsuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB1cGxvYWRWaWFSZXN0KFxuICAgIHByZWZpeGVkUGF0aDogc3RyaW5nLFxuICAgIGJsb2I6IEJsb2IsXG4gICAgY29udGVudFR5cGU6IHN0cmluZ1xuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdCB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBnZXRBdXRoKCkuY3VycmVudFVzZXI/LmdldElkVG9rZW4oKTtcbiAgICAgIGNvbnN0IGJ1Y2tldCA9IHRoaXMuc3RvcmFnZS5hcHAub3B0aW9ucy5zdG9yYWdlQnVja2V0O1xuICAgICAgaWYgKCF0b2tlbiB8fCAhYnVja2V0KSByZXR1cm4gbnVsbDtcblxuICAgICAgY29uc3Qgbm9tYnJlID0gZW5jb2RlVVJJQ29tcG9uZW50KHByZWZpeGVkUGF0aCk7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2goXG4gICAgICAgIGBodHRwczovL2ZpcmViYXNlc3RvcmFnZS5nb29nbGVhcGlzLmNvbS92MC9iLyR7YnVja2V0fS9vP25hbWU9JHtub21icmV9JnVwbG9hZFR5cGU9bWVkaWFgLFxuICAgICAgICB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgaGVhZGVyczogeyBBdXRob3JpemF0aW9uOiBgRmlyZWJhc2UgJHt0b2tlbn1gLCAnQ29udGVudC1UeXBlJzogY29udGVudFR5cGUgfSxcbiAgICAgICAgICBib2R5OiBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCksXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBpZiAoIXJlc3Aub2spIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW1N0b3JhZ2VdIFJFU1QgZmFsbGJhY2sgZmFpbGVkOicsIHtcbiAgICAgICAgICBwYXRoOiBwcmVmaXhlZFBhdGgsXG4gICAgICAgICAgc3RhdHVzOiByZXNwLnN0YXR1cyxcbiAgICAgICAgICBib2R5OiAoYXdhaXQgcmVzcC50ZXh0KCkpLnJlcGxhY2UoL1xccysvZywgJyAnKS5zbGljZSgwLCAzMDApLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBtZXRhID0gKGF3YWl0IHJlc3AuanNvbigpKSBhcyB7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgIHNpemU/OiBzdHJpbmc7XG4gICAgICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAgICAgICBkb3dubG9hZFRva2Vucz86IHN0cmluZztcbiAgICAgIH07XG4gICAgICAvLyBVbiAyMDAgbm8gcHJ1ZWJhIHF1ZSBsbGVnw7MgZWwgY29udGVuaWRvOiBTYWZhcmkgaGEgZW52aWFkbyBjdWVycG9zXG4gICAgICAvLyB2YWPDrW9zIHF1ZSBTdG9yYWdlIGFjZXB0YSBjb21vIG9iamV0b3MgZGUgMCBieXRlcy4gVmVyaWZpY2FyIHkgbGltcGlhci5cbiAgICAgIGlmIChOdW1iZXIobWV0YS5zaXplID8/IC0xKSAhPT0gYmxvYi5zaXplKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTdG9yYWdlXSBSRVNUIGZhbGxiYWNrIHNpemUgbWlzbWF0Y2g6Jywge1xuICAgICAgICAgIHBhdGg6IHByZWZpeGVkUGF0aCxcbiAgICAgICAgICBlc3BlcmFkbzogYmxvYi5zaXplLFxuICAgICAgICAgIGd1YXJkYWRvOiBtZXRhLnNpemUsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBmZXRjaChgaHR0cHM6Ly9maXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vdjAvYi8ke2J1Y2tldH0vby8ke25vbWJyZX1gLCB7XG4gICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgICBoZWFkZXJzOiB7IEF1dGhvcml6YXRpb246IGBGaXJlYmFzZSAke3Rva2VufWAgfSxcbiAgICAgICAgfSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBkdCA9IG1ldGEuZG93bmxvYWRUb2tlbnM/LnNwbGl0KCcsJylbMF07XG4gICAgICBjb25zdCBkb3dubG9hZFVybCA9XG4gICAgICAgIGBodHRwczovL2ZpcmViYXNlc3RvcmFnZS5nb29nbGVhcGlzLmNvbS92MC9iLyR7YnVja2V0fS9vLyR7bm9tYnJlfT9hbHQ9bWVkaWFgICtcbiAgICAgICAgKGR0ID8gYCZ0b2tlbj0ke2R0fWAgOiAnJyk7XG4gICAgICBjb25zb2xlLmxvZygnW1N0b3JhZ2VdIHVwbG9hZCBPSyAoUkVTVCBmYWxsYmFjayk6JywgeyBwYXRoOiBwcmVmaXhlZFBhdGggfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkb3dubG9hZFVybCxcbiAgICAgICAgZnVsbFBhdGg6IHByZWZpeGVkUGF0aCxcbiAgICAgICAgbmFtZTogcHJlZml4ZWRQYXRoLnNwbGl0KCcvJykucG9wKCkgfHwgcHJlZml4ZWRQYXRoLFxuICAgICAgICBzaXplOiBibG9iLnNpemUsXG4gICAgICAgIGNvbnRlbnRUeXBlOiBtZXRhLmNvbnRlbnRUeXBlIHx8IGNvbnRlbnRUeXBlLFxuICAgICAgICBtZXRhZGF0YToge30sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbU3RvcmFnZV0gUkVTVCBmYWxsYmFjayB0aHJldzonLCB7IHBhdGg6IHByZWZpeGVkUGF0aCwgZXJyb3IgfSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIHkgcmV0b3JuYSBsYSBVUkwgZGUgZGVzY2FyZ2EgYWwgY29tcGxldGFyLlxuICAgKlxuICAgKiBSb2J1c3RlY2lkbyBwYXJhIGVsIGNhc28gU2FmYXJpL2lQaG9uZSAodmVyIGBtYXRlcmlhbGl6ZWApOiBsZWUgZWwgYXJjaGl2b1xuICAgKiBhIG1lbW9yaWEgYW50ZXMgZGUgc3ViaXJsbywgdmVyaWZpY2EgcXVlIGVsIHRhbWHDsW8gZ3VhcmRhZG8gY29pbmNpZGEgeSwgc2lcbiAgICogZWwgU0RLIGZhbGxhLCByZWludGVudGEgdW5hIHZleiBwb3IgUkVTVCBhbnRlcyBkZSByZWNoYXphci5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGVuIFN0b3JhZ2VcbiAgICogQHBhcmFtIGZpbGUgLSBBcmNoaXZvIGEgc3ViaXJcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gTWV0YWRhdGEgb3BjaW9uYWxcbiAgICogQHJldHVybnMgUmVzdWx0YWRvIGRlbCB1cGxvYWQgY29uIFVSTCBkZSBkZXNjYXJnYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JhZ2UudXBsb2FkQW5kR2V0VXJsKCdhdmF0YXJzL3VzZXIxMjMuanBnJywgZmlsZSk7XG4gICAqIGNvbnNvbGUubG9nKCdVUkw6JywgcmVzdWx0LmRvd25sb2FkVXJsKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyB1cGxvYWRBbmRHZXRVcmwoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGZpbGU6IEZpbGUgfCBCbG9iLFxuICAgIG1ldGFkYXRhPzogU3RvcmFnZU1ldGFkYXRhXG4gICk6IFByb21pc2U8VXBsb2FkUmVzdWx0PiB7XG4gICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoLCBtZXRhZGF0YT8uc2tpcFByZWZpeCk7XG4gICAgY29uc29sZS5sb2coJ1tTdG9yYWdlXSB1cGxvYWRBbmRHZXRVcmwgc3RhcnQ6JywgeyBwYXRoOiBwcmVmaXhlZFBhdGgsIHNpemU6IGZpbGUuc2l6ZSB9KTtcblxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWV0YWRhdGE/LmNvbnRlbnRUeXBlIHx8IGZpbGUudHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgICBjb25zdCBibG9iID0gYXdhaXQgdGhpcy5tYXRlcmlhbGl6ZShmaWxlKTtcblxuICAgIGNvbnN0IHNka1Jlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlPFVwbG9hZFJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy51cGxvYWQocGF0aCwgYmxvYiwgeyAuLi5tZXRhZGF0YSwgY29udGVudFR5cGUgfSkuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkTWV0YWRhdGEgPSBhd2FpdCBnZXRNZXRhZGF0YShzdG9yYWdlUmVmKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbU3RvcmFnZV0gdXBsb2FkIE9LOicsIHtcbiAgICAgICAgICAgICAgcGF0aDogcHJlZml4ZWRQYXRoLFxuICAgICAgICAgICAgICB1cmw6IGRvd25sb2FkVXJsLnNsaWNlKDAsIDYwKSArICfigKYnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgZG93bmxvYWRVcmwsXG4gICAgICAgICAgICAgIGZ1bGxQYXRoOiBzdG9yZWRNZXRhZGF0YS5mdWxsUGF0aCxcbiAgICAgICAgICAgICAgbmFtZTogc3RvcmVkTWV0YWRhdGEubmFtZSxcbiAgICAgICAgICAgICAgc2l6ZTogc3RvcmVkTWV0YWRhdGEuc2l6ZSxcbiAgICAgICAgICAgICAgY29udGVudFR5cGU6IHN0b3JlZE1ldGFkYXRhLmNvbnRlbnRUeXBlIHx8ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLFxuICAgICAgICAgICAgICBtZXRhZGF0YTogc3RvcmVkTWV0YWRhdGEuY3VzdG9tTWV0YWRhdGEgfHwge30sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1N0b3JhZ2VdIGdldERvd25sb2FkVVJML21ldGFkYXRhIGZhaWxlZDonLCB7XG4gICAgICAgICAgICAgIHBhdGg6IHByZWZpeGVkUGF0aCxcbiAgICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbU3RvcmFnZV0gdXBsb2FkIGZhaWxlZDonLCB7IHBhdGg6IHByZWZpeGVkUGF0aCwgZXJyb3IgfSk7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pLmNhdGNoKGFzeW5jIG9yaWdpbmFsRXJyb3IgPT4ge1xuICAgICAgY29uc3QgcmVzY2F0YWRvID0gYXdhaXQgdGhpcy51cGxvYWRWaWFSZXN0KHByZWZpeGVkUGF0aCwgYmxvYiwgY29udGVudFR5cGUpO1xuICAgICAgaWYgKHJlc2NhdGFkbykgcmV0dXJuIHJlc2NhdGFkbztcbiAgICAgIHRocm93IG9yaWdpbmFsRXJyb3I7XG4gICAgfSk7XG5cbiAgICAvLyBWZXJpZmljYWNpw7NuIGRlIGNvbnRlbmlkbyB0YW1iacOpbiBlbiBlbCBjYW1pbm8gU0RLOiB1biBvYmpldG8gZGUgMCBieXRlc1xuICAgIC8vIGNvbiBVUkwgdsOhbGlkYSBlcyBwZW9yIHF1ZSB1biBlcnJvciDigJQgbGEgaW1hZ2VuIFwic3ViZVwiIHkgbnVuY2EgY2FyZ2EuXG4gICAgaWYgKHNka1Jlc3VsdC5zaXplICE9PSBibG9iLnNpemUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tTdG9yYWdlXSBzaXplIG1pc21hdGNoIHRyYXMgc3ViaXI6Jywge1xuICAgICAgICBwYXRoOiBwcmVmaXhlZFBhdGgsXG4gICAgICAgIGVzcGVyYWRvOiBibG9iLnNpemUsXG4gICAgICAgIGd1YXJkYWRvOiBzZGtSZXN1bHQuc2l6ZSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgZGVsZXRlT2JqZWN0KHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCkpLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VsIGFyY2hpdm8gbm8gc2Ugc3ViacOzIGNvbXBsZXRvLiBJbnTDqW50YWxvIGRlIG51ZXZvLicpO1xuICAgIH1cbiAgICByZXR1cm4gc2RrUmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc2EgeSBzdWJlIHVuYSBpbWFnZW4uXG4gICAqXG4gICAqIEEgZGlmZXJlbmNpYSBkZSBgdXBsb2FkQW5kR2V0VXJsYCwgZXN0ZSBtw6l0b2RvIGVzIGVzcGVjw61maWNvIHBhcmEgaW3DoWdlbmVzOlxuICAgKiBjb21wcmltZSBwb3IgZGVmZWN0byBjb24gYEltYWdlU2VydmljZWAgeSBwdWVkZSBnZW5lcmFyIHVuIHRodW1ibmFpbCBlbiB1blxuICAgKiBwYXRoIHNlcGFyYWRvLiBQYXJhIGFyY2hpdm9zIHF1ZSBkZWJlbiBjb25zZXJ2YXJzZSBieXRlIGEgYnl0ZSwgdXNhclxuICAgKiBgdXBsb2FkQW5kR2V0VXJsYC5cbiAgICovXG4gIGFzeW5jIHVwbG9hZEltYWdlQW5kR2V0VXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlIHwgQmxvYixcbiAgICBvcHRpb25zPzogSW1hZ2VVcGxvYWRPcHRpb25zXG4gICk6IFByb21pc2U8SW1hZ2VVcGxvYWRSZXN1bHQ+IHtcbiAgICBjb25zdCB7XG4gICAgICBjb21wcmVzcyA9IHRydWUsXG4gICAgICBjb21wcmVzc2lvbixcbiAgICAgIHRodW1ibmFpbFBhdGgsXG4gICAgICB0aHVtYm5haWxTaXplLFxuICAgICAgdGh1bWJuYWlsTWV0YWRhdGEsXG4gICAgICAuLi5tZXRhZGF0YVxuICAgIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gICAgY29uc3QgcHJvY2Vzc2VkID0gY29tcHJlc3NcbiAgICAgID8gYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UuY29tcHJlc3MoZmlsZSwgY29tcHJlc3Npb24pXG4gICAgICA6IHtcbiAgICAgICAgICBibG9iOiBhd2FpdCB0aGlzLm1hdGVyaWFsaXplKGZpbGUpLFxuICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgIGhlaWdodDogMCxcbiAgICAgICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICAgIH07XG5cbiAgICBjb25zdCBpbWFnZUNvbnRlbnRUeXBlID0gY29tcHJlc3NcbiAgICAgID8gKGNvbXByZXNzaW9uPy5taW1lVHlwZSA/PyBJTUFHRV9ERUZBVUxUUy5taW1lVHlwZSlcbiAgICAgIDogKG1ldGFkYXRhLmNvbnRlbnRUeXBlID8/IGZpbGUudHlwZSA/PyAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnVwbG9hZEFuZEdldFVybChwYXRoLCBwcm9jZXNzZWQuYmxvYiwge1xuICAgICAgLi4ubWV0YWRhdGEsXG4gICAgICBjb250ZW50VHlwZTogaW1hZ2VDb250ZW50VHlwZSxcbiAgICB9KTtcblxuICAgIGxldCB0aHVtYm5haWw6IFVwbG9hZFJlc3VsdCB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGh1bWJuYWlsUGF0aCkge1xuICAgICAgY29uc3QgdGh1bWIgPSBhd2FpdCB0aGlzLmltYWdlU2VydmljZS50aHVtYm5haWwocHJvY2Vzc2VkLmJsb2IsIHRodW1ibmFpbFNpemUpO1xuICAgICAgdGh1bWJuYWlsID0gYXdhaXQgdGhpcy51cGxvYWRBbmRHZXRVcmwodGh1bWJuYWlsUGF0aCwgdGh1bWIuYmxvYiwge1xuICAgICAgICAuLi5tZXRhZGF0YSxcbiAgICAgICAgLi4udGh1bWJuYWlsTWV0YWRhdGEsXG4gICAgICAgIGNvbnRlbnRUeXBlOiB0aHVtYm5haWxNZXRhZGF0YT8uY29udGVudFR5cGUgPz8gSU1BR0VfREVGQVVMVFMubWltZVR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzdWx0LFxuICAgICAgdGh1bWJuYWlsLFxuICAgICAgcHJvY2Vzc2VkOiB7XG4gICAgICAgIG9yaWdpbmFsU2l6ZTogZmlsZS5zaXplLFxuICAgICAgICBzaXplOiBwcm9jZXNzZWQuYmxvYi5zaXplLFxuICAgICAgICB3aWR0aDogcHJvY2Vzc2VkLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHByb2Nlc3NlZC5oZWlnaHQsXG4gICAgICAgIGNvbXByZXNzZWQ6IGNvbXByZXNzLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YmUgdW4gYXJjaGl2byBkZXNkZSB1bmEgRGF0YSBVUkwgKGJhc2U2NCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBkYXRhVXJsIC0gRGF0YSBVUkwgKGVqOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LC4uLicpXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRGVzZGUgY2FudmFzXG4gICAqIGNvbnN0IGRhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS51cGxvYWRGcm9tRGF0YVVybCgnaW1hZ2VzL2RyYXdpbmcucG5nJywgZGF0YVVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkRnJvbURhdGFVcmwoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGRhdGFVcmw6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIC8vIEV4dHJhZXIgY29udGVudCB0eXBlIHkgZGF0b3MgYmFzZTY0XG4gICAgY29uc3QgbWF0Y2hlcyA9IGRhdGFVcmwubWF0Y2goL15kYXRhOihbXjtdKyk7YmFzZTY0LCguKykkLyk7XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgVVJMIGludsOhbGlkYScpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWF0Y2hlc1sxXTtcbiAgICBjb25zdCBiYXNlNjREYXRhID0gbWF0Y2hlc1syXTtcblxuICAgIC8vIENvbnZlcnRpciBiYXNlNjQgYSBCbG9iXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkQW5kR2V0VXJsKHBhdGgsIGJsb2IsIHtcbiAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgLi4ubWV0YWRhdGEsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRE9XTkxPQURcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgVVJMIGRlIGRlc2NhcmdhIGRlIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBlbiBTdG9yYWdlXG4gICAqIEByZXR1cm5zIFVSTCBkZSBkZXNjYXJnYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHVybCA9IGF3YWl0IHN0b3JhZ2UuZ2V0RG93bmxvYWRVcmwoJ2ltYWdlcy9waG90by5qcGcnKTtcbiAgICogLy8gVXNhciBlbiA8aW1nIFtzcmNdPVwidXJsXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0RG93bmxvYWRVcmwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgcmV0dXJuIGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBtZXRhZGF0YSBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm9cbiAgICogQHJldHVybnMgTWV0YWRhdGEgZGVsIGFyY2hpdm9cbiAgICovXG4gIGFzeW5jIGdldE1ldGFkYXRhKHBhdGg6IHN0cmluZyk6IFByb21pc2U8U3RvcmFnZU1ldGFkYXRhICYgeyBzaXplOiBudW1iZXI7IG5hbWU6IHN0cmluZyB9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgZ2V0TWV0YWRhdGEoc3RvcmFnZVJlZik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50VHlwZTogbWV0YWRhdGEuY29udGVudFR5cGUsXG4gICAgICAgIGN1c3RvbU1ldGFkYXRhOiBtZXRhZGF0YS5jdXN0b21NZXRhZGF0YSxcbiAgICAgICAgY2FjaGVDb250cm9sOiBtZXRhZGF0YS5jYWNoZUNvbnRyb2wsXG4gICAgICAgIHNpemU6IG1ldGFkYXRhLnNpemUsXG4gICAgICAgIG5hbWU6IG1ldGFkYXRhLm5hbWUsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gREVMRVRFXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBhIGVsaW1pbmFyXG4gICAqIEBwYXJhbSBvcHRpb25zLnNraXBQcmVmaXggLSBTaSBlcyB0cnVlLCBubyBhcGxpY2EgZWwgcHJlZml4IGRlIGFwcElkIChwYXJhXG4gICAqICAgYm9ycmFyIHVuIGFyY2hpdm8gc3ViaWRvIGNvbiBgdXBsb2FkQW5kR2V0VXJsKHBhdGgsIGZpbGUsIHsgc2tpcFByZWZpeDpcbiAgICogICB0cnVlIH0pYCBoYXkgcXVlIHBhc2FyIGVsIG1pc21vIGZsYWcsIG8gZWwgcGF0aCBxdWVkYSBtYWwgYXJtYWRvIHkgZWxcbiAgICogICBkZWxldGUgZmFsbGEgY29udHJhIHVuIG9iamV0byBxdWUgbm8gZXhpc3RlKS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBzdG9yYWdlLmRlbGV0ZSgnaW1hZ2VzL29sZC1waG90by5qcGcnKTtcbiAgICogYXdhaXQgc3RvcmFnZS5kZWxldGUoJ2FwcHMvbWVyb3R6L29yZ3MveC9wdWJsaWMvaW1hZ2VzL3BhcnRzL3kvei5wbmcnLCB7IHNraXBQcmVmaXg6IHRydWUgfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKHBhdGg6IHN0cmluZywgb3B0aW9ucz86IHsgc2tpcFByZWZpeD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgsIG9wdGlvbnM/LnNraXBQcmVmaXgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBhd2FpdCBkZWxldGVPYmplY3Qoc3RvcmFnZVJlZik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIG3Dumx0aXBsZXMgYXJjaGl2b3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRocyAtIEFycmF5IGRlIHJ1dGFzIGEgZWxpbWluYXJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBzdG9yYWdlLmRlbGV0ZU11bHRpcGxlKFtcbiAgICogICAnaW1hZ2VzL3Bob3RvMS5qcGcnLFxuICAgKiAgICdpbWFnZXMvcGhvdG8yLmpwZydcbiAgICogXSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTXVsdGlwbGUocGF0aHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocGF0aHMubWFwKHBhdGggPT4gdGhpcy5kZWxldGUocGF0aCkpKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMSVNUXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBMaXN0YSBhcmNoaXZvcyBlbiB1biBkaXJlY3RvcmlvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGRpcmVjdG9yaW9cbiAgICogQHJldHVybnMgTGlzdGEgZGUgcnV0YXMgZGUgYXJjaGl2b3NcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLmxpc3QoJ2ltYWdlcy8nKTtcbiAgICogY29uc29sZS5sb2cocmVzdWx0Lml0ZW1zKTsgLy8gWydpbWFnZXMvcGhvdG8xLmpwZycsICdpbWFnZXMvcGhvdG8yLmpwZyddXG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgbGlzdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFN0b3JhZ2VMaXN0UmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxpc3RBbGwoc3RvcmFnZVJlZik7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiByZXN1bHQuaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5mdWxsUGF0aCksXG4gICAgICAgIG5leHRQYWdlVG9rZW46IHVuZGVmaW5lZCwgLy8gbGlzdEFsbCBubyBzb3BvcnRhIHBhZ2luYWNpw7NuXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVRJTElEQURFU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2VuZXJhIHVuIG5vbWJyZSBkZSBhcmNoaXZvIMO6bmljbyBjb24gdGltZXN0YW1wLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxOYW1lIC0gTm9tYnJlIG9yaWdpbmFsIGRlbCBhcmNoaXZvXG4gICAqIEBwYXJhbSBwcmVmaXggLSBQcmVmaWpvIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIE5vbWJyZSDDum5pY29cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB1bmlxdWVOYW1lID0gc3RvcmFnZS5nZW5lcmF0ZUZpbGVOYW1lKCdwaG90by5qcGcnLCAndXNlcjEyMycpO1xuICAgKiAvLyA9PiAndXNlcjEyM18xNzAzMDkxMjM0NTY3X3Bob3RvLmpwZydcbiAgICogYGBgXG4gICAqL1xuICBnZW5lcmF0ZUZpbGVOYW1lKG9yaWdpbmFsTmFtZTogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2FuaXRpemVkTmFtZSA9IG9yaWdpbmFsTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOS4tXS9nLCAnXycpO1xuXG4gICAgaWYgKHByZWZpeCkge1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH1fJHt0aW1lc3RhbXB9XyR7c2FuaXRpemVkTmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGltZXN0YW1wfV8ke3Nhbml0aXplZE5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmEgdW5hIHJ1dGEgw7puaWNhIHBhcmEgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdG9yeSAtIERpcmVjdG9yaW8gYmFzZVxuICAgKiBAcGFyYW0gb3JpZ2luYWxOYW1lIC0gTm9tYnJlIG9yaWdpbmFsXG4gICAqIEBwYXJhbSBwcmVmaXggLSBQcmVmaWpvIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJ1dGEgY29tcGxldGEgw7puaWNhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcGF0aCA9IHN0b3JhZ2UuZ2VuZXJhdGVQYXRoKCd1cGxvYWRzJywgJ3Bob3RvLmpwZycsICd1c2VyMTIzJyk7XG4gICAqIC8vID0+ICd1cGxvYWRzL3VzZXIxMjNfMTcwMzA5MTIzNDU2N19waG90by5qcGcnXG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuZXJhdGVQYXRoKGRpcmVjdG9yeTogc3RyaW5nLCBvcmlnaW5hbE5hbWU6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZ2VuZXJhdGVGaWxlTmFtZShvcmlnaW5hbE5hbWUsIHByZWZpeCk7XG4gICAgY29uc3QgY2xlYW5EaXIgPSBkaXJlY3RvcnkucmVwbGFjZSgvXFwvKyQvLCAnJyk7IC8vIFJlbW92ZXIgLyBmaW5hbFxuICAgIHJldHVybiBgJHtjbGVhbkRpcn0vJHtmaWxlTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgZXh0ZW5zacOzbiBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZW5hbWUgLSBOb21icmUgZGVsIGFyY2hpdm9cbiAgICogQHJldHVybnMgRXh0ZW5zacOzbiAoc2luIGVsIHB1bnRvKVxuICAgKi9cbiAgZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcnRzID0gZmlsZW5hbWUuc3BsaXQoJy4nKTtcbiAgICByZXR1cm4gcGFydHMubGVuZ3RoID4gMSA/IHBhcnRzLnBvcCgpIS50b0xvd2VyQ2FzZSgpIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gYXJjaGl2byBlcyB1bmEgaW1hZ2VuIGJhc8OhbmRvc2UgZW4gc3UgZXh0ZW5zacOzbi5cbiAgICovXG4gIGlzSW1hZ2UoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dCA9IHRoaXMuZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lKTtcbiAgICByZXR1cm4gWydqcGcnLCAnanBlZycsICdwbmcnLCAnZ2lmJywgJ3dlYnAnLCAnc3ZnJywgJ2JtcCddLmluY2x1ZGVzKGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gYXJjaGl2byBlcyB1biBkb2N1bWVudG8uXG4gICAqL1xuICBpc0RvY3VtZW50KGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEV4dGVuc2lvbihmaWxlbmFtZSk7XG4gICAgcmV0dXJuIFsncGRmJywgJ2RvYycsICdkb2N4JywgJ3hscycsICd4bHN4JywgJ3BwdCcsICdwcHR4JywgJ3R4dCddLmluY2x1ZGVzKGV4dCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gVVNFUiBBVkFUQVIgSEVMUEVSU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ29uc3RydXllIGxhIFVSTCBkZSBhdmF0YXIgZGUgdW4gdXN1YXJpby5cbiAgICpcbiAgICogTG9zIGF2YXRhcmVzIHNlIGFsbWFjZW5hbiBlbiBwYXRocyBwcmVkZWNpYmxlczogYHVzZXJzL3t1c2VySWR9L2F2YXRhci5qcGdgXG4gICAqIEVzdG8gcGVybWl0ZSBxdWUgY3VhbHF1aWVyIGFwcCBwdWVkYSBtb3N0cmFyIGF2YXRhcmVzIHNpbiBwZWRpciBsYSBVUkwgYWwgYmFja2VuZCxcbiAgICogc29sbyBuZWNlc2l0YSBlbCB1c2VySWQuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VySWQgLSBJRCBkZWwgdXN1YXJpbyAoVUxJRClcbiAgICogQHBhcmFtIHR5cGUgLSAnYXZhdGFyJyBwYXJhIGltYWdlbiBjb21wbGV0YSwgJ3RodW1iJyBwYXJhIHRodW1ibmFpbFxuICAgKiBAcmV0dXJucyBVUkwgZGlyZWN0YSBkZSBGaXJlYmFzZSBTdG9yYWdlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gTW9zdHJhciBhdmF0YXIgZGUgY3VhbHF1aWVyIHVzdWFyaW9cbiAgICogY29uc3QgYXZhdGFyVXJsID0gc3RvcmFnZS5nZXRVc2VyQXZhdGFyVXJsKCcwMUFCQ0QuLi4nKTtcbiAgICogY29uc3QgdGh1bWJVcmwgPSBzdG9yYWdlLmdldFVzZXJBdmF0YXJVcmwoJzAxQUJDRC4uLicsICd0aHVtYicpO1xuICAgKlxuICAgKiAvLyBDb24gY2FjaGUtYnVzdGluZ1xuICAgKiBjb25zdCBmcmVzaFVybCA9IHN0b3JhZ2UuZ2V0VXNlckF2YXRhclVybCh1c2VySWQpICsgYCZ0PSR7RGF0ZS5ub3coKX1gO1xuICAgKiBgYGBcbiAgICovXG4gIGdldFVzZXJBdmF0YXJVcmwodXNlcklkOiBzdHJpbmcsIHR5cGU6ICdhdmF0YXInIHwgJ3RodW1iJyA9ICdhdmF0YXInKTogc3RyaW5nIHtcbiAgICBjb25zdCBidWNrZXQgPSB0aGlzLmNvbmZpZz8uZmlyZWJhc2U/LnN0b3JhZ2VCdWNrZXQgfHwgJ215dmFsdGVjaC1kZXYuZmlyZWJhc2VzdG9yYWdlLmFwcCc7XG4gICAgY29uc3QgcGF0aCA9IGB1c2Vycy8ke3VzZXJJZH0vJHt0eXBlfS5qcGdgO1xuICAgIHJldHVybiBgaHR0cHM6Ly9maXJlYmFzZXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vdjAvYi8ke2J1Y2tldH0vby8ke2VuY29kZVVSSUNvbXBvbmVudChwYXRoKX0/YWx0PW1lZGlhYDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQUklWQURPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTWFwZWEgZWwgZXN0YWRvIGRlIGxhIHRhcmVhIGRlIHVwbG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBUYXNrU3RhdGUoc3RhdGU6IHN0cmluZyk6IFVwbG9hZFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlICdydW5uaW5nJzpcbiAgICAgICAgcmV0dXJuICdydW5uaW5nJztcbiAgICAgIGNhc2UgJ3BhdXNlZCc6XG4gICAgICAgIHJldHVybiAncGF1c2VkJztcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgY2FzZSAnY2FuY2VsZWQnOlxuICAgICAgICByZXR1cm4gJ2NhbmNlbGVkJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3J1bm5pbmcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252aWVydGUgZXJyb3JlcyBkZSBTdG9yYWdlIGEgbWVuc2FqZXMgZW4gZXNwYcOxb2xcbiAgICovXG4gIHByaXZhdGUgZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgY29kZSA9IChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZTtcblxuICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2Uvb2JqZWN0LW5vdC1mb3VuZCc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIG5vIGV4aXN0ZSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvdW5hdXRob3JpemVkJzpcbiAgICAgICAgICByZXR1cm4gJ05vIHRpZW5lcyBwZXJtaXNvIHBhcmEgYWNjZWRlciBhIGVzdGUgYXJjaGl2byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvY2FuY2VsZWQnOlxuICAgICAgICAgIHJldHVybiAnTGEgb3BlcmFjacOzbiBmdWUgY2FuY2VsYWRhJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9xdW90YS1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdTZSBoYSBleGNlZGlkbyBsYSBjdW90YSBkZSBhbG1hY2VuYW1pZW50byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1jaGVja3N1bSc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIGVzdMOhIGNvcnJ1cHRvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9yZXRyeS1saW1pdC1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdFcnJvciBkZSBjb25leGnDs24uIEludGVudGEgZGUgbnVldm8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtdXJsJzpcbiAgICAgICAgICByZXR1cm4gJ1VSTCBkZSBhcmNoaXZvIGludsOhbGlkYSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1hcmd1bWVudCc6XG4gICAgICAgICAgcmV0dXJuICdBcmd1bWVudG8gaW52w6FsaWRvJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXJyb3IubWVzc2FnZSB8fCAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICB9XG59XG4iXX0=
|