ngx-mask 13.1.1 → 13.1.3

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.
@@ -1,7 +1,7 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- export const config = new InjectionToken('config');
3
- export const NEW_CONFIG = new InjectionToken('NEW_CONFIG');
4
- export const INITIAL_CONFIG = new InjectionToken('INITIAL_CONFIG');
2
+ export const config = new InjectionToken('ngx-mask config');
3
+ export const NEW_CONFIG = new InjectionToken('new ngx-mask config');
4
+ export const INITIAL_CONFIG = new InjectionToken('initial ngx-mask config');
5
5
  export const initialConfig = {
6
6
  suffix: '',
7
7
  prefix: '',
@@ -20,6 +20,7 @@ export const initialConfig = {
20
20
  // eslint-disable-next-line @typescript-eslint/quotes
21
21
  specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '"', "'"],
22
22
  leadZeroDateTime: false,
23
+ triggerOnMaskChange: false,
23
24
  patterns: {
24
25
  '0': {
25
26
  pattern: new RegExp('\\d'),
@@ -70,4 +71,4 @@ export const withoutValidation = [
70
71
  'd0',
71
72
  'M0',
72
73
  ];
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE2Qi9DLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBNEIsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUE0QixJQUFJLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUNwRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQTRCLElBQUksY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFNUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFZO0lBQ3JDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsTUFBTSxFQUFFLEVBQUU7SUFDVixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDekIsZUFBZSxFQUFFLEtBQUs7SUFDdEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsb0JBQW9CLEVBQUUsR0FBRztJQUN6QixxQkFBcUIsRUFBRSxJQUFJO0lBQzNCLFdBQVcsRUFBRSxTQUFTO0lBQ3RCLG1CQUFtQixFQUFFLEVBQUU7SUFDdkIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixVQUFVLEVBQUUsSUFBSTtJQUNoQixxREFBcUQ7SUFDckQsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3pGLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsUUFBUSxFQUFFO1FBQ1QsR0FBRyxFQUFFO1lBQ0osT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELEdBQUcsRUFBRTtZQUNKLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsUUFBUSxFQUFFLElBQUk7U0FDZDtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTSxFQUFFLEdBQUc7U0FDWDtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDbEM7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQy9CO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO0tBQ0Q7Q0FDRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBYTtJQUMxQyxTQUFTO0lBQ1QsSUFBSTtJQUNKLElBQUk7SUFDSixJQUFJO0lBQ0osV0FBVztJQUNYLFlBQVk7SUFDWixPQUFPO0lBQ1AsSUFBSTtJQUNKLElBQUk7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnIHtcblx0c3VmZml4OiBzdHJpbmc7XG5cdHByZWZpeDogc3RyaW5nO1xuXHR0aG91c2FuZFNlcGFyYXRvcjogc3RyaW5nO1xuXHRkZWNpbWFsTWFya2VyOiAnLicgfCAnLCcgfCBbJy4nLCAnLCddO1xuXHRjbGVhcklmTm90TWF0Y2g6IGJvb2xlYW47XG5cdHNob3dUZW1wbGF0ZTogYm9vbGVhbjtcblx0c2hvd01hc2tUeXBlZDogYm9vbGVhbjtcblx0cGxhY2VIb2xkZXJDaGFyYWN0ZXI6IHN0cmluZztcblx0c2hvd25NYXNrRXhwcmVzc2lvbjogc3RyaW5nO1xuXHRkcm9wU3BlY2lhbENoYXJhY3RlcnM6IGJvb2xlYW4gfCBzdHJpbmdbXTtcblx0c3BlY2lhbENoYXJhY3RlcnM6IHN0cmluZ1tdO1xuXHRoaWRkZW5JbnB1dDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblx0dmFsaWRhdGlvbjogYm9vbGVhbjtcblx0c2VwYXJhdG9yTGltaXQ6IHN0cmluZztcblx0YWxsb3dOZWdhdGl2ZU51bWJlcnM6IGJvb2xlYW47XG5cdGxlYWRaZXJvRGF0ZVRpbWU6IGJvb2xlYW47XG5cdHBhdHRlcm5zOiB7XG5cdFx0W2NoYXJhY3Rlcjogc3RyaW5nXToge1xuXHRcdFx0cGF0dGVybjogUmVnRXhwO1xuXHRcdFx0b3B0aW9uYWw/OiBib29sZWFuO1xuXHRcdFx0c3ltYm9sPzogc3RyaW5nO1xuXHRcdH07XG5cdH07XG59XG5cbmV4cG9ydCB0eXBlIG9wdGlvbnNDb25maWcgPSBQYXJ0aWFsPElDb25maWc+O1xuZXhwb3J0IGNvbnN0IGNvbmZpZzogSW5qZWN0aW9uVG9rZW48SUNvbmZpZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ2NvbmZpZycpO1xuZXhwb3J0IGNvbnN0IE5FV19DT05GSUc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCdORVdfQ09ORklHJyk7XG5leHBvcnQgY29uc3QgSU5JVElBTF9DT05GSUc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCdJTklUSUFMX0NPTkZJRycpO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbENvbmZpZzogSUNvbmZpZyA9IHtcblx0c3VmZml4OiAnJyxcblx0cHJlZml4OiAnJyxcblx0dGhvdXNhbmRTZXBhcmF0b3I6ICcgJyxcblx0ZGVjaW1hbE1hcmtlcjogWycuJywgJywnXSxcblx0Y2xlYXJJZk5vdE1hdGNoOiBmYWxzZSxcblx0c2hvd1RlbXBsYXRlOiBmYWxzZSxcblx0c2hvd01hc2tUeXBlZDogZmFsc2UsXG5cdHBsYWNlSG9sZGVyQ2hhcmFjdGVyOiAnXycsXG5cdGRyb3BTcGVjaWFsQ2hhcmFjdGVyczogdHJ1ZSxcblx0aGlkZGVuSW5wdXQ6IHVuZGVmaW5lZCxcblx0c2hvd25NYXNrRXhwcmVzc2lvbjogJycsXG5cdHNlcGFyYXRvckxpbWl0OiAnJyxcblx0YWxsb3dOZWdhdGl2ZU51bWJlcnM6IGZhbHNlLFxuXHR2YWxpZGF0aW9uOiB0cnVlLFxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3F1b3Rlc1xuXHRzcGVjaWFsQ2hhcmFjdGVyczogWyctJywgJy8nLCAnKCcsICcpJywgJy4nLCAnOicsICcgJywgJysnLCAnLCcsICdAJywgJ1snLCAnXScsICdcIicsIFwiJ1wiXSxcblx0bGVhZFplcm9EYXRlVGltZTogZmFsc2UsXG5cdHBhdHRlcm5zOiB7XG5cdFx0JzAnOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0JzknOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdFx0b3B0aW9uYWw6IHRydWUsXG5cdFx0fSxcblx0XHRYOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdFx0c3ltYm9sOiAnKicsXG5cdFx0fSxcblx0XHRBOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdbYS16QS1aMC05XScpLFxuXHRcdH0sXG5cdFx0Uzoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnW2EtekEtWl0nKSxcblx0XHR9LFxuXHRcdGQ6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRtOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0TToge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHRcdEg6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRoOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0czoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHR9LFxufTtcblxuZXhwb3J0IGNvbnN0IHRpbWVNYXNrczogc3RyaW5nW10gPSBbJ0hoOm0wOnMwJywgJ0hoOm0wJywgJ20wOnMwJ107XG5cbmV4cG9ydCBjb25zdCB3aXRob3V0VmFsaWRhdGlvbjogc3RyaW5nW10gPSBbXG5cdCdwZXJjZW50Jyxcblx0J0hoJyxcblx0J3MwJyxcblx0J20wJyxcblx0J3NlcGFyYXRvcicsXG5cdCdkMC9NMC8wMDAwJyxcblx0J2QwL00wJyxcblx0J2QwJyxcblx0J00wJyxcbl07XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hc2stbGliL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUE4Qi9DLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBNEIsSUFBSSxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQTRCLElBQUksY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDN0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUE0QixJQUFJLGNBQWMsQ0FDeEUseUJBQXlCLENBQ3pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQVk7SUFDckMsTUFBTSxFQUFFLEVBQUU7SUFDVixNQUFNLEVBQUUsRUFBRTtJQUNWLGlCQUFpQixFQUFFLEdBQUc7SUFDdEIsYUFBYSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUN6QixlQUFlLEVBQUUsS0FBSztJQUN0QixZQUFZLEVBQUUsS0FBSztJQUNuQixhQUFhLEVBQUUsS0FBSztJQUNwQixvQkFBb0IsRUFBRSxHQUFHO0lBQ3pCLHFCQUFxQixFQUFFLElBQUk7SUFDM0IsV0FBVyxFQUFFLFNBQVM7SUFDdEIsbUJBQW1CLEVBQUUsRUFBRTtJQUN2QixjQUFjLEVBQUUsRUFBRTtJQUNsQixvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLHFEQUFxRDtJQUNyRCxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDekYsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixtQkFBbUIsRUFBRSxLQUFLO0lBQzFCLFFBQVEsRUFBRTtRQUNULEdBQUcsRUFBRTtZQUNKLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxHQUFHLEVBQUU7WUFDSixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzFCLFFBQVEsRUFBRSxJQUFJO1NBQ2Q7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzFCLE1BQU0sRUFBRSxHQUFHO1NBQ1g7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDO1NBQ2xDO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQztTQUMvQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtRQUNELENBQUMsRUFBRTtZQUNGLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxDQUFDLEVBQUU7WUFDRixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsQ0FBQyxFQUFFO1lBQ0YsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztTQUMxQjtLQUNEO0NBQ0QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBYSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbEUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWE7SUFDMUMsU0FBUztJQUNULElBQUk7SUFDSixJQUFJO0lBQ0osSUFBSTtJQUNKLFdBQVc7SUFDWCxZQUFZO0lBQ1osT0FBTztJQUNQLElBQUk7SUFDSixJQUFJO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZyB7XG5cdHN1ZmZpeDogc3RyaW5nO1xuXHRwcmVmaXg6IHN0cmluZztcblx0dGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZztcblx0ZGVjaW1hbE1hcmtlcjogJy4nIHwgJywnIHwgWycuJywgJywnXTtcblx0Y2xlYXJJZk5vdE1hdGNoOiBib29sZWFuO1xuXHRzaG93VGVtcGxhdGU6IGJvb2xlYW47XG5cdHNob3dNYXNrVHlwZWQ6IGJvb2xlYW47XG5cdHBsYWNlSG9sZGVyQ2hhcmFjdGVyOiBzdHJpbmc7XG5cdHNob3duTWFza0V4cHJlc3Npb246IHN0cmluZztcblx0ZHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiBib29sZWFuIHwgc3RyaW5nW107XG5cdHNwZWNpYWxDaGFyYWN0ZXJzOiBzdHJpbmdbXTtcblx0aGlkZGVuSW5wdXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdHZhbGlkYXRpb246IGJvb2xlYW47XG5cdHNlcGFyYXRvckxpbWl0OiBzdHJpbmc7XG5cdGFsbG93TmVnYXRpdmVOdW1iZXJzOiBib29sZWFuO1xuXHRsZWFkWmVyb0RhdGVUaW1lOiBib29sZWFuO1xuXHR0cmlnZ2VyT25NYXNrQ2hhbmdlOiBib29sZWFuO1xuXHRwYXR0ZXJuczoge1xuXHRcdFtjaGFyYWN0ZXI6IHN0cmluZ106IHtcblx0XHRcdHBhdHRlcm46IFJlZ0V4cDtcblx0XHRcdG9wdGlvbmFsPzogYm9vbGVhbjtcblx0XHRcdHN5bWJvbD86IHN0cmluZztcblx0XHR9O1xuXHR9O1xufVxuXG5leHBvcnQgdHlwZSBvcHRpb25zQ29uZmlnID0gUGFydGlhbDxJQ29uZmlnPjtcbmV4cG9ydCBjb25zdCBjb25maWc6IEluamVjdGlvblRva2VuPElDb25maWc+ID0gbmV3IEluamVjdGlvblRva2VuKCduZ3gtbWFzayBjb25maWcnKTtcbmV4cG9ydCBjb25zdCBORVdfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbignbmV3IG5neC1tYXNrIGNvbmZpZycpO1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfQ09ORklHOiBJbmplY3Rpb25Ub2tlbjxJQ29uZmlnPiA9IG5ldyBJbmplY3Rpb25Ub2tlbihcblx0J2luaXRpYWwgbmd4LW1hc2sgY29uZmlnJyxcbik7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsQ29uZmlnOiBJQ29uZmlnID0ge1xuXHRzdWZmaXg6ICcnLFxuXHRwcmVmaXg6ICcnLFxuXHR0aG91c2FuZFNlcGFyYXRvcjogJyAnLFxuXHRkZWNpbWFsTWFya2VyOiBbJy4nLCAnLCddLFxuXHRjbGVhcklmTm90TWF0Y2g6IGZhbHNlLFxuXHRzaG93VGVtcGxhdGU6IGZhbHNlLFxuXHRzaG93TWFza1R5cGVkOiBmYWxzZSxcblx0cGxhY2VIb2xkZXJDaGFyYWN0ZXI6ICdfJyxcblx0ZHJvcFNwZWNpYWxDaGFyYWN0ZXJzOiB0cnVlLFxuXHRoaWRkZW5JbnB1dDogdW5kZWZpbmVkLFxuXHRzaG93bk1hc2tFeHByZXNzaW9uOiAnJyxcblx0c2VwYXJhdG9yTGltaXQ6ICcnLFxuXHRhbGxvd05lZ2F0aXZlTnVtYmVyczogZmFsc2UsXG5cdHZhbGlkYXRpb246IHRydWUsXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcXVvdGVzXG5cdHNwZWNpYWxDaGFyYWN0ZXJzOiBbJy0nLCAnLycsICcoJywgJyknLCAnLicsICc6JywgJyAnLCAnKycsICcsJywgJ0AnLCAnWycsICddJywgJ1wiJywgXCInXCJdLFxuXHRsZWFkWmVyb0RhdGVUaW1lOiBmYWxzZSxcblx0dHJpZ2dlck9uTWFza0NoYW5nZTogZmFsc2UsXG5cdHBhdHRlcm5zOiB7XG5cdFx0JzAnOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0JzknOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdFx0b3B0aW9uYWw6IHRydWUsXG5cdFx0fSxcblx0XHRYOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdFx0c3ltYm9sOiAnKicsXG5cdFx0fSxcblx0XHRBOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdbYS16QS1aMC05XScpLFxuXHRcdH0sXG5cdFx0Uzoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnW2EtekEtWl0nKSxcblx0XHR9LFxuXHRcdGQ6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRtOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0TToge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHRcdEg6IHtcblx0XHRcdHBhdHRlcm46IG5ldyBSZWdFeHAoJ1xcXFxkJyksXG5cdFx0fSxcblx0XHRoOiB7XG5cdFx0XHRwYXR0ZXJuOiBuZXcgUmVnRXhwKCdcXFxcZCcpLFxuXHRcdH0sXG5cdFx0czoge1xuXHRcdFx0cGF0dGVybjogbmV3IFJlZ0V4cCgnXFxcXGQnKSxcblx0XHR9LFxuXHR9LFxufTtcblxuZXhwb3J0IGNvbnN0IHRpbWVNYXNrczogc3RyaW5nW10gPSBbJ0hoOm0wOnMwJywgJ0hoOm0wJywgJ20wOnMwJ107XG5cbmV4cG9ydCBjb25zdCB3aXRob3V0VmFsaWRhdGlvbjogc3RyaW5nW10gPSBbXG5cdCdwZXJjZW50Jyxcblx0J0hoJyxcblx0J3MwJyxcblx0J20wJyxcblx0J3NlcGFyYXRvcicsXG5cdCdkMC9NMC8wMDAwJyxcblx0J2QwL00wJyxcblx0J2QwJyxcblx0J00wJyxcbl07XG4iXX0=
@@ -486,9 +486,9 @@ export class MaskApplierService {
486
486
  : value === comparedValue;
487
487
  }
488
488
  }
489
- MaskApplierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskApplierService, deps: [{ token: config }], target: i0.ɵɵFactoryTarget.Injectable });
490
- MaskApplierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskApplierService });
491
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskApplierService, decorators: [{
489
+ MaskApplierService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskApplierService, deps: [{ token: config }], target: i0.ɵɵFactoryTarget.Injectable });
490
+ MaskApplierService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskApplierService });
491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskApplierService, decorators: [{
492
492
  type: Injectable
493
493
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
494
494
  type: Inject,
@@ -29,6 +29,7 @@ export class MaskDirective {
29
29
  this.separatorLimit = null;
30
30
  this.allowNegativeNumbers = null;
31
31
  this.leadZeroDateTime = null;
32
+ this.triggerOnMaskChange = null;
32
33
  this._maskValue = '';
33
34
  this._position = null;
34
35
  this._maskExpressionArray = [];
@@ -37,7 +38,7 @@ export class MaskDirective {
37
38
  this.onTouch = () => { };
38
39
  }
39
40
  ngOnChanges(changes) {
40
- const { maskExpression, specialCharacters, patterns, prefix, suffix, thousandSeparator, decimalMarker, dropSpecialCharacters, hiddenInput, showMaskTyped, placeHolderCharacter, shownMaskExpression, showTemplate, clearIfNotMatch, validation, separatorLimit, allowNegativeNumbers, leadZeroDateTime, } = changes;
41
+ const { maskExpression, specialCharacters, patterns, prefix, suffix, thousandSeparator, decimalMarker, dropSpecialCharacters, hiddenInput, showMaskTyped, placeHolderCharacter, shownMaskExpression, showTemplate, clearIfNotMatch, validation, separatorLimit, allowNegativeNumbers, leadZeroDateTime, triggerOnMaskChange, } = changes;
41
42
  if (maskExpression) {
42
43
  if (maskExpression.currentValue !== maskExpression.previousValue &&
43
44
  !maskExpression.firstChange) {
@@ -119,6 +120,9 @@ export class MaskDirective {
119
120
  if (leadZeroDateTime) {
120
121
  this._maskService.leadZeroDateTime = leadZeroDateTime.currentValue;
121
122
  }
123
+ if (triggerOnMaskChange) {
124
+ this._maskService.triggerOnMaskChange = triggerOnMaskChange.currentValue;
125
+ }
122
126
  this._applyMask();
123
127
  }
124
128
  // eslint-disable-next-line complexity
@@ -289,6 +293,7 @@ export class MaskDirective {
289
293
  el.selectionStart = this._maskService.prefix.length;
290
294
  return;
291
295
  }
296
+ console.log(el.selectionEnd, this._getActualInputLength());
292
297
  /** select only inserted text */
293
298
  if (el.selectionEnd > this._getActualInputLength()) {
294
299
  el.selectionEnd = this._getActualInputLength();
@@ -482,8 +487,8 @@ export class MaskDirective {
482
487
  }
483
488
  }
484
489
  }
485
- MaskDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskDirective, deps: [{ token: DOCUMENT }, { token: i1.MaskService }, { token: config }], target: i0.ɵɵFactoryTarget.Directive });
486
- MaskDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MaskDirective, selector: "input[mask], textarea[mask]", inputs: { maskExpression: ["mask", "maskExpression"], specialCharacters: "specialCharacters", patterns: "patterns", prefix: "prefix", suffix: "suffix", thousandSeparator: "thousandSeparator", decimalMarker: "decimalMarker", dropSpecialCharacters: "dropSpecialCharacters", hiddenInput: "hiddenInput", showMaskTyped: "showMaskTyped", placeHolderCharacter: "placeHolderCharacter", shownMaskExpression: "shownMaskExpression", showTemplate: "showTemplate", clearIfNotMatch: "clearIfNotMatch", validation: "validation", separatorLimit: "separatorLimit", allowNegativeNumbers: "allowNegativeNumbers", leadZeroDateTime: "leadZeroDateTime" }, host: { listeners: { "paste": "onPaste()", "ngModelChange": "onModelChange($event)", "input": "onInput($event)", "blur": "onBlur()", "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, providers: [
490
+ MaskDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskDirective, deps: [{ token: DOCUMENT }, { token: i1.MaskService }, { token: config }], target: i0.ɵɵFactoryTarget.Directive });
491
+ MaskDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.0", type: MaskDirective, selector: "input[mask], textarea[mask]", inputs: { maskExpression: ["mask", "maskExpression"], specialCharacters: "specialCharacters", patterns: "patterns", prefix: "prefix", suffix: "suffix", thousandSeparator: "thousandSeparator", decimalMarker: "decimalMarker", dropSpecialCharacters: "dropSpecialCharacters", hiddenInput: "hiddenInput", showMaskTyped: "showMaskTyped", placeHolderCharacter: "placeHolderCharacter", shownMaskExpression: "shownMaskExpression", showTemplate: "showTemplate", clearIfNotMatch: "clearIfNotMatch", validation: "validation", separatorLimit: "separatorLimit", allowNegativeNumbers: "allowNegativeNumbers", leadZeroDateTime: "leadZeroDateTime", triggerOnMaskChange: "triggerOnMaskChange" }, host: { listeners: { "paste": "onPaste()", "ngModelChange": "onModelChange($event)", "input": "onInput($event)", "blur": "onBlur()", "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, providers: [
487
492
  {
488
493
  provide: NG_VALUE_ACCESSOR,
489
494
  useExisting: forwardRef(() => MaskDirective),
@@ -495,8 +500,8 @@ MaskDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version:
495
500
  multi: true,
496
501
  },
497
502
  MaskService,
498
- ], usesOnChanges: true, ngImport: i0 });
499
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskDirective, decorators: [{
503
+ ], exportAs: ["mask", "ngxMask"], usesOnChanges: true, ngImport: i0 });
504
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskDirective, decorators: [{
500
505
  type: Directive,
501
506
  args: [{
502
507
  selector: 'input[mask], textarea[mask]',
@@ -513,6 +518,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImpor
513
518
  },
514
519
  MaskService,
515
520
  ],
521
+ exportAs: 'mask,ngxMask',
516
522
  }]
517
523
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
518
524
  type: Inject,
@@ -557,6 +563,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImpor
557
563
  type: Input
558
564
  }], leadZeroDateTime: [{
559
565
  type: Input
566
+ }], triggerOnMaskChange: [{
567
+ type: Input
560
568
  }], onPaste: [{
561
569
  type: HostListener,
562
570
  args: ['paste']
@@ -576,4 +584,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImpor
576
584
  type: HostListener,
577
585
  args: ['keydown', ['$event']]
578
586
  }] } });
579
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2xpYi9tYXNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR04sYUFBYSxFQUNiLGlCQUFpQixHQUdqQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxHQUdMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczQyxPQUFPLEVBQUUsTUFBTSxFQUFXLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQWtCN0MsTUFBTSxPQUFPLGFBQWE7SUFzRHpCLFlBQzJCLFFBQWEsRUFDaEMsWUFBeUIsRUFDTixPQUFnQjtRQUZoQixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ04sWUFBTyxHQUFQLE9BQU8sQ0FBUztRQXhEM0MsMkRBQTJEO1FBQ3JDLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRWxDLHNCQUFpQixHQUFpQyxFQUFFLENBQUM7UUFFckQsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFFbkMsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFFL0IsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFFL0Isc0JBQWlCLEdBQWlDLEdBQUcsQ0FBQztRQUV0RCxrQkFBYSxHQUE2QixHQUFHLENBQUM7UUFFOUMsMEJBQXFCLEdBQTRDLElBQUksQ0FBQztRQUV0RSxnQkFBVyxHQUFrQyxJQUFJLENBQUM7UUFFbEQsa0JBQWEsR0FBb0MsSUFBSSxDQUFDO1FBRXRELHlCQUFvQixHQUEyQyxJQUFJLENB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cUJBQXFCO3NCQUFwQyxLQUFLO2dCQUVVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFFVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBRVUsbUJBQW1CO3NCQUFsQyxLQUFLO2dCQUVVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRVUsZUFBZTtzQkFBOUIsS0FBSztnQkFFVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBRVUsb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUVVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkF1TkMsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBTWQsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2xDLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBOEMxQixNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTTtnQkFTYixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlFMUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuXHRGb3JtQ29udHJvbCxcblx0TkdfVkFMSURBVE9SUyxcblx0TkdfVkFMVUVfQUNDRVNTT1IsXG5cdFZhbGlkYXRpb25FcnJvcnMsXG5cdFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcblx0RGlyZWN0aXZlLFxuXHRmb3J3YXJkUmVmLFxuXHRIb3N0TGlzdGVuZXIsXG5cdEluamVjdCxcblx0SW5wdXQsXG5cdE9uQ2hhbmdlcyxcblx0U2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEN1c3RvbUtleWJvYXJkRXZlbnQgfSBmcm9tICcuL2N1c3RvbS1rZXlib2FyZC1ldmVudCc7XG5pbXBvcnQgeyBjb25maWcsIElDb25maWcsIHRpbWVNYXNrcywgd2l0aG91dFZhbGlkYXRpb24gfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBNYXNrU2VydmljZSB9IGZyb20gJy4vbWFzay5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnaW5wdXRbbWFza10sIHRleHRhcmVhW21hc2tdJyxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXNrRGlyZWN0aXZlKSxcblx0XHRcdG11bHRpOiB0cnVlLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMSURBVE9SUyxcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hc2tEaXJlY3RpdmUpLFxuXHRcdFx0bXVsdGk6IHRydWUsXG5cdFx0fSxcblx0XHRNYXNrU2VydmljZSxcblx0XSxcbn0pXG5leHBvcnQgY2xhc3MgTWFza0RpcmVjdGl2ZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIFZhbGlkYXRvciB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG5cdEBJbnB1dCgnbWFzaycpIHB1YmxpYyBtYXNrRXhwcmVzc2lvbjogc3RyaW5nID0gJyc7XG5cblx0QElucHV0KCkgcHVibGljIHNwZWNpYWxDaGFyYWN0ZXJzOiBJQ29uZmlnWydzcGVjaWFsQ2hhcmFjdGVycyddID0gW107XG5cblx0QElucHV0KCkgcHVibGljIHBhdHRlcm5zOiBJQ29uZmlnWydwYXR0ZXJucyddID0ge307XG5cblx0QElucHV0KCkgcHVibGljIHByZWZpeDogSUNvbmZpZ1sncHJlZml4J10gPSAnJztcblxuXHRASW5wdXQoKSBwdWJsaWMgc3VmZml4OiBJQ29uZmlnWydzdWZmaXgnXSA9ICcnO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyB0aG91c2FuZFNlcGFyYXRvcjogSUNvbmZpZ1sndGhvdXNhbmRTZXBhcmF0b3InXSA9ICcgJztcblxuXHRASW5wdXQoKSBwdWJsaWMgZGVjaW1hbE1hcmtlcjogSUNvbmZpZ1snZGVjaW1hbE1hcmtlciddID0gJy4nO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBkcm9wU3BlY2lhbENoYXJhY3RlcnM6IElDb25maWdbJ2Ryb3BTcGVjaWFsQ2hhcmFjdGVycyddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIGhpZGRlbklucHV0OiBJQ29uZmlnWydoaWRkZW5JbnB1dCddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIHNob3dNYXNrVHlwZWQ6IElDb25maWdbJ3Nob3dNYXNrVHlwZWQnXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBwbGFjZUhvbGRlckNoYXJhY3RlcjogSUNvbmZpZ1sncGxhY2VIb2xkZXJDaGFyYWN0ZXInXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBzaG93bk1hc2tFeHByZXNzaW9uOiBJQ29uZmlnWydzaG93bk1hc2tFeHByZXNzaW9uJ10gfCBudWxsID0gbnVsbDtcblxuXHRASW5wdXQoKSBwdWJsaWMgc2hvd1RlbXBsYXRlOiBJQ29uZmlnWydzaG93VGVtcGxhdGUnXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBjbGVhcklmTm90TWF0Y2g6IElDb25maWdbJ2NsZWFySWZOb3RNYXRjaCddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIHZhbGlkYXRpb246IElDb25maWdbJ3ZhbGlkYXRpb24nXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBzZXBhcmF0b3JMaW1pdDogSUNvbmZpZ1snc2VwYXJhdG9yTGltaXQnXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBhbGxvd05lZ2F0aXZlTnVtYmVyczogSUNvbmZpZ1snYWxsb3dOZWdhdGl2ZU51bWJlcnMnXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBsZWFkWmVyb0RhdGVUaW1lOiBJQ29uZmlnWydsZWFkWmVyb0RhdGVUaW1lJ10gfCBudWxsID0gbnVsbDtcblxuXHRwcml2YXRlIF9tYXNrVmFsdWU6IHN0cmluZyA9ICcnO1xuXG5cdHByaXZhdGUgX2lucHV0VmFsdWUhOiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBfcG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG5cdHByaXZhdGUgX3N0YXJ0ITogbnVtYmVyO1xuXG5cdHByaXZhdGUgX2VuZCE6IG51bWJlcjtcblxuXHRwcml2YXRlIF9jb2RlITogc3RyaW5nO1xuXG5cdHByaXZhdGUgX21hc2tFeHByZXNzaW9uQXJyYXk6IHN0cmluZ1tdID0gW107XG5cblx0cHJpdmF0ZSBfanVzdFBhc3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG5cdFx0cHVibGljIF9tYXNrU2VydmljZTogTWFza1NlcnZpY2UsXG5cdFx0QEluamVjdChjb25maWcpIHByb3RlY3RlZCBfY29uZmlnOiBJQ29uZmlnLFxuXHQpIHt9XG5cblx0cHVibGljIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cblx0cHVibGljIG9uVG91Y2ggPSAoKSA9PiB7fTtcblxuXHRwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXHRcdGNvbnN0IHtcblx0XHRcdG1hc2tFeHByZXNzaW9uLFxuXHRcdFx0c3BlY2lhbENoYXJhY3RlcnMsXG5cdFx0XHRwYXR0ZXJucyxcblx0XHRcdHByZWZpeCxcblx0XHRcdHN1ZmZpeCxcblx0XHRcdHRob3VzYW5kU2VwYXJhdG9yLFxuXHRcdFx0ZGVjaW1hbE1hcmtlcixcblx0XHRcdGRyb3BTcGVjaWFsQ2hhcmFjdGVycyxcblx0XHRcdGhpZGRlbklucHV0LFxuXHRcdFx0c2hvd01hc2tUeXBlZCxcblx0XHRcdHBsYWNlSG9sZGVyQ2hhcmFjdGVyLFxuXHRcdFx0c2hvd25NYXNrRXhwcmVzc2lvbixcblx0XHRcdHNob3dUZW1wbGF0ZSxcblx0XHRcdGNsZWFySWZOb3RNYXRjaCxcblx0XHRcdHZhbGlkYXRpb24sXG5cdFx0XHRzZXBhcmF0b3JMaW1pdCxcblx0XHRcdGFsbG93TmVnYXRpdmVOdW1iZXJzLFxuXHRcdFx0bGVhZFplcm9EYXRlVGltZSxcblx0XHR9ID0gY2hhbmdlcztcblx0XHRpZiAobWFza0V4cHJlc3Npb24pIHtcblx0XHRcdGlmIChcblx0XHRcdFx0bWFza0V4cHJlc3Npb24uY3VycmVudFZhbHVlICE9PSBtYXNrRXhwcmVzc2lvbi5wcmV2aW91c1ZhbHVlICYmXG5cdFx0XHRcdCFtYXNrRXhwcmVzc2lvbi5maXJzdENoYW5nZVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tDaGFuZ2VkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChtYXNrRXhwcmVzc2lvbi5jdXJyZW50VmFsdWUgJiYgbWFza0V4cHJlc3Npb24uY3VycmVudFZhbHVlLnNwbGl0KCd8fCcpLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0dGhpcy5fbWFza0V4cHJlc3Npb25BcnJheSA9IG1hc2tFeHByZXNzaW9uLmN1cnJlbnRWYWx1ZVxuXHRcdFx0XHRcdC5zcGxpdCgnfHwnKVxuXHRcdFx0XHRcdC5zb3J0KChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGEubGVuZ3RoIC0gYi5sZW5ndGg7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuX21hc2tWYWx1ZSA9IHRoaXMuX21hc2tFeHByZXNzaW9uQXJyYXlbMF0hO1xuXHRcdFx0XHR0aGlzLm1hc2tFeHByZXNzaW9uID0gdGhpcy5fbWFza0V4cHJlc3Npb25BcnJheVswXSE7XG5cdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tFeHByZXNzaW9uID0gdGhpcy5fbWFza0V4cHJlc3Npb25BcnJheVswXSE7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5ID0gW107XG5cdFx0XHRcdHRoaXMuX21hc2tWYWx1ZSA9IG1hc2tFeHByZXNzaW9uLmN1cnJlbnRWYWx1ZSB8fCAnJztcblx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24gPSB0aGlzLl9tYXNrVmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzcGVjaWFsQ2hhcmFjdGVycykge1xuXHRcdFx0aWYgKCFzcGVjaWFsQ2hhcmFjdGVycy5jdXJyZW50VmFsdWUgfHwgIUFycmF5LmlzQXJyYXkoc3BlY2lhbENoYXJhY3RlcnMuY3VycmVudFZhbHVlKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrU3BlY2lhbENoYXJhY3RlcnMgPSBzcGVjaWFsQ2hhcmFjdGVycy5jdXJyZW50VmFsdWUgfHwgW107XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIE9ubHkgb3ZlcndyaXRlIHRoZSBtYXNrIGF2YWlsYWJsZSBwYXR0ZXJucyBpZiBhIHBhdHRlcm4gaGFzIGFjdHVhbGx5IGJlZW4gcGFzc2VkIGluXG5cdFx0aWYgKHBhdHRlcm5zICYmIHBhdHRlcm5zLmN1cnJlbnRWYWx1ZSkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UubWFza0F2YWlsYWJsZVBhdHRlcm5zID0gcGF0dGVybnMuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAocHJlZml4KSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5wcmVmaXggPSBwcmVmaXguY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoc3VmZml4KSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5zdWZmaXggPSBzdWZmaXguY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAodGhvdXNhbmRTZXBhcmF0b3IpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnRob3VzYW5kU2VwYXJhdG9yID0gdGhvdXNhbmRTZXBhcmF0b3IuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoZGVjaW1hbE1hcmtlcikge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuZGVjaW1hbE1hcmtlciA9IGRlY2ltYWxNYXJrZXIuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoZHJvcFNwZWNpYWxDaGFyYWN0ZXJzKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5kcm9wU3BlY2lhbENoYXJhY3RlcnMgPSBkcm9wU3BlY2lhbENoYXJhY3RlcnMuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoaGlkZGVuSW5wdXQpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLmhpZGRlbklucHV0ID0gaGlkZGVuSW5wdXQuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoc2hvd01hc2tUeXBlZCkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2Uuc2hvd01hc2tUeXBlZCA9IHNob3dNYXNrVHlwZWQuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAocGxhY2VIb2xkZXJDaGFyYWN0ZXIpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnBsYWNlSG9sZGVyQ2hhcmFjdGVyID0gcGxhY2VIb2xkZXJDaGFyYWN0ZXIuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoc2hvd25NYXNrRXhwcmVzc2lvbikge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2Uuc2hvd25NYXNrRXhwcmVzc2lvbiA9IHNob3duTWFza0V4cHJlc3Npb24uY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoc2hvd1RlbXBsYXRlKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5zaG93VGVtcGxhdGUgPSBzaG93VGVtcGxhdGUuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoY2xlYXJJZk5vdE1hdGNoKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5jbGVhcklmTm90TWF0Y2ggPSBjbGVhcklmTm90TWF0Y2guY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAodmFsaWRhdGlvbikge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UudmFsaWRhdGlvbiA9IHZhbGlkYXRpb24uY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoc2VwYXJhdG9yTGltaXQpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnNlcGFyYXRvckxpbWl0ID0gc2VwYXJhdG9yTGltaXQuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHRpZiAoYWxsb3dOZWdhdGl2ZU51bWJlcnMpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLmFsbG93TmVnYXRpdmVOdW1iZXJzID0gYWxsb3dOZWdhdGl2ZU51bWJlcnMuY3VycmVudFZhbHVlO1xuXHRcdFx0aWYgKHRoaXMuX21hc2tTZXJ2aWNlLmFsbG93TmVnYXRpdmVOdW1iZXJzKSB7XG5cdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tTcGVjaWFsQ2hhcmFjdGVycyA9IHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tTcGVjaWFsQ2hhcmFjdGVycy5maWx0ZXIoXG5cdFx0XHRcdFx0KGM6IHN0cmluZykgPT4gYyAhPT0gJy0nLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAobGVhZFplcm9EYXRlVGltZSkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UubGVhZFplcm9EYXRlVGltZSA9IGxlYWRaZXJvRGF0ZVRpbWUuY3VycmVudFZhbHVlO1xuXHRcdH1cblx0XHR0aGlzLl9hcHBseU1hc2soKTtcblx0fVxuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5cdHB1YmxpYyB2YWxpZGF0ZSh7IHZhbHVlIH06IEZvcm1Db250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuXHRcdGlmICghdGhpcy5fbWFza1NlcnZpY2UudmFsaWRhdGlvbiB8fCAhdGhpcy5fbWFza1ZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX21hc2tTZXJ2aWNlLmlwRXJyb3IpIHtcblx0XHRcdHJldHVybiB0aGlzLl9jcmVhdGVWYWxpZGF0aW9uRXJyb3IodmFsdWUpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fbWFza1NlcnZpY2UuY3BmQ25wakVycm9yKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlVmFsaWRhdGlvbkVycm9yKHZhbHVlKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX21hc2tWYWx1ZS5zdGFydHNXaXRoKCdzZXBhcmF0b3InKSkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGlmICh3aXRob3V0VmFsaWRhdGlvbi5pbmNsdWRlcyh0aGlzLl9tYXNrVmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX21hc2tTZXJ2aWNlLmNsZWFySWZOb3RNYXRjaCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGlmICh0aW1lTWFza3MuaW5jbHVkZXModGhpcy5fbWFza1ZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX3ZhbGlkYXRlVGltZSh2YWx1ZSk7XG5cdFx0fVxuXHRcdGlmICh2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+PSAxKSB7XG5cdFx0XHRsZXQgY291bnRlck9mT3B0ID0gMDtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tBdmFpbGFibGVQYXR0ZXJucykge1xuXHRcdFx0XHRpZiAodGhpcy5fbWFza1NlcnZpY2UubWFza0F2YWlsYWJsZVBhdHRlcm5zW2tleV0hLm9wdGlvbmFsKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKGtleSkgIT09IHRoaXMuX21hc2tWYWx1ZS5sYXN0SW5kZXhPZihrZXkpKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBvcHQ6IHN0cmluZyA9IHRoaXMuX21hc2tWYWx1ZVxuXHRcdFx0XHRcdFx0XHQuc3BsaXQoJycpXG5cdFx0XHRcdFx0XHRcdC5maWx0ZXIoKGk6IHN0cmluZykgPT4gaSA9PT0ga2V5KVxuXHRcdFx0XHRcdFx0XHQuam9pbignJyk7XG5cdFx0XHRcdFx0XHRjb3VudGVyT2ZPcHQgKz0gb3B0Lmxlbmd0aDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKGtleSkgIT09IC0xKSB7XG5cdFx0XHRcdFx0XHRjb3VudGVyT2ZPcHQrKztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0dGhpcy5fbWFza1ZhbHVlLmluZGV4T2Yoa2V5KSAhPT0gLTEgJiZcblx0XHRcdFx0XHRcdHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID49IHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKGtleSlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoY291bnRlck9mT3B0ID09PSB0aGlzLl9tYXNrVmFsdWUubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5fbWFza1ZhbHVlLmluZGV4T2YoJ3snKSA9PT0gMSAmJlxuXHRcdFx0XHR2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA9PT1cblx0XHRcdFx0XHR0aGlzLl9tYXNrVmFsdWUubGVuZ3RoICsgTnVtYmVyKHRoaXMuX21hc2tWYWx1ZS5zcGxpdCgneycpWzFdIS5zcGxpdCgnfScpWzBdKSAtIDRcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZignKicpID09PSAxIHx8IHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCc/JykgPT09IDEpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHQodGhpcy5fbWFza1ZhbHVlLmluZGV4T2YoJyonKSA+IDEgJiZcblx0XHRcdFx0XHR2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA8IHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCcqJykpIHx8XG5cdFx0XHRcdCh0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZignPycpID4gMSAmJlxuXHRcdFx0XHRcdHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoIDwgdGhpcy5fbWFza1ZhbHVlLmluZGV4T2YoJz8nKSkgfHxcblx0XHRcdFx0dGhpcy5fbWFza1ZhbHVlLmluZGV4T2YoJ3snKSA9PT0gMVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLl9jcmVhdGVWYWxpZGF0aW9uRXJyb3IodmFsdWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCcqJykgPT09IC0xIHx8IHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCc/JykgPT09IC0xKSB7XG5cdFx0XHRcdGNvbnN0IGxlbmd0aDogbnVtYmVyID0gdGhpcy5fbWFza1NlcnZpY2UuZHJvcFNwZWNpYWxDaGFyYWN0ZXJzXG5cdFx0XHRcdFx0PyB0aGlzLl9tYXNrVmFsdWUubGVuZ3RoIC1cblx0XHRcdFx0XHQgIHRoaXMuX21hc2tTZXJ2aWNlLmNoZWNrU3BlY2lhbENoYXJBbW91bnQodGhpcy5fbWFza1ZhbHVlKSAtXG5cdFx0XHRcdFx0ICBjb3VudGVyT2ZPcHRcblx0XHRcdFx0XHQ6IHRoaXMuX21hc2tWYWx1ZS5sZW5ndGggLSBjb3VudGVyT2ZPcHQ7XG5cdFx0XHRcdGlmICh2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA8IGxlbmd0aCkge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLl9jcmVhdGVWYWxpZGF0aW9uRXJyb3IodmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcigncGFzdGUnKVxuXHRwdWJsaWMgb25QYXN0ZSgpIHtcblx0XHR0aGlzLl9qdXN0UGFzdGVkID0gdHJ1ZTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ25nTW9kZWxDaGFuZ2UnLCBbJyRldmVudCddKVxuXHRwdWJsaWMgb25Nb2RlbENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0Ly8gb24gZm9ybSByZXNldCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgYWN0dWFsVmFsdWVcblx0XHRpZiAoIXZhbHVlICYmIHRoaXMuX21hc2tTZXJ2aWNlLmFjdHVhbFZhbHVlKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hY3R1YWxWYWx1ZSA9IHRoaXMuX21hc2tTZXJ2aWNlLmdldEFjdHVhbFZhbHVlKCcnKTtcblx0XHR9XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50J10pXG5cdHB1YmxpYyBvbklucHV0KGU6IEN1c3RvbUtleWJvYXJkRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBlbDogSFRNTElucHV0RWxlbWVudCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cdFx0dGhpcy5faW5wdXRWYWx1ZSA9IGVsLnZhbHVlO1xuXG5cdFx0dGhpcy5fc2V0TWFzaygpO1xuXG5cdFx0aWYgKCF0aGlzLl9tYXNrVmFsdWUpIHtcblx0XHRcdHRoaXMub25DaGFuZ2UoZWwudmFsdWUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBwb3NpdGlvbjogbnVtYmVyID1cblx0XHRcdGVsLnNlbGVjdGlvblN0YXJ0ID09PSAxXG5cdFx0XHRcdD8gKGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcikgKyB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXgubGVuZ3RoXG5cdFx0XHRcdDogKGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcik7XG5cdFx0bGV0IGNhcmV0U2hpZnQgPSAwO1xuXHRcdGxldCBiYWNrc3BhY2VTaGlmdCA9IGZhbHNlO1xuXHRcdHRoaXMuX21hc2tTZXJ2aWNlLmFwcGx5VmFsdWVDaGFuZ2VzKFxuXHRcdFx0cG9zaXRpb24sXG5cdFx0XHR0aGlzLl9qdXN0UGFzdGVkLFxuXHRcdFx0dGhpcy5fY29kZSA9PT0gJ0JhY2tzcGFjZScgfHwgdGhpcy5fY29kZSA9PT0gJ0RlbGV0ZScsXG5cdFx0XHQoc2hpZnQ6IG51bWJlciwgX2JhY2tzcGFjZVNoaWZ0OiBib29sZWFuKSA9PiB7XG5cdFx0XHRcdHRoaXMuX2p1c3RQYXN0ZWQgPSBmYWxzZTtcblx0XHRcdFx0Y2FyZXRTaGlmdCA9IHNoaWZ0O1xuXHRcdFx0XHRiYWNrc3BhY2VTaGlmdCA9IF9iYWNrc3BhY2VTaGlmdDtcblx0XHRcdH0sXG5cdFx0KTtcblx0XHQvLyBvbmx5IHNldCB0aGUgc2VsZWN0aW9uIGlmIHRoZSBlbGVtZW50IGlzIGFjdGl2ZVxuXHRcdGlmICh0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGVsKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuX3Bvc2l0aW9uID0gdGhpcy5fcG9zaXRpb24gPT09IDEgJiYgdGhpcy5faW5wdXRWYWx1ZS5sZW5ndGggPT09IDEgPyBudWxsIDogdGhpcy5fcG9zaXRpb247XG5cdFx0bGV0IHBvc2l0aW9uVG9BcHBseTogbnVtYmVyID0gdGhpcy5fcG9zaXRpb25cblx0XHRcdD8gdGhpcy5faW5wdXRWYWx1ZS5sZW5ndGggKyBwb3NpdGlvbiArIGNhcmV0U2hpZnRcblx0XHRcdDogcG9zaXRpb24gKyAodGhpcy5fY29kZSA9PT0gJ0JhY2tzcGFjZScgJiYgIWJhY2tzcGFjZVNoaWZ0ID8gMCA6IGNhcmV0U2hpZnQpO1xuXHRcdGlmIChwb3NpdGlvblRvQXBwbHkgPiB0aGlzLl9nZXRBY3R1YWxJbnB1dExlbmd0aCgpKSB7XG5cdFx0XHRwb3NpdGlvblRvQXBwbHkgPSB0aGlzLl9nZXRBY3R1YWxJbnB1dExlbmd0aCgpO1xuXHRcdH1cblx0XHRpZiAocG9zaXRpb25Ub0FwcGx5IDwgMCkge1xuXHRcdFx0cG9zaXRpb25Ub0FwcGx5ID0gMDtcblx0XHR9XG5cdFx0ZWwuc2V0U2VsZWN0aW9uUmFuZ2UocG9zaXRpb25Ub0FwcGx5LCBwb3NpdGlvblRvQXBwbHkpO1xuXHRcdHRoaXMuX3Bvc2l0aW9uID0gbnVsbDtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuXHRwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLl9tYXNrVmFsdWUpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLmNsZWFySWZOb3RNYXRjaEZuKCk7XG5cdFx0fVxuXHRcdHRoaXMub25Ub3VjaCgpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuXHRwdWJsaWMgb25DbGljayhlOiBNb3VzZUV2ZW50IHwgQ3VzdG9tS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5fbWFza1ZhbHVlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGVsOiBIVE1MSW5wdXRFbGVtZW50ID0gZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcblx0XHRjb25zdCBwb3NTdGFydCA9IDA7XG5cdFx0Y29uc3QgcG9zRW5kID0gMDtcblx0XHRpZiAoXG5cdFx0XHRlbCAhPT0gbnVsbCAmJlxuXHRcdFx0ZWwuc2VsZWN0aW9uU3RhcnQgIT09IG51bGwgJiZcblx0XHRcdGVsLnNlbGVjdGlvblN0YXJ0ID09PSBlbC5zZWxlY3Rpb25FbmQgJiZcblx0XHRcdGVsLnNlbGVjdGlvblN0YXJ0ID4gdGhpcy5fbWFza1NlcnZpY2UucHJlZml4Lmxlbmd0aCAmJlxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cdFx0XHQoZSBhcyBhbnkpLmtleUNvZGUgIT09IDM4XG5cdFx0KSB7XG5cdFx0XHRpZiAodGhpcy5fbWFza1NlcnZpY2Uuc2hvd01hc2tUeXBlZCkge1xuXHRcdFx0XHQvLyBXZSBhcmUgc2hvd2luZyB0aGUgbWFzayBpbiB0aGUgaW5wdXRcblx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UubWFza0lzU2hvd24gPSB0aGlzLl9tYXNrU2VydmljZS5zaG93TWFza0luSW5wdXQoKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdGVsLnNldFNlbGVjdGlvblJhbmdlICYmXG5cdFx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UucHJlZml4ICsgdGhpcy5fbWFza1NlcnZpY2UubWFza0lzU2hvd24gPT09IGVsLnZhbHVlXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdC8vIHRoZSBpbnB1dCBPTkxZIGNvbnRhaW5zIHRoZSBtYXNrLCBzbyBwb3NpdGlvbiB0aGUgY3Vyc29yIGF0IHRoZSBzdGFydFxuXHRcdFx0XHRcdGVsLmZvY3VzKCk7XG5cdFx0XHRcdFx0ZWwuc2V0U2VsZWN0aW9uUmFuZ2UocG9zU3RhcnQsIHBvc0VuZCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gdGhlIGlucHV0IGNvbnRhaW5zIHNvbWUgY2hhcmFjdGVycyBhbHJlYWR5XG5cdFx0XHRcdFx0aWYgKGVsLnNlbGVjdGlvblN0YXJ0ID4gdGhpcy5fbWFza1NlcnZpY2UuYWN0dWFsVmFsdWUubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQvLyBpZiB0aGUgdXNlciBjbGlja2VkIGJleW9uZCBvdXIgdmFsdWUncyBsZW5ndGgsIHBvc2l0aW9uIHRoZSBjdXJzb3IgYXQgdGhlIGVuZCBvZiBvdXIgdmFsdWVcblx0XHRcdFx0XHRcdGVsLnNldFNlbGVjdGlvblJhbmdlKFxuXHRcdFx0XHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hY3R1YWxWYWx1ZS5sZW5ndGgsXG5cdFx0XHRcdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLmFjdHVhbFZhbHVlLmxlbmd0aCxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IG5leHRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9XG5cdFx0XHQhZWwudmFsdWUgfHwgZWwudmFsdWUgPT09IHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeFxuXHRcdFx0XHQ/IHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeCArIHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tJc1Nob3duXG5cdFx0XHRcdDogZWwudmFsdWU7XG5cblx0XHQvKiogRml4IG9mIGN1cnNvciBwb3NpdGlvbiBqdW1waW5nIHRvIGVuZCBpbiBtb3N0IGJyb3dzZXJzIG5vIG1hdHRlciB3aGVyZSBjdXJzb3IgaXMgaW5zZXJ0ZWQgb25Gb2N1cyAqL1xuXHRcdGlmIChlbC52YWx1ZSAhPT0gbmV4dFZhbHVlKSB7XG5cdFx0XHRlbC52YWx1ZSA9IG5leHRWYWx1ZTtcblx0XHR9XG5cblx0XHQvKiogZml4IG9mIGN1cnNvciBwb3NpdGlvbiB3aXRoIHByZWZpeCB3aGVuIG1vdXNlIGNsaWNrIG9jY3VyICovXG5cdFx0aWYgKFxuXHRcdFx0KChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpIHx8IChlbC5zZWxlY3Rpb25FbmQgYXMgbnVtYmVyKSkgPD1cblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeC5sZW5ndGhcblx0XHQpIHtcblx0XHRcdGVsLnNlbGVjdGlvblN0YXJ0ID0gdGhpcy5fbWFza1NlcnZpY2UucHJlZml4Lmxlbmd0aDtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvKiogc2VsZWN0IG9ubHkgaW5zZXJ0ZWQgdGV4dCAqL1xuXHRcdGlmICgoZWwuc2VsZWN0aW9uRW5kIGFzIG51bWJlcikgPiB0aGlzLl9nZXRBY3R1YWxJbnB1dExlbmd0aCgpKSB7XG5cdFx0XHRlbC5zZWxlY3Rpb25FbmQgPSB0aGlzLl9nZXRBY3R1YWxJbnB1dExlbmd0aCgpO1xuXHRcdH1cblx0fVxuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5cdEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuXHRwdWJsaWMgb25LZXlEb3duKGU6IEN1c3RvbUtleWJvYXJkRXZlbnQpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuX21hc2tWYWx1ZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLl9jb2RlID0gZS5jb2RlID8gZS5jb2RlIDogZS5rZXk7XG5cdFx0Y29uc3QgZWw6IEhUTUxJbnB1dEVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXHRcdHRoaXMuX2lucHV0VmFsdWUgPSBlbC52YWx1ZTtcblxuXHRcdHRoaXMuX3NldE1hc2soKTtcblxuXHRcdGlmIChlLmtleUNvZGUgPT09IDM4KSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0fVxuXHRcdGlmIChlLmtleUNvZGUgPT09IDM3IHx8IGUua2V5Q29kZSA9PT0gOCB8fCBlLmtleUNvZGUgPT09IDQ2KSB7XG5cdFx0XHRpZiAoZS5rZXlDb2RlID09PSA4ICYmIGVsLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRlbC5zZWxlY3Rpb25TdGFydCA9IGVsLnNlbGVjdGlvbkVuZDtcblx0XHRcdH1cblx0XHRcdGlmIChlLmtleUNvZGUgPT09IDggJiYgKGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcikgIT09IDApIHtcblx0XHRcdFx0Ly8gSWYgc3BlY2lhbENoYXJzIGlzIGZhbHNlLCAoc2hvdWxkbid0IGV2ZXIgaGFwcGVuKSB0aGVuIHNldCB0byB0aGUgZGVmYXVsdHNcblx0XHRcdFx0dGhpcy5zcGVjaWFsQ2hhcmFjdGVycyA9IHRoaXMuc3BlY2lhbENoYXJhY3RlcnM/Lmxlbmd0aFxuXHRcdFx0XHRcdD8gdGhpcy5zcGVjaWFsQ2hhcmFjdGVyc1xuXHRcdFx0XHRcdDogdGhpcy5fY29uZmlnLnNwZWNpYWxDaGFyYWN0ZXJzO1xuXHRcdFx0XHRpZiAodGhpcy5wcmVmaXgubGVuZ3RoID4gMSAmJiAoZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKSA8PSB0aGlzLnByZWZpeC5sZW5ndGgpIHtcblx0XHRcdFx0XHRlbC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLnByZWZpeC5sZW5ndGgsIGVsLnNlbGVjdGlvbkVuZCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0dGhpcy5faW5wdXRWYWx1ZS5sZW5ndGggIT09IChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpICYmXG5cdFx0XHRcdFx0XHQoZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKSAhPT0gMVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0d2hpbGUgKFxuXHRcdFx0XHRcdFx0XHR0aGlzLnNwZWNpYWxDaGFyYWN0ZXJzLmluY2x1ZGVzKFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuX2lucHV0VmFsdWVbKGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcikgLSAxXSEudG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0KSAmJlxuXHRcdFx0XHRcdFx0XHQoKHRoaXMucHJlZml4Lmxlbmd0aCA+PSAxICYmIChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpID4gdGhpcy5wcmVmaXgubGVuZ3RoKSB8fFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMucHJlZml4Lmxlbmd0aCA9PT0gMClcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRlbC5zZXRTZWxlY3Rpb25SYW5nZSgoZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKSAtIDEsIGVsLnNlbGVjdGlvbkVuZCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmNoZWNrU2VsZWN0aW9uT25EZWxldGlvbihlbCk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeC5sZW5ndGggJiZcblx0XHRcdFx0KGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcikgPD0gdGhpcy5fbWFza1NlcnZpY2UucHJlZml4Lmxlbmd0aCAmJlxuXHRcdFx0XHQoZWwuc2VsZWN0aW9uRW5kIGFzIG51bWJlcikgPD0gdGhpcy5fbWFza1NlcnZpY2UucHJlZml4Lmxlbmd0aFxuXHRcdFx0KSB7XG5cdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGN1cnNvclN0YXJ0OiBudW1iZXIgfCBudWxsID0gZWwuc2VsZWN0aW9uU3RhcnQ7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGUua2V5Q29kZSA9PT0gOCAmJlxuXHRcdFx0XHQhZWwucmVhZE9ubHkgJiZcblx0XHRcdFx0Y3Vyc29yU3RhcnQgPT09IDAgJiZcblx0XHRcdFx0ZWwuc2VsZWN0aW9uRW5kID09PSBlbC52YWx1ZS5sZW5ndGggJiZcblx0XHRcdFx0ZWwudmFsdWUubGVuZ3RoICE9PSAwXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5fcG9zaXRpb24gPSB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXggPyB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXgubGVuZ3RoIDogMDtcblx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuYXBwbHlNYXNrKFxuXHRcdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeCxcblx0XHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrRXhwcmVzc2lvbixcblx0XHRcdFx0XHR0aGlzLl9wb3NpdGlvbixcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKFxuXHRcdFx0ISF0aGlzLnN1ZmZpeCAmJlxuXHRcdFx0dGhpcy5zdWZmaXgubGVuZ3RoID4gMSAmJlxuXHRcdFx0dGhpcy5faW5wdXRWYWx1ZS5sZW5ndGggLSB0aGlzLnN1ZmZpeC5sZW5ndGggPCAoZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKVxuXHRcdCkge1xuXHRcdFx0ZWwuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5faW5wdXRWYWx1ZS5sZW5ndGggLSB0aGlzLnN1ZmZpeC5sZW5ndGgsIHRoaXMuX2lucHV0VmFsdWUubGVuZ3RoKTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0KGUua2V5Q29kZSA9PT0gNjUgJiYgZS5jdHJsS2V5KSB8fFxuXHRcdFx0KGUua2V5Q29kZSA9PT0gNjUgJiYgZS5tZXRhS2V5KSAvLyBDbWQgKyBBIChNYWMpXG5cdFx0KSB7XG5cdFx0XHRlbC5zZXRTZWxlY3Rpb25SYW5nZSgwLCB0aGlzLl9nZXRBY3R1YWxJbnB1dExlbmd0aCgpKTtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdFx0dGhpcy5fbWFza1NlcnZpY2Uuc2VsU3RhcnQgPSBlbC5zZWxlY3Rpb25TdGFydDtcblx0XHR0aGlzLl9tYXNrU2VydmljZS5zZWxFbmQgPSBlbC5zZWxlY3Rpb25FbmQ7XG5cdH1cblxuXHQvKiogSXQgd3JpdGVzIHRoZSB2YWx1ZSBpbiB0aGUgaW5wdXQgKi9cblx0cHVibGljIGFzeW5jIHdyaXRlVmFsdWUoXG5cdFx0aW5wdXRWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgeyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyOyBkaXNhYmxlPzogYm9vbGVhbiB9LFxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAodHlwZW9mIGlucHV0VmFsdWUgPT09ICdvYmplY3QnICYmIGlucHV0VmFsdWUgIT09IG51bGwgJiYgJ3ZhbHVlJyBpbiBpbnB1dFZhbHVlKSB7XG5cdFx0XHRpZiAoJ2Rpc2FibGUnIGluIGlucHV0VmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zZXREaXNhYmxlZFN0YXRlKEJvb2xlYW4oaW5wdXRWYWx1ZS5kaXNhYmxlKSk7XG5cdFx0XHR9XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgaW5wdXRWYWx1ZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0aW5wdXRWYWx1ZSA9IFN0cmluZyhpbnB1dFZhbHVlKTtcblx0XHRcdGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmRlY2ltYWxNYXJrZXIpKSB7XG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0XHRpbnB1dFZhbHVlID1cblx0XHRcdFx0XHR0aGlzLmRlY2ltYWxNYXJrZXIgIT09ICcuJyA/IGlucHV0VmFsdWUucmVwbGFjZSgnLicsIHRoaXMuZGVjaW1hbE1hcmtlcikgOiBpbnB1dFZhbHVlO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuaXNOdW1iZXJWYWx1ZSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSAnc3RyaW5nJykge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRpbnB1dFZhbHVlID0gJyc7XG5cdFx0fVxuXG5cdFx0dGhpcy5faW5wdXRWYWx1ZSA9IGlucHV0VmFsdWU7XG5cdFx0dGhpcy5fc2V0TWFzaygpO1xuXG5cdFx0aWYgKFxuXHRcdFx0KGlucHV0VmFsdWUgJiYgdGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24pIHx8XG5cdFx0XHQodGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24gJiZcblx0XHRcdFx0KHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeCB8fCB0aGlzLl9tYXNrU2VydmljZS5zaG93TWFza1R5cGVkKSlcblx0XHQpIHtcblx0XHRcdC8vIExldCB0aGUgc2VydmljZSB3ZSBrbm93IHdlIGFyZSB3cml0aW5nIHZhbHVlIHNvIHRoYXQgdHJpZ2dlcmluZyBvbkNoYW5nZSBmdW5jdGlvbiB3b250IGhhcHBlbiBkdXJpbmcgYXBwbHlNYXNrXG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS53cml0aW5nVmFsdWUgPSB0cnVlO1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuZm9ybUVsZW1lbnRQcm9wZXJ0eSA9IFtcblx0XHRcdFx0J3ZhbHVlJyxcblx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuYXBwbHlNYXNrKGlucHV0VmFsdWUsIHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tFeHByZXNzaW9uKSxcblx0XHRcdF07XG5cdFx0XHQvLyBMZXQgdGhlIHNlcnZpY2Uga25vdyB3ZSd2ZSBmaW5pc2hlZCB3cml0aW5nIHZhbHVlXG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS53cml0aW5nVmFsdWUgPSBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuZm9ybUVsZW1lbnRQcm9wZXJ0eSA9IFsndmFsdWUnLCBpbnB1dFZhbHVlXTtcblx0XHR9XG5cdFx0dGhpcy5faW5wdXRWYWx1ZSA9IGlucHV0VmFsdWU7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5vbkNoYW5nZSA9IGZuO1xuXHRcdHRoaXMuX21hc2tTZXJ2aWNlLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5vblRvdWNoID0gZm47XG5cdH1cblxuXHRwdWJsaWMgY2hlY2tTZWxlY3Rpb25PbkRlbGV0aW9uKGVsOiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XG5cdFx0ZWwuc2VsZWN0aW9uU3RhcnQgPSBNYXRoLm1pbihcblx0XHRcdE1hdGgubWF4KHRoaXMucHJlZml4Lmxlbmd0aCwgZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKSxcblx0XHRcdHRoaXMuX2lucHV0VmFsdWUubGVuZ3RoIC0gdGhpcy5zdWZmaXgubGVuZ3RoLFxuXHRcdCk7XG5cdFx0ZWwuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4oXG5cdFx0XHRNYXRoLm1heCh0aGlzLnByZWZpeC5sZW5ndGgsIGVsLnNlbGVjdGlvbkVuZCBhcyBudW1iZXIpLFxuXHRcdFx0dGhpcy5faW5wdXRWYWx1ZS5sZW5ndGggLSB0aGlzLnN1ZmZpeC5sZW5ndGgsXG5cdFx0KTtcblx0fVxuXG5cdC8qKiBJdCBkaXNhYmxlcyB0aGUgaW5wdXQgZWxlbWVudCAqL1xuXHRwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy5fbWFza1NlcnZpY2UuZm9ybUVsZW1lbnRQcm9wZXJ0eSA9IFsnZGlzYWJsZWQnLCBpc0Rpc2FibGVkXTtcblx0fVxuXG5cdHByaXZhdGUgX3JlcGVhdFBhdHRlcm5TeW1ib2xzKG1hc2tFeHA6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdChtYXNrRXhwLm1hdGNoKC97WzAtOV0rfS8pICYmXG5cdFx0XHRcdG1hc2tFeHAuc3BsaXQoJycpLnJlZHVjZSgoYWNjdW06IHN0cmluZywgY3VycnZhbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nID0+IHtcblx0XHRcdFx0XHR0aGlzLl9zdGFydCA9IGN1cnJ2YWwgPT09ICd7JyA/IGluZGV4IDogdGhpcy5fc3RhcnQ7XG5cblx0XHRcdFx0XHRpZiAoY3VycnZhbCAhPT0gJ30nKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fbWFza1NlcnZpY2UuX2ZpbmRTcGVjaWFsQ2hhcihjdXJydmFsKSA/IGFjY3VtICsgY3VycnZhbCA6IGFjY3VtO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl9lbmQgPSBpbmRleDtcblx0XHRcdFx0XHRjb25zdCByZXBlYXROdW1iZXI6IG51bWJlciA9IE51bWJlcihtYXNrRXhwLnNsaWNlKHRoaXMuX3N0YXJ0ICsgMSwgdGhpcy5fZW5kKSk7XG5cdFx0XHRcdFx0Y29uc3QgcmVwbGFjZVdpdGg6IHN0cmluZyA9IG5ldyBBcnJheShyZXBlYXROdW1iZXIgKyAxKS5qb2luKG1hc2tFeHBbdGhpcy5fc3RhcnQgLSAxXSk7XG5cdFx0XHRcdFx0cmV0dXJuIGFjY3VtICsgcmVwbGFjZVdpdGg7XG5cdFx0XHRcdH0sICcnKSkgfHxcblx0XHRcdG1hc2tFeHBcblx0XHQpO1xuXHR9XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0cHJpdmF0ZSBfYXBwbHlNYXNrKCk6IGFueSB7XG5cdFx0dGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24gPSB0aGlzLl9yZXBlYXRQYXR0ZXJuU3ltYm9scyh0aGlzLl9tYXNrVmFsdWUgfHwgJycpO1xuXHRcdHRoaXMuX21hc2tTZXJ2aWNlLmZvcm1FbGVtZW50UHJvcGVydHkgPSBbXG5cdFx0XHQndmFsdWUnLFxuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuYXBwbHlNYXNrKHRoaXMuX2lucHV0VmFsdWUsIHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tFeHByZXNzaW9uKSxcblx0XHRdO1xuXHR9XG5cblx0cHJpdmF0ZSBfdmFsaWRhdGVUaW1lKHZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG5cdFx0Y29uc3Qgcm93TWFza0xlbjogbnVtYmVyID0gdGhpcy5fbWFza1ZhbHVlLnNwbGl0KCcnKS5maWx0ZXIoKHM6IHN0cmluZykgPT4gcyAhPT0gJzonKS5sZW5ndGg7XG5cdFx0aWYgKCF2YWx1ZSkge1xuXHRcdFx0cmV0dXJuIG51bGw7IC8vIERvbid0IHZhbGlkYXRlIGVtcHR5IHZhbHVlcyB0byBhbGxvdyBmb3Igb3B0aW9uYWwgZm9ybSBjb250cm9sXG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0KCt2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXSEgPT09IDAgJiYgdmFsdWUubGVuZ3RoIDwgcm93TWFza0xlbikgfHxcblx0XHRcdHZhbHVlLmxlbmd0aCA8PSByb3dNYXNrTGVuIC0gMlxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZVZhbGlkYXRpb25FcnJvcih2YWx1ZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRwcml2YXRlIF9nZXRBY3R1YWxJbnB1dExlbmd0aCgpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuYWN0dWFsVmFsdWUubGVuZ3RoIHx8XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hY3R1YWxWYWx1ZS5sZW5ndGggKyB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXgubGVuZ3RoXG5cdFx0KTtcblx0fVxuXG5cdHByaXZhdGUgX2NyZWF0ZVZhbGlkYXRpb25FcnJvcihhY3R1YWxWYWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvbkVycm9ycyB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG1hc2s6IHtcblx0XHRcdFx0cmVxdWlyZWRNYXNrOiB0aGlzLl9tYXNrVmFsdWUsXG5cdFx0XHRcdGFjdHVhbFZhbHVlLFxuXHRcdFx0fSxcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSBfc2V0TWFzaygpIHtcblx0XHRpZiAodGhpcy5fbWFza0V4cHJlc3Npb25BcnJheS5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5LnNvbWUoKG1hc2spOiBib29sZWFuIHwgdm9pZCA9PiB7XG5cdFx0XHRcdGNvbnN0IHRlc3QgPVxuXHRcdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnJlbW92ZU1hc2sodGhpcy5faW5wdXRWYWx1ZSk/Lmxlbmd0aCA8PVxuXHRcdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnJlbW92ZU1hc2sobWFzayk/Lmxlbmd0aDtcblx0XHRcdFx0aWYgKHRoaXMuX2lucHV0VmFsdWUgJiYgdGVzdCkge1xuXHRcdFx0XHRcdHRoaXMuX21hc2tWYWx1ZSA9IG1hc2s7XG5cdFx0XHRcdFx0dGhpcy5tYXNrRXhwcmVzc2lvbiA9IG1hc2s7XG5cdFx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24gPSBtYXNrO1xuXHRcdFx0XHRcdHJldHVybiB0ZXN0O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX21hc2tWYWx1ZSA9IHRoaXMuX21hc2tFeHByZXNzaW9uQXJyYXlbdGhpcy5fbWFza0V4cHJlc3Npb25BcnJheS5sZW5ndGggLSAxXSE7XG5cdFx0XHRcdFx0dGhpcy5tYXNrRXhwcmVzc2lvbiA9IHRoaXMuX21hc2tFeHByZXNzaW9uQXJyYXlbdGhpcy5fbWFza0V4cHJlc3Npb25BcnJheS5sZW5ndGggLSAxXSE7XG5cdFx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24gPVxuXHRcdFx0XHRcdFx0dGhpcy5fbWFza0V4cHJlc3Npb25BcnJheVt0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5Lmxlbmd0aCAtIDFdITtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG4iXX0=
587
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWFzay1saWIvc3JjL2xpYi9tYXNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR04sYUFBYSxFQUNiLGlCQUFpQixHQUdqQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxHQUdMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUczQyxPQUFPLEVBQUUsTUFBTSxFQUFXLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQW1CN0MsTUFBTSxPQUFPLGFBQWE7SUF3RHpCLFlBQzJCLFFBQWEsRUFDaEMsWUFBeUIsRUFDTixPQUFnQjtRQUZoQixhQUFRLEdBQVIsUUFBUSxDQUFLO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ04sWUFBTyxHQUFQLE9BQU8sQ0FBUztRQTFEM0MsMkRBQTJEO1FBQ3JDLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRWxDLHNCQUFpQixHQUFpQyxFQUFFLENBQUM7UUFFckQsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFFbkMsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFFL0IsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFFL0Isc0JBQWlCLEdBQWlDLEdBQUcsQ0FBQztRQUV0RCxrQkFBYSxHQUE2QixHQUFHLENBQUM7UUFFOUMsMEJBQXFCLEdBQTRDLElBQUksQ0FBQztRQUV0RSxnQkFBVyxHQUFrQyxJQUFJLENBQUM7UUFFbEQsa0JBQWEsR0FBb0MsSUFBSSxDQUFDO1FBRXRELHlCQUFvQixHQUEyQyxJQUFJLENB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OzBCQTBERSxNQUFNOzJCQUFDLFFBQVE7OzBCQUVmLE1BQU07MkJBQUMsTUFBTTs0Q0F6RE8sY0FBYztzQkFBbkMsS0FBSzt1QkFBQyxNQUFNO2dCQUVHLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBRVUsYUFBYTtzQkFBNUIsS0FBSztnQkFFVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBRVUsV0FBVztzQkFBMUIsS0FBSztnQkFFVSxhQUFhO3NCQUE1QixLQUFLO2dCQUVVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFFVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBRVUsWUFBWTtzQkFBM0IsS0FBSztnQkFFVSxlQUFlO3NCQUE5QixLQUFLO2dCQUVVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBRVUsY0FBYztzQkFBN0IsS0FBSztnQkFFVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBRVUsZ0JBQWdCO3NCQUEvQixLQUFLO2dCQUVVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkEyTkMsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBTWQsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU2xDLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBOEMxQixNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTTtnQkFTYixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWdFMUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuXHRGb3JtQ29udHJvbCxcblx0TkdfVkFMSURBVE9SUyxcblx0TkdfVkFMVUVfQUNDRVNTT1IsXG5cdFZhbGlkYXRpb25FcnJvcnMsXG5cdFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcblx0RGlyZWN0aXZlLFxuXHRmb3J3YXJkUmVmLFxuXHRIb3N0TGlzdGVuZXIsXG5cdEluamVjdCxcblx0SW5wdXQsXG5cdE9uQ2hhbmdlcyxcblx0U2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEN1c3RvbUtleWJvYXJkRXZlbnQgfSBmcm9tICcuL2N1c3RvbS1rZXlib2FyZC1ldmVudCc7XG5pbXBvcnQgeyBjb25maWcsIElDb25maWcsIHRpbWVNYXNrcywgd2l0aG91dFZhbGlkYXRpb24gfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBNYXNrU2VydmljZSB9IGZyb20gJy4vbWFzay5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnaW5wdXRbbWFza10sIHRleHRhcmVhW21hc2tdJyxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXNrRGlyZWN0aXZlKSxcblx0XHRcdG11bHRpOiB0cnVlLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMSURBVE9SUyxcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1hc2tEaXJlY3RpdmUpLFxuXHRcdFx0bXVsdGk6IHRydWUsXG5cdFx0fSxcblx0XHRNYXNrU2VydmljZSxcblx0XSxcblx0ZXhwb3J0QXM6ICdtYXNrLG5neE1hc2snLFxufSlcbmV4cG9ydCBjbGFzcyBNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgVmFsaWRhdG9yIHtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcblx0QElucHV0KCdtYXNrJykgcHVibGljIG1hc2tFeHByZXNzaW9uOiBzdHJpbmcgPSAnJztcblxuXHRASW5wdXQoKSBwdWJsaWMgc3BlY2lhbENoYXJhY3RlcnM6IElDb25maWdbJ3NwZWNpYWxDaGFyYWN0ZXJzJ10gPSBbXTtcblxuXHRASW5wdXQoKSBwdWJsaWMgcGF0dGVybnM6IElDb25maWdbJ3BhdHRlcm5zJ10gPSB7fTtcblxuXHRASW5wdXQoKSBwdWJsaWMgcHJlZml4OiBJQ29uZmlnWydwcmVmaXgnXSA9ICcnO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBzdWZmaXg6IElDb25maWdbJ3N1ZmZpeCddID0gJyc7XG5cblx0QElucHV0KCkgcHVibGljIHRob3VzYW5kU2VwYXJhdG9yOiBJQ29uZmlnWyd0aG91c2FuZFNlcGFyYXRvciddID0gJyAnO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBkZWNpbWFsTWFya2VyOiBJQ29uZmlnWydkZWNpbWFsTWFya2VyJ10gPSAnLic7XG5cblx0QElucHV0KCkgcHVibGljIGRyb3BTcGVjaWFsQ2hhcmFjdGVyczogSUNvbmZpZ1snZHJvcFNwZWNpYWxDaGFyYWN0ZXJzJ10gfCBudWxsID0gbnVsbDtcblxuXHRASW5wdXQoKSBwdWJsaWMgaGlkZGVuSW5wdXQ6IElDb25maWdbJ2hpZGRlbklucHV0J10gfCBudWxsID0gbnVsbDtcblxuXHRASW5wdXQoKSBwdWJsaWMgc2hvd01hc2tUeXBlZDogSUNvbmZpZ1snc2hvd01hc2tUeXBlZCddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIHBsYWNlSG9sZGVyQ2hhcmFjdGVyOiBJQ29uZmlnWydwbGFjZUhvbGRlckNoYXJhY3RlciddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIHNob3duTWFza0V4cHJlc3Npb246IElDb25maWdbJ3Nob3duTWFza0V4cHJlc3Npb24nXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBzaG93VGVtcGxhdGU6IElDb25maWdbJ3Nob3dUZW1wbGF0ZSddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIGNsZWFySWZOb3RNYXRjaDogSUNvbmZpZ1snY2xlYXJJZk5vdE1hdGNoJ10gfCBudWxsID0gbnVsbDtcblxuXHRASW5wdXQoKSBwdWJsaWMgdmFsaWRhdGlvbjogSUNvbmZpZ1sndmFsaWRhdGlvbiddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIHNlcGFyYXRvckxpbWl0OiBJQ29uZmlnWydzZXBhcmF0b3JMaW1pdCddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIGFsbG93TmVnYXRpdmVOdW1iZXJzOiBJQ29uZmlnWydhbGxvd05lZ2F0aXZlTnVtYmVycyddIHwgbnVsbCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIGxlYWRaZXJvRGF0ZVRpbWU6IElDb25maWdbJ2xlYWRaZXJvRGF0ZVRpbWUnXSB8IG51bGwgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyB0cmlnZ2VyT25NYXNrQ2hhbmdlOiBJQ29uZmlnWyd0cmlnZ2VyT25NYXNrQ2hhbmdlJ10gfCBudWxsID0gbnVsbDtcblxuXHRwcml2YXRlIF9tYXNrVmFsdWU6IHN0cmluZyA9ICcnO1xuXG5cdHByaXZhdGUgX2lucHV0VmFsdWUhOiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBfcG9zaXRpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG5cdHByaXZhdGUgX3N0YXJ0ITogbnVtYmVyO1xuXG5cdHByaXZhdGUgX2VuZCE6IG51bWJlcjtcblxuXHRwcml2YXRlIF9jb2RlITogc3RyaW5nO1xuXG5cdHByaXZhdGUgX21hc2tFeHByZXNzaW9uQXJyYXk6IHN0cmluZ1tdID0gW107XG5cblx0cHJpdmF0ZSBfanVzdFBhc3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG5cdFx0cHVibGljIF9tYXNrU2VydmljZTogTWFza1NlcnZpY2UsXG5cdFx0QEluamVjdChjb25maWcpIHByb3RlY3RlZCBfY29uZmlnOiBJQ29uZmlnLFxuXHQpIHt9XG5cblx0cHVibGljIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cblx0cHVibGljIG9uVG91Y2ggPSAoKSA9PiB7fTtcblxuXHRwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXHRcdGNvbnN0IHtcblx0XHRcdG1hc2tFeHByZXNzaW9uLFxuXHRcdFx0c3BlY2lhbENoYXJhY3RlcnMsXG5cdFx0XHRwYXR0ZXJucyxcblx0XHRcdHByZWZpeCxcblx0XHRcdHN1ZmZpeCxcblx0XHRcdHRob3VzYW5kU2VwYXJhdG9yLFxuXHRcdFx0ZGVjaW1hbE1hcmtlcixcblx0XHRcdGRyb3BTcGVjaWFsQ2hhcmFjdGVycyxcblx0XHRcdGhpZGRlbklucHV0LFxuXHRcdFx0c2hvd01hc2tUeXBlZCxcblx0XHRcdHBsYWNlSG9sZGVyQ2hhcmFjdGVyLFxuXHRcdFx0c2hvd25NYXNrRXhwcmVzc2lvbixcblx0XHRcdHNob3dUZW1wbGF0ZSxcblx0XHRcdGNsZWFySWZOb3RNYXRjaCxcblx0XHRcdHZhbGlkYXRpb24sXG5cdFx0XHRzZXBhcmF0b3JMaW1pdCxcblx0XHRcdGFsbG93TmVnYXRpdmVOdW1iZXJzLFxuXHRcdFx0bGVhZFplcm9EYXRlVGltZSxcblx0XHRcdHRyaWdnZXJPbk1hc2tDaGFuZ2UsXG5cdFx0fSA9IGNoYW5nZXM7XG5cdFx0aWYgKG1hc2tFeHByZXNzaW9uKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG1hc2tFeHByZXNzaW9uLmN1cnJlbnRWYWx1ZSAhPT0gbWFza0V4cHJlc3Npb24ucHJldmlvdXNWYWx1ZSAmJlxuXHRcdFx0XHQhbWFza0V4cHJlc3Npb24uZmlyc3RDaGFuZ2Vcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrQ2hhbmdlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAobWFza0V4cHJlc3Npb24uY3VycmVudFZhbHVlICYmIG1hc2tFeHByZXNzaW9uLmN1cnJlbnRWYWx1ZS5zcGxpdCgnfHwnKS5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdHRoaXMuX21hc2tFeHByZXNzaW9uQXJyYXkgPSBtYXNrRXhwcmVzc2lvbi5jdXJyZW50VmFsdWVcblx0XHRcdFx0XHQuc3BsaXQoJ3x8Jylcblx0XHRcdFx0XHQuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLl9tYXNrVmFsdWUgPSB0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5WzBdITtcblx0XHRcdFx0dGhpcy5tYXNrRXhwcmVzc2lvbiA9IHRoaXMuX21hc2tFeHByZXNzaW9uQXJyYXlbMF0hO1xuXHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrRXhwcmVzc2lvbiA9IHRoaXMuX21hc2tFeHByZXNzaW9uQXJyYXlbMF0hO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fbWFza0V4cHJlc3Npb25BcnJheSA9IFtdO1xuXHRcdFx0XHR0aGlzLl9tYXNrVmFsdWUgPSBtYXNrRXhwcmVzc2lvbi5jdXJyZW50VmFsdWUgfHwgJyc7XG5cdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tFeHByZXNzaW9uID0gdGhpcy5fbWFza1ZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoc3BlY2lhbENoYXJhY3RlcnMpIHtcblx0XHRcdGlmICghc3BlY2lhbENoYXJhY3RlcnMuY3VycmVudFZhbHVlIHx8ICFBcnJheS5pc0FycmF5KHNwZWNpYWxDaGFyYWN0ZXJzLmN1cnJlbnRWYWx1ZSkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UubWFza1NwZWNpYWxDaGFyYWN0ZXJzID0gc3BlY2lhbENoYXJhY3RlcnMuY3VycmVudFZhbHVlIHx8IFtdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBPbmx5IG92ZXJ3cml0ZSB0aGUgbWFzayBhdmFpbGFibGUgcGF0dGVybnMgaWYgYSBwYXR0ZXJuIGhhcyBhY3R1YWxseSBiZWVuIHBhc3NlZCBpblxuXHRcdGlmIChwYXR0ZXJucyAmJiBwYXR0ZXJucy5jdXJyZW50VmFsdWUpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tBdmFpbGFibGVQYXR0ZXJucyA9IHBhdHRlcm5zLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHByZWZpeCkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UucHJlZml4ID0gcHJlZml4LmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHN1ZmZpeCkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2Uuc3VmZml4ID0gc3VmZml4LmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHRob3VzYW5kU2VwYXJhdG9yKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS50aG91c2FuZFNlcGFyYXRvciA9IHRob3VzYW5kU2VwYXJhdG9yLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGRlY2ltYWxNYXJrZXIpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLmRlY2ltYWxNYXJrZXIgPSBkZWNpbWFsTWFya2VyLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGRyb3BTcGVjaWFsQ2hhcmFjdGVycykge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuZHJvcFNwZWNpYWxDaGFyYWN0ZXJzID0gZHJvcFNwZWNpYWxDaGFyYWN0ZXJzLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGhpZGRlbklucHV0KSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5oaWRkZW5JbnB1dCA9IGhpZGRlbklucHV0LmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHNob3dNYXNrVHlwZWQpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnNob3dNYXNrVHlwZWQgPSBzaG93TWFza1R5cGVkLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHBsYWNlSG9sZGVyQ2hhcmFjdGVyKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5wbGFjZUhvbGRlckNoYXJhY3RlciA9IHBsYWNlSG9sZGVyQ2hhcmFjdGVyLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHNob3duTWFza0V4cHJlc3Npb24pIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnNob3duTWFza0V4cHJlc3Npb24gPSBzaG93bk1hc2tFeHByZXNzaW9uLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHNob3dUZW1wbGF0ZSkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2Uuc2hvd1RlbXBsYXRlID0gc2hvd1RlbXBsYXRlLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGNsZWFySWZOb3RNYXRjaCkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuY2xlYXJJZk5vdE1hdGNoID0gY2xlYXJJZk5vdE1hdGNoLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHZhbGlkYXRpb24pIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnZhbGlkYXRpb24gPSB2YWxpZGF0aW9uLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHNlcGFyYXRvckxpbWl0KSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5zZXBhcmF0b3JMaW1pdCA9IHNlcGFyYXRvckxpbWl0LmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKGFsbG93TmVnYXRpdmVOdW1iZXJzKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hbGxvd05lZ2F0aXZlTnVtYmVycyA9IGFsbG93TmVnYXRpdmVOdW1iZXJzLmN1cnJlbnRWYWx1ZTtcblx0XHRcdGlmICh0aGlzLl9tYXNrU2VydmljZS5hbGxvd05lZ2F0aXZlTnVtYmVycykge1xuXHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrU3BlY2lhbENoYXJhY3RlcnMgPSB0aGlzLl9tYXNrU2VydmljZS5tYXNrU3BlY2lhbENoYXJhY3RlcnMuZmlsdGVyKFxuXHRcdFx0XHRcdChjOiBzdHJpbmcpID0+IGMgIT09ICctJyxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGxlYWRaZXJvRGF0ZVRpbWUpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLmxlYWRaZXJvRGF0ZVRpbWUgPSBsZWFkWmVyb0RhdGVUaW1lLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKHRyaWdnZXJPbk1hc2tDaGFuZ2UpIHtcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnRyaWdnZXJPbk1hc2tDaGFuZ2UgPSB0cmlnZ2VyT25NYXNrQ2hhbmdlLmN1cnJlbnRWYWx1ZTtcblx0XHR9XG5cdFx0dGhpcy5fYXBwbHlNYXNrKCk7XG5cdH1cblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuXHRwdWJsaWMgdmFsaWRhdGUoeyB2YWx1ZSB9OiBGb3JtQ29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcblx0XHRpZiAoIXRoaXMuX21hc2tTZXJ2aWNlLnZhbGlkYXRpb24gfHwgIXRoaXMuX21hc2tWYWx1ZSkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9tYXNrU2VydmljZS5pcEVycm9yKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlVmFsaWRhdGlvbkVycm9yKHZhbHVlKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX21hc2tTZXJ2aWNlLmNwZkNucGpFcnJvcikge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZVZhbGlkYXRpb25FcnJvcih2YWx1ZSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9tYXNrVmFsdWUuc3RhcnRzV2l0aCgnc2VwYXJhdG9yJykpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAod2l0aG91dFZhbGlkYXRpb24uaW5jbHVkZXModGhpcy5fbWFza1ZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9tYXNrU2VydmljZS5jbGVhcklmTm90TWF0Y2gpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAodGltZU1hc2tzLmluY2x1ZGVzKHRoaXMuX21hc2tWYWx1ZSkpIHtcblx0XHRcdHJldHVybiB0aGlzLl92YWxpZGF0ZVRpbWUodmFsdWUpO1xuXHRcdH1cblx0XHRpZiAodmFsdWUgJiYgdmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPj0gMSkge1xuXHRcdFx0bGV0IGNvdW50ZXJPZk9wdCA9IDA7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBpbiB0aGlzLl9tYXNrU2VydmljZS5tYXNrQXZhaWxhYmxlUGF0dGVybnMpIHtcblx0XHRcdFx0aWYgKHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tBdmFpbGFibGVQYXR0ZXJuc1trZXldIS5vcHRpb25hbCkge1xuXHRcdFx0XHRcdGlmICh0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZihrZXkpICE9PSB0aGlzLl9tYXNrVmFsdWUubGFzdEluZGV4T2Yoa2V5KSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb3B0OiBzdHJpbmcgPSB0aGlzLl9tYXNrVmFsdWVcblx0XHRcdFx0XHRcdFx0LnNwbGl0KCcnKVxuXHRcdFx0XHRcdFx0XHQuZmlsdGVyKChpOiBzdHJpbmcpID0+IGkgPT09IGtleSlcblx0XHRcdFx0XHRcdFx0LmpvaW4oJycpO1xuXHRcdFx0XHRcdFx0Y291bnRlck9mT3B0ICs9IG9wdC5sZW5ndGg7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0Y291bnRlck9mT3B0Kys7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKGtleSkgIT09IC0xICYmXG5cdFx0XHRcdFx0XHR2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+PSB0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZihrZXkpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGNvdW50ZXJPZk9wdCA9PT0gdGhpcy5fbWFza1ZhbHVlLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCd7JykgPT09IDEgJiZcblx0XHRcdFx0dmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPT09XG5cdFx0XHRcdFx0dGhpcy5fbWFza1ZhbHVlLmxlbmd0aCArIE51bWJlcih0aGlzLl9tYXNrVmFsdWUuc3BsaXQoJ3snKVsxXSEuc3BsaXQoJ30nKVswXSkgLSA0XG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5fbWFza1ZhbHVlLmluZGV4T2YoJyonKSA9PT0gMSB8fCB0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZignPycpID09PSAxKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0KHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCcqJykgPiAxICYmXG5cdFx0XHRcdFx0dmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPCB0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZignKicpKSB8fFxuXHRcdFx0XHQodGhpcy5fbWFza1ZhbHVlLmluZGV4T2YoJz8nKSA+IDEgJiZcblx0XHRcdFx0XHR2YWx1ZS50b1N0cmluZygpLmxlbmd0aCA8IHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCc/JykpIHx8XG5cdFx0XHRcdHRoaXMuX21hc2tWYWx1ZS5pbmRleE9mKCd7JykgPT09IDFcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlVmFsaWRhdGlvbkVycm9yKHZhbHVlKTtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZignKicpID09PSAtMSB8fCB0aGlzLl9tYXNrVmFsdWUuaW5kZXhPZignPycpID09PSAtMSkge1xuXHRcdFx0XHRjb25zdCBsZW5ndGg6IG51bWJlciA9IHRoaXMuX21hc2tTZXJ2aWNlLmRyb3BTcGVjaWFsQ2hhcmFjdGVyc1xuXHRcdFx0XHRcdD8gdGhpcy5fbWFza1ZhbHVlLmxlbmd0aCAtXG5cdFx0XHRcdFx0ICB0aGlzLl9tYXNrU2VydmljZS5jaGVja1NwZWNpYWxDaGFyQW1vdW50KHRoaXMuX21hc2tWYWx1ZSkgLVxuXHRcdFx0XHRcdCAgY291bnRlck9mT3B0XG5cdFx0XHRcdFx0OiB0aGlzLl9tYXNrVmFsdWUubGVuZ3RoIC0gY291bnRlck9mT3B0O1xuXHRcdFx0XHRpZiAodmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPCBsZW5ndGgpIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlVmFsaWRhdGlvbkVycm9yKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJylcblx0cHVibGljIG9uUGFzdGUoKSB7XG5cdFx0dGhpcy5fanVzdFBhc3RlZCA9IHRydWU7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCduZ01vZGVsQ2hhbmdlJywgWyckZXZlbnQnXSlcblx0cHVibGljIG9uTW9kZWxDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuXHRcdC8vIG9uIGZvcm0gcmVzZXQgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGFjdHVhbFZhbHVlXG5cdFx0aWYgKCF2YWx1ZSAmJiB0aGlzLl9tYXNrU2VydmljZS5hY3R1YWxWYWx1ZSkge1xuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuYWN0dWFsVmFsdWUgPSB0aGlzLl9tYXNrU2VydmljZS5nZXRBY3R1YWxWYWx1ZSgnJyk7XG5cdFx0fVxuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuXHRwdWJsaWMgb25JbnB1dChlOiBDdXN0b21LZXlib2FyZEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZWw6IEhUTUxJbnB1dEVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXHRcdHRoaXMuX2lucHV0VmFsdWUgPSBlbC52YWx1ZTtcblxuXHRcdHRoaXMuX3NldE1hc2soKTtcblxuXHRcdGlmICghdGhpcy5fbWFza1ZhbHVlKSB7XG5cdFx0XHR0aGlzLm9uQ2hhbmdlKGVsLnZhbHVlKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgcG9zaXRpb246IG51bWJlciA9XG5cdFx0XHRlbC5zZWxlY3Rpb25TdGFydCA9PT0gMVxuXHRcdFx0XHQ/IChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpICsgdGhpcy5fbWFza1NlcnZpY2UucHJlZml4Lmxlbmd0aFxuXHRcdFx0XHQ6IChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpO1xuXHRcdGxldCBjYXJldFNoaWZ0ID0gMDtcblx0XHRsZXQgYmFja3NwYWNlU2hpZnQgPSBmYWxzZTtcblx0XHR0aGlzLl9tYXNrU2VydmljZS5hcHBseVZhbHVlQ2hhbmdlcyhcblx0XHRcdHBvc2l0aW9uLFxuXHRcdFx0dGhpcy5fanVzdFBhc3RlZCxcblx0XHRcdHRoaXMuX2NvZGUgPT09ICdCYWNrc3BhY2UnIHx8IHRoaXMuX2NvZGUgPT09ICdEZWxldGUnLFxuXHRcdFx0KHNoaWZ0OiBudW1iZXIsIF9iYWNrc3BhY2VTaGlmdDogYm9vbGVhbikgPT4ge1xuXHRcdFx0XHR0aGlzLl9qdXN0UGFzdGVkID0gZmFsc2U7XG5cdFx0XHRcdGNhcmV0U2hpZnQgPSBzaGlmdDtcblx0XHRcdFx0YmFja3NwYWNlU2hpZnQgPSBfYmFja3NwYWNlU2hpZnQ7XG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0Ly8gb25seSBzZXQgdGhlIHNlbGVjdGlvbiBpZiB0aGUgZWxlbWVudCBpcyBhY3RpdmVcblx0XHRpZiAodGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBlbCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLl9wb3NpdGlvbiA9IHRoaXMuX3Bvc2l0aW9uID09PSAxICYmIHRoaXMuX2lucHV0VmFsdWUubGVuZ3RoID09PSAxID8gbnVsbCA6IHRoaXMuX3Bvc2l0aW9uO1xuXHRcdGxldCBwb3NpdGlvblRvQXBwbHk6IG51bWJlciA9IHRoaXMuX3Bvc2l0aW9uXG5cdFx0XHQ/IHRoaXMuX2lucHV0VmFsdWUubGVuZ3RoICsgcG9zaXRpb24gKyBjYXJldFNoaWZ0XG5cdFx0XHQ6IHBvc2l0aW9uICsgKHRoaXMuX2NvZGUgPT09ICdCYWNrc3BhY2UnICYmICFiYWNrc3BhY2VTaGlmdCA/IDAgOiBjYXJldFNoaWZ0KTtcblx0XHRpZiAocG9zaXRpb25Ub0FwcGx5ID4gdGhpcy5fZ2V0QWN0dWFsSW5wdXRMZW5ndGgoKSkge1xuXHRcdFx0cG9zaXRpb25Ub0FwcGx5ID0gdGhpcy5fZ2V0QWN0dWFsSW5wdXRMZW5ndGgoKTtcblx0XHR9XG5cdFx0aWYgKHBvc2l0aW9uVG9BcHBseSA8IDApIHtcblx0XHRcdHBvc2l0aW9uVG9BcHBseSA9IDA7XG5cdFx0fVxuXHRcdGVsLnNldFNlbGVjdGlvblJhbmdlKHBvc2l0aW9uVG9BcHBseSwgcG9zaXRpb25Ub0FwcGx5KTtcblx0XHR0aGlzLl9wb3NpdGlvbiA9IG51bGw7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdibHVyJylcblx0cHVibGljIG9uQmx1cigpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5fbWFza1ZhbHVlKSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5jbGVhcklmTm90TWF0Y2hGbigpO1xuXHRcdH1cblx0XHR0aGlzLm9uVG91Y2goKTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcblx0cHVibGljIG9uQ2xpY2soZTogTW91c2VFdmVudCB8IEN1c3RvbUtleWJvYXJkRXZlbnQpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuX21hc2tWYWx1ZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBlbDogSFRNTElucHV0RWxlbWVudCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cdFx0Y29uc3QgcG9zU3RhcnQgPSAwO1xuXHRcdGNvbnN0IHBvc0VuZCA9IDA7XG5cdFx0aWYgKFxuXHRcdFx0ZWwgIT09IG51bGwgJiZcblx0XHRcdGVsLnNlbGVjdGlvblN0YXJ0ICE9PSBudWxsICYmXG5cdFx0XHRlbC5zZWxlY3Rpb25TdGFydCA9PT0gZWwuc2VsZWN0aW9uRW5kICYmXG5cdFx0XHRlbC5zZWxlY3Rpb25TdGFydCA+IHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeC5sZW5ndGggJiZcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXHRcdFx0KGUgYXMgYW55KS5rZXlDb2RlICE9PSAzOFxuXHRcdCkge1xuXHRcdFx0aWYgKHRoaXMuX21hc2tTZXJ2aWNlLnNob3dNYXNrVHlwZWQpIHtcblx0XHRcdFx0Ly8gV2UgYXJlIHNob3dpbmcgdGhlIG1hc2sgaW4gdGhlIGlucHV0XG5cdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tJc1Nob3duID0gdGhpcy5fbWFza1NlcnZpY2Uuc2hvd01hc2tJbklucHV0KCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRlbC5zZXRTZWxlY3Rpb25SYW5nZSAmJlxuXHRcdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeCArIHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tJc1Nob3duID09PSBlbC52YWx1ZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHQvLyB0aGUgaW5wdXQgT05MWSBjb250YWlucyB0aGUgbWFzaywgc28gcG9zaXRpb24gdGhlIGN1cnNvciBhdCB0aGUgc3RhcnRcblx0XHRcdFx0XHRlbC5mb2N1cygpO1xuXHRcdFx0XHRcdGVsLnNldFNlbGVjdGlvblJhbmdlKHBvc1N0YXJ0LCBwb3NFbmQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHRoZSBpbnB1dCBjb250YWlucyBzb21lIGNoYXJhY3RlcnMgYWxyZWFkeVxuXHRcdFx0XHRcdGlmIChlbC5zZWxlY3Rpb25TdGFydCA+IHRoaXMuX21hc2tTZXJ2aWNlLmFjdHVhbFZhbHVlLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0Ly8gaWYgdGhlIHVzZXIgY2xpY2tlZCBiZXlvbmQgb3VyIHZhbHVlJ3MgbGVuZ3RoLCBwb3NpdGlvbiB0aGUgY3Vyc29yIGF0IHRoZSBlbmQgb2Ygb3VyIHZhbHVlXG5cdFx0XHRcdFx0XHRlbC5zZXRTZWxlY3Rpb25SYW5nZShcblx0XHRcdFx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UuYWN0dWFsVmFsdWUubGVuZ3RoLFxuXHRcdFx0XHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hY3R1YWxWYWx1ZS5sZW5ndGgsXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBuZXh0VmFsdWU6IHN0cmluZyB8IG51bGwgPVxuXHRcdFx0IWVsLnZhbHVlIHx8IGVsLnZhbHVlID09PSB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXhcblx0XHRcdFx0PyB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXggKyB0aGlzLl9tYXNrU2VydmljZS5tYXNrSXNTaG93blxuXHRcdFx0XHQ6IGVsLnZhbHVlO1xuXHRcdC8qKiBGaXggb2YgY3Vyc29yIHBvc2l0aW9uIGp1bXBpbmcgdG8gZW5kIGluIG1vc3QgYnJvd3NlcnMgbm8gbWF0dGVyIHdoZXJlIGN1cnNvciBpcyBpbnNlcnRlZCBvbkZvY3VzICovXG5cdFx0aWYgKGVsLnZhbHVlICE9PSBuZXh0VmFsdWUpIHtcblx0XHRcdGVsLnZhbHVlID0gbmV4dFZhbHVlO1xuXHRcdH1cblxuXHRcdC8qKiBmaXggb2YgY3Vyc29yIHBvc2l0aW9uIHdpdGggcHJlZml4IHdoZW4gbW91c2UgY2xpY2sgb2NjdXIgKi9cblx0XHRpZiAoXG5cdFx0XHQoKGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcikgfHwgKGVsLnNlbGVjdGlvbkVuZCBhcyBudW1iZXIpKSA8PVxuXHRcdFx0dGhpcy5fbWFza1NlcnZpY2UucHJlZml4Lmxlbmd0aFxuXHRcdCkge1xuXHRcdFx0ZWwuc2VsZWN0aW9uU3RhcnQgPSB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXgubGVuZ3RoO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zb2xlLmxvZyhlbC5zZWxlY3Rpb25FbmQsIHRoaXMuX2dldEFjdHVhbElucHV0TGVuZ3RoKCkpO1xuXHRcdC8qKiBzZWxlY3Qgb25seSBpbnNlcnRlZCB0ZXh0ICovXG5cdFx0aWYgKChlbC5zZWxlY3Rpb25FbmQgYXMgbnVtYmVyKSA+IHRoaXMuX2dldEFjdHVhbElucHV0TGVuZ3RoKCkpIHtcblx0XHRcdGVsLnNlbGVjdGlvbkVuZCA9IHRoaXMuX2dldEFjdHVhbElucHV0TGVuZ3RoKCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcblx0QEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG5cdHB1YmxpYyBvbktleURvd24oZTogQ3VzdG9tS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5fbWFza1ZhbHVlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuX2NvZGUgPSBlLmNvZGUgPyBlLmNvZGUgOiBlLmtleTtcblx0XHRjb25zdCBlbDogSFRNTElucHV0RWxlbWVudCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cdFx0dGhpcy5faW5wdXRWYWx1ZSA9IGVsLnZhbHVlO1xuXG5cdFx0dGhpcy5fc2V0TWFzaygpO1xuXG5cdFx0aWYgKGUua2V5Q29kZSA9PT0gMzgpIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdFx0aWYgKGUua2V5Q29kZSA9PT0gMzcgfHwgZS5rZXlDb2RlID09PSA4IHx8IGUua2V5Q29kZSA9PT0gNDYpIHtcblx0XHRcdGlmIChlLmtleUNvZGUgPT09IDggJiYgZWwudmFsdWUubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdGVsLnNlbGVjdGlvblN0YXJ0ID0gZWwuc2VsZWN0aW9uRW5kO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGUua2V5Q29kZSA9PT0gOCAmJiAoZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKSAhPT0gMCkge1xuXHRcdFx0XHQvLyBJZiBzcGVjaWFsQ2hhcnMgaXMgZmFsc2UsIChzaG91bGRuJ3QgZXZlciBoYXBwZW4pIHRoZW4gc2V0IHRvIHRoZSBkZWZhdWx0c1xuXHRcdFx0XHR0aGlzLnNwZWNpYWxDaGFyYWN0ZXJzID0gdGhpcy5zcGVjaWFsQ2hhcmFjdGVycz8ubGVuZ3RoXG5cdFx0XHRcdFx0PyB0aGlzLnNwZWNpYWxDaGFyYWN0ZXJzXG5cdFx0XHRcdFx0OiB0aGlzLl9jb25maWcuc3BlY2lhbENoYXJhY3RlcnM7XG5cdFx0XHRcdGlmICh0aGlzLnByZWZpeC5sZW5ndGggPiAxICYmIChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpIDw9IHRoaXMucHJlZml4Lmxlbmd0aCkge1xuXHRcdFx0XHRcdGVsLnNldFNlbGVjdGlvblJhbmdlKHRoaXMucHJlZml4Lmxlbmd0aCwgZWwuc2VsZWN0aW9uRW5kKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHR0aGlzLl9pbnB1dFZhbHVlLmxlbmd0aCAhPT0gKGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcikgJiZcblx0XHRcdFx0XHRcdChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpICE9PSAxXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoXG5cdFx0XHRcdFx0XHRcdHRoaXMuc3BlY2lhbENoYXJhY3RlcnMuaW5jbHVkZXMoXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5faW5wdXRWYWx1ZVsoZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKSAtIDFdIS50b1N0cmluZygpLFxuXHRcdFx0XHRcdFx0XHQpICYmXG5cdFx0XHRcdFx0XHRcdCgodGhpcy5wcmVmaXgubGVuZ3RoID49IDEgJiYgKGVsLnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcikgPiB0aGlzLnByZWZpeC5sZW5ndGgpIHx8XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcmVmaXgubGVuZ3RoID09PSAwKVxuXHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdGVsLnNldFNlbGVjdGlvblJhbmdlKChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpIC0gMSwgZWwuc2VsZWN0aW9uRW5kKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuY2hlY2tTZWxlY3Rpb25PbkRlbGV0aW9uKGVsKTtcblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UucHJlZml4Lmxlbmd0aCAmJlxuXHRcdFx0XHQoZWwuc2VsZWN0aW9uU3RhcnQgYXMgbnVtYmVyKSA8PSB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXgubGVuZ3RoICYmXG5cdFx0XHRcdChlbC5zZWxlY3Rpb25FbmQgYXMgbnVtYmVyKSA8PSB0aGlzLl9tYXNrU2VydmljZS5wcmVmaXgubGVuZ3RoXG5cdFx0XHQpIHtcblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgY3Vyc29yU3RhcnQ6IG51bWJlciB8IG51bGwgPSBlbC5zZWxlY3Rpb25TdGFydDtcblx0XHRcdGlmIChcblx0XHRcdFx0ZS5rZXlDb2RlID09PSA4ICYmXG5cdFx0XHRcdCFlbC5yZWFkT25seSAmJlxuXHRcdFx0XHRjdXJzb3JTdGFydCA9PT0gMCAmJlxuXHRcdFx0XHRlbC5zZWxlY3Rpb25FbmQgPT09IGVsLnZhbHVlLmxlbmd0aCAmJlxuXHRcdFx0XHRlbC52YWx1ZS5sZW5ndGggIT09IDBcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLl9wb3NpdGlvbiA9IHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeCA/IHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeC5sZW5ndGggOiAwO1xuXHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hcHBseU1hc2soXG5cdFx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UucHJlZml4LFxuXHRcdFx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLm1hc2tFeHByZXNzaW9uLFxuXHRcdFx0XHRcdHRoaXMuX3Bvc2l0aW9uLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHQhIXRoaXMuc3VmZml4ICYmXG5cdFx0XHR0aGlzLnN1ZmZpeC5sZW5ndGggPiAxICYmXG5cdFx0XHR0aGlzLl9pbnB1dFZhbHVlLmxlbmd0aCAtIHRoaXMuc3VmZml4Lmxlbmd0aCA8IChlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpXG5cdFx0KSB7XG5cdFx0XHRlbC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLl9pbnB1dFZhbHVlLmxlbmd0aCAtIHRoaXMuc3VmZml4Lmxlbmd0aCwgdGhpcy5faW5wdXRWYWx1ZS5sZW5ndGgpO1xuXHRcdH0gZWxzZSBpZiAoXG5cdFx0XHQoZS5rZXlDb2RlID09PSA2NSAmJiBlLmN0cmxLZXkpIHx8XG5cdFx0XHQoZS5rZXlDb2RlID09PSA2NSAmJiBlLm1ldGFLZXkpIC8vIENtZCArIEEgKE1hYylcblx0XHQpIHtcblx0XHRcdGVsLnNldFNlbGVjdGlvblJhbmdlKDAsIHRoaXMuX2dldEFjdHVhbElucHV0TGVuZ3RoKCkpO1xuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0XHR0aGlzLl9tYXNrU2VydmljZS5zZWxTdGFydCA9IGVsLnNlbGVjdGlvblN0YXJ0O1xuXHRcdHRoaXMuX21hc2tTZXJ2aWNlLnNlbEVuZCA9IGVsLnNlbGVjdGlvbkVuZDtcblx0fVxuXG5cdC8qKiBJdCB3cml0ZXMgdGhlIHZhbHVlIGluIHRoZSBpbnB1dCAqL1xuXHRwdWJsaWMgYXN5bmMgd3JpdGVWYWx1ZShcblx0XHRpbnB1dFZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB7IHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7IGRpc2FibGU/OiBib29sZWFuIH0sXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICh0eXBlb2YgaW5wdXRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgaW5wdXRWYWx1ZSAhPT0gbnVsbCAmJiAndmFsdWUnIGluIGlucHV0VmFsdWUpIHtcblx0XHRcdGlmICgnZGlzYWJsZScgaW4gaW5wdXRWYWx1ZSkge1xuXHRcdFx0XHR0aGlzLnNldERpc2FibGVkU3RhdGUoQm9vbGVhbihpbnB1dFZhbHVlLmRpc2FibGUpKTtcblx0XHRcdH1cblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuXHRcdFx0aW5wdXRWYWx1ZSA9IGlucHV0VmFsdWUudmFsdWU7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBpbnB1dFZhbHVlID09PSAnbnVtYmVyJykge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRpbnB1dFZhbHVlID0gU3RyaW5nKGlucHV0VmFsdWUpO1xuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZGVjaW1hbE1hcmtlcikpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG5cdFx0XHRcdGlucHV0VmFsdWUgPVxuXHRcdFx0XHRcdHRoaXMuZGVjaW1hbE1hcmtlciAhPT0gJy4nID8gaW5wdXRWYWx1ZS5yZXBsYWNlKCcuJywgdGhpcy5kZWNpbWFsTWFya2VyKSA6IGlucHV0VmFsdWU7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5pc051bWJlclZhbHVlID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblx0XHRcdGlucHV0VmFsdWUgPSAnJztcblx0XHR9XG5cblx0XHR0aGlzLl9pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZTtcblx0XHR0aGlzLl9zZXRNYXNrKCk7XG5cblx0XHRpZiAoXG5cdFx0XHQoaW5wdXRWYWx1ZSAmJiB0aGlzLl9tYXNrU2VydmljZS5tYXNrRXhwcmVzc2lvbikgfHxcblx0XHRcdCh0aGlzLl9tYXNrU2VydmljZS5tYXNrRXhwcmVzc2lvbiAmJlxuXHRcdFx0XHQodGhpcy5fbWFza1NlcnZpY2UucHJlZml4IHx8IHRoaXMuX21hc2tTZXJ2aWNlLnNob3dNYXNrVHlwZWQpKVxuXHRcdCkge1xuXHRcdFx0Ly8gTGV0IHRoZSBzZXJ2aWNlIHdlIGtub3cgd2UgYXJlIHdyaXRpbmcgdmFsdWUgc28gdGhhdCB0cmlnZ2VyaW5nIG9uQ2hhbmdlIGZ1bmN0aW9uIHdvbnQgaGFwcGVuIGR1cmluZyBhcHBseU1hc2tcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLndyaXRpbmdWYWx1ZSA9IHRydWU7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5mb3JtRWxlbWVudFByb3BlcnR5ID0gW1xuXHRcdFx0XHQndmFsdWUnLFxuXHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hcHBseU1hc2soaW5wdXRWYWx1ZSwgdGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24pLFxuXHRcdFx0XTtcblx0XHRcdC8vIExldCB0aGUgc2VydmljZSBrbm93IHdlJ3ZlIGZpbmlzaGVkIHdyaXRpbmcgdmFsdWVcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLndyaXRpbmdWYWx1ZSA9IGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5mb3JtRWxlbWVudFByb3BlcnR5ID0gWyd2YWx1ZScsIGlucHV0VmFsdWVdO1xuXHRcdH1cblx0XHR0aGlzLl9pbnB1dFZhbHVlID0gaW5wdXRWYWx1ZTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLm9uQ2hhbmdlID0gZm47XG5cdFx0dGhpcy5fbWFza1NlcnZpY2Uub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLm9uVG91Y2ggPSBmbjtcblx0fVxuXG5cdHB1YmxpYyBjaGVja1NlbGVjdGlvbk9uRGVsZXRpb24oZWw6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcblx0XHRlbC5zZWxlY3Rpb25TdGFydCA9IE1hdGgubWluKFxuXHRcdFx0TWF0aC5tYXgodGhpcy5wcmVmaXgubGVuZ3RoLCBlbC5zZWxlY3Rpb25TdGFydCBhcyBudW1iZXIpLFxuXHRcdFx0dGhpcy5faW5wdXRWYWx1ZS5sZW5ndGggLSB0aGlzLnN1ZmZpeC5sZW5ndGgsXG5cdFx0KTtcblx0XHRlbC5zZWxlY3Rpb25FbmQgPSBNYXRoLm1pbihcblx0XHRcdE1hdGgubWF4KHRoaXMucHJlZml4Lmxlbmd0aCwgZWwuc2VsZWN0aW9uRW5kIGFzIG51bWJlciksXG5cdFx0XHR0aGlzLl9pbnB1dFZhbHVlLmxlbmd0aCAtIHRoaXMuc3VmZml4Lmxlbmd0aCxcblx0XHQpO1xuXHR9XG5cblx0LyoqIEl0IGRpc2FibGVzIHRoZSBpbnB1dCBlbGVtZW50ICovXG5cdHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLl9tYXNrU2VydmljZS5mb3JtRWxlbWVudFByb3BlcnR5ID0gWydkaXNhYmxlZCcsIGlzRGlzYWJsZWRdO1xuXHR9XG5cblx0cHJpdmF0ZSBfcmVwZWF0UGF0dGVyblN5bWJvbHMobWFza0V4cDogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KG1hc2tFeHAubWF0Y2goL3tbMC05XSt9LykgJiZcblx0XHRcdFx0bWFza0V4cC5zcGxpdCgnJykucmVkdWNlKChhY2N1bTogc3RyaW5nLCBjdXJydmFsOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuXHRcdFx0XHRcdHRoaXMuX3N0YXJ0ID0gY3VycnZhbCA9PT0gJ3snID8gaW5kZXggOiB0aGlzLl9zdGFydDtcblxuXHRcdFx0XHRcdGlmIChjdXJydmFsICE9PSAnfScpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0aGlzLl9tYXNrU2VydmljZS5fZmluZFNwZWNpYWxDaGFyKGN1cnJ2YWwpID8gYWNjdW0gKyBjdXJydmFsIDogYWNjdW07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuX2VuZCA9IGluZGV4O1xuXHRcdFx0XHRcdGNvbnN0IHJlcGVhdE51bWJlcjogbnVtYmVyID0gTnVtYmVyKG1hc2tFeHAuc2xpY2UodGhpcy5fc3RhcnQgKyAxLCB0aGlzLl9lbmQpKTtcblx0XHRcdFx0XHRjb25zdCByZXBsYWNlV2l0aDogc3RyaW5nID0gbmV3IEFycmF5KHJlcGVhdE51bWJlciArIDEpLmpvaW4obWFza0V4cFt0aGlzLl9zdGFydCAtIDFdKTtcblx0XHRcdFx0XHRyZXR1cm4gYWNjdW0gKyByZXBsYWNlV2l0aDtcblx0XHRcdFx0fSwgJycpKSB8fFxuXHRcdFx0bWFza0V4cFxuXHRcdCk7XG5cdH1cblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRwcml2YXRlIF9hcHBseU1hc2soKTogYW55IHtcblx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrRXhwcmVzc2lvbiA9IHRoaXMuX3JlcGVhdFBhdHRlcm5TeW1ib2xzKHRoaXMuX21hc2tWYWx1ZSB8fCAnJyk7XG5cdFx0dGhpcy5fbWFza1NlcnZpY2UuZm9ybUVsZW1lbnRQcm9wZXJ0eSA9IFtcblx0XHRcdCd2YWx1ZScsXG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hcHBseU1hc2sodGhpcy5faW5wdXRWYWx1ZSwgdGhpcy5fbWFza1NlcnZpY2UubWFza0V4cHJlc3Npb24pLFxuXHRcdF07XG5cdH1cblxuXHRwcml2YXRlIF92YWxpZGF0ZVRpbWUodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcblx0XHRjb25zdCByb3dNYXNrTGVuOiBudW1iZXIgPSB0aGlzLl9tYXNrVmFsdWUuc3BsaXQoJycpLmZpbHRlcigoczogc3RyaW5nKSA9PiBzICE9PSAnOicpLmxlbmd0aDtcblx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDsgLy8gRG9uJ3QgdmFsaWRhdGUgZW1wdHkgdmFsdWVzIHRvIGFsbG93IGZvciBvcHRpb25hbCBmb3JtIGNvbnRyb2xcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHQoK3ZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdISA9PT0gMCAmJiB2YWx1ZS5sZW5ndGggPCByb3dNYXNrTGVuKSB8fFxuXHRcdFx0dmFsdWUubGVuZ3RoIDw9IHJvd01hc2tMZW4gLSAyXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fY3JlYXRlVmFsaWRhdGlvbkVycm9yKHZhbHVlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHByaXZhdGUgX2dldEFjdHVhbElucHV0TGVuZ3RoKCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLl9tYXNrU2VydmljZS5hY3R1YWxWYWx1ZS5sZW5ndGggfHxcblx0XHRcdHRoaXMuX21hc2tTZXJ2aWNlLmFjdHVhbFZhbHVlLmxlbmd0aCArIHRoaXMuX21hc2tTZXJ2aWNlLnByZWZpeC5sZW5ndGhcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBfY3JlYXRlVmFsaWRhdGlvbkVycm9yKGFjdHVhbFZhbHVlOiBzdHJpbmcpOiBWYWxpZGF0aW9uRXJyb3JzIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bWFzazoge1xuXHRcdFx0XHRyZXF1aXJlZE1hc2s6IHRoaXMuX21hc2tWYWx1ZSxcblx0XHRcdFx0YWN0dWFsVmFsdWUsXG5cdFx0XHR9LFxuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIF9zZXRNYXNrKCkge1xuXHRcdGlmICh0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5Lmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuX21hc2tFeHByZXNzaW9uQXJyYXkuc29tZSgobWFzayk6IGJvb2xlYW4gfCB2b2lkID0+IHtcblx0XHRcdFx0Y29uc3QgdGVzdCA9XG5cdFx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UucmVtb3ZlTWFzayh0aGlzLl9pbnB1dFZhbHVlKT8ubGVuZ3RoIDw9XG5cdFx0XHRcdFx0dGhpcy5fbWFza1NlcnZpY2UucmVtb3ZlTWFzayhtYXNrKT8ubGVuZ3RoO1xuXHRcdFx0XHRpZiAodGhpcy5faW5wdXRWYWx1ZSAmJiB0ZXN0KSB7XG5cdFx0XHRcdFx0dGhpcy5fbWFza1ZhbHVlID0gbWFzaztcblx0XHRcdFx0XHR0aGlzLm1hc2tFeHByZXNzaW9uID0gbWFzaztcblx0XHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrRXhwcmVzc2lvbiA9IG1hc2s7XG5cdFx0XHRcdFx0cmV0dXJuIHRlc3Q7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fbWFza1ZhbHVlID0gdGhpcy5fbWFza0V4cHJlc3Npb25BcnJheVt0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5Lmxlbmd0aCAtIDFdITtcblx0XHRcdFx0XHR0aGlzLm1hc2tFeHByZXNzaW9uID0gdGhpcy5fbWFza0V4cHJlc3Npb25BcnJheVt0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5Lmxlbmd0aCAtIDFdITtcblx0XHRcdFx0XHR0aGlzLl9tYXNrU2VydmljZS5tYXNrRXhwcmVzc2lvbiA9XG5cdFx0XHRcdFx0XHR0aGlzLl9tYXNrRXhwcmVzc2lvbkFycmF5W3RoaXMuX21hc2tFeHByZXNzaW9uQXJyYXkubGVuZ3RoIC0gMV0hO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
@@ -18,9 +18,9 @@ export class MaskPipe {
18
18
  return this._maskService.applyMaskWithPattern(`${value}`, mask);
19
19
  }
20
20
  }
21
- MaskPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskPipe, deps: [{ token: i1.MaskApplierService }], target: i0.ɵɵFactoryTarget.Pipe });
22
- MaskPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskPipe, name: "mask" });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MaskPipe, decorators: [{
21
+ MaskPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskPipe, deps: [{ token: i1.MaskApplierService }], target: i0.ɵɵFactoryTarget.Pipe });
22
+ MaskPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskPipe, name: "mask" });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: MaskPipe, decorators: [{
24
24
  type: Pipe,
25
25
  args: [{
26
26
  name: 'mask',