@angular/core 14.1.0 → 14.2.0-next.1

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.
Files changed (37) hide show
  1. package/esm2020/src/application_ref.mjs +26 -21
  2. package/esm2020/src/core_private_export.mjs +2 -2
  3. package/esm2020/src/core_render3_private_export.mjs +4 -4
  4. package/esm2020/src/di/injector_compatibility.mjs +2 -2
  5. package/esm2020/src/di/interface/defs.mjs +4 -1
  6. package/esm2020/src/render3/component_ref.mjs +4 -31
  7. package/esm2020/src/render3/definition.mjs +5 -5
  8. package/esm2020/src/render3/index.mjs +4 -4
  9. package/esm2020/src/render3/instructions/change_detection.mjs +3 -19
  10. package/esm2020/src/render3/instructions/element_validation.mjs +9 -5
  11. package/esm2020/src/render3/instructions/shared.mjs +10 -50
  12. package/esm2020/src/render3/interfaces/view.mjs +1 -1
  13. package/esm2020/src/render3/jit/module.mjs +2 -6
  14. package/esm2020/src/render3/util/change_detection_utils.mjs +7 -3
  15. package/esm2020/src/render3/util/misc_utils.mjs +1 -7
  16. package/esm2020/src/version.mjs +1 -1
  17. package/esm2020/testing/src/logger.mjs +3 -3
  18. package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
  19. package/esm2020/testing/src/test_bed.mjs +442 -15
  20. package/esm2020/testing/src/test_bed_common.mjs +1 -1
  21. package/esm2020/testing/src/test_bed_compiler.mjs +823 -0
  22. package/esm2020/testing/src/test_hooks.mjs +5 -5
  23. package/esm2020/testing/src/testing.mjs +1 -1
  24. package/fesm2015/core.mjs +56 -132
  25. package/fesm2015/core.mjs.map +1 -1
  26. package/fesm2015/testing.mjs +132 -218
  27. package/fesm2015/testing.mjs.map +1 -1
  28. package/fesm2020/core.mjs +56 -132
  29. package/fesm2020/core.mjs.map +1 -1
  30. package/fesm2020/testing.mjs +132 -219
  31. package/fesm2020/testing.mjs.map +1 -1
  32. package/index.d.ts +7 -100
  33. package/package.json +1 -1
  34. package/testing/index.d.ts +18 -94
  35. package/esm2020/src/render3/interfaces/player.mjs +0 -9
  36. package/esm2020/testing/src/r3_test_bed.mjs +0 -433
  37. package/esm2020/testing/src/r3_test_bed_compiler.mjs +0 -823
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.1.0
2
+ * @license Angular v14.2.0-next.1
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1316,8 +1316,6 @@ declare class ComponentFactoryResolver_2 extends ComponentFactoryResolver {
1316
1316
  resolveComponentFactory<T>(component: Type<T>): ComponentFactory<T>;
1317
1317
  }
1318
1318
 
1319
- declare type ComponentInstance = {};
1320
-
1321
1319
  /**
1322
1320
  * An interface that describes the subset of component metadata
1323
1321
  * that can be retrieved using the `reflectComponentType` function.
@@ -2512,8 +2510,6 @@ declare type DirectiveDefList = (ɵDirectiveDef<any> | ɵComponentDef<any>)[];
2512
2510
  */
2513
2511
  declare type DirectiveDefListOrFactory = (() => DirectiveDefList) | DirectiveDefList;
2514
2512
 
2515
- declare type DirectiveInstance = {};
2516
-
2517
2513
  /**
2518
2514
  * @description
2519
2515
  * Hook for manual bootstrapping of the application instead of using `bootstrap` array in @NgModule
@@ -10317,7 +10313,8 @@ export declare function ɵinjectChangeDetectorRef(flags: InjectFlags): ChangeDet
10317
10313
  export declare const ɵINJECTOR_SCOPE: InjectionToken<InjectorScope | null>;
10318
10314
 
10319
10315
  /**
10320
- * Internal bootstrap application API that implements the core bootstrap logic.
10316
+ * Internal create application API that implements the core application creation logic and optional
10317
+ * bootstrap logic.
10321
10318
  *
10322
10319
  * Platforms (such as `platform-browser`) may require different set of application and platform
10323
10320
  * providers for an application to function correctly. As a result, platforms may use this function
@@ -10326,8 +10323,8 @@ export declare const ɵINJECTOR_SCOPE: InjectionToken<InjectorScope | null>;
10326
10323
  *
10327
10324
  * @returns A promise that returns an `ApplicationRef` instance once resolved.
10328
10325
  */
10329
- export declare function ɵinternalBootstrapApplication(config: {
10330
- rootComponent: Type<unknown>;
10326
+ export declare function ɵinternalCreateApplication(config: {
10327
+ rootComponent?: Type<unknown>;
10331
10328
  appProviders?: Array<Provider | ImportedNgModuleProviders>;
10332
10329
  platformProviders?: Provider[];
10333
10330
  }): Promise<ApplicationRef>;
@@ -10343,6 +10340,8 @@ export declare function ɵisBoundToModule<C>(cf: ComponentFactory<C>): boolean;
10343
10340
  */
10344
10341
  export declare function ɵisDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy): boolean;
10345
10342
 
10343
+ export declare function ɵisInjectable(type: any): boolean;
10344
+
10346
10345
  export declare function ɵisListLikeIterable(obj: any): boolean;
10347
10346
 
10348
10347
  /**
@@ -10477,17 +10476,6 @@ export declare function ɵmakeDecorator<T>(name: string, props?: (...args: any[]
10477
10476
  (...args: any[]): (cls: any) => any;
10478
10477
  };
10479
10478
 
10480
- /**
10481
- * Marks the component as dirty (needing change detection). Marking a component dirty will
10482
- * schedule a change detection on it at some point in the future.
10483
- *
10484
- * Marking an already dirty component as dirty won't do anything. Only one outstanding change
10485
- * detection can be scheduled per component tree.
10486
- *
10487
- * @param component Component to mark as dirty.
10488
- */
10489
- export declare function ɵmarkDirty(component: {}): void;
10490
-
10491
10479
 
10492
10480
  export declare const ɵNG_COMP_DEF: string;
10493
10481
 
@@ -10662,69 +10650,6 @@ export declare interface ɵPipeDef<T> {
10662
10650
  onDestroy: (() => void) | null;
10663
10651
  }
10664
10652
 
10665
-
10666
- /**
10667
- * A shared interface which contains an animation player
10668
- */
10669
- export declare interface ɵPlayer {
10670
- parent?: ɵPlayer | null;
10671
- state: ɵPlayState;
10672
- play(): void;
10673
- pause(): void;
10674
- finish(): void;
10675
- destroy(): void;
10676
- addEventListener(state: ɵPlayState | string, cb: (data?: any) => any): void;
10677
- }
10678
-
10679
- /**
10680
- * Used as a reference to build a player from a styling template binding
10681
- * (`[style]` and `[class]`).
10682
- *
10683
- * The `fn` function will be called once any styling-related changes are
10684
- * evaluated on an element and is expected to return a player that will
10685
- * be then run on the element.
10686
- *
10687
- * `[style]`, `[style.prop]`, `[class]` and `[class.name]` template bindings
10688
- * all accept a `PlayerFactory` as input and this player factories.
10689
- */
10690
- export declare interface ɵPlayerFactory {
10691
- '__brand__': 'Brand for PlayerFactory that nothing will match';
10692
- }
10693
-
10694
- /**
10695
- * Designed to be used as an injection service to capture all animation players.
10696
- *
10697
- * When present all animation players will be passed into the flush method below.
10698
- * This feature is designed to service application-wide animation testing, live
10699
- * debugging as well as custom animation choreographing tools.
10700
- */
10701
- export declare interface ɵPlayerHandler {
10702
- /**
10703
- * Designed to kick off the player at the end of change detection
10704
- */
10705
- flushPlayers(): void;
10706
- /**
10707
- * @param player The player that has been scheduled to run within the application.
10708
- * @param context The context as to where the player was bound to
10709
- */
10710
- queuePlayer(player: ɵPlayer, context: ComponentInstance | DirectiveInstance | HTMLElement): void;
10711
- }
10712
-
10713
- /**
10714
- * The state of a given player
10715
- *
10716
- * Do not change the increasing nature of the numbers since the player
10717
- * code may compare state by checking if a number is higher or lower than
10718
- * a certain numeric value.
10719
- */
10720
- export declare const enum ɵPlayState {
10721
- Pending = 0,
10722
- Running = 1,
10723
- Paused = 2,
10724
- Finished = 100,
10725
- Destroyed = 200
10726
- }
10727
-
10728
10653
  /**
10729
10654
  * Profiler function which the runtime will invoke before and after user code.
10730
10655
  */
@@ -11312,24 +11237,6 @@ export declare class ɵViewRef<T> implements EmbeddedViewRef<T>, InternalViewRef
11312
11237
  attachToAppRef(appRef: ViewRefTracker): void;
11313
11238
  }
11314
11239
 
11315
- /**
11316
- * Wait on component until it is rendered.
11317
- *
11318
- * This function returns a `Promise` which is resolved when the component's
11319
- * change detection is executed. This is determined by finding the scheduler
11320
- * associated with the `component`'s render tree and waiting until the scheduler
11321
- * flushes. If nothing is scheduled, the function returns a resolved promise.
11322
- *
11323
- * Example:
11324
- * ```
11325
- * await whenRendered(myComponent);
11326
- * ```
11327
- *
11328
- * @param component Component to wait upon
11329
- * @returns Promise which resolves when the component is rendered.
11330
- */
11331
- export declare function ɵwhenRendered(component: any): Promise<null>;
11332
-
11333
11240
  /**
11334
11241
  * Advances to an element for later binding instructions.
11335
11242
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/core",
3
- "version": "14.1.0",
3
+ "version": "14.2.0-next.1",
4
4
  "description": "Angular - the core framework",
5
5
  "author": "angular",
6
6
  "license": "MIT",
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v14.1.0
2
+ * @license Angular v14.2.0-next.1
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -178,13 +178,11 @@ export declare function flush(maxTurns?: number): number;
178
178
  export declare function flushMicrotasks(): void;
179
179
 
180
180
  /**
181
- * Returns a singleton of the applicable `TestBed`.
182
- *
183
- * It will be either an instance of `TestBedViewEngine` or `TestBedRender3`.
181
+ * Returns a singleton of the `TestBed` class.
184
182
  *
185
183
  * @publicApi
186
184
  */
187
- export declare const getTestBed: () => TestBed;
185
+ export declare function getTestBed(): TestBed;
188
186
 
189
187
  /**
190
188
  * Allows injecting dependencies in `beforeEach()` and `it()`. Note: this function
@@ -255,8 +253,8 @@ export declare function resetFakeAsyncZone(): void;
255
253
  * @publicApi
256
254
  */
257
255
  export declare interface TestBed {
258
- platform: PlatformRef;
259
- ngModule: Type<any> | Type<any>[];
256
+ get platform(): PlatformRef;
257
+ get ngModule(): Type<any> | Type<any>[];
260
258
  /**
261
259
  * Initialize the environment for testing with a compiler factory, a PlatformRef, and an
262
260
  * angular module. These are common to every test in the suite.
@@ -273,12 +271,12 @@ export declare interface TestBed {
273
271
  * Reset the providers for the test injector.
274
272
  */
275
273
  resetTestEnvironment(): void;
276
- resetTestingModule(): void;
274
+ resetTestingModule(): TestBed;
277
275
  configureCompiler(config: {
278
276
  providers?: any[];
279
277
  useJit?: boolean;
280
278
  }): void;
281
- configureTestingModule(moduleDef: TestModuleMetadata): void;
279
+ configureTestingModule(moduleDef: TestModuleMetadata): TestBed;
282
280
  compileComponents(): Promise<any>;
283
281
  inject<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
284
282
  inject<T>(token: ProviderToken<T>, notFoundValue: null, flags?: InjectFlags): T | null;
@@ -287,26 +285,27 @@ export declare interface TestBed {
287
285
  /** @deprecated from v9.0.0 use TestBed.inject */
288
286
  get(token: any, notFoundValue?: any): any;
289
287
  execute(tokens: any[], fn: Function, context?: any): any;
290
- overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): void;
291
- overrideComponent(component: Type<any>, override: MetadataOverride<Component>): void;
292
- overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): void;
293
- overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): void;
288
+ overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): TestBed;
289
+ overrideComponent(component: Type<any>, override: MetadataOverride<Component>): TestBed;
290
+ overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): TestBed;
291
+ overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): TestBed;
292
+ overrideTemplate(component: Type<any>, template: string): TestBed;
294
293
  /**
295
294
  * Overwrites all providers for the given token with the given provider definition.
296
295
  */
297
296
  overrideProvider(token: any, provider: {
298
297
  useFactory: Function;
299
298
  deps: any[];
300
- }): void;
299
+ }): TestBed;
301
300
  overrideProvider(token: any, provider: {
302
301
  useValue: any;
303
- }): void;
302
+ }): TestBed;
304
303
  overrideProvider(token: any, provider: {
305
304
  useFactory?: Function;
306
305
  useValue?: any;
307
306
  deps?: any[];
308
- }): void;
309
- overrideTemplateUsingTestingModule(component: Type<any>, template: string): void;
307
+ }): TestBed;
308
+ overrideTemplateUsingTestingModule(component: Type<any>, template: string): TestBed;
310
309
  createComponent<T>(component: Type<T>): ComponentFixture<T>;
311
310
  }
312
311
 
@@ -317,92 +316,17 @@ export declare interface TestBed {
317
316
  *
318
317
  * `TestBed` is the primary api for writing unit tests for Angular applications and libraries.
319
318
  *
320
- * Note: Use `TestBed` in tests. It will be set to either `TestBedViewEngine` or `TestBedRender3`
321
- * according to the compiler used.
322
- *
323
319
  * @publicApi
324
320
  */
325
321
  export declare const TestBed: TestBedStatic;
326
322
 
327
323
  /**
328
- * Static methods implemented by the `TestBedViewEngine` and `TestBedRender3`
324
+ * Static methods implemented by the `TestBed`.
329
325
  *
330
326
  * @publicApi
331
327
  */
332
- export declare interface TestBedStatic {
328
+ export declare interface TestBedStatic extends TestBed {
333
329
  new (...args: any[]): TestBed;
334
- /**
335
- * Initialize the environment for testing with a compiler factory, a PlatformRef, and an
336
- * angular module. These are common to every test in the suite.
337
- *
338
- * This may only be called once, to set up the common providers for the current test
339
- * suite on the current platform. If you absolutely need to change the providers,
340
- * first use `resetTestEnvironment`.
341
- *
342
- * Test modules and platforms for individual platforms are available from
343
- * '@angular/<platform_name>/testing'.
344
- */
345
- initTestEnvironment(ngModule: Type<any> | Type<any>[], platform: PlatformRef, options?: TestEnvironmentOptions): TestBed;
346
- /**
347
- * Reset the providers for the test injector.
348
- */
349
- resetTestEnvironment(): void;
350
- resetTestingModule(): TestBedStatic;
351
- /**
352
- * Allows overriding default compiler providers and settings
353
- * which are defined in test_injector.js
354
- */
355
- configureCompiler(config: {
356
- providers?: any[];
357
- useJit?: boolean;
358
- }): TestBedStatic;
359
- /**
360
- * Allows overriding default providers, directives, pipes, modules of the test injector,
361
- * which are defined in test_injector.js
362
- */
363
- configureTestingModule(moduleDef: TestModuleMetadata): TestBedStatic;
364
- /**
365
- * Compile components with a `templateUrl` for the test's NgModule.
366
- * It is necessary to call this function
367
- * as fetching urls is asynchronous.
368
- */
369
- compileComponents(): Promise<any>;
370
- overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): TestBedStatic;
371
- overrideComponent(component: Type<any>, override: MetadataOverride<Component>): TestBedStatic;
372
- overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): TestBedStatic;
373
- overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): TestBedStatic;
374
- overrideTemplate(component: Type<any>, template: string): TestBedStatic;
375
- /**
376
- * Overrides the template of the given component, compiling the template
377
- * in the context of the TestingModule.
378
- *
379
- * Note: This works for JIT and AOTed components as well.
380
- */
381
- overrideTemplateUsingTestingModule(component: Type<any>, template: string): TestBedStatic;
382
- /**
383
- * Overwrites all providers for the given token with the given provider definition.
384
- *
385
- * Note: This works for JIT and AOTed components as well.
386
- */
387
- overrideProvider(token: any, provider: {
388
- useFactory: Function;
389
- deps: any[];
390
- }): TestBedStatic;
391
- overrideProvider(token: any, provider: {
392
- useValue: any;
393
- }): TestBedStatic;
394
- overrideProvider(token: any, provider: {
395
- useFactory?: Function;
396
- useValue?: any;
397
- deps?: any[];
398
- }): TestBedStatic;
399
- inject<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): T;
400
- inject<T>(token: ProviderToken<T>, notFoundValue: null, flags?: InjectFlags): T | null;
401
- /** @deprecated from v9.0.0 use TestBed.inject */
402
- get<T>(token: ProviderToken<T>, notFoundValue?: T, flags?: InjectFlags): any;
403
- /** @deprecated from v9.0.0 use TestBed.inject */
404
- get(token: any, notFoundValue?: any): any;
405
- createComponent<T>(component: Type<T>): ComponentFixture<T>;
406
330
  }
407
331
 
408
332
  /**
@@ -1,9 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export {};
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9pbnRlcmZhY2VzL3BsYXllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIHNoYXJlZCBpbnRlcmZhY2Ugd2hpY2ggY29udGFpbnMgYW4gYW5pbWF0aW9uIHBsYXllclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYXllciB7XG4gIHBhcmVudD86IFBsYXllcnxudWxsO1xuICBzdGF0ZTogUGxheVN0YXRlO1xuICBwbGF5KCk6IHZvaWQ7XG4gIHBhdXNlKCk6IHZvaWQ7XG4gIGZpbmlzaCgpOiB2b2lkO1xuICBkZXN0cm95KCk6IHZvaWQ7XG4gIGFkZEV2ZW50TGlzdGVuZXIoc3RhdGU6IFBsYXlTdGF0ZXxzdHJpbmcsIGNiOiAoZGF0YT86IGFueSkgPT4gYW55KTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gQmluZGluZ1R5cGUge1xuICBVbnNldCA9IDAsXG4gIENsYXNzID0gMSxcbiAgU3R5bGUgPSAyLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpbmRpbmdTdG9yZSB7XG4gIHNldFZhbHVlKHByb3A6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgc2hhcGUgd2hpY2ggcHJvZHVjZXMgdGhlIFBsYXllci5cbiAqXG4gKiBVc2VkIHRvIHByb2R1Y2UgYSBwbGF5ZXIgdGhhdCB3aWxsIGJlIHBsYWNlZCBvbiBhbiBlbGVtZW50IHRoYXQgY29udGFpbnNcbiAqIHN0eWxpbmcgYmluZGluZ3MgdGhhdCBtYWtlIHVzZSBvZiB0aGUgcGxheWVyLiBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkXG4gKiB0byBiZSB1c2VkIHdpdGggYFBsYXllckZhY3RvcnlgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsYXllckZhY3RvcnlCdWlsZEZuIHtcbiAgKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB0eXBlOiBCaW5kaW5nVHlwZSwgdmFsdWVzOiB7W2tleTogc3RyaW5nXTogYW55fSwgaXNGaXJzdFJlbmRlcjogYm9vbGVhbixcbiAgIGN1cnJlbnRQbGF5ZXI6IFBsYXllcnxudWxsKTogUGxheWVyfG51bGw7XG59XG5cbi8qKlxuICogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byBidWlsZCBhIHBsYXllciBmcm9tIGEgc3R5bGluZyB0ZW1wbGF0ZSBiaW5kaW5nXG4gKiAoYFtzdHlsZV1gIGFuZCBgW2NsYXNzXWApLlxuICpcbiAqIFRoZSBgZm5gIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9uY2UgYW55IHN0eWxpbmctcmVsYXRlZCBjaGFuZ2VzIGFyZVxuICogZXZhbHVhdGVkIG9uIGFuIGVsZW1lbnQgYW5kIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHBsYXllciB0aGF0IHdpbGxcbiAqIGJlIHRoZW4gcnVuIG9uIHRoZSBlbGVtZW50LlxuICpcbiAqIGBbc3R5bGVdYCwgYFtzdHlsZS5wcm9wXWAsIGBbY2xhc3NdYCBhbmQgYFtjbGFzcy5uYW1lXWAgdGVtcGxhdGUgYmluZGluZ3NcbiAqIGFsbCBhY2NlcHQgYSBgUGxheWVyRmFjdG9yeWAgYXMgaW5wdXQgYW5kIHRoaXMgcGxheWVyIGZhY3Rvcmllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF5ZXJGYWN0b3J5IHtcbiAgJ19fYnJhbmRfXyc6ICdCcmFuZCBmb3IgUGxheWVyRmFjdG9yeSB0aGF0IG5vdGhpbmcgd2lsbCBtYXRjaCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGxheWVyQnVpbGRlciBleHRlbmRzIEJpbmRpbmdTdG9yZSB7XG4gIGJ1aWxkUGxheWVyKGN1cnJlbnRQbGF5ZXI6IFBsYXllcnxudWxsLCBpc0ZpcnN0UmVuZGVyOiBib29sZWFuKTogUGxheWVyfHVuZGVmaW5lZHxudWxsO1xufVxuXG4vKipcbiAqIFRoZSBzdGF0ZSBvZiBhIGdpdmVuIHBsYXllclxuICpcbiAqIERvIG5vdCBjaGFuZ2UgdGhlIGluY3JlYXNpbmcgbmF0dXJlIG9mIHRoZSBudW1iZXJzIHNpbmNlIHRoZSBwbGF5ZXJcbiAqIGNvZGUgbWF5IGNvbXBhcmUgc3RhdGUgYnkgY2hlY2tpbmcgaWYgYSBudW1iZXIgaXMgaGlnaGVyIG9yIGxvd2VyIHRoYW5cbiAqIGEgY2VydGFpbiBudW1lcmljIHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgZW51bSBQbGF5U3RhdGUge1xuICBQZW5kaW5nID0gMCxcbiAgUnVubmluZyA9IDEsXG4gIFBhdXNlZCA9IDIsXG4gIEZpbmlzaGVkID0gMTAwLFxuICBEZXN0cm95ZWQgPSAyMDBcbn1cblxuLyoqXG4gKiBUaGUgY29udGV4dCB0aGF0IHN0b3JlcyBhbGwgdGhlIGFjdGl2ZSBwbGF5ZXJzIGFuZCBxdWV1ZWQgcGxheWVyIGZhY3RvcmllcyBwcmVzZW50IG9uIGFuIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGxheWVyQ29udGV4dCBleHRlbmRzIEFycmF5PG51bGx8bnVtYmVyfFBsYXllcnxQbGF5ZXJCdWlsZGVyPiB7XG4gIFtQbGF5ZXJJbmRleC5Ob25CdWlsZGVyUGxheWVyc1N0YXJ0XTogbnVtYmVyO1xuICBbUGxheWVySW5kZXguQ2xhc3NNYXBQbGF5ZXJCdWlsZGVyUG9zaXRpb25dOiBQbGF5ZXJCdWlsZGVyfG51bGw7XG4gIFtQbGF5ZXJJbmRleC5DbGFzc01hcFBsYXllclBvc2l0aW9uXTogUGxheWVyfG51bGw7XG4gIFtQbGF5ZXJJbmRleC5TdHlsZU1hcFBsYXllckJ1aWxkZXJQb3NpdGlvbl06IFBsYXllckJ1aWxkZXJ8bnVsbDtcbiAgW1BsYXllckluZGV4LlN0eWxlTWFwUGxheWVyUG9zaXRpb25dOiBQbGF5ZXJ8bnVsbDtcbn1cblxuLyoqXG4gKiBEZXNpZ25lZCB0byBiZSB1c2VkIGFzIGFuIGluamVjdGlvbiBzZXJ2aWNlIHRvIGNhcHR1cmUgYWxsIGFuaW1hdGlvbiBwbGF5ZXJzLlxuICpcbiAqIFdoZW4gcHJlc2VudCBhbGwgYW5pbWF0aW9uIHBsYXllcnMgd2lsbCBiZSBwYXNzZWQgaW50byB0aGUgZmx1c2ggbWV0aG9kIGJlbG93LlxuICogVGhpcyBmZWF0dXJlIGlzIGRlc2lnbmVkIHRvIHNlcnZpY2UgYXBwbGljYXRpb24td2lkZSBhbmltYXRpb24gdGVzdGluZywgbGl2ZVxuICogZGVidWdnaW5nIGFzIHdlbGwgYXMgY3VzdG9tIGFuaW1hdGlvbiBjaG9yZW9ncmFwaGluZyB0b29scy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbGF5ZXJIYW5kbGVyIHtcbiAgLyoqXG4gICAqIERlc2lnbmVkIHRvIGtpY2sgb2ZmIHRoZSBwbGF5ZXIgYXQgdGhlIGVuZCBvZiBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqL1xuICBmbHVzaFBsYXllcnMoKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHBsYXllciBUaGUgcGxheWVyIHRoYXQgaGFzIGJlZW4gc2NoZWR1bGVkIHRvIHJ1biB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uLlxuICAgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBhcyB0byB3aGVyZSB0aGUgcGxheWVyIHdhcyBib3VuZCB0b1xuICAgKi9cbiAgcXVldWVQbGF5ZXIocGxheWVyOiBQbGF5ZXIsIGNvbnRleHQ6IENvbXBvbmVudEluc3RhbmNlfERpcmVjdGl2ZUluc3RhbmNlfEhUTUxFbGVtZW50KTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gUGxheWVySW5kZXgge1xuICAvLyBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIGluZGV4IHRoYXQgcmV2ZWFscyB3aGVyZSBwbGF5ZXJzIHN0YXJ0IGluIHRoZSBQbGF5ZXJDb250ZXh0XG4gIE5vbkJ1aWxkZXJQbGF5ZXJzU3RhcnQgPSAwLFxuICAvLyBUaGUgcG9zaXRpb24gd2hlcmUgdGhlIHBsYXllciBidWlsZGVyIGxpdmVzICh3aGljaCBoYW5kbGVzIHtrZXk6dmFsdWV9IG1hcCBleHByZXNzaW9uKSBmb3JcbiAgLy8gY2xhc3Nlc1xuICBDbGFzc01hcFBsYXllckJ1aWxkZXJQb3NpdGlvbiA9IDEsXG4gIC8vIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgbGFzdCBwbGF5ZXIgYXNzaWduZWQgdG8gdGhlIGNsYXNzIHBsYXllciBidWlsZGVyIGlzIHN0b3JlZFxuICBDbGFzc01hcFBsYXllclBvc2l0aW9uID0gMixcbiAgLy8gVGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBwbGF5ZXIgYnVpbGRlciBsaXZlcyAod2hpY2ggaGFuZGxlcyB7a2V5OnZhbHVlfSBtYXAgZXhwcmVzc2lvbikgZm9yXG4gIC8vIHN0eWxlc1xuICBTdHlsZU1hcFBsYXllckJ1aWxkZXJQb3NpdGlvbiA9IDMsXG4gIC8vIFRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgbGFzdCBwbGF5ZXIgYXNzaWduZWQgdG8gdGhlIHN0eWxlIHBsYXllciBidWlsZGVyIGlzIHN0b3JlZFxuICBTdHlsZU1hcFBsYXllclBvc2l0aW9uID0gNCxcbiAgLy8gVGhlIHBvc2l0aW9uIHdoZXJlIGFueSBwbGF5ZXIgYnVpbGRlcnMgc3RhcnQgaW4gdGhlIFBsYXllckNvbnRleHRcbiAgUGxheWVyQnVpbGRlcnNTdGFydFBvc2l0aW9uID0gMSxcbiAgLy8gVGhlIHBvc2l0aW9uIHdoZXJlIG5vbiBtYXAtYmFzZWQgcGxheWVyIGJ1aWxkZXJzIHN0YXJ0IGluIHRoZSBQbGF5ZXJDb250ZXh0XG4gIFNpbmdsZVBsYXllckJ1aWxkZXJzU3RhcnRQb3NpdGlvbiA9IDUsXG4gIC8vIEZvciBlYWNoIHBsYXllciBidWlsZGVyIHRoZXJlIGlzIGEgcGxheWVyIGluIHRoZSBwbGF5ZXIgY29udGV4dCAodGhlcmVmb3JlIHNpemUgPSAyKVxuICBQbGF5ZXJBbmRQbGF5ZXJCdWlsZGVyc1R1cGxlU2l6ZSA9IDIsXG4gIC8vIFRoZSBwbGF5ZXIgZXhpc3RzIG5leHQgdG8gdGhlIHBsYXllciBidWlsZGVyIGluIHRoZSBsaXN0XG4gIFBsYXllck9mZnNldFBvc2l0aW9uID0gMSxcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBDb21wb25lbnRJbnN0YW5jZSA9IHt9O1xuZXhwb3J0IGRlY2xhcmUgdHlwZSBEaXJlY3RpdmVJbnN0YW5jZSA9IHt9O1xuIl19