@ionic/angular 8.0.0-beta.2 → 8.0.0-beta.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.
Files changed (232) hide show
  1. package/common/directives/control-value-accessors/value-accessor.d.ts +1 -1
  2. package/common/directives/navigation/back-button.d.ts +1 -4
  3. package/common/directives/navigation/nav.d.ts +1 -1
  4. package/common/directives/navigation/router-link-delegate.d.ts +2 -2
  5. package/common/directives/navigation/router-outlet.d.ts +6 -6
  6. package/common/directives/navigation/tabs.d.ts +5 -5
  7. package/common/overlays/modal.d.ts +1 -1
  8. package/common/overlays/popover.d.ts +1 -1
  9. package/common/providers/dom-controller.d.ts +1 -1
  10. package/css/palettes/dark.always.css.map +1 -0
  11. package/css/{themes → palettes}/dark.class.css +4 -4
  12. package/css/palettes/dark.class.css.map +1 -0
  13. package/css/palettes/dark.system.css.map +1 -0
  14. package/css/palettes/high-contrast-dark.always.css.map +1 -0
  15. package/css/{themes → palettes}/high-contrast-dark.class.css +10 -10
  16. package/css/palettes/high-contrast-dark.class.css.map +1 -0
  17. package/css/palettes/high-contrast-dark.system.css.map +1 -0
  18. package/css/palettes/high-contrast.always.css.map +1 -0
  19. package/css/{themes → palettes}/high-contrast.class.css +31 -31
  20. package/css/palettes/high-contrast.class.css.map +1 -0
  21. package/css/palettes/high-contrast.system.css.map +1 -0
  22. package/directives/control-value-accessors/boolean-value-accessor.d.ts +1 -1
  23. package/directives/control-value-accessors/numeric-value-accessor.d.ts +1 -1
  24. package/directives/control-value-accessors/select-value-accessor.d.ts +1 -1
  25. package/directives/control-value-accessors/text-value-accessor.d.ts +1 -1
  26. package/directives/navigation/ion-back-button.d.ts +1 -1
  27. package/directives/navigation/ion-nav.d.ts +1 -1
  28. package/directives/navigation/ion-router-outlet.d.ts +3 -3
  29. package/directives/navigation/ion-tabs.d.ts +1 -1
  30. package/directives/navigation/router-link-delegate.d.ts +2 -2
  31. package/directives/overlays/modal.d.ts +1 -1
  32. package/directives/overlays/popover.d.ts +1 -1
  33. package/directives/proxies.d.ts +80 -80
  34. package/directives/validators/max-validator.d.ts +1 -1
  35. package/directives/validators/min-validator.d.ts +1 -1
  36. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +145 -0
  37. package/esm2022/common/directives/navigation/back-button.mjs +61 -0
  38. package/esm2022/common/directives/navigation/nav-params.mjs +46 -0
  39. package/esm2022/common/directives/navigation/nav.mjs +49 -0
  40. package/esm2022/common/directives/navigation/router-link-delegate.mjs +123 -0
  41. package/esm2022/common/directives/navigation/router-outlet.mjs +480 -0
  42. package/esm2022/common/directives/navigation/stack-controller.mjs +280 -0
  43. package/esm2022/common/directives/navigation/tabs.mjs +174 -0
  44. package/esm2022/common/overlays/modal.mjs +91 -0
  45. package/esm2022/common/overlays/popover.mjs +83 -0
  46. package/esm2022/common/providers/angular-delegate.mjs +155 -0
  47. package/{esm2020 → esm2022}/common/providers/config.mjs +4 -4
  48. package/{esm2020 → esm2022}/common/providers/dom-controller.mjs +4 -4
  49. package/esm2022/common/providers/menu-controller.mjs +114 -0
  50. package/esm2022/common/providers/nav-controller.mjs +227 -0
  51. package/esm2022/common/providers/platform.mjs +257 -0
  52. package/esm2022/common/utils/overlay.mjs +26 -0
  53. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +41 -0
  54. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +49 -0
  55. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +38 -0
  56. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +37 -0
  57. package/{esm2020 → esm2022}/directives/navigation/ion-back-button.mjs +4 -4
  58. package/{esm2020 → esm2022}/directives/navigation/ion-nav.mjs +4 -4
  59. package/esm2022/directives/navigation/ion-router-outlet.mjs +52 -0
  60. package/esm2022/directives/navigation/ion-tabs.mjs +50 -0
  61. package/{esm2020 → esm2022}/directives/navigation/router-link-delegate.mjs +7 -7
  62. package/{esm2020 → esm2022}/directives/overlays/modal.mjs +5 -5
  63. package/{esm2020 → esm2022}/directives/overlays/popover.mjs +4 -4
  64. package/esm2022/directives/proxies.mjs +2207 -0
  65. package/{esm2020 → esm2022}/directives/validators/max-validator.mjs +4 -4
  66. package/{esm2020 → esm2022}/directives/validators/min-validator.mjs +4 -4
  67. package/{esm2020 → esm2022}/ionic-module.mjs +41 -41
  68. package/{esm2020 → esm2022}/providers/action-sheet-controller.mjs +4 -4
  69. package/{esm2020 → esm2022}/providers/alert-controller.mjs +4 -4
  70. package/{esm2020 → esm2022}/providers/animation-controller.mjs +4 -4
  71. package/esm2022/providers/gesture-controller.mjs +32 -0
  72. package/{esm2020 → esm2022}/providers/loading-controller.mjs +4 -4
  73. package/{esm2020 → esm2022}/providers/menu-controller.mjs +4 -4
  74. package/esm2022/providers/modal-controller.mjs +24 -0
  75. package/{esm2020 → esm2022}/providers/picker-controller.mjs +4 -4
  76. package/esm2022/providers/popover-controller.mjs +18 -0
  77. package/{esm2020 → esm2022}/providers/toast-controller.mjs +4 -4
  78. package/esm2022/standalone/directives/checkbox.mjs +74 -0
  79. package/esm2022/standalone/directives/datetime.mjs +93 -0
  80. package/esm2022/standalone/directives/icon.mjs +35 -0
  81. package/esm2022/standalone/directives/input.mjs +113 -0
  82. package/esm2022/standalone/directives/proxies.mjs +2108 -0
  83. package/esm2022/standalone/directives/radio-group.mjs +60 -0
  84. package/esm2022/standalone/directives/range.mjs +78 -0
  85. package/esm2022/standalone/directives/searchbar.mjs +82 -0
  86. package/esm2022/standalone/directives/segment.mjs +60 -0
  87. package/esm2022/standalone/directives/select.mjs +82 -0
  88. package/esm2022/standalone/directives/textarea.mjs +91 -0
  89. package/esm2022/standalone/directives/toggle.mjs +74 -0
  90. package/esm2022/standalone/navigation/back-button.mjs +32 -0
  91. package/esm2022/standalone/navigation/nav.mjs +28 -0
  92. package/{esm2020 → esm2022}/standalone/navigation/router-link-delegate.mjs +7 -7
  93. package/esm2022/standalone/navigation/router-outlet.mjs +60 -0
  94. package/esm2022/standalone/navigation/tabs.mjs +49 -0
  95. package/esm2022/standalone/overlays/modal.mjs +32 -0
  96. package/{esm2020 → esm2022}/standalone/overlays/popover.mjs +4 -4
  97. package/{esm2020 → esm2022}/standalone/providers/action-sheet-controller.mjs +4 -4
  98. package/{esm2020 → esm2022}/standalone/providers/alert-controller.mjs +4 -4
  99. package/{esm2020 → esm2022}/standalone/providers/animation-controller.mjs +4 -4
  100. package/esm2022/standalone/providers/gesture-controller.mjs +32 -0
  101. package/esm2022/standalone/providers/ionic-angular.mjs +38 -0
  102. package/{esm2020 → esm2022}/standalone/providers/loading-controller.mjs +4 -4
  103. package/{esm2020 → esm2022}/standalone/providers/menu-controller.mjs +4 -4
  104. package/esm2022/standalone/providers/modal-controller.mjs +26 -0
  105. package/{esm2020 → esm2022}/standalone/providers/picker-controller.mjs +4 -4
  106. package/esm2022/standalone/providers/popover-controller.mjs +20 -0
  107. package/{esm2020 → esm2022}/standalone/providers/toast-controller.mjs +4 -4
  108. package/{fesm2020 → fesm2022}/ionic-angular-common.mjs +221 -156
  109. package/fesm2022/ionic-angular-common.mjs.map +1 -0
  110. package/{fesm2020 → fesm2022}/ionic-angular-standalone.mjs +479 -310
  111. package/fesm2022/ionic-angular-standalone.mjs.map +1 -0
  112. package/{fesm2020 → fesm2022}/ionic-angular.mjs +559 -384
  113. package/fesm2022/ionic-angular.mjs.map +1 -0
  114. package/package.json +16 -26
  115. package/schematics/utils/config.js +0 -1
  116. package/standalone/directives/checkbox.d.ts +1 -1
  117. package/standalone/directives/datetime.d.ts +1 -1
  118. package/standalone/directives/icon.d.ts +1 -1
  119. package/standalone/directives/input.d.ts +1 -1
  120. package/standalone/directives/proxies.d.ts +69 -69
  121. package/standalone/directives/radio-group.d.ts +1 -1
  122. package/standalone/directives/range.d.ts +1 -1
  123. package/standalone/directives/searchbar.d.ts +1 -1
  124. package/standalone/directives/segment.d.ts +1 -1
  125. package/standalone/directives/select.d.ts +1 -1
  126. package/standalone/directives/textarea.d.ts +1 -1
  127. package/standalone/directives/toggle.d.ts +1 -1
  128. package/standalone/navigation/back-button.d.ts +1 -1
  129. package/standalone/navigation/nav.d.ts +1 -1
  130. package/standalone/navigation/router-link-delegate.d.ts +2 -2
  131. package/standalone/navigation/router-outlet.d.ts +3 -3
  132. package/standalone/navigation/tabs.d.ts +1 -1
  133. package/standalone/overlays/modal.d.ts +1 -1
  134. package/standalone/overlays/popover.d.ts +1 -1
  135. package/standalone/providers/ionic-angular.d.ts +2 -2
  136. package/css/themes/dark.always.css.map +0 -1
  137. package/css/themes/dark.class.css.map +0 -1
  138. package/css/themes/dark.system.css.map +0 -1
  139. package/css/themes/high-contrast-dark.always.css.map +0 -1
  140. package/css/themes/high-contrast-dark.class.css.map +0 -1
  141. package/css/themes/high-contrast-dark.system.css.map +0 -1
  142. package/css/themes/high-contrast.always.css.map +0 -1
  143. package/css/themes/high-contrast.class.css.map +0 -1
  144. package/css/themes/high-contrast.system.css.map +0 -1
  145. package/esm2020/common/directives/control-value-accessors/value-accessor.mjs +0 -141
  146. package/esm2020/common/directives/navigation/back-button.mjs +0 -59
  147. package/esm2020/common/directives/navigation/nav-params.mjs +0 -45
  148. package/esm2020/common/directives/navigation/nav.mjs +0 -47
  149. package/esm2020/common/directives/navigation/router-link-delegate.mjs +0 -111
  150. package/esm2020/common/directives/navigation/router-outlet.mjs +0 -470
  151. package/esm2020/common/directives/navigation/stack-controller.mjs +0 -272
  152. package/esm2020/common/directives/navigation/tabs.mjs +0 -172
  153. package/esm2020/common/overlays/modal.mjs +0 -87
  154. package/esm2020/common/overlays/popover.mjs +0 -79
  155. package/esm2020/common/providers/angular-delegate.mjs +0 -152
  156. package/esm2020/common/providers/menu-controller.mjs +0 -113
  157. package/esm2020/common/providers/nav-controller.mjs +0 -221
  158. package/esm2020/common/providers/platform.mjs +0 -254
  159. package/esm2020/common/utils/overlay.mjs +0 -25
  160. package/esm2020/directives/control-value-accessors/boolean-value-accessor.mjs +0 -41
  161. package/esm2020/directives/control-value-accessors/numeric-value-accessor.mjs +0 -48
  162. package/esm2020/directives/control-value-accessors/select-value-accessor.mjs +0 -38
  163. package/esm2020/directives/control-value-accessors/text-value-accessor.mjs +0 -37
  164. package/esm2020/directives/navigation/ion-router-outlet.mjs +0 -43
  165. package/esm2020/directives/navigation/ion-tabs.mjs +0 -47
  166. package/esm2020/directives/proxies.mjs +0 -2047
  167. package/esm2020/providers/gesture-controller.mjs +0 -31
  168. package/esm2020/providers/modal-controller.mjs +0 -24
  169. package/esm2020/providers/popover-controller.mjs +0 -18
  170. package/esm2020/standalone/directives/checkbox.mjs +0 -72
  171. package/esm2020/standalone/directives/datetime.mjs +0 -91
  172. package/esm2020/standalone/directives/icon.mjs +0 -33
  173. package/esm2020/standalone/directives/input.mjs +0 -111
  174. package/esm2020/standalone/directives/proxies.mjs +0 -1970
  175. package/esm2020/standalone/directives/radio-group.mjs +0 -58
  176. package/esm2020/standalone/directives/range.mjs +0 -76
  177. package/esm2020/standalone/directives/searchbar.mjs +0 -80
  178. package/esm2020/standalone/directives/segment.mjs +0 -58
  179. package/esm2020/standalone/directives/select.mjs +0 -80
  180. package/esm2020/standalone/directives/textarea.mjs +0 -89
  181. package/esm2020/standalone/directives/toggle.mjs +0 -72
  182. package/esm2020/standalone/navigation/back-button.mjs +0 -32
  183. package/esm2020/standalone/navigation/nav.mjs +0 -28
  184. package/esm2020/standalone/navigation/router-outlet.mjs +0 -51
  185. package/esm2020/standalone/navigation/tabs.mjs +0 -46
  186. package/esm2020/standalone/overlays/modal.mjs +0 -32
  187. package/esm2020/standalone/providers/gesture-controller.mjs +0 -31
  188. package/esm2020/standalone/providers/ionic-angular.mjs +0 -43
  189. package/esm2020/standalone/providers/modal-controller.mjs +0 -26
  190. package/esm2020/standalone/providers/popover-controller.mjs +0 -20
  191. package/fesm2015/ionic-angular-common.mjs +0 -2484
  192. package/fesm2015/ionic-angular-common.mjs.map +0 -1
  193. package/fesm2015/ionic-angular-standalone.mjs +0 -3146
  194. package/fesm2015/ionic-angular-standalone.mjs.map +0 -1
  195. package/fesm2015/ionic-angular.mjs +0 -2790
  196. package/fesm2015/ionic-angular.mjs.map +0 -1
  197. package/fesm2020/ionic-angular-common.mjs.map +0 -1
  198. package/fesm2020/ionic-angular-standalone.mjs.map +0 -1
  199. package/fesm2020/ionic-angular.mjs.map +0 -1
  200. package/test/README.md +0 -118
  201. package/css/{themes → palettes}/dark.always.css +0 -0
  202. package/css/{themes → palettes}/dark.css +0 -0
  203. package/css/{themes → palettes}/dark.css.map +0 -0
  204. package/css/{themes → palettes}/dark.system.css +0 -0
  205. package/css/{themes → palettes}/high-contrast-dark.always.css +1 -1
  206. package/css/{themes → palettes}/high-contrast-dark.css +0 -0
  207. package/css/{themes → palettes}/high-contrast-dark.css.map +0 -0
  208. package/css/{themes → palettes}/high-contrast-dark.system.css +1 -1
  209. package/css/{themes → palettes}/high-contrast.always.css +25 -25
  210. package/css/{themes → palettes}/high-contrast.css +0 -0
  211. package/css/{themes → palettes}/high-contrast.css.map +0 -0
  212. package/css/{themes → palettes}/high-contrast.system.css +25 -25
  213. /package/{esm2020 → esm2022}/app-initialize.mjs +0 -0
  214. /package/{esm2020 → esm2022}/common/directives/control-value-accessors/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/common/directives/navigation/stack-utils.mjs +0 -0
  216. /package/{esm2020 → esm2022}/common/index.mjs +0 -0
  217. /package/{esm2020 → esm2022}/common/ionic-angular-common.mjs +0 -0
  218. /package/{esm2020 → esm2022}/common/types/interfaces.mjs +0 -0
  219. /package/{esm2020 → esm2022}/common/types/ionic-lifecycle-hooks.mjs +0 -0
  220. /package/{esm2020 → esm2022}/common/utils/proxy.mjs +0 -0
  221. /package/{esm2020 → esm2022}/common/utils/routing.mjs +0 -0
  222. /package/{esm2020 → esm2022}/common/utils/util.mjs +0 -0
  223. /package/{esm2020 → esm2022}/directives/angular-component-lib/utils.mjs +0 -0
  224. /package/{esm2020 → esm2022}/directives/control-value-accessors/index.mjs +0 -0
  225. /package/{esm2020 → esm2022}/directives/proxies-list.mjs +0 -0
  226. /package/{esm2020 → esm2022}/directives/validators/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/index.mjs +0 -0
  228. /package/{esm2020 → esm2022}/ionic-angular.mjs +0 -0
  229. /package/{esm2020 → esm2022}/standalone/directives/angular-component-lib/utils.mjs +0 -0
  230. /package/{esm2020 → esm2022}/standalone/directives/index.mjs +0 -0
  231. /package/{esm2020 → esm2022}/standalone/index.mjs +0 -0
  232. /package/{esm2020 → esm2022}/standalone/ionic-angular-standalone.mjs +0 -0
@@ -0,0 +1,83 @@
1
+ import { __decorate } from "tslib";
2
+ import { ContentChild, Directive, TemplateRef, } from '@angular/core';
3
+ import { ProxyCmp, proxyOutputs } from '../utils/proxy';
4
+ import * as i0 from "@angular/core";
5
+ const POPOVER_INPUTS = [
6
+ 'alignment',
7
+ 'animated',
8
+ 'arrow',
9
+ 'keepContentsMounted',
10
+ 'backdropDismiss',
11
+ 'cssClass',
12
+ 'dismissOnSelect',
13
+ 'enterAnimation',
14
+ 'event',
15
+ 'isOpen',
16
+ 'keyboardClose',
17
+ 'leaveAnimation',
18
+ 'mode',
19
+ 'showBackdrop',
20
+ 'translucent',
21
+ 'trigger',
22
+ 'triggerAction',
23
+ 'reference',
24
+ 'size',
25
+ 'side',
26
+ ];
27
+ const POPOVER_METHODS = ['present', 'dismiss', 'onDidDismiss', 'onWillDismiss'];
28
+ let IonPopover = class IonPopover {
29
+ z;
30
+ // TODO(FW-2827): type
31
+ template;
32
+ isCmpOpen = false;
33
+ el;
34
+ constructor(c, r, z) {
35
+ this.z = z;
36
+ this.el = r.nativeElement;
37
+ this.el.addEventListener('ionMount', () => {
38
+ this.isCmpOpen = true;
39
+ c.detectChanges();
40
+ });
41
+ this.el.addEventListener('didDismiss', () => {
42
+ this.isCmpOpen = false;
43
+ c.detectChanges();
44
+ });
45
+ proxyOutputs(this, this.el, [
46
+ 'ionPopoverDidPresent',
47
+ 'ionPopoverWillPresent',
48
+ 'ionPopoverWillDismiss',
49
+ 'ionPopoverDidDismiss',
50
+ 'didPresent',
51
+ 'willPresent',
52
+ 'willDismiss',
53
+ 'didDismiss',
54
+ ]);
55
+ }
56
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPopover, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
57
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: IonPopover, selector: "ion-popover", inputs: { alignment: "alignment", animated: "animated", arrow: "arrow", keepContentsMounted: "keepContentsMounted", backdropDismiss: "backdropDismiss", cssClass: "cssClass", dismissOnSelect: "dismissOnSelect", enterAnimation: "enterAnimation", event: "event", isOpen: "isOpen", keyboardClose: "keyboardClose", leaveAnimation: "leaveAnimation", mode: "mode", showBackdrop: "showBackdrop", translucent: "translucent", trigger: "trigger", triggerAction: "triggerAction", reference: "reference", size: "size", side: "side" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
58
+ };
59
+ IonPopover = __decorate([
60
+ ProxyCmp({
61
+ inputs: POPOVER_INPUTS,
62
+ methods: POPOVER_METHODS,
63
+ })
64
+ /**
65
+ * @Component extends from @Directive
66
+ * so by defining the inputs here we
67
+ * do not need to re-define them for the
68
+ * lazy loaded popover.
69
+ */
70
+ ], IonPopover);
71
+ export { IonPopover };
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IonPopover, decorators: [{
73
+ type: Directive,
74
+ args: [{
75
+ selector: 'ion-popover',
76
+ // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
77
+ inputs: POPOVER_INPUTS,
78
+ }]
79
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { template: [{
80
+ type: ContentChild,
81
+ args: [TemplateRef, { static: false }]
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvb3ZlcmxheXMvcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEVBSVQsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBcUN4RCxNQUFNLGNBQWMsR0FBRztJQUNyQixXQUFXO0lBQ1gsVUFBVTtJQUNWLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLFVBQVU7SUFDVixpQkFBaUI7SUFDakIsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxRQUFRO0lBQ1IsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixNQUFNO0lBQ04sY0FBYztJQUNkLGFBQWE7SUFDYixTQUFTO0lBQ1QsZUFBZTtJQUNmLFdBQVc7SUFDWCxNQUFNO0lBQ04sTUFBTTtDQUNQLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBbUJ6RSxJQUFNLFVBQVUsR0FBaEIsTUFBTSxVQUFVO0lBUXNDO0lBUDNELHNCQUFzQjtJQUN3QixRQUFRLENBQW1CO0lBRXpFLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFUixFQUFFLENBQWM7SUFFMUIsWUFBWSxDQUFvQixFQUFFLENBQWEsRUFBWSxDQUFTO1FBQVQsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUNsRSxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFFMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtZQUMxQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDMUIsc0JBQXNCO1lBQ3RCLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsc0JBQXNCO1lBQ3RCLFlBQVk7WUFDWixhQUFhO1lBQ2IsYUFBYTtZQUNiLFlBQVk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDOzJIQTdCVSxVQUFVOytHQUFWLFVBQVUsbW1CQUVQLFdBQVc7O0FBRmQsVUFBVTtJQWpCdEIsUUFBUSxDQUFDO1FBQ1IsTUFBTSxFQUFFLGNBQWM7UUFDdEIsT0FBTyxFQUFFLGVBQWU7S0FDekIsQ0FBQztJQUNGOzs7OztPQUtHO0dBUVUsVUFBVSxDQThCdEI7U0E5QlksVUFBVTs0RkFBVixVQUFVO2tCQVB0QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2Qix1RUFBdUU7b0JBQ3ZFLE1BQU0sRUFBRSxjQUFjO2lCQUN2QjtzSkFLK0MsUUFBUTtzQkFBckQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE5nWm9uZSxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBDb21wb25lbnRzIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuLi91dGlscy9wcm94eSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBJb25Qb3BvdmVyIGV4dGVuZHMgQ29tcG9uZW50cy5Jb25Qb3BvdmVyIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBvcG92ZXIgaGFzIHByZXNlbnRlZC5cbiAgICovXG4gIGlvblBvcG92ZXJEaWRQcmVzZW50OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBiZWZvcmUgdGhlIHBvcG92ZXIgaGFzIHByZXNlbnRlZC5cbiAgICovXG4gIGlvblBvcG92ZXJXaWxsUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBvcG92ZXIgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvblBvcG92ZXJXaWxsRGlzbWlzczogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIHBvcG92ZXIgaGFzIGRpc21pc3NlZC5cbiAgICovXG4gIGlvblBvcG92ZXJEaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xuICAvKipcbiAgICogRW1pdHRlZCBhZnRlciB0aGUgcG9wb3ZlciBoYXMgcHJlc2VudGVkLiBTaG9ydGhhbmQgZm9yIGlvblBvcG92ZXJEaWRQcmVzZW50LlxuICAgKi9cbiAgZGlkUHJlc2VudDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBwb3BvdmVyIGhhcyBwcmVzZW50ZWQuIFNob3J0aGFuZCBmb3IgaW9uUG9wb3ZlcldpbGxQcmVzZW50LlxuICAgKi9cbiAgd2lsbFByZXNlbnQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBwb3BvdmVyIGhhcyBwcmVzZW50ZWQuIFNob3J0aGFuZCBmb3IgaW9uUG9wb3ZlcldpbGxEaXNtaXNzLlxuICAgKi9cbiAgd2lsbERpc21pc3M6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudD47XG4gIC8qKlxuICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBwb3BvdmVyIGhhcyBkaXNtaXNzZWQuIFNob3J0aGFuZCBmb3IgaW9uUG9wb3ZlckRpZERpc21pc3MuXG4gICAqL1xuICBkaWREaXNtaXNzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ+O1xufVxuXG5jb25zdCBQT1BPVkVSX0lOUFVUUyA9IFtcbiAgJ2FsaWdubWVudCcsXG4gICdhbmltYXRlZCcsXG4gICdhcnJvdycsXG4gICdrZWVwQ29udGVudHNNb3VudGVkJyxcbiAgJ2JhY2tkcm9wRGlzbWlzcycsXG4gICdjc3NDbGFzcycsXG4gICdkaXNtaXNzT25TZWxlY3QnLFxuICAnZW50ZXJBbmltYXRpb24nLFxuICAnZXZlbnQnLFxuICAnaXNPcGVuJyxcbiAgJ2tleWJvYXJkQ2xvc2UnLFxuICAnbGVhdmVBbmltYXRpb24nLFxuICAnbW9kZScsXG4gICdzaG93QmFja2Ryb3AnLFxuICAndHJhbnNsdWNlbnQnLFxuICAndHJpZ2dlcicsXG4gICd0cmlnZ2VyQWN0aW9uJyxcbiAgJ3JlZmVyZW5jZScsXG4gICdzaXplJyxcbiAgJ3NpZGUnLFxuXTtcblxuY29uc3QgUE9QT1ZFUl9NRVRIT0RTID0gWydwcmVzZW50JywgJ2Rpc21pc3MnLCAnb25EaWREaXNtaXNzJywgJ29uV2lsbERpc21pc3MnXTtcblxuQFByb3h5Q21wKHtcbiAgaW5wdXRzOiBQT1BPVkVSX0lOUFVUUyxcbiAgbWV0aG9kczogUE9QT1ZFUl9NRVRIT0RTLFxufSlcbi8qKlxuICogQENvbXBvbmVudCBleHRlbmRzIGZyb20gQERpcmVjdGl2ZVxuICogc28gYnkgZGVmaW5pbmcgdGhlIGlucHV0cyBoZXJlIHdlXG4gKiBkbyBub3QgbmVlZCB0byByZS1kZWZpbmUgdGhlbSBmb3IgdGhlXG4gKiBsYXp5IGxvYWRlZCBwb3BvdmVyLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpb24tcG9wb3ZlcicsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXRzLW1ldGFkYXRhLXByb3BlcnR5XG4gIGlucHV0czogUE9QT1ZFUl9JTlBVVFMsXG59KVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBjbGFzcyBJb25Qb3BvdmVyIHtcbiAgLy8gVE9ETyhGVy0yODI3KTogdHlwZVxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogZmFsc2UgfSkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgaXNDbXBPcGVuID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vdW50JywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0NtcE9wZW4gPSB0cnVlO1xuICAgICAgYy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5lbC5hZGRFdmVudExpc3RlbmVyKCdkaWREaXNtaXNzJywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0NtcE9wZW4gPSBmYWxzZTtcbiAgICAgIGMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbXG4gICAgICAnaW9uUG9wb3ZlckRpZFByZXNlbnQnLFxuICAgICAgJ2lvblBvcG92ZXJXaWxsUHJlc2VudCcsXG4gICAgICAnaW9uUG9wb3ZlcldpbGxEaXNtaXNzJyxcbiAgICAgICdpb25Qb3BvdmVyRGlkRGlzbWlzcycsXG4gICAgICAnZGlkUHJlc2VudCcsXG4gICAgICAnd2lsbFByZXNlbnQnLFxuICAgICAgJ3dpbGxEaXNtaXNzJyxcbiAgICAgICdkaWREaXNtaXNzJyxcbiAgICBdKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,155 @@
1
+ import { ApplicationRef, NgZone, Injectable, Injector, inject, createComponent, InjectionToken, } from '@angular/core';
2
+ import { LIFECYCLE_DID_ENTER, LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_WILL_UNLOAD, } from '@ionic/core/components';
3
+ import { NavParams } from '../directives/navigation/nav-params';
4
+ import * as i0 from "@angular/core";
5
+ // TODO(FW-2827): types
6
+ export class AngularDelegate {
7
+ zone = inject(NgZone);
8
+ applicationRef = inject(ApplicationRef);
9
+ create(environmentInjector, injector, elementReferenceKey) {
10
+ return new AngularFrameworkDelegate(environmentInjector, injector, this.applicationRef, this.zone, elementReferenceKey);
11
+ }
12
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
13
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate });
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDelegate, decorators: [{
16
+ type: Injectable
17
+ }] });
18
+ export class AngularFrameworkDelegate {
19
+ environmentInjector;
20
+ injector;
21
+ applicationRef;
22
+ zone;
23
+ elementReferenceKey;
24
+ elRefMap = new WeakMap();
25
+ elEventsMap = new WeakMap();
26
+ constructor(environmentInjector, injector, applicationRef, zone, elementReferenceKey) {
27
+ this.environmentInjector = environmentInjector;
28
+ this.injector = injector;
29
+ this.applicationRef = applicationRef;
30
+ this.zone = zone;
31
+ this.elementReferenceKey = elementReferenceKey;
32
+ }
33
+ attachViewToDom(container, component, params, cssClasses) {
34
+ return this.zone.run(() => {
35
+ return new Promise((resolve) => {
36
+ const componentProps = {
37
+ ...params,
38
+ };
39
+ /**
40
+ * Ionic Angular passes a reference to a modal
41
+ * or popover that can be accessed using a
42
+ * variable in the overlay component. If
43
+ * elementReferenceKey is defined, then we should
44
+ * pass a reference to the component using
45
+ * elementReferenceKey as the key.
46
+ */
47
+ if (this.elementReferenceKey !== undefined) {
48
+ componentProps[this.elementReferenceKey] = container;
49
+ }
50
+ const el = attachView(this.zone, this.environmentInjector, this.injector, this.applicationRef, this.elRefMap, this.elEventsMap, container, component, componentProps, cssClasses, this.elementReferenceKey);
51
+ resolve(el);
52
+ });
53
+ });
54
+ }
55
+ removeViewFromDom(_container, component) {
56
+ return this.zone.run(() => {
57
+ return new Promise((resolve) => {
58
+ const componentRef = this.elRefMap.get(component);
59
+ if (componentRef) {
60
+ componentRef.destroy();
61
+ this.elRefMap.delete(component);
62
+ const unbindEvents = this.elEventsMap.get(component);
63
+ if (unbindEvents) {
64
+ unbindEvents();
65
+ this.elEventsMap.delete(component);
66
+ }
67
+ }
68
+ resolve();
69
+ });
70
+ });
71
+ }
72
+ }
73
+ export const attachView = (zone, environmentInjector, injector, applicationRef, elRefMap, elEventsMap, container, component, params, cssClasses, elementReferenceKey) => {
74
+ /**
75
+ * Wraps the injector with a custom injector that
76
+ * provides NavParams to the component.
77
+ *
78
+ * NavParams is a legacy feature from Ionic v3 that allows
79
+ * Angular developers to provide data to a component
80
+ * and access it by providing NavParams as a dependency
81
+ * in the constructor.
82
+ *
83
+ * The modern approach is to access the data directly
84
+ * from the component's class instance.
85
+ */
86
+ const childInjector = Injector.create({
87
+ providers: getProviders(params),
88
+ parent: injector,
89
+ });
90
+ const componentRef = createComponent(component, {
91
+ environmentInjector,
92
+ elementInjector: childInjector,
93
+ });
94
+ const instance = componentRef.instance;
95
+ const hostElement = componentRef.location.nativeElement;
96
+ if (params) {
97
+ /**
98
+ * For modals and popovers, a reference to the component is
99
+ * added to `params` during the call to attachViewToDom. If
100
+ * a reference using this name is already set, this means
101
+ * the app is trying to use the name as a component prop,
102
+ * which will cause collisions.
103
+ */
104
+ if (elementReferenceKey && instance[elementReferenceKey] !== undefined) {
105
+ console.error(`[Ionic Error]: ${elementReferenceKey} is a reserved property when using ${container.tagName.toLowerCase()}. Rename or remove the "${elementReferenceKey}" property from ${component.name}.`);
106
+ }
107
+ Object.assign(instance, params);
108
+ }
109
+ if (cssClasses) {
110
+ for (const cssClass of cssClasses) {
111
+ hostElement.classList.add(cssClass);
112
+ }
113
+ }
114
+ const unbindEvents = bindLifecycleEvents(zone, instance, hostElement);
115
+ container.appendChild(hostElement);
116
+ applicationRef.attachView(componentRef.hostView);
117
+ elRefMap.set(hostElement, componentRef);
118
+ elEventsMap.set(hostElement, unbindEvents);
119
+ return hostElement;
120
+ };
121
+ const LIFECYCLES = [
122
+ LIFECYCLE_WILL_ENTER,
123
+ LIFECYCLE_DID_ENTER,
124
+ LIFECYCLE_WILL_LEAVE,
125
+ LIFECYCLE_DID_LEAVE,
126
+ LIFECYCLE_WILL_UNLOAD,
127
+ ];
128
+ export const bindLifecycleEvents = (zone, instance, element) => {
129
+ return zone.run(() => {
130
+ const unregisters = LIFECYCLES.filter((eventName) => typeof instance[eventName] === 'function').map((eventName) => {
131
+ const handler = (ev) => instance[eventName](ev.detail);
132
+ element.addEventListener(eventName, handler);
133
+ return () => element.removeEventListener(eventName, handler);
134
+ });
135
+ return () => unregisters.forEach((fn) => fn());
136
+ });
137
+ };
138
+ const NavParamsToken = new InjectionToken('NavParamsToken');
139
+ const getProviders = (params) => {
140
+ return [
141
+ {
142
+ provide: NavParamsToken,
143
+ useValue: params,
144
+ },
145
+ {
146
+ provide: NavParams,
147
+ useFactory: provideNavParamsInjectable,
148
+ deps: [NavParamsToken],
149
+ },
150
+ ];
151
+ };
152
+ const provideNavParamsInjectable = (params) => {
153
+ return new NavParams(params);
154
+ };
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1kZWxlZ2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvcHJvdmlkZXJzL2FuZ3VsYXItZGVsZWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFFUixNQUFNLEVBQ04sZUFBZSxFQUNmLGNBQWMsR0FFZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFaEUsdUJBQXVCO0FBR3ZCLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVoRCxNQUFNLENBQ0osbUJBQXdDLEVBQ3hDLFFBQWtCLEVBQ2xCLG1CQUE0QjtRQUU1QixPQUFPLElBQUksd0JBQXdCLENBQ2pDLG1CQUFtQixFQUNuQixRQUFRLEVBQ1IsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLElBQUksRUFDVCxtQkFBbUIsQ0FDcEIsQ0FBQztJQUNKLENBQUM7MkhBaEJVLGVBQWU7K0hBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7QUFvQlgsTUFBTSxPQUFPLHdCQUF3QjtJQUt6QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUkYsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFrQyxDQUFDO0lBQ3pELFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztJQUU3RCxZQUNVLG1CQUF3QyxFQUN4QyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixJQUFZLEVBQ1osbUJBQTRCO1FBSjVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBUztJQUNuQyxDQUFDO0lBRUosZUFBZSxDQUFDLFNBQWMsRUFBRSxTQUFjLEVBQUUsTUFBWSxFQUFFLFVBQXFCO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxjQUFjLEdBQUc7b0JBQ3JCLEdBQUcsTUFBTTtpQkFDVixDQUFDO2dCQUVGOzs7Ozs7O21CQU9HO2dCQUNILElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsRUFBRTtvQkFDMUMsY0FBYyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQztpQkFDdEQ7Z0JBRUQsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUNuQixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxtQkFBbUIsRUFDeEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsY0FBYyxFQUNuQixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxXQUFXLEVBQ2hCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsY0FBYyxFQUNkLFVBQVUsRUFDVixJQUFJLENBQUMsbUJBQW1CLENBQ3pCLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxVQUFlLEVBQUUsU0FBYztRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUN4QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLFlBQVksRUFBRTtvQkFDaEIsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDaEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3JELElBQUksWUFBWSxFQUFFO3dCQUNoQixZQUFZLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDcEM7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLElBQVksRUFDWixtQkFBd0MsRUFDeEMsUUFBa0IsRUFDbEIsY0FBOEIsRUFDOUIsUUFBaUQsRUFDakQsV0FBNkMsRUFDN0MsU0FBYyxFQUNkLFNBQWMsRUFDZCxNQUFXLEVBQ1gsVUFBZ0MsRUFDaEMsbUJBQXVDLEVBQ2xDLEVBQUU7SUFDUDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDcEMsU0FBUyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDL0IsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxZQUFZLEdBQUcsZUFBZSxDQUFNLFNBQVMsRUFBRTtRQUNuRCxtQkFBbUI7UUFDbkIsZUFBZSxFQUFFLGFBQWE7S0FDL0IsQ0FBQyxDQUFDO0lBRUgsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUN2QyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztJQUV4RCxJQUFJLE1BQU0sRUFBRTtRQUNWOzs7Ozs7V0FNRztRQUNILElBQUksbUJBQW1CLElBQUksUUFBUSxDQUFDLG1CQUFtQixDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3RFLE9BQU8sQ0FBQyxLQUFLLENBQ1gsa0JBQWtCLG1CQUFtQixzQ0FBc0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLG1CQUFtQixtQkFDdEosU0FBUyxDQUFDLElBQ1osR0FBRyxDQUNKLENBQUM7U0FDSDtRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsSUFBSSxVQUFVLEVBQUU7UUFDZCxLQUFLLE1BQU0sUUFBUSxJQUFJLFVBQVUsRUFBRTtZQUNqQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyQztLQUNGO0lBQ0QsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0RSxTQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRW5DLGNBQWMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRWpELFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNDLE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixxQkFBcUI7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWEsRUFBRSxPQUFvQixFQUFnQixFQUFFO0lBQ3JHLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7UUFDbkIsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUQsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBTSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBOEIsRUFBRSxFQUFFO0lBQ3RELE9BQU87UUFDTDtZQUNFLE9BQU8sRUFBRSxjQUFjO1lBQ3ZCLFFBQVEsRUFBRSxNQUFNO1NBQ2pCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsU0FBUztZQUNsQixVQUFVLEVBQUUsMEJBQTBCO1lBQ3RDLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUN2QjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBOEIsRUFBRSxFQUFFO0lBQ3BFLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25SZWYsXG4gIE5nWm9uZSxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIEVudmlyb25tZW50SW5qZWN0b3IsXG4gIGluamVjdCxcbiAgY3JlYXRlQ29tcG9uZW50LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgQ29tcG9uZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZyYW1ld29ya0RlbGVnYXRlLFxuICBMSUZFQ1lDTEVfRElEX0VOVEVSLFxuICBMSUZFQ1lDTEVfRElEX0xFQVZFLFxuICBMSUZFQ1lDTEVfV0lMTF9FTlRFUixcbiAgTElGRUNZQ0xFX1dJTExfTEVBVkUsXG4gIExJRkVDWUNMRV9XSUxMX1VOTE9BRCxcbn0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IE5hdlBhcmFtcyB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvbmF2aWdhdGlvbi9uYXYtcGFyYW1zJztcblxuLy8gVE9ETyhGVy0yODI3KTogdHlwZXNcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJEZWxlZ2F0ZSB7XG4gIHByaXZhdGUgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICBwcml2YXRlIGFwcGxpY2F0aW9uUmVmID0gaW5qZWN0KEFwcGxpY2F0aW9uUmVmKTtcblxuICBjcmVhdGUoXG4gICAgZW52aXJvbm1lbnRJbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgZWxlbWVudFJlZmVyZW5jZUtleT86IHN0cmluZ1xuICApOiBBbmd1bGFyRnJhbWV3b3JrRGVsZWdhdGUge1xuICAgIHJldHVybiBuZXcgQW5ndWxhckZyYW1ld29ya0RlbGVnYXRlKFxuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcixcbiAgICAgIGluamVjdG9yLFxuICAgICAgdGhpcy5hcHBsaWNhdGlvblJlZixcbiAgICAgIHRoaXMuem9uZSxcbiAgICAgIGVsZW1lbnRSZWZlcmVuY2VLZXlcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBbmd1bGFyRnJhbWV3b3JrRGVsZWdhdGUgaW1wbGVtZW50cyBGcmFtZXdvcmtEZWxlZ2F0ZSB7XG4gIHByaXZhdGUgZWxSZWZNYXAgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgQ29tcG9uZW50UmVmPGFueT4+KCk7XG4gIHByaXZhdGUgZWxFdmVudHNNYXAgPSBuZXcgV2Vha01hcDxIVE1MRWxlbWVudCwgKCkgPT4gdm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlS2V5Pzogc3RyaW5nXG4gICkge31cblxuICBhdHRhY2hWaWV3VG9Eb20oY29udGFpbmVyOiBhbnksIGNvbXBvbmVudDogYW55LCBwYXJhbXM/OiBhbnksIGNzc0NsYXNzZXM/OiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFByb3BzID0ge1xuICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogSW9uaWMgQW5ndWxhciBwYXNzZXMgYSByZWZlcmVuY2UgdG8gYSBtb2RhbFxuICAgICAgICAgKiBvciBwb3BvdmVyIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIGFcbiAgICAgICAgICogdmFyaWFibGUgaW4gdGhlIG92ZXJsYXkgY29tcG9uZW50LiBJZlxuICAgICAgICAgKiBlbGVtZW50UmVmZXJlbmNlS2V5IGlzIGRlZmluZWQsIHRoZW4gd2Ugc2hvdWxkXG4gICAgICAgICAqIHBhc3MgYSByZWZlcmVuY2UgdG8gdGhlIGNvbXBvbmVudCB1c2luZ1xuICAgICAgICAgKiBlbGVtZW50UmVmZXJlbmNlS2V5IGFzIHRoZSBrZXkuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5lbGVtZW50UmVmZXJlbmNlS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb21wb25lbnRQcm9wc1t0aGlzLmVsZW1lbnRSZWZlcmVuY2VLZXldID0gY29udGFpbmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWwgPSBhdHRhY2hWaWV3KFxuICAgICAgICAgIHRoaXMuem9uZSxcbiAgICAgICAgICB0aGlzLmVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLFxuICAgICAgICAgIHRoaXMuZWxSZWZNYXAsXG4gICAgICAgICAgdGhpcy5lbEV2ZW50c01hcCxcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgIGNvbXBvbmVudFByb3BzLFxuICAgICAgICAgIGNzc0NsYXNzZXMsXG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmZXJlbmNlS2V5XG4gICAgICAgICk7XG4gICAgICAgIHJlc29sdmUoZWwpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVWaWV3RnJvbURvbShfY29udGFpbmVyOiBhbnksIGNvbXBvbmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZWxSZWZNYXAuZ2V0KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRSZWYpIHtcbiAgICAgICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICAgIHRoaXMuZWxSZWZNYXAuZGVsZXRlKGNvbXBvbmVudCk7XG4gICAgICAgICAgY29uc3QgdW5iaW5kRXZlbnRzID0gdGhpcy5lbEV2ZW50c01hcC5nZXQoY29tcG9uZW50KTtcbiAgICAgICAgICBpZiAodW5iaW5kRXZlbnRzKSB7XG4gICAgICAgICAgICB1bmJpbmRFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuZWxFdmVudHNNYXAuZGVsZXRlKGNvbXBvbmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhdHRhY2hWaWV3ID0gKFxuICB6b25lOiBOZ1pvbmUsXG4gIGVudmlyb25tZW50SW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gIGluamVjdG9yOiBJbmplY3RvcixcbiAgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuICBlbFJlZk1hcDogV2Vha01hcDxIVE1MRWxlbWVudCwgQ29tcG9uZW50UmVmPGFueT4+LFxuICBlbEV2ZW50c01hcDogV2Vha01hcDxIVE1MRWxlbWVudCwgKCkgPT4gdm9pZD4sXG4gIGNvbnRhaW5lcjogYW55LFxuICBjb21wb25lbnQ6IGFueSxcbiAgcGFyYW1zOiBhbnksXG4gIGNzc0NsYXNzZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICBlbGVtZW50UmVmZXJlbmNlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbik6IGFueSA9PiB7XG4gIC8qKlxuICAgKiBXcmFwcyB0aGUgaW5qZWN0b3Igd2l0aCBhIGN1c3RvbSBpbmplY3RvciB0aGF0XG4gICAqIHByb3ZpZGVzIE5hdlBhcmFtcyB0byB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBOYXZQYXJhbXMgaXMgYSBsZWdhY3kgZmVhdHVyZSBmcm9tIElvbmljIHYzIHRoYXQgYWxsb3dzXG4gICAqIEFuZ3VsYXIgZGV2ZWxvcGVycyB0byBwcm92aWRlIGRhdGEgdG8gYSBjb21wb25lbnRcbiAgICogYW5kIGFjY2VzcyBpdCBieSBwcm92aWRpbmcgTmF2UGFyYW1zIGFzIGEgZGVwZW5kZW5jeVxuICAgKiBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIFRoZSBtb2Rlcm4gYXBwcm9hY2ggaXMgdG8gYWNjZXNzIHRoZSBkYXRhIGRpcmVjdGx5XG4gICAqIGZyb20gdGhlIGNvbXBvbmVudCdzIGNsYXNzIGluc3RhbmNlLlxuICAgKi9cbiAgY29uc3QgY2hpbGRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgcHJvdmlkZXJzOiBnZXRQcm92aWRlcnMocGFyYW1zKSxcbiAgICBwYXJlbnQ6IGluamVjdG9yLFxuICB9KTtcblxuICBjb25zdCBjb21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQ8YW55Pihjb21wb25lbnQsIHtcbiAgICBlbnZpcm9ubWVudEluamVjdG9yLFxuICAgIGVsZW1lbnRJbmplY3RvcjogY2hpbGRJbmplY3RvcixcbiAgfSk7XG5cbiAgY29uc3QgaW5zdGFuY2UgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gIGNvbnN0IGhvc3RFbGVtZW50ID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgaWYgKHBhcmFtcykge1xuICAgIC8qKlxuICAgICAqIEZvciBtb2RhbHMgYW5kIHBvcG92ZXJzLCBhIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGlzXG4gICAgICogYWRkZWQgdG8gYHBhcmFtc2AgZHVyaW5nIHRoZSBjYWxsIHRvIGF0dGFjaFZpZXdUb0RvbS4gSWZcbiAgICAgKiBhIHJlZmVyZW5jZSB1c2luZyB0aGlzIG5hbWUgaXMgYWxyZWFkeSBzZXQsIHRoaXMgbWVhbnNcbiAgICAgKiB0aGUgYXBwIGlzIHRyeWluZyB0byB1c2UgdGhlIG5hbWUgYXMgYSBjb21wb25lbnQgcHJvcCxcbiAgICAgKiB3aGljaCB3aWxsIGNhdXNlIGNvbGxpc2lvbnMuXG4gICAgICovXG4gICAgaWYgKGVsZW1lbnRSZWZlcmVuY2VLZXkgJiYgaW5zdGFuY2VbZWxlbWVudFJlZmVyZW5jZUtleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFtJb25pYyBFcnJvcl06ICR7ZWxlbWVudFJlZmVyZW5jZUtleX0gaXMgYSByZXNlcnZlZCBwcm9wZXJ0eSB3aGVuIHVzaW5nICR7Y29udGFpbmVyLnRhZ05hbWUudG9Mb3dlckNhc2UoKX0uIFJlbmFtZSBvciByZW1vdmUgdGhlIFwiJHtlbGVtZW50UmVmZXJlbmNlS2V5fVwiIHByb3BlcnR5IGZyb20gJHtcbiAgICAgICAgICBjb21wb25lbnQubmFtZVxuICAgICAgICB9LmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmFzc2lnbihpbnN0YW5jZSwgcGFyYW1zKTtcbiAgfVxuICBpZiAoY3NzQ2xhc3Nlcykge1xuICAgIGZvciAoY29uc3QgY3NzQ2xhc3Mgb2YgY3NzQ2xhc3Nlcykge1xuICAgICAgaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZChjc3NDbGFzcyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHVuYmluZEV2ZW50cyA9IGJpbmRMaWZlY3ljbGVFdmVudHMoem9uZSwgaW5zdGFuY2UsIGhvc3RFbGVtZW50KTtcbiAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhvc3RFbGVtZW50KTtcblxuICBhcHBsaWNhdGlvblJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG5cbiAgZWxSZWZNYXAuc2V0KGhvc3RFbGVtZW50LCBjb21wb25lbnRSZWYpO1xuICBlbEV2ZW50c01hcC5zZXQoaG9zdEVsZW1lbnQsIHVuYmluZEV2ZW50cyk7XG4gIHJldHVybiBob3N0RWxlbWVudDtcbn07XG5cbmNvbnN0IExJRkVDWUNMRVMgPSBbXG4gIExJRkVDWUNMRV9XSUxMX0VOVEVSLFxuICBMSUZFQ1lDTEVfRElEX0VOVEVSLFxuICBMSUZFQ1lDTEVfV0lMTF9MRUFWRSxcbiAgTElGRUNZQ0xFX0RJRF9MRUFWRSxcbiAgTElGRUNZQ0xFX1dJTExfVU5MT0FELFxuXTtcblxuZXhwb3J0IGNvbnN0IGJpbmRMaWZlY3ljbGVFdmVudHMgPSAoem9uZTogTmdab25lLCBpbnN0YW5jZTogYW55LCBlbGVtZW50OiBIVE1MRWxlbWVudCk6ICgoKSA9PiB2b2lkKSA9PiB7XG4gIHJldHVybiB6b25lLnJ1bigoKSA9PiB7XG4gICAgY29uc3QgdW5yZWdpc3RlcnMgPSBMSUZFQ1lDTEVTLmZpbHRlcigoZXZlbnROYW1lKSA9PiB0eXBlb2YgaW5zdGFuY2VbZXZlbnROYW1lXSA9PT0gJ2Z1bmN0aW9uJykubWFwKChldmVudE5hbWUpID0+IHtcbiAgICAgIGNvbnN0IGhhbmRsZXIgPSAoZXY6IGFueSkgPT4gaW5zdGFuY2VbZXZlbnROYW1lXShldi5kZXRhaWwpO1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlcik7XG4gICAgICByZXR1cm4gKCkgPT4gZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlcik7XG4gICAgfSk7XG4gICAgcmV0dXJuICgpID0+IHVucmVnaXN0ZXJzLmZvckVhY2goKGZuKSA9PiBmbigpKTtcbiAgfSk7XG59O1xuXG5jb25zdCBOYXZQYXJhbXNUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdOYXZQYXJhbXNUb2tlbicpO1xuXG5jb25zdCBnZXRQcm92aWRlcnMgPSAocGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTmF2UGFyYW1zVG9rZW4sXG4gICAgICB1c2VWYWx1ZTogcGFyYW1zLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTmF2UGFyYW1zLFxuICAgICAgdXNlRmFjdG9yeTogcHJvdmlkZU5hdlBhcmFtc0luamVjdGFibGUsXG4gICAgICBkZXBzOiBbTmF2UGFyYW1zVG9rZW5dLFxuICAgIH0sXG4gIF07XG59O1xuXG5jb25zdCBwcm92aWRlTmF2UGFyYW1zSW5qZWN0YWJsZSA9IChwYXJhbXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IHtcbiAgcmV0dXJuIG5ldyBOYXZQYXJhbXMocGFyYW1zKTtcbn07XG4iXX0=
@@ -22,10 +22,10 @@ export class Config {
22
22
  }
23
23
  return 0;
24
24
  }
25
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, providedIn: 'root' });
25
27
  }
26
- /** @nocollapse */ Config.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Config, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
- /** @nocollapse */ Config.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Config, providedIn: 'root' });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: Config, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Config, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{
31
31
  providedIn: 'root',
@@ -41,4 +41,4 @@ const getConfig = () => {
41
41
  }
42
42
  return null;
43
43
  };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tbW9uL3NyYy9wcm92aWRlcnMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEzRCxNQUFNLE9BQU8sTUFBTTtJQUNqQixHQUFHLENBQUMsR0FBc0IsRUFBRSxRQUFjO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFzQixFQUFFLFFBQWtCO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFzQixFQUFFLFFBQWlCO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7dUhBdkJVLE1BQU07MkhBQU4sTUFBTSxjQUZMLE1BQU07NEZBRVAsTUFBTTtrQkFIbEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBMkJELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBTSxZQUFZLENBQUMsQ0FBQztBQUVqRSxNQUFNLFNBQVMsR0FBRyxHQUFzQixFQUFFO0lBQ3hDLElBQUksT0FBUSxNQUFjLEtBQUssV0FBVyxFQUFFO1FBQzFDLE1BQU0sS0FBSyxHQUFJLE1BQTZCLENBQUMsS0FBSyxDQUFDO1FBQ25ELElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDckI7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnIGFzIENvcmVDb25maWcsIElvbmljQ29uZmlnIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IElvbmljV2luZG93IH0gZnJvbSAnLi4vdHlwZXMvaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBnZXQoa2V5OiBrZXlvZiBJb25pY0NvbmZpZywgZmFsbGJhY2s/OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGMgPSBnZXRDb25maWcoKTtcbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuZ2V0KGtleSwgZmFsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldEJvb2xlYW4oa2V5OiBrZXlvZiBJb25pY0NvbmZpZywgZmFsbGJhY2s/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYyA9IGdldENvbmZpZygpO1xuICAgIGlmIChjKSB7XG4gICAgICByZXR1cm4gYy5nZXRCb29sZWFuKGtleSwgZmFsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXROdW1iZXIoa2V5OiBrZXlvZiBJb25pY0NvbmZpZywgZmFsbGJhY2s/OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGMgPSBnZXRDb25maWcoKTtcbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuZ2V0TnVtYmVyKGtleSwgZmFsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ29uZmlnVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignVVNFUkNPTkZJRycpO1xuXG5jb25zdCBnZXRDb25maWcgPSAoKTogQ29yZUNvbmZpZyB8IG51bGwgPT4ge1xuICBpZiAodHlwZW9mICh3aW5kb3cgYXMgYW55KSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBJb25pYyA9ICh3aW5kb3cgYXMgYW55IGFzIElvbmljV2luZG93KS5Jb25pYztcbiAgICBpZiAoSW9uaWM/LmNvbmZpZykge1xuICAgICAgcmV0dXJuIElvbmljLmNvbmZpZztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tbW9uL3NyYy9wcm92aWRlcnMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEzRCxNQUFNLE9BQU8sTUFBTTtJQUNqQixHQUFHLENBQUMsR0FBc0IsRUFBRSxRQUFjO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFzQixFQUFFLFFBQWtCO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFzQixFQUFFLFFBQWlCO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxFQUFFO1lBQ0wsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNuQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQzsySEF2QlUsTUFBTTsrSEFBTixNQUFNLGNBRkwsTUFBTTs7NEZBRVAsTUFBTTtrQkFIbEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBMkJELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBTSxZQUFZLENBQUMsQ0FBQztBQUVqRSxNQUFNLFNBQVMsR0FBRyxHQUFzQixFQUFFO0lBQ3hDLElBQUksT0FBUSxNQUFjLEtBQUssV0FBVyxFQUFFO1FBQzFDLE1BQU0sS0FBSyxHQUFJLE1BQTZCLENBQUMsS0FBSyxDQUFDO1FBQ25ELElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDckI7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQ29uZmlnIGFzIENvcmVDb25maWcsIElvbmljQ29uZmlnIH0gZnJvbSAnQGlvbmljL2NvcmUvY29tcG9uZW50cyc7XG5cbmltcG9ydCB7IElvbmljV2luZG93IH0gZnJvbSAnLi4vdHlwZXMvaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBnZXQoa2V5OiBrZXlvZiBJb25pY0NvbmZpZywgZmFsbGJhY2s/OiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGMgPSBnZXRDb25maWcoKTtcbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuZ2V0KGtleSwgZmFsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldEJvb2xlYW4oa2V5OiBrZXlvZiBJb25pY0NvbmZpZywgZmFsbGJhY2s/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYyA9IGdldENvbmZpZygpO1xuICAgIGlmIChjKSB7XG4gICAgICByZXR1cm4gYy5nZXRCb29sZWFuKGtleSwgZmFsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXROdW1iZXIoa2V5OiBrZXlvZiBJb25pY0NvbmZpZywgZmFsbGJhY2s/OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGMgPSBnZXRDb25maWcoKTtcbiAgICBpZiAoYykge1xuICAgICAgcmV0dXJuIGMuZ2V0TnVtYmVyKGtleSwgZmFsbGJhY2spO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgQ29uZmlnVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignVVNFUkNPTkZJRycpO1xuXG5jb25zdCBnZXRDb25maWcgPSAoKTogQ29yZUNvbmZpZyB8IG51bGwgPT4ge1xuICBpZiAodHlwZW9mICh3aW5kb3cgYXMgYW55KSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBJb25pYyA9ICh3aW5kb3cgYXMgYW55IGFzIElvbmljV2luZG93KS5Jb25pYztcbiAgICBpZiAoSW9uaWM/LmNvbmZpZykge1xuICAgICAgcmV0dXJuIElvbmljLmNvbmZpZztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuIl19
@@ -15,10 +15,10 @@ export class DomController {
15
15
  write(cb) {
16
16
  getQueue().write(cb);
17
17
  }
18
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
19
+ /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, providedIn: 'root' });
18
20
  }
19
- /** @nocollapse */ DomController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DomController, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
20
- /** @nocollapse */ DomController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DomController, providedIn: 'root' });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DomController, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DomController, decorators: [{
22
22
  type: Injectable,
23
23
  args: [{
24
24
  providedIn: 'root',
@@ -41,4 +41,4 @@ const getQueue = () => {
41
41
  write: (cb) => cb(),
42
42
  };
43
43
  };
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21tb24vc3JjL3Byb3ZpZGVycy9kb20tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sYUFBYTtJQUN4Qjs7O09BR0c7SUFDSCxJQUFJLENBQUMsRUFBZTtRQUNsQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxFQUFlO1FBQ25CLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDOzs4SEFmVSxhQUFhO2tJQUFiLGFBQWEsY0FGWixNQUFNOzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQW1CRCxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDcEIsTUFBTSxHQUFHLEdBQUcsT0FBUSxNQUFjLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQVksQ0FBQztJQUU1RSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDZixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDcEI7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1lBQ2hELEtBQUssRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztTQUNsRCxDQUFDO0tBQ0g7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsS0FBSyxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7S0FDekIsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERvbUNvbnRyb2xsZXIge1xuICAvKipcbiAgICogU2NoZWR1bGVzIGEgdGFzayB0byBydW4gZHVyaW5nIHRoZSBSRUFEIHBoYXNlIG9mIHRoZSBuZXh0IGZyYW1lLlxuICAgKiBUaGlzIHRhc2sgc2hvdWxkIG9ubHkgcmVhZCB0aGUgRE9NLCBidXQgbmV2ZXIgbW9kaWZ5IGl0LlxuICAgKi9cbiAgcmVhZChjYjogUmFmQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBnZXRRdWV1ZSgpLnJlYWQoY2IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlcyBhIHRhc2sgdG8gcnVuIGR1cmluZyB0aGUgV1JJVEUgcGhhc2Ugb2YgdGhlIG5leHQgZnJhbWUuXG4gICAqIFRoaXMgdGFzayBzaG91bGQgd3JpdGUgdGhlIERPTSwgYnV0IG5ldmVyIFJFQUQgaXQuXG4gICAqL1xuICB3cml0ZShjYjogUmFmQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBnZXRRdWV1ZSgpLndyaXRlKGNiKTtcbiAgfVxufVxuXG5jb25zdCBnZXRRdWV1ZSA9ICgpID0+IHtcbiAgY29uc3Qgd2luID0gdHlwZW9mICh3aW5kb3cgYXMgYW55KSAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiAobnVsbCBhcyBhbnkpO1xuXG4gIGlmICh3aW4gIT0gbnVsbCkge1xuICAgIGNvbnN0IElvbmljID0gd2luLklvbmljO1xuICAgIGlmIChJb25pYz8ucXVldWUpIHtcbiAgICAgIHJldHVybiBJb25pYy5xdWV1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVhZDogKGNiOiBhbnkpID0+IHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpLFxuICAgICAgd3JpdGU6IChjYjogYW55KSA9PiB3aW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZWFkOiAoY2I6IGFueSkgPT4gY2IoKSxcbiAgICB3cml0ZTogKGNiOiBhbnkpID0+IGNiKCksXG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBSYWZDYWxsYmFjayA9ICh0aW1lU3RhbXA/OiBudW1iZXIpID0+IHZvaWQ7XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLWNvbnRyb2xsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21tb24vc3JjL3Byb3ZpZGVycy9kb20tY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sYUFBYTtJQUN4Qjs7O09BR0c7SUFDSCxJQUFJLENBQUMsRUFBZTtRQUNsQixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxFQUFlO1FBQ25CLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDOzJIQWZVLGFBQWE7K0hBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQW1CRCxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDcEIsTUFBTSxHQUFHLEdBQUcsT0FBUSxNQUFjLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFFLElBQVksQ0FBQztJQUU1RSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDZixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksS0FBSyxFQUFFLEtBQUssRUFBRTtZQUNoQixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDcEI7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1lBQ2hELEtBQUssRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztTQUNsRCxDQUFDO0tBQ0g7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsS0FBSyxFQUFFLENBQUMsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7S0FDekIsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERvbUNvbnRyb2xsZXIge1xuICAvKipcbiAgICogU2NoZWR1bGVzIGEgdGFzayB0byBydW4gZHVyaW5nIHRoZSBSRUFEIHBoYXNlIG9mIHRoZSBuZXh0IGZyYW1lLlxuICAgKiBUaGlzIHRhc2sgc2hvdWxkIG9ubHkgcmVhZCB0aGUgRE9NLCBidXQgbmV2ZXIgbW9kaWZ5IGl0LlxuICAgKi9cbiAgcmVhZChjYjogUmFmQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBnZXRRdWV1ZSgpLnJlYWQoY2IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjaGVkdWxlcyBhIHRhc2sgdG8gcnVuIGR1cmluZyB0aGUgV1JJVEUgcGhhc2Ugb2YgdGhlIG5leHQgZnJhbWUuXG4gICAqIFRoaXMgdGFzayBzaG91bGQgd3JpdGUgdGhlIERPTSwgYnV0IG5ldmVyIFJFQUQgaXQuXG4gICAqL1xuICB3cml0ZShjYjogUmFmQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBnZXRRdWV1ZSgpLndyaXRlKGNiKTtcbiAgfVxufVxuXG5jb25zdCBnZXRRdWV1ZSA9ICgpID0+IHtcbiAgY29uc3Qgd2luID0gdHlwZW9mICh3aW5kb3cgYXMgYW55KSAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiAobnVsbCBhcyBhbnkpO1xuXG4gIGlmICh3aW4gIT0gbnVsbCkge1xuICAgIGNvbnN0IElvbmljID0gd2luLklvbmljO1xuICAgIGlmIChJb25pYz8ucXVldWUpIHtcbiAgICAgIHJldHVybiBJb25pYy5xdWV1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVhZDogKGNiOiBhbnkpID0+IHdpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpLFxuICAgICAgd3JpdGU6IChjYjogYW55KSA9PiB3aW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNiKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByZWFkOiAoY2I6IGFueSkgPT4gY2IoKSxcbiAgICB3cml0ZTogKGNiOiBhbnkpID0+IGNiKCksXG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBSYWZDYWxsYmFjayA9ICh0aW1lU3RhbXA/OiBudW1iZXIpID0+IHZvaWQ7XG4iXX0=
@@ -0,0 +1,114 @@
1
+ export class MenuController {
2
+ menuController;
3
+ constructor(menuController) {
4
+ this.menuController = menuController;
5
+ }
6
+ /**
7
+ * Programmatically open the Menu.
8
+ * @param [menuId] Optionally get the menu by its id, or side.
9
+ * @return returns a promise when the menu is fully opened
10
+ */
11
+ open(menuId) {
12
+ return this.menuController.open(menuId);
13
+ }
14
+ /**
15
+ * Programmatically close the Menu. If no `menuId` is given as the first
16
+ * argument then it'll close any menu which is open. If a `menuId`
17
+ * is given then it'll close that exact menu.
18
+ * @param [menuId] Optionally get the menu by its id, or side.
19
+ * @return returns a promise when the menu is fully closed
20
+ */
21
+ close(menuId) {
22
+ return this.menuController.close(menuId);
23
+ }
24
+ /**
25
+ * Toggle the menu. If it's closed, it will open, and if opened, it
26
+ * will close.
27
+ * @param [menuId] Optionally get the menu by its id, or side.
28
+ * @return returns a promise when the menu has been toggled
29
+ */
30
+ toggle(menuId) {
31
+ return this.menuController.toggle(menuId);
32
+ }
33
+ /**
34
+ * Used to enable or disable a menu. For example, there could be multiple
35
+ * left menus, but only one of them should be able to be opened at the same
36
+ * time. If there are multiple menus on the same side, then enabling one menu
37
+ * will also automatically disable all the others that are on the same side.
38
+ * @param [menuId] Optionally get the menu by its id, or side.
39
+ * @return Returns the instance of the menu, which is useful for chaining.
40
+ */
41
+ enable(shouldEnable, menuId) {
42
+ return this.menuController.enable(shouldEnable, menuId);
43
+ }
44
+ /**
45
+ * Used to enable or disable the ability to swipe open the menu.
46
+ * @param shouldEnable True if it should be swipe-able, false if not.
47
+ * @param [menuId] Optionally get the menu by its id, or side.
48
+ * @return Returns the instance of the menu, which is useful for chaining.
49
+ */
50
+ swipeGesture(shouldEnable, menuId) {
51
+ return this.menuController.swipeGesture(shouldEnable, menuId);
52
+ }
53
+ /**
54
+ * @param [menuId] Optionally get the menu by its id, or side.
55
+ * @return Returns true if the specified menu is currently open, otherwise false.
56
+ * If the menuId is not specified, it returns true if ANY menu is currenly open.
57
+ */
58
+ isOpen(menuId) {
59
+ return this.menuController.isOpen(menuId);
60
+ }
61
+ /**
62
+ * @param [menuId] Optionally get the menu by its id, or side.
63
+ * @return Returns true if the menu is currently enabled, otherwise false.
64
+ */
65
+ isEnabled(menuId) {
66
+ return this.menuController.isEnabled(menuId);
67
+ }
68
+ /**
69
+ * Used to get a menu instance. If a `menuId` is not provided then it'll
70
+ * return the first menu found. If a `menuId` is `left` or `right`, then
71
+ * it'll return the enabled menu on that side. Otherwise, if a `menuId` is
72
+ * provided, then it'll try to find the menu using the menu's `id`
73
+ * property. If a menu is not found then it'll return `null`.
74
+ * @param [menuId] Optionally get the menu by its id, or side.
75
+ * @return Returns the instance of the menu if found, otherwise `null`.
76
+ */
77
+ get(menuId) {
78
+ return this.menuController.get(menuId);
79
+ }
80
+ /**
81
+ * @return Returns the instance of the menu already opened, otherwise `null`.
82
+ */
83
+ getOpen() {
84
+ return this.menuController.getOpen();
85
+ }
86
+ /**
87
+ * @return Returns an array of all menu instances.
88
+ */
89
+ getMenus() {
90
+ return this.menuController.getMenus();
91
+ }
92
+ registerAnimation(name, animation) {
93
+ return this.menuController.registerAnimation(name, animation);
94
+ }
95
+ isAnimating() {
96
+ return this.menuController.isAnimating();
97
+ }
98
+ _getOpenSync() {
99
+ return this.menuController._getOpenSync();
100
+ }
101
+ _createAnimation(type, menuCmp) {
102
+ return this.menuController._createAnimation(type, menuCmp);
103
+ }
104
+ _register(menu) {
105
+ return this.menuController._register(menu);
106
+ }
107
+ _unregister(menu) {
108
+ return this.menuController._unregister(menu);
109
+ }
110
+ _setOpen(menu, shouldOpen, animated) {
111
+ return this.menuController._setOpen(menu, shouldOpen, animated);
112
+ }
113
+ }
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tbW9uL3NyYy9wcm92aWRlcnMvbWVudS1jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxjQUFjO0lBQ0w7SUFBcEIsWUFBb0IsY0FBK0I7UUFBL0IsbUJBQWMsR0FBZCxjQUFjLENBQWlCO0lBQUcsQ0FBQztJQUV2RDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE1BQWU7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE1BQWU7UUFDbkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLFlBQXFCLEVBQUUsTUFBZTtRQUMzQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsWUFBcUIsRUFBRSxNQUFlO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLE1BQWU7UUFDdkIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxHQUFHLENBQUMsTUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBWSxFQUFFLFNBQTJCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVksRUFBRSxPQUFjO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFXLEVBQUUsVUFBbUIsRUFBRSxRQUFpQjtRQUMxRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZW51Q29udHJvbGxlckksIEFuaW1hdGlvbkJ1aWxkZXIsIE1lbnVJLCBBbmltYXRpb24gfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuZXhwb3J0IGNsYXNzIE1lbnVDb250cm9sbGVyIGltcGxlbWVudHMgTWVudUNvbnRyb2xsZXJJIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZW51Q29udHJvbGxlcjogTWVudUNvbnRyb2xsZXJJKSB7fVxuXG4gIC8qKlxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IG9wZW4gdGhlIE1lbnUuXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIHJldHVybnMgYSBwcm9taXNlIHdoZW4gdGhlIG1lbnUgaXMgZnVsbHkgb3BlbmVkXG4gICAqL1xuICBvcGVuKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLm9wZW4obWVudUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9ncmFtbWF0aWNhbGx5IGNsb3NlIHRoZSBNZW51LiBJZiBubyBgbWVudUlkYCBpcyBnaXZlbiBhcyB0aGUgZmlyc3RcbiAgICogYXJndW1lbnQgdGhlbiBpdCdsbCBjbG9zZSBhbnkgbWVudSB3aGljaCBpcyBvcGVuLiBJZiBhIGBtZW51SWRgXG4gICAqIGlzIGdpdmVuIHRoZW4gaXQnbGwgY2xvc2UgdGhhdCBleGFjdCBtZW51LlxuICAgKiBAcGFyYW0gW21lbnVJZF0gIE9wdGlvbmFsbHkgZ2V0IHRoZSBtZW51IGJ5IGl0cyBpZCwgb3Igc2lkZS5cbiAgICogQHJldHVybiByZXR1cm5zIGEgcHJvbWlzZSB3aGVuIHRoZSBtZW51IGlzIGZ1bGx5IGNsb3NlZFxuICAgKi9cbiAgY2xvc2UobWVudUlkPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUNvbnRyb2xsZXIuY2xvc2UobWVudUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIG1lbnUuIElmIGl0J3MgY2xvc2VkLCBpdCB3aWxsIG9wZW4sIGFuZCBpZiBvcGVuZWQsIGl0XG4gICAqIHdpbGwgY2xvc2UuXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIHJldHVybnMgYSBwcm9taXNlIHdoZW4gdGhlIG1lbnUgaGFzIGJlZW4gdG9nZ2xlZFxuICAgKi9cbiAgdG9nZ2xlKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLnRvZ2dsZShtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgYSBtZW51LiBGb3IgZXhhbXBsZSwgdGhlcmUgY291bGQgYmUgbXVsdGlwbGVcbiAgICogbGVmdCBtZW51cywgYnV0IG9ubHkgb25lIG9mIHRoZW0gc2hvdWxkIGJlIGFibGUgdG8gYmUgb3BlbmVkIGF0IHRoZSBzYW1lXG4gICAqIHRpbWUuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBtZW51cyBvbiB0aGUgc2FtZSBzaWRlLCB0aGVuIGVuYWJsaW5nIG9uZSBtZW51XG4gICAqIHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IGRpc2FibGUgYWxsIHRoZSBvdGhlcnMgdGhhdCBhcmUgb24gdGhlIHNhbWUgc2lkZS5cbiAgICogQHBhcmFtIFttZW51SWRdICBPcHRpb25hbGx5IGdldCB0aGUgbWVudSBieSBpdHMgaWQsIG9yIHNpZGUuXG4gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG1lbnUsIHdoaWNoIGlzIHVzZWZ1bCBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBlbmFibGUoc2hvdWxkRW5hYmxlOiBib29sZWFuLCBtZW51SWQ/OiBzdHJpbmcpOiBQcm9taXNlPEhUTUxJb25NZW51RWxlbWVudCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmVuYWJsZShzaG91bGRFbmFibGUsIG1lbnVJZCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYWJpbGl0eSB0byBzd2lwZSBvcGVuIHRoZSBtZW51LlxuICAgKiBAcGFyYW0gc2hvdWxkRW5hYmxlICBUcnVlIGlmIGl0IHNob3VsZCBiZSBzd2lwZS1hYmxlLCBmYWxzZSBpZiBub3QuXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBtZW51LCB3aGljaCBpcyB1c2VmdWwgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgc3dpcGVHZXN0dXJlKHNob3VsZEVuYWJsZTogYm9vbGVhbiwgbWVudUlkPzogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW9uTWVudUVsZW1lbnQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5zd2lwZUdlc3R1cmUoc2hvdWxkRW5hYmxlLCBtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBbbWVudUlkXSBPcHRpb25hbGx5IGdldCB0aGUgbWVudSBieSBpdHMgaWQsIG9yIHNpZGUuXG4gICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgbWVudSBpcyBjdXJyZW50bHkgb3Blbiwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKiBJZiB0aGUgbWVudUlkIGlzIG5vdCBzcGVjaWZpZWQsIGl0IHJldHVybnMgdHJ1ZSBpZiBBTlkgbWVudSBpcyBjdXJyZW5seSBvcGVuLlxuICAgKi9cbiAgaXNPcGVuKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmlzT3BlbihtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBbbWVudUlkXSAgT3B0aW9uYWxseSBnZXQgdGhlIG1lbnUgYnkgaXRzIGlkLCBvciBzaWRlLlxuICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGUgbWVudSBpcyBjdXJyZW50bHkgZW5hYmxlZCwgb3RoZXJ3aXNlIGZhbHNlLlxuICAgKi9cbiAgaXNFbmFibGVkKG1lbnVJZD86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmlzRW5hYmxlZChtZW51SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZ2V0IGEgbWVudSBpbnN0YW5jZS4gSWYgYSBgbWVudUlkYCBpcyBub3QgcHJvdmlkZWQgdGhlbiBpdCdsbFxuICAgKiByZXR1cm4gdGhlIGZpcnN0IG1lbnUgZm91bmQuIElmIGEgYG1lbnVJZGAgaXMgYGxlZnRgIG9yIGByaWdodGAsIHRoZW5cbiAgICogaXQnbGwgcmV0dXJuIHRoZSBlbmFibGVkIG1lbnUgb24gdGhhdCBzaWRlLiBPdGhlcndpc2UsIGlmIGEgYG1lbnVJZGAgaXNcbiAgICogcHJvdmlkZWQsIHRoZW4gaXQnbGwgdHJ5IHRvIGZpbmQgdGhlIG1lbnUgdXNpbmcgdGhlIG1lbnUncyBgaWRgXG4gICAqIHByb3BlcnR5LiBJZiBhIG1lbnUgaXMgbm90IGZvdW5kIHRoZW4gaXQnbGwgcmV0dXJuIGBudWxsYC5cbiAgICogQHBhcmFtIFttZW51SWRdICBPcHRpb25hbGx5IGdldCB0aGUgbWVudSBieSBpdHMgaWQsIG9yIHNpZGUuXG4gICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgdGhlIG1lbnUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gICAqL1xuICBnZXQobWVudUlkPzogc3RyaW5nKTogUHJvbWlzZTxIVE1MSW9uTWVudUVsZW1lbnQgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5nZXQobWVudUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBtZW51IGFscmVhZHkgb3BlbmVkLCBvdGhlcndpc2UgYG51bGxgLlxuICAgKi9cbiAgZ2V0T3BlbigpOiBQcm9taXNlPEhUTUxJb25NZW51RWxlbWVudCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmdldE9wZW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIG1lbnUgaW5zdGFuY2VzLlxuICAgKi9cbiAgZ2V0TWVudXMoKTogUHJvbWlzZTxIVE1MSW9uTWVudUVsZW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLmdldE1lbnVzKCk7XG4gIH1cblxuICByZWdpc3RlckFuaW1hdGlvbihuYW1lOiBzdHJpbmcsIGFuaW1hdGlvbjogQW5pbWF0aW9uQnVpbGRlcik6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLnJlZ2lzdGVyQW5pbWF0aW9uKG5hbWUsIGFuaW1hdGlvbik7XG4gIH1cblxuICBpc0FuaW1hdGluZygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5pc0FuaW1hdGluZygpO1xuICB9XG5cbiAgX2dldE9wZW5TeW5jKCk6IEhUTUxJb25NZW51RWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubWVudUNvbnRyb2xsZXIuX2dldE9wZW5TeW5jKCk7XG4gIH1cblxuICBfY3JlYXRlQW5pbWF0aW9uKHR5cGU6IHN0cmluZywgbWVudUNtcDogTWVudUkpOiBQcm9taXNlPEFuaW1hdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLl9jcmVhdGVBbmltYXRpb24odHlwZSwgbWVudUNtcCk7XG4gIH1cblxuICBfcmVnaXN0ZXIobWVudTogTWVudUkpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5tZW51Q29udHJvbGxlci5fcmVnaXN0ZXIobWVudSk7XG4gIH1cblxuICBfdW5yZWdpc3RlcihtZW51OiBNZW51SSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLm1lbnVDb250cm9sbGVyLl91bnJlZ2lzdGVyKG1lbnUpO1xuICB9XG5cbiAgX3NldE9wZW4obWVudTogTWVudUksIHNob3VsZE9wZW46IGJvb2xlYW4sIGFuaW1hdGVkOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubWVudUNvbnRyb2xsZXIuX3NldE9wZW4obWVudSwgc2hvdWxkT3BlbiwgYW5pbWF0ZWQpO1xuICB9XG59XG4iXX0=