@angular/core 9.0.0-rc.6 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/bundles/core-testing.umd.js +18 -16
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +7 -7
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +4018 -4002
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +172 -187
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.d.ts +725 -735
  10. package/core.metadata.json +1 -1
  11. package/esm2015/core.externs.js +5 -5
  12. package/esm2015/core.js +17 -15
  13. package/esm2015/index.js +2 -2
  14. package/esm2015/public_api.js +2 -2
  15. package/esm2015/src/application_init.js +10 -2
  16. package/esm2015/src/application_module.js +6 -3
  17. package/esm2015/src/application_ref.js +7 -7
  18. package/esm2015/src/core.js +4 -4
  19. package/esm2015/src/core_private_export.js +7 -7
  20. package/esm2015/src/core_render3_private_export.js +2 -2
  21. package/esm2015/src/debug/debug_node.js +71 -69
  22. package/esm2015/src/di/injectable.js +1 -13
  23. package/esm2015/src/di/injector.js +12 -10
  24. package/esm2015/src/di/interface/defs.js +28 -4
  25. package/esm2015/src/di/interface/provider.js +1 -1
  26. package/esm2015/src/di/jit/injectable.js +14 -2
  27. package/esm2015/src/di/jit/util.js +7 -5
  28. package/esm2015/src/di/r3_injector.js +5 -5
  29. package/esm2015/src/i18n/locale_data_api.js +22 -6
  30. package/esm2015/src/i18n/locale_en.js +16 -5
  31. package/esm2015/src/i18n/localization.js +7 -1
  32. package/esm2015/src/i18n/tokens.js +41 -1
  33. package/esm2015/src/interface/type.js +1 -1
  34. package/esm2015/src/metadata/ng_module.js +1 -1
  35. package/esm2015/src/render/api.js +4 -1
  36. package/esm2015/src/render3/assert.js +9 -1
  37. package/esm2015/src/render3/bindings.js +20 -7
  38. package/esm2015/src/render3/component.js +54 -25
  39. package/esm2015/src/render3/component_ref.js +17 -18
  40. package/esm2015/src/render3/definition.js +3 -1
  41. package/esm2015/src/render3/di.js +3 -4
  42. package/esm2015/src/render3/di_setup.js +5 -7
  43. package/esm2015/src/render3/errors.js +99 -19
  44. package/esm2015/src/render3/features/inherit_definition_feature.js +89 -52
  45. package/esm2015/src/render3/features/ng_onchanges_feature.js +2 -2
  46. package/esm2015/src/render3/global_utils_api.js +3 -3
  47. package/esm2015/src/render3/i18n.js +60 -56
  48. package/esm2015/src/render3/index.js +2 -2
  49. package/esm2015/src/render3/instructions/advance.js +10 -11
  50. package/esm2015/src/render3/instructions/all.js +4 -5
  51. package/esm2015/src/render3/instructions/attribute.js +12 -5
  52. package/esm2015/src/render3/instructions/attribute_interpolation.js +66 -14
  53. package/esm2015/src/render3/instructions/change_detection.js +8 -23
  54. package/esm2015/src/render3/instructions/class_map_interpolation.js +13 -12
  55. package/esm2015/src/render3/instructions/container.js +15 -12
  56. package/esm2015/src/render3/instructions/element.js +50 -133
  57. package/esm2015/src/render3/instructions/element_container.js +8 -10
  58. package/esm2015/src/render3/instructions/embedded_view.js +7 -7
  59. package/esm2015/src/render3/instructions/host_property.js +10 -7
  60. package/esm2015/src/render3/instructions/listener.js +18 -16
  61. package/esm2015/src/render3/instructions/lview_debug.js +160 -23
  62. package/esm2015/src/render3/instructions/projection.js +7 -5
  63. package/esm2015/src/render3/instructions/property.js +27 -6
  64. package/esm2015/src/render3/instructions/property_interpolation.js +42 -23
  65. package/esm2015/src/render3/instructions/shared.js +285 -245
  66. package/esm2015/src/render3/instructions/storage.js +6 -8
  67. package/esm2015/src/render3/instructions/style_prop_interpolation.js +12 -12
  68. package/esm2015/src/render3/instructions/styling.js +732 -470
  69. package/esm2015/src/render3/instructions/text.js +5 -5
  70. package/esm2015/src/render3/interfaces/definition.js +41 -1
  71. package/esm2015/src/render3/interfaces/node.js +160 -115
  72. package/esm2015/src/render3/interfaces/styling.js +183 -375
  73. package/esm2015/src/render3/interfaces/view.js +10 -2
  74. package/esm2015/src/render3/jit/directive.js +10 -16
  75. package/esm2015/src/render3/jit/environment.js +1 -3
  76. package/esm2015/src/render3/node_manipulation.js +177 -57
  77. package/esm2015/src/render3/node_selector_matcher.js +128 -24
  78. package/esm2015/src/render3/node_util.js +12 -7
  79. package/esm2015/src/render3/pipe.js +10 -14
  80. package/esm2015/src/render3/pure_function.js +107 -42
  81. package/esm2015/src/render3/query.js +32 -26
  82. package/esm2015/src/render3/state.js +54 -183
  83. package/esm2015/src/render3/styling/class_differ.js +47 -0
  84. package/esm2015/src/render3/styling/static_styling.js +54 -0
  85. package/esm2015/src/render3/styling/style_binding_list.js +437 -0
  86. package/esm2015/src/render3/styling/styling_parser.js +336 -0
  87. package/esm2015/src/render3/tokens.js +2 -2
  88. package/esm2015/src/render3/util/attrs_utils.js +125 -2
  89. package/esm2015/src/render3/util/change_detection_utils.js +33 -0
  90. package/esm2015/src/render3/util/discovery_utils.js +146 -119
  91. package/esm2015/src/render3/util/global_utils.js +5 -5
  92. package/esm2015/src/render3/util/view_utils.js +6 -6
  93. package/esm2015/src/render3/view_engine_compatibility.js +16 -17
  94. package/esm2015/src/render3/view_ref.js +16 -13
  95. package/esm2015/src/sanitization/bypass.js +1 -1
  96. package/esm2015/src/sanitization/inert_body.js +22 -18
  97. package/esm2015/src/sanitization/sanitization.js +20 -5
  98. package/esm2015/src/util/array_utils.js +240 -1
  99. package/esm2015/src/util/assert.js +37 -21
  100. package/esm2015/src/util/char_code.js +8 -0
  101. package/esm2015/src/util/iterable.js +4 -1
  102. package/esm2015/src/util/ng_dev_mode.js +1 -12
  103. package/esm2015/src/util/stringify.js +14 -1
  104. package/esm2015/src/version.js +1 -1
  105. package/esm2015/src/view/services.js +1 -1
  106. package/esm2015/testing/src/r3_test_bed.js +5 -1
  107. package/esm2015/testing/src/r3_test_bed_compiler.js +5 -13
  108. package/esm2015/testing/src/styling.js +103 -0
  109. package/esm5/core.js +17 -15
  110. package/esm5/src/application_init.js +10 -2
  111. package/esm5/src/application_module.js +6 -3
  112. package/esm5/src/application_ref.js +6 -6
  113. package/esm5/src/core.js +2 -2
  114. package/esm5/src/core_private_export.js +7 -7
  115. package/esm5/src/core_render3_private_export.js +2 -2
  116. package/esm5/src/debug/debug_node.js +47 -41
  117. package/esm5/src/di/injectable.js +1 -1
  118. package/esm5/src/di/injector.js +12 -12
  119. package/esm5/src/di/interface/defs.js +28 -4
  120. package/esm5/src/di/interface/provider.js +1 -1
  121. package/esm5/src/di/jit/injectable.js +11 -2
  122. package/esm5/src/di/jit/util.js +6 -5
  123. package/esm5/src/di/r3_injector.js +4 -4
  124. package/esm5/src/i18n/locale_data_api.js +20 -6
  125. package/esm5/src/i18n/locale_en.js +16 -5
  126. package/esm5/src/i18n/localization.js +6 -1
  127. package/esm5/src/i18n/tokens.js +40 -1
  128. package/esm5/src/interface/type.js +1 -1
  129. package/esm5/src/metadata/ng_module.js +1 -1
  130. package/esm5/src/render/api.js +4 -1
  131. package/esm5/src/render3/assert.js +4 -1
  132. package/esm5/src/render3/bindings.js +22 -4
  133. package/esm5/src/render3/component.js +47 -22
  134. package/esm5/src/render3/component_ref.js +15 -17
  135. package/esm5/src/render3/definition.js +3 -1
  136. package/esm5/src/render3/di.js +3 -4
  137. package/esm5/src/render3/di_setup.js +4 -5
  138. package/esm5/src/render3/errors.js +69 -12
  139. package/esm5/src/render3/features/inherit_definition_feature.js +74 -42
  140. package/esm5/src/render3/features/ng_onchanges_feature.js +1 -1
  141. package/esm5/src/render3/global_utils_api.js +3 -3
  142. package/esm5/src/render3/i18n.js +51 -51
  143. package/esm5/src/render3/index.js +2 -2
  144. package/esm5/src/render3/instructions/advance.js +9 -11
  145. package/esm5/src/render3/instructions/all.js +1 -2
  146. package/esm5/src/render3/instructions/attribute.js +9 -5
  147. package/esm5/src/render3/instructions/attribute_interpolation.js +49 -13
  148. package/esm5/src/render3/instructions/change_detection.js +8 -21
  149. package/esm5/src/render3/instructions/class_map_interpolation.js +13 -12
  150. package/esm5/src/render3/instructions/container.js +13 -12
  151. package/esm5/src/render3/instructions/element.js +46 -114
  152. package/esm5/src/render3/instructions/element_container.js +8 -9
  153. package/esm5/src/render3/instructions/embedded_view.js +7 -7
  154. package/esm5/src/render3/instructions/host_property.js +8 -7
  155. package/esm5/src/render3/instructions/listener.js +13 -13
  156. package/esm5/src/render3/instructions/lview_debug.js +56 -15
  157. package/esm5/src/render3/instructions/projection.js +6 -5
  158. package/esm5/src/render3/instructions/property.js +17 -6
  159. package/esm5/src/render3/instructions/property_interpolation.js +32 -24
  160. package/esm5/src/render3/instructions/shared.js +264 -211
  161. package/esm5/src/render3/instructions/storage.js +4 -6
  162. package/esm5/src/render3/instructions/style_prop_interpolation.js +12 -12
  163. package/esm5/src/render3/instructions/styling.js +685 -363
  164. package/esm5/src/render3/instructions/text.js +5 -5
  165. package/esm5/src/render3/interfaces/definition.js +1 -1
  166. package/esm5/src/render3/interfaces/node.js +49 -1
  167. package/esm5/src/render3/interfaces/styling.js +57 -1
  168. package/esm5/src/render3/interfaces/view.js +1 -1
  169. package/esm5/src/render3/jit/directive.js +8 -10
  170. package/esm5/src/render3/jit/environment.js +1 -3
  171. package/esm5/src/render3/node_manipulation.js +167 -54
  172. package/esm5/src/render3/node_selector_matcher.js +113 -20
  173. package/esm5/src/render3/node_util.js +12 -7
  174. package/esm5/src/render3/pipe.js +10 -14
  175. package/esm5/src/render3/pure_function.js +103 -33
  176. package/esm5/src/render3/query.js +25 -24
  177. package/esm5/src/render3/state.js +34 -131
  178. package/esm5/src/render3/styling/class_differ.js +39 -0
  179. package/esm5/src/render3/styling/static_styling.js +42 -0
  180. package/esm5/src/render3/styling/style_binding_list.js +411 -0
  181. package/esm5/src/render3/styling/styling_parser.js +265 -0
  182. package/esm5/src/render3/tokens.js +2 -2
  183. package/esm5/src/render3/util/attrs_utils.js +117 -2
  184. package/esm5/src/render3/util/change_detection_utils.js +23 -0
  185. package/esm5/src/render3/util/discovery_utils.js +115 -99
  186. package/esm5/src/render3/util/global_utils.js +5 -5
  187. package/esm5/src/render3/util/view_utils.js +5 -5
  188. package/esm5/src/render3/view_engine_compatibility.js +37 -39
  189. package/esm5/src/render3/view_ref.js +14 -13
  190. package/esm5/src/sanitization/bypass.js +1 -1
  191. package/esm5/src/sanitization/inert_body.js +20 -13
  192. package/esm5/src/sanitization/sanitization.js +16 -5
  193. package/esm5/src/util/array_utils.js +240 -1
  194. package/esm5/src/util/assert.js +37 -21
  195. package/esm5/src/util/char_code.js +8 -0
  196. package/esm5/src/util/iterable.js +4 -1
  197. package/esm5/src/util/ng_dev_mode.js +1 -12
  198. package/esm5/src/util/stringify.js +14 -1
  199. package/esm5/src/version.js +1 -1
  200. package/esm5/src/view/services.js +1 -1
  201. package/esm5/testing/src/r3_test_bed.js +9 -1
  202. package/esm5/testing/src/r3_test_bed_compiler.js +9 -15
  203. package/esm5/testing/src/styling.js +82 -0
  204. package/fesm2015/core.js +5352 -6012
  205. package/fesm2015/core.js.map +1 -1
  206. package/fesm2015/testing.js +10 -14
  207. package/fesm2015/testing.js.map +1 -1
  208. package/fesm5/core.js +3987 -3980
  209. package/fesm5/core.js.map +1 -1
  210. package/fesm5/testing.js +18 -16
  211. package/fesm5/testing.js.map +1 -1
  212. package/package.json +1 -1
  213. package/schematics/migrations/missing-injectable/transform.js +2 -3
  214. package/schematics/migrations/module-with-providers/transform.js +3 -2
  215. package/schematics/migrations/undecorated-classes-with-di/index.js +2 -2
  216. package/schematics/utils/typescript/compiler_host.js +2 -2
  217. package/src/r3_symbols.d.ts +46 -23
  218. package/testing/testing.d.ts +3 -5
  219. package/testing/testing.metadata.json +1 -1
  220. package/testing.d.ts +2 -2
  221. package/esm2015/global.js +0 -7
  222. package/esm2015/src/render3/instructions/alloc_host_vars.js +0 -80
  223. package/esm2015/src/render3/styling/bindings.js +0 -1248
  224. package/esm2015/src/render3/styling/map_based_bindings.js +0 -384
  225. package/esm2015/src/render3/styling/state.js +0 -135
  226. package/esm2015/src/render3/styling/styling_debug.js +0 -712
  227. package/esm2015/src/render3/util/styling_utils.js +0 -625
  228. package/esm5/global.js +0 -9
  229. package/esm5/src/render3/instructions/alloc_host_vars.js +0 -62
  230. package/esm5/src/render3/styling/bindings.js +0 -949
  231. package/esm5/src/render3/styling/map_based_bindings.js +0 -310
  232. package/esm5/src/render3/styling/state.js +0 -56
  233. package/esm5/src/render3/styling/styling_debug.js +0 -352
  234. package/esm5/src/render3/util/styling_utils.js +0 -378
@@ -1,384 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: packages/core/src/render3/styling/map_based_bindings.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- /**
7
- * @license
8
- * Copyright Google Inc. All Rights Reserved.
9
- *
10
- * Use of this source code is governed by an MIT-style license that can be
11
- * found in the LICENSE file at https://angular.io/license
12
- */
13
- import { unwrapSafeValue } from '../../sanitization/bypass';
14
- import { getBindingValue, getMapProp, getMapValue, getValue, getValuesCount, isStylingValueDefined } from '../util/styling_utils';
15
- import { setStylingMapsSyncFn } from './bindings';
16
- /**
17
- * --------
18
- *
19
- * This file contains the algorithm logic for applying map-based bindings
20
- * such as `[style]` and `[class]`.
21
- *
22
- * --------
23
- */
24
- /**
25
- * Enables support for map-based styling bindings (e.g. `[style]` and `[class]` bindings).
26
- * @return {?}
27
- */
28
- export function activateStylingMapFeature() {
29
- setStylingMapsSyncFn(syncStylingMap);
30
- }
31
- /**
32
- * Used to apply styling values presently within any map-based bindings on an element.
33
- *
34
- * Angular supports map-based styling bindings which can be applied via the
35
- * `[style]` and `[class]` bindings which can be placed on any HTML element.
36
- * These bindings can work independently, together or alongside prop-based
37
- * styling bindings (e.g. `<div [style]="x" [style.width]="w">`).
38
- *
39
- * If a map-based styling binding is detected by the compiler, the following
40
- * AOT code is produced:
41
- *
42
- * ```typescript
43
- * styleMap(ctx.styles); // styles = {key:value}
44
- * classMap(ctx.classes); // classes = {key:value}|string
45
- * ```
46
- *
47
- * If and when either of the instructions above are evaluated, then the code
48
- * present in this file is included into the bundle. The mechanism used, to
49
- * activate support for map-based bindings at runtime is possible via the
50
- * `activeStylingMapFeature` function (which is also present in this file).
51
- *
52
- * # The Algorithm
53
- * Whenever a map-based binding updates (which is when the identity of the
54
- * map-value changes) then the map is iterated over and a `StylingMapArray` array
55
- * is produced. The `StylingMapArray` instance is stored in the binding location
56
- * where the `BINDING_INDEX` is situated when the `styleMap()` or `classMap()`
57
- * instruction were called. Once the binding changes, then the internal `bitMask`
58
- * value is marked as dirty.
59
- *
60
- * Styling values are applied once CD exits the element (which happens when
61
- * the `advance(n)` instruction is called or the template function exits). When
62
- * this occurs, all prop-based bindings are applied. If a map-based binding is
63
- * present then a special flushing function (called a sync function) is made
64
- * available and it will be called each time a styling property is flushed.
65
- *
66
- * The flushing algorithm is designed to apply styling for a property (which is
67
- * a CSS property or a className value) one by one. If map-based bindings
68
- * are present, then the flushing algorithm will keep calling the maps styling
69
- * sync function each time a property is visited. This way, the flushing
70
- * behavior of map-based bindings will always be at the same property level
71
- * as the current prop-based property being iterated over (because everything
72
- * is alphabetically sorted).
73
- *
74
- * Let's imagine we have the following HTML template code:
75
- *
76
- * ```html
77
- * <div [style]="{width:'100px', height:'200px', 'z-index':'10'}"
78
- * [style.width.px]="200">...</div>
79
- * ```
80
- *
81
- * When CD occurs, both the `[style]` and `[style.width]` bindings
82
- * are evaluated. Then when the styles are flushed on screen, the
83
- * following operations happen:
84
- *
85
- * 1. `[style.width]` is attempted to be written to the element.
86
- *
87
- * 2. Once that happens, the algorithm instructs the map-based
88
- * entries (`[style]` in this case) to "catch up" and apply
89
- * all values up to the `width` value. When this happens the
90
- * `height` value is applied to the element (since it is
91
- * alphabetically situated before the `width` property).
92
- *
93
- * 3. Since there are no more prop-based entries anymore, the
94
- * loop exits and then, just before the flushing ends, it
95
- * instructs all map-based bindings to "finish up" applying
96
- * their values.
97
- *
98
- * 4. The only remaining value within the map-based entries is
99
- * the `z-index` value (`width` got skipped because it was
100
- * successfully applied via the prop-based `[style.width]`
101
- * binding). Since all map-based entries are told to "finish up",
102
- * the `z-index` value is iterated over and it is then applied
103
- * to the element.
104
- *
105
- * The most important thing to take note of here is that prop-based
106
- * bindings are evaluated in order alongside map-based bindings.
107
- * This allows all styling across an element to be applied in O(n)
108
- * time (a similar algorithm is that of the array merge algorithm
109
- * in merge sort).
110
- * @type {?}
111
- */
112
- export const syncStylingMap = (/**
113
- * @param {?} context
114
- * @param {?} renderer
115
- * @param {?} element
116
- * @param {?} data
117
- * @param {?} sourceIndex
118
- * @param {?} applyStylingFn
119
- * @param {?} sanitizer
120
- * @param {?} mode
121
- * @param {?=} targetProp
122
- * @param {?=} defaultValue
123
- * @return {?}
124
- */
125
- (context, renderer, element, data, sourceIndex, applyStylingFn, sanitizer, mode, targetProp, defaultValue) => {
126
- /** @type {?} */
127
- let targetPropValueWasApplied = false;
128
- // once the map-based styling code is activate it is never deactivated. For this reason a
129
- // check to see if the current styling context has any map based bindings is required.
130
- /** @type {?} */
131
- const totalMaps = getValuesCount(context);
132
- if (totalMaps) {
133
- /** @type {?} */
134
- let runTheSyncAlgorithm = true;
135
- /** @type {?} */
136
- const loopUntilEnd = !targetProp;
137
- // If the code is told to finish up (run until the end), but the mode
138
- // hasn't been flagged to apply values (it only traverses values) then
139
- // there is no point in iterating over the array because nothing will
140
- // be applied to the element.
141
- if (loopUntilEnd && (mode & 1 /* ApplyAllValues */) === 0) {
142
- runTheSyncAlgorithm = false;
143
- targetPropValueWasApplied = true;
144
- }
145
- if (runTheSyncAlgorithm) {
146
- targetPropValueWasApplied = innerSyncStylingMap(context, renderer, element, data, applyStylingFn, sanitizer, mode, targetProp || null, sourceIndex, defaultValue || null);
147
- }
148
- if (loopUntilEnd) {
149
- resetSyncCursors();
150
- }
151
- }
152
- return targetPropValueWasApplied;
153
- });
154
- /**
155
- * Recursive function designed to apply map-based styling to an element one map at a time.
156
- *
157
- * This function is designed to be called from the `syncStylingMap` function and will
158
- * apply map-based styling data one map at a time to the provided `element`.
159
- *
160
- * This function is recursive and it will call itself if a follow-up map value is to be
161
- * processed. To learn more about how the algorithm works, see `syncStylingMap`.
162
- * @param {?} context
163
- * @param {?} renderer
164
- * @param {?} element
165
- * @param {?} data
166
- * @param {?} applyStylingFn
167
- * @param {?} sanitizer
168
- * @param {?} mode
169
- * @param {?} targetProp
170
- * @param {?} currentMapIndex
171
- * @param {?} defaultValue
172
- * @return {?}
173
- */
174
- function innerSyncStylingMap(context, renderer, element, data, applyStylingFn, sanitizer, mode, targetProp, currentMapIndex, defaultValue) {
175
- /** @type {?} */
176
- const totalMaps = getValuesCount(context) - 1;
177
- // maps have no default value
178
- /** @type {?} */
179
- const mapsLimit = totalMaps - 1;
180
- /** @type {?} */
181
- const recurseInnerMaps = currentMapIndex < mapsLimit && (mode & 8 /* RecurseInnerMaps */) !== 0;
182
- /** @type {?} */
183
- const checkValuesOnly = (mode & 16 /* CheckValuesOnly */) !== 0;
184
- if (checkValuesOnly) {
185
- // inner modes do not check values ever (that can only happen
186
- // when sourceIndex === 0)
187
- mode &= ~16 /* CheckValuesOnly */;
188
- }
189
- /** @type {?} */
190
- let targetPropValueWasApplied = false;
191
- if (currentMapIndex <= mapsLimit) {
192
- /** @type {?} */
193
- let cursor = getCurrentSyncCursor(currentMapIndex);
194
- /** @type {?} */
195
- const bindingIndex = (/** @type {?} */ (getBindingValue(context, 2 /* ValuesStartPosition */, currentMapIndex)));
196
- /** @type {?} */
197
- const stylingMapArr = getValue(data, bindingIndex);
198
- if (stylingMapArr) {
199
- while (cursor < stylingMapArr.length) {
200
- /** @type {?} */
201
- const prop = getMapProp(stylingMapArr, cursor);
202
- /** @type {?} */
203
- const iteratedTooFar = targetProp && prop > targetProp;
204
- /** @type {?} */
205
- const isTargetPropMatched = !iteratedTooFar && prop === targetProp;
206
- /** @type {?} */
207
- const value = getMapValue(stylingMapArr, cursor);
208
- /** @type {?} */
209
- const valueIsDefined = isStylingValueDefined(value);
210
- // the recursive code is designed to keep applying until
211
- // it reaches or goes past the target prop. If and when
212
- // this happens then it will stop processing values, but
213
- // all other map values must also catch up to the same
214
- // point. This is why a recursive call is still issued
215
- // even if the code has iterated too far.
216
- /** @type {?} */
217
- const innerMode = iteratedTooFar ? mode : resolveInnerMapMode(mode, valueIsDefined, isTargetPropMatched);
218
- /** @type {?} */
219
- const innerProp = iteratedTooFar ? targetProp : prop;
220
- /** @type {?} */
221
- let valueApplied = recurseInnerMaps ?
222
- innerSyncStylingMap(context, renderer, element, data, applyStylingFn, sanitizer, innerMode, innerProp, currentMapIndex + 1, defaultValue) :
223
- false;
224
- if (iteratedTooFar) {
225
- if (!targetPropValueWasApplied) {
226
- targetPropValueWasApplied = valueApplied;
227
- }
228
- break;
229
- }
230
- if (!valueApplied && isValueAllowedToBeApplied(mode, isTargetPropMatched)) {
231
- valueApplied = true;
232
- if (!checkValuesOnly) {
233
- /** @type {?} */
234
- const useDefault = isTargetPropMatched && !valueIsDefined;
235
- /** @type {?} */
236
- const bindingIndexToApply = isTargetPropMatched ? bindingIndex : null;
237
- /** @type {?} */
238
- let finalValue;
239
- if (useDefault) {
240
- finalValue = defaultValue;
241
- }
242
- else {
243
- finalValue = sanitizer ?
244
- sanitizer(prop, value, 3 /* ValidateAndSanitize */) :
245
- (value ? unwrapSafeValue(value) : null);
246
- }
247
- applyStylingFn(renderer, element, prop, finalValue, bindingIndexToApply);
248
- }
249
- }
250
- targetPropValueWasApplied = valueApplied && isTargetPropMatched;
251
- cursor += 2 /* TupleSize */;
252
- }
253
- setCurrentSyncCursor(currentMapIndex, cursor);
254
- // this is a fallback case in the event that the styling map is `null` for this
255
- // binding but there are other map-based bindings that need to be evaluated
256
- // afterwards. If the `prop` value is falsy then the intention is to cycle
257
- // through all of the properties in the remaining maps as well. If the current
258
- // styling map is too short then there are no values to iterate over. In either
259
- // case the follow-up maps need to be iterated over.
260
- if (recurseInnerMaps &&
261
- (stylingMapArr.length === 1 /* ValuesStartPosition */ || !targetProp)) {
262
- targetPropValueWasApplied = innerSyncStylingMap(context, renderer, element, data, applyStylingFn, sanitizer, mode, targetProp, currentMapIndex + 1, defaultValue);
263
- }
264
- }
265
- else if (recurseInnerMaps) {
266
- targetPropValueWasApplied = innerSyncStylingMap(context, renderer, element, data, applyStylingFn, sanitizer, mode, targetProp, currentMapIndex + 1, defaultValue);
267
- }
268
- }
269
- return targetPropValueWasApplied;
270
- }
271
- /**
272
- * Used to determine the mode for the inner recursive call.
273
- *
274
- * If an inner map is iterated on then this is done so for one
275
- * of two reasons:
276
- *
277
- * - value is being applied:
278
- * if the value is being applied from this current styling
279
- * map then there is no need to apply it in a deeper map
280
- * (i.e. the `SkipTargetProp` flag is set)
281
- *
282
- * - value is being not applied:
283
- * apply the value if it is found in a deeper map.
284
- * (i.e. the `SkipTargetProp` flag is unset)
285
- *
286
- * When these reasons are encountered the flags will for the
287
- * inner map mode will be configured.
288
- * @param {?} currentMode
289
- * @param {?} valueIsDefined
290
- * @param {?} isTargetPropMatched
291
- * @return {?}
292
- */
293
- function resolveInnerMapMode(currentMode, valueIsDefined, isTargetPropMatched) {
294
- /** @type {?} */
295
- let innerMode = currentMode;
296
- // the statements below figures out whether or not an inner styling map
297
- // is allowed to apply its value or not. The main thing to keep note
298
- // of is that if the target prop isn't matched then its expected that
299
- // all values before it are allowed to be applied so long as "apply all values"
300
- // is set to true.
301
- /** @type {?} */
302
- const applyAllValues = currentMode & 1 /* ApplyAllValues */;
303
- /** @type {?} */
304
- const applyTargetProp = currentMode & 2 /* ApplyTargetProp */;
305
- /** @type {?} */
306
- const allowInnerApply = !valueIsDefined && (isTargetPropMatched ? applyTargetProp : applyAllValues);
307
- if (allowInnerApply) {
308
- // case 1: set the mode to apply the targeted prop value if it
309
- // ends up being encountered in another map value
310
- innerMode |= 2 /* ApplyTargetProp */;
311
- innerMode &= ~4 /* SkipTargetProp */;
312
- }
313
- else {
314
- // case 2: set the mode to skip the targeted prop value if it
315
- // ends up being encountered in another map value
316
- innerMode |= 4 /* SkipTargetProp */;
317
- innerMode &= ~2 /* ApplyTargetProp */;
318
- }
319
- return innerMode;
320
- }
321
- /**
322
- * Decides whether or not a prop/value entry will be applied to an element.
323
- *
324
- * To determine whether or not a value is to be applied,
325
- * the following procedure is evaluated:
326
- *
327
- * First check to see the current `mode` status:
328
- * 1. If the mode value permits all props to be applied then allow.
329
- * - But do not allow if the current prop is set to be skipped.
330
- * 2. Otherwise if the current prop is permitted then allow.
331
- * @param {?} mode
332
- * @param {?} isTargetPropMatched
333
- * @return {?}
334
- */
335
- function isValueAllowedToBeApplied(mode, isTargetPropMatched) {
336
- /** @type {?} */
337
- let doApplyValue = (mode & 1 /* ApplyAllValues */) !== 0;
338
- if (!doApplyValue) {
339
- if (mode & 2 /* ApplyTargetProp */) {
340
- doApplyValue = isTargetPropMatched;
341
- }
342
- }
343
- else if ((mode & 4 /* SkipTargetProp */) && isTargetPropMatched) {
344
- doApplyValue = false;
345
- }
346
- return doApplyValue;
347
- }
348
- /**
349
- * Used to keep track of concurrent cursor values for multiple map-based styling bindings present on
350
- * an element.
351
- * @type {?}
352
- */
353
- const MAP_CURSORS = [];
354
- /**
355
- * Used to reset the state of each cursor value being used to iterate over map-based styling
356
- * bindings.
357
- * @return {?}
358
- */
359
- function resetSyncCursors() {
360
- for (let i = 0; i < MAP_CURSORS.length; i++) {
361
- MAP_CURSORS[i] = 1 /* ValuesStartPosition */;
362
- }
363
- }
364
- /**
365
- * Returns an active cursor value at a given mapIndex location.
366
- * @param {?} mapIndex
367
- * @return {?}
368
- */
369
- function getCurrentSyncCursor(mapIndex) {
370
- if (mapIndex >= MAP_CURSORS.length) {
371
- MAP_CURSORS.push(1 /* ValuesStartPosition */);
372
- }
373
- return MAP_CURSORS[mapIndex];
374
- }
375
- /**
376
- * Sets a cursor value at a given mapIndex location.
377
- * @param {?} mapIndex
378
- * @param {?} indexValue
379
- * @return {?}
380
- */
381
- function setCurrentSyncCursor(mapIndex, indexValue) {
382
- MAP_CURSORS[mapIndex] = indexValue;
383
- }
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwX2Jhc2VkX2JpbmRpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9zdHlsaW5nL21hcF9iYXNlZF9iaW5kaW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFJMUQsT0FBTyxFQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoSSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFlaEQsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN2QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0ZELE1BQU0sT0FBTyxjQUFjOzs7Ozs7Ozs7Ozs7O0FBQ3ZCLENBQUMsT0FBd0IsRUFBRSxRQUFnRCxFQUFFLE9BQWlCLEVBQzdGLElBQWtCLEVBQUUsV0FBbUIsRUFBRSxjQUE4QixFQUN2RSxTQUFpQyxFQUFFLElBQXlCLEVBQUUsVUFBMEIsRUFDeEYsWUFBc0MsRUFBVyxFQUFFOztRQUM5Qyx5QkFBeUIsR0FBRyxLQUFLOzs7O1VBSS9CLFNBQVMsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO0lBQ3pDLElBQUksU0FBUyxFQUFFOztZQUNULG1CQUFtQixHQUFHLElBQUk7O2NBQ3hCLFlBQVksR0FBRyxDQUFDLFVBQVU7UUFFaEMscUVBQXFFO1FBQ3JFLHNFQUFzRTtRQUN0RSxxRUFBcUU7UUFDckUsNkJBQTZCO1FBQzdCLElBQUksWUFBWSxJQUFJLENB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QkFBbUIsQ0FBQztTQUNwQztLQUNGO1NBQU0sSUFBSSxDQUFDLElBQUkseUJBQXFDLENBQUMsSUFBSSxtQkFBbUIsRUFBRTtRQUM3RSxZQUFZLEdBQUcsS0FBSyxDQUFDO0tBQ3RCO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQzs7Ozs7O01BTUssV0FBVyxHQUFhLEVBQUU7Ozs7OztBQU1oQyxTQUFTLGdCQUFnQjtJQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQyxXQUFXLENBQUMsQ0FBQyxDQUFDLDhCQUEyQyxDQUFDO0tBQzNEO0FBQ0gsQ0FBQzs7Ozs7O0FBS0QsU0FBUyxvQkFBb0IsQ0FBQyxRQUFnQjtJQUM1QyxJQUFJLFFBQVEsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO1FBQ2xDLFdBQVcsQ0FBQyxJQUFJLDZCQUEwQyxDQUFDO0tBQzVEO0lBQ0QsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0IsQ0FBQzs7Ozs7OztBQUtELFNBQVMsb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxVQUFrQjtJQUNoRSxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQGxpY2Vuc2VcbiogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4qXG4qIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4qIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiovXG5pbXBvcnQge3Vud3JhcFNhZmVWYWx1ZX0gZnJvbSAnLi4vLi4vc2FuaXRpemF0aW9uL2J5cGFzcyc7XG5pbXBvcnQge1N0eWxlU2FuaXRpemVGbiwgU3R5bGVTYW5pdGl6ZU1vZGV9IGZyb20gJy4uLy4uL3Nhbml0aXphdGlvbi9zdHlsZV9zYW5pdGl6ZXInO1xuaW1wb3J0IHtQcm9jZWR1cmFsUmVuZGVyZXIzLCBSRWxlbWVudCwgUmVuZGVyZXIzfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlbmRlcmVyJztcbmltcG9ydCB7QXBwbHlTdHlsaW5nRm4sIExTdHlsaW5nRGF0YSwgU3R5bGluZ01hcEFycmF5LCBTdHlsaW5nTWFwQXJyYXlJbmRleCwgU3R5bGluZ01hcHNTeW5jTW9kZSwgU3luY1N0eWxpbmdNYXBzRm4sIFRTdHlsaW5nQ29udGV4dCwgVFN0eWxpbmdDb250ZXh0SW5kZXh9IGZyb20gJy4uL2ludGVyZmFjZXMvc3R5bGluZyc7XG5pbXBvcnQge2dldEJpbmRpbmdWYWx1ZSwgZ2V0TWFwUHJvcCwgZ2V0TWFwVmFsdWUsIGdldFZhbHVlLCBnZXRWYWx1ZXNDb3VudCwgaXNTdHlsaW5nVmFsdWVEZWZpbmVkfSBmcm9tICcuLi91dGlsL3N0eWxpbmdfdXRpbHMnO1xuXG5pbXBvcnQge3NldFN0eWxpbmdNYXBzU3luY0ZufSBmcm9tICcuL2JpbmRpbmdzJztcblxuXG4vKipcbiAqIC0tLS0tLS0tXG4gKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBhbGdvcml0aG0gbG9naWMgZm9yIGFwcGx5aW5nIG1hcC1iYXNlZCBiaW5kaW5nc1xuICogc3VjaCBhcyBgW3N0eWxlXWAgYW5kIGBbY2xhc3NdYC5cbiAqXG4gKiAtLS0tLS0tLVxuICovXG5cbi8qKlxuICogRW5hYmxlcyBzdXBwb3J0IGZvciBtYXAtYmFzZWQgc3R5bGluZyBiaW5kaW5ncyAoZS5nLiBgW3N0eWxlXWAgYW5kIGBbY2xhc3NdYCBiaW5kaW5ncykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmF0ZVN0eWxpbmdNYXBGZWF0dXJlKCkge1xuICBzZXRTdHlsaW5nTWFwc1N5bmNGbihzeW5jU3R5bGluZ01hcCk7XG59XG5cbi8qKlxuICogVXNlZCB0byBhcHBseSBzdHlsaW5nIHZhbHVlcyBwcmVzZW50bHkgd2l0aGluIGFueSBtYXAtYmFzZWQgYmluZGluZ3Mgb24gYW4gZWxlbWVudC5cbiAqXG4gKiBBbmd1bGFyIHN1cHBvcnRzIG1hcC1iYXNlZCBzdHlsaW5nIGJpbmRpbmdzIHdoaWNoIGNhbiBiZSBhcHBsaWVkIHZpYSB0aGVcbiAqIGBbc3R5bGVdYCBhbmQgYFtjbGFzc11gIGJpbmRpbmdzIHdoaWNoIGNhbiBiZSBwbGFjZWQgb24gYW55IEhUTUwgZWxlbWVudC5cbiAqIFRoZXNlIGJpbmRpbmdzIGNhbiB3b3JrIGluZGVwZW5kZW50bHksIHRvZ2V0aGVyIG9yIGFsb25nc2lkZSBwcm9wLWJhc2VkXG4gKiBzdHlsaW5nIGJpbmRpbmdzIChlLmcuIGA8ZGl2IFtzdHlsZV09XCJ4XCIgW3N0eWxlLndpZHRoXT1cIndcIj5gKS5cbiAqXG4gKiBJZiBhIG1hcC1iYXNlZCBzdHlsaW5nIGJpbmRpbmcgaXMgZGV0ZWN0ZWQgYnkgdGhlIGNvbXBpbGVyLCB0aGUgZm9sbG93aW5nXG4gKiBBT1QgY29kZSBpcyBwcm9kdWNlZDpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzdHlsZU1hcChjdHguc3R5bGVzKTsgLy8gc3R5bGVzID0ge2tleTp2YWx1ZX1cbiAqIGNsYXNzTWFwKGN0eC5jbGFzc2VzKTsgLy8gY2xhc3NlcyA9IHtrZXk6dmFsdWV9fHN0cmluZ1xuICogYGBgXG4gKlxuICogSWYgYW5kIHdoZW4gZWl0aGVyIG9mIHRoZSBpbnN0cnVjdGlvbnMgYWJvdmUgYXJlIGV2YWx1YXRlZCwgdGhlbiB0aGUgY29kZVxuICogcHJlc2VudCBpbiB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgaW50byB0aGUgYnVuZGxlLiBUaGUgbWVjaGFuaXNtIHVzZWQsIHRvXG4gKiBhY3RpdmF0ZSBzdXBwb3J0IGZvciBtYXAtYmFzZWQgYmluZGluZ3MgYXQgcnVudGltZSBpcyBwb3NzaWJsZSB2aWEgdGhlXG4gKiBgYWN0aXZlU3R5bGluZ01hcEZlYXR1cmVgIGZ1bmN0aW9uICh3aGljaCBpcyBhbHNvIHByZXNlbnQgaW4gdGhpcyBmaWxlKS5cbiAqXG4gKiAjIFRoZSBBbGdvcml0aG1cbiAqIFdoZW5ldmVyIGEgbWFwLWJhc2VkIGJpbmRpbmcgdXBkYXRlcyAod2hpY2ggaXMgd2hlbiB0aGUgaWRlbnRpdHkgb2YgdGhlXG4gKiBtYXAtdmFsdWUgY2hhbmdlcykgdGhlbiB0aGUgbWFwIGlzIGl0ZXJhdGVkIG92ZXIgYW5kIGEgYFN0eWxpbmdNYXBBcnJheWAgYXJyYXlcbiAqIGlzIHByb2R1Y2VkLiBUaGUgYFN0eWxpbmdNYXBBcnJheWAgaW5zdGFuY2UgaXMgc3RvcmVkIGluIHRoZSBiaW5kaW5nIGxvY2F0aW9uXG4gKiB3aGVyZSB0aGUgYEJJTkRJTkdfSU5ERVhgIGlzIHNpdHVhdGVkIHdoZW4gdGhlIGBzdHlsZU1hcCgpYCBvciBgY2xhc3NNYXAoKWBcbiAqIGluc3RydWN0aW9uIHdlcmUgY2FsbGVkLiBPbmNlIHRoZSBiaW5kaW5nIGNoYW5nZXMsIHRoZW4gdGhlIGludGVybmFsIGBiaXRNYXNrYFxuICogdmFsdWUgaXMgbWFya2VkIGFzIGRpcnR5LlxuICpcbiAqIFN0eWxpbmcgdmFsdWVzIGFyZSBhcHBsaWVkIG9uY2UgQ0QgZXhpdHMgdGhlIGVsZW1lbnQgKHdoaWNoIGhhcHBlbnMgd2hlblxuICogdGhlIGBhZHZhbmNlKG4pYCBpbnN0cnVjdGlvbiBpcyBjYWxsZWQgb3IgdGhlIHRlbXBsYXRlIGZ1bmN0aW9uIGV4aXRzKS4gV2hlblxuICogdGhpcyBvY2N1cnMsIGFsbCBwcm9wLWJhc2VkIGJpbmRpbmdzIGFyZSBhcHBsaWVkLiBJZiBhIG1hcC1iYXNlZCBiaW5kaW5nIGlzXG4gKiBwcmVzZW50IHRoZW4gYSBzcGVjaWFsIGZsdXNoaW5nIGZ1bmN0aW9uIChjYWxsZWQgYSBzeW5jIGZ1bmN0aW9uKSBpcyBtYWRlXG4gKiBhdmFpbGFibGUgYW5kIGl0IHdpbGwgYmUgY2FsbGVkIGVhY2ggdGltZSBhIHN0eWxpbmcgcHJvcGVydHkgaXMgZmx1c2hlZC5cbiAqXG4gKiBUaGUgZmx1c2hpbmcgYWxnb3JpdGhtIGlzIGRlc2lnbmVkIHRvIGFwcGx5IHN0eWxpbmcgZm9yIGEgcHJvcGVydHkgKHdoaWNoIGlzXG4gKiBhIENTUyBwcm9wZXJ0eSBvciBhIGNsYXNzTmFtZSB2YWx1ZSkgb25lIGJ5IG9uZS4gSWYgbWFwLWJhc2VkIGJpbmRpbmdzXG4gKiBhcmUgcHJlc2VudCwgdGhlbiB0aGUgZmx1c2hpbmcgYWxnb3JpdGhtIHdpbGwga2VlcCBjYWxsaW5nIHRoZSBtYXBzIHN0eWxpbmdcbiAqIHN5bmMgZnVuY3Rpb24gZWFjaCB0aW1lIGEgcHJvcGVydHkgaXMgdmlzaXRlZC4gVGhpcyB3YXksIHRoZSBmbHVzaGluZ1xuICogYmVoYXZpb3Igb2YgbWFwLWJhc2VkIGJpbmRpbmdzIHdpbGwgYWx3YXlzIGJlIGF0IHRoZSBzYW1lIHByb3BlcnR5IGxldmVsXG4gKiBhcyB0aGUgY3VycmVudCBwcm9wLWJhc2VkIHByb3BlcnR5IGJlaW5nIGl0ZXJhdGVkIG92ZXIgKGJlY2F1c2UgZXZlcnl0aGluZ1xuICogaXMgYWxwaGFiZXRpY2FsbHkgc29ydGVkKS5cbiAqXG4gKiBMZXQncyBpbWFnaW5lIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBIVE1MIHRlbXBsYXRlIGNvZGU6XG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBbc3R5bGVdPVwie3dpZHRoOicxMDBweCcsIGhlaWdodDonMjAwcHgnLCAnei1pbmRleCc6JzEwJ31cIlxuICogICAgICBbc3R5bGUud2lkdGgucHhdPVwiMjAwXCI+Li4uPC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBXaGVuIENEIG9jY3VycywgYm90aCB0aGUgYFtzdHlsZV1gIGFuZCBgW3N0eWxlLndpZHRoXWAgYmluZGluZ3NcbiAqIGFyZSBldmFsdWF0ZWQuIFRoZW4gd2hlbiB0aGUgc3R5bGVzIGFyZSBmbHVzaGVkIG9uIHNjcmVlbiwgdGhlXG4gKiBmb2xsb3dpbmcgb3BlcmF0aW9ucyBoYXBwZW46XG4gKlxuICogMS4gYFtzdHlsZS53aWR0aF1gIGlzIGF0dGVtcHRlZCB0byBiZSB3cml0dGVuIHRvIHRoZSBlbGVtZW50LlxuICpcbiAqIDIuICBPbmNlIHRoYXQgaGFwcGVucywgdGhlIGFsZ29yaXRobSBpbnN0cnVjdHMgdGhlIG1hcC1iYXNlZFxuICogICAgIGVudHJpZXMgKGBbc3R5bGVdYCBpbiB0aGlzIGNhc2UpIHRvIFwiY2F0Y2ggdXBcIiBhbmQgYXBwbHlcbiAqICAgICBhbGwgdmFsdWVzIHVwIHRvIHRoZSBgd2lkdGhgIHZhbHVlLiBXaGVuIHRoaXMgaGFwcGVucyB0aGVcbiAqICAgICBgaGVpZ2h0YCB2YWx1ZSBpcyBhcHBsaWVkIHRvIHRoZSBlbGVtZW50IChzaW5jZSBpdCBpc1xuICogICAgIGFscGhhYmV0aWNhbGx5IHNpdHVhdGVkIGJlZm9yZSB0aGUgYHdpZHRoYCBwcm9wZXJ0eSkuXG4gKlxuICogMy4gU2luY2UgdGhlcmUgYXJlIG5vIG1vcmUgcHJvcC1iYXNlZCBlbnRyaWVzIGFueW1vcmUsIHRoZVxuICogICAgbG9vcCBleGl0cyBhbmQgdGhlbiwganVzdCBiZWZvcmUgdGhlIGZsdXNoaW5nIGVuZHMsIGl0XG4gKiAgICBpbnN0cnVjdHMgYWxsIG1hcC1iYXNlZCBiaW5kaW5ncyB0byBcImZpbmlzaCB1cFwiIGFwcGx5aW5nXG4gKiAgICB0aGVpciB2YWx1ZXMuXG4gKlxuICogNC4gVGhlIG9ubHkgcmVtYWluaW5nIHZhbHVlIHdpdGhpbiB0aGUgbWFwLWJhc2VkIGVudHJpZXMgaXNcbiAqICAgIHRoZSBgei1pbmRleGAgdmFsdWUgKGB3aWR0aGAgZ290IHNraXBwZWQgYmVjYXVzZSBpdCB3YXNcbiAqICAgIHN1Y2Nlc3NmdWxseSBhcHBsaWVkIHZpYSB0aGUgcHJvcC1iYXNlZCBgW3N0eWxlLndpZHRoXWBcbiAqICAgIGJpbmRpbmcpLiBTaW5jZSBhbGwgbWFwLWJhc2VkIGVudHJpZXMgYXJlIHRvbGQgdG8gXCJmaW5pc2ggdXBcIixcbiAqICAgIHRoZSBgei1pbmRleGAgdmFsdWUgaXMgaXRlcmF0ZWQgb3ZlciBhbmQgaXQgaXMgdGhlbiBhcHBsaWVkXG4gKiAgICB0byB0aGUgZWxlbWVudC5cbiAqXG4gKiBUaGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgdG8gdGFrZSBub3RlIG9mIGhlcmUgaXMgdGhhdCBwcm9wLWJhc2VkXG4gKiBiaW5kaW5ncyBhcmUgZXZhbHVhdGVkIGluIG9yZGVyIGFsb25nc2lkZSBtYXAtYmFzZWQgYmluZGluZ3MuXG4gKiBUaGlzIGFsbG93cyBhbGwgc3R5bGluZyBhY3Jvc3MgYW4gZWxlbWVudCB0byBiZSBhcHBsaWVkIGluIE8obilcbiAqIHRpbWUgKGEgc2ltaWxhciBhbGdvcml0aG0gaXMgdGhhdCBvZiB0aGUgYXJyYXkgbWVyZ2UgYWxnb3JpdGhtXG4gKiBpbiBtZXJnZSBzb3J0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IHN5bmNTdHlsaW5nTWFwOiBTeW5jU3R5bGluZ01hcHNGbiA9XG4gICAgKGNvbnRleHQ6IFRTdHlsaW5nQ29udGV4dCwgcmVuZGVyZXI6IFJlbmRlcmVyMyB8IFByb2NlZHVyYWxSZW5kZXJlcjMgfCBudWxsLCBlbGVtZW50OiBSRWxlbWVudCxcbiAgICAgZGF0YTogTFN0eWxpbmdEYXRhLCBzb3VyY2VJbmRleDogbnVtYmVyLCBhcHBseVN0eWxpbmdGbjogQXBwbHlTdHlsaW5nRm4sXG4gICAgIHNhbml0aXplcjogU3R5bGVTYW5pdGl6ZUZuIHwgbnVsbCwgbW9kZTogU3R5bGluZ01hcHNTeW5jTW9kZSwgdGFyZ2V0UHJvcD86IHN0cmluZyB8IG51bGwsXG4gICAgIGRlZmF1bHRWYWx1ZT86IHN0cmluZyB8IGJvb2xlYW4gfCBudWxsKTogYm9vbGVhbiA9PiB7XG4gICAgICBsZXQgdGFyZ2V0UHJvcFZhbHVlV2FzQXBwbGllZCA9IGZhbHNlO1xuXG4gICAgICAvLyBvbmNlIHRoZSBtYXAtYmFzZWQgc3R5bGluZyBjb2RlIGlzIGFjdGl2YXRlIGl0IGlzIG5ldmVyIGRlYWN0aXZhdGVkLiBGb3IgdGhpcyByZWFzb24gYVxuICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRoZSBjdXJyZW50IHN0eWxpbmcgY29udGV4dCBoYXMgYW55IG1hcCBiYXNlZCBiaW5kaW5ncyBpcyByZXF1aXJlZC5cbiAgICAgIGNvbnN0IHRvdGFsTWFwcyA9IGdldFZhbHVlc0NvdW50KGNvbnRleHQpO1xuICAgICAgaWYgKHRvdGFsTWFwcykge1xuICAgICAgICBsZXQgcnVuVGhlU3luY0FsZ29yaXRobSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGxvb3BVbnRpbEVuZCA9ICF0YXJnZXRQcm9wO1xuXG4gICAgICAgIC8vIElmIHRoZSBjb2RlIGlzIHRvbGQgdG8gZmluaXNoIHVwIChydW4gdW50aWwgdGhlIGVuZCksIGJ1dCB0aGUgbW9kZVxuICAgICAgICAvLyBoYXNuJ3QgYmVlbiBmbGFnZ2VkIHRvIGFwcGx5IHZhbHVlcyAoaXQgb25seSB0cmF2ZXJzZXMgdmFsdWVzKSB0aGVuXG4gICAgICAgIC8vIHRoZXJlIGlzIG5vIHBvaW50IGluIGl0ZXJhdGluZyBvdmVyIHRoZSBhcnJheSBiZWNhdXNlIG5vdGhpbmcgd2lsbFxuICAgICAgICAvLyBiZSBhcHBsaWVkIHRvIHRoZSBlbGVtZW50LlxuICAgICAgICBpZiAobG9vcFVudGlsRW5kICYmIChtb2RlICYgU3R5bGluZ01hcHNTeW5jTW9kZS5BcHBseUFsbFZhbHVlcykgPT09IDApIHtcbiAgICAgICAgICBydW5UaGVTeW5jQWxnb3JpdGhtID0gZmFsc2U7XG4gICAgICAgICAgdGFyZ2V0UHJvcFZhbHVlV2FzQXBwbGllZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocnVuVGhlU3luY0FsZ29yaXRobSkge1xuICAgICAgICAgIHRhcmdldFByb3BWYWx1ZVdhc0FwcGxpZWQgPSBpbm5lclN5bmNTdHlsaW5nTWFwKFxuICAgICAgICAgICAgICBjb250ZXh0LCByZW5kZXJlciwgZWxlbWVudCwgZGF0YSwgYXBwbHlTdHlsaW5nRm4sIHNhbml0aXplciwgbW9kZSwgdGFyZ2V0UHJvcCB8fCBudWxsLFxuICAgICAgICAgICAgICBzb3VyY2VJbmRleCwgZGVmYXVsdFZhbHVlIHx8IG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvb3BVbnRpbEVuZCkge1xuICAgICAgICAgIHJlc2V0U3luY0N1cnNvcnMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGFyZ2V0UHJvcFZhbHVlV2FzQXBwbGllZDtcbiAgICB9O1xuXG4vKipcbiAqIFJlY3Vyc2l2ZSBmdW5jdGlvbiBkZXNpZ25lZCB0byBhcHBseSBtYXAtYmFzZWQgc3R5bGluZyB0byBhbiBlbGVtZW50IG9uZSBtYXAgYXQgYSB0aW1lLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gdGhlIGBzeW5jU3R5bGluZ01hcGAgZnVuY3Rpb24gYW5kIHdpbGxcbiAqIGFwcGx5IG1hcC1iYXNlZCBzdHlsaW5nIGRhdGEgb25lIG1hcCBhdCBhIHRpbWUgdG8gdGhlIHByb3ZpZGVkIGBlbGVtZW50YC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHJlY3Vyc2l2ZSBhbmQgaXQgd2lsbCBjYWxsIGl0c2VsZiBpZiBhIGZvbGxvdy11cCBtYXAgdmFsdWUgaXMgdG8gYmVcbiAqIHByb2Nlc3NlZC4gVG8gbGVhcm4gbW9yZSBhYm91dCBob3cgdGhlIGFsZ29yaXRobSB3b3Jrcywgc2VlIGBzeW5jU3R5bGluZ01hcGAuXG4gKi9cbmZ1bmN0aW9uIGlubmVyU3luY1N0eWxpbmdNYXAoXG4gICAgY29udGV4dDogVFN0eWxpbmdDb250ZXh0LCByZW5kZXJlcjogUmVuZGVyZXIzIHwgUHJvY2VkdXJhbFJlbmRlcmVyMyB8IG51bGwsIGVsZW1lbnQ6IFJFbGVtZW50LFxuICAgIGRhdGE6IExTdHlsaW5nRGF0YSwgYXBwbHlTdHlsaW5nRm46IEFwcGx5U3R5bGluZ0ZuLCBzYW5pdGl6ZXI6IFN0eWxlU2FuaXRpemVGbiB8IG51bGwsXG4gICAgbW9kZTogU3R5bGluZ01hcHNTeW5jTW9kZSwgdGFyZ2V0UHJvcDogc3RyaW5nIHwgbnVsbCwgY3VycmVudE1hcEluZGV4OiBudW1iZXIsXG4gICAgZGVmYXVsdFZhbHVlOiBzdHJpbmcgfCBib29sZWFuIHwgbnVsbCk6IGJvb2xlYW4ge1xuICBjb25zdCB0b3RhbE1hcHMgPSBnZXRWYWx1ZXNDb3VudChjb250ZXh0KSAtIDE7ICAvLyBtYXBzIGhhdmUgbm8gZGVmYXVsdCB2YWx1ZVxuICBjb25zdCBtYXBzTGltaXQgPSB0b3RhbE1hcHMgLSAxO1xuICBjb25zdCByZWN1cnNlSW5uZXJNYXBzID1cbiAgICAgIGN1cnJlbnRNYXBJbmRleCA8IG1hcHNMaW1pdCAmJiAobW9kZSAmIFN0eWxpbmdNYXBzU3luY01vZGUuUmVjdXJzZUlubmVyTWFwcykgIT09IDA7XG4gIGNvbnN0IGNoZWNrVmFsdWVzT25seSA9IChtb2RlICYgU3R5bGluZ01hcHNTeW5jTW9kZS5DaGVja1ZhbHVlc09ubHkpICE9PSAwO1xuXG4gIGlmIChjaGVja1ZhbHVlc09ubHkpIHtcbiAgICAvLyBpbm5lciBtb2RlcyBkbyBub3QgY2hlY2sgdmFsdWVzIGV2ZXIgKHRoYXQgY2FuIG9ubHkgaGFwcGVuXG4gICAgLy8gd2hlbiBzb3VyY2VJbmRleCA9PT0gMClcbiAgICBtb2RlICY9IH5TdHlsaW5nTWFwc1N5bmNNb2RlLkNoZWNrVmFsdWVzT25seTtcbiAgfVxuXG4gIGxldCB0YXJnZXRQcm9wVmFsdWVXYXNBcHBsaWVkID0gZmFsc2U7XG4gIGlmIChjdXJyZW50TWFwSW5kZXggPD0gbWFwc0xpbWl0KSB7XG4gICAgbGV0IGN1cnNvciA9IGdldEN1cnJlbnRTeW5jQ3Vyc29yKGN1cnJlbnRNYXBJbmRleCk7XG4gICAgY29uc3QgYmluZGluZ0luZGV4ID0gZ2V0QmluZGluZ1ZhbHVlKFxuICAgICAgICBjb250ZXh0LCBUU3R5bGluZ0NvbnRleHRJbmRleC5WYWx1ZXNTdGFydFBvc2l0aW9uLCBjdXJyZW50TWFwSW5kZXgpIGFzIG51bWJlcjtcbiAgICBjb25zdCBzdHlsaW5nTWFwQXJyID0gZ2V0VmFsdWU8U3R5bGluZ01hcEFycmF5PihkYXRhLCBiaW5kaW5nSW5kZXgpO1xuXG4gICAgaWYgKHN0eWxpbmdNYXBBcnIpIHtcbiAgICAgIHdoaWxlIChjdXJzb3IgPCBzdHlsaW5nTWFwQXJyLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBwcm9wID0gZ2V0TWFwUHJvcChzdHlsaW5nTWFwQXJyLCBjdXJzb3IpO1xuICAgICAgICBjb25zdCBpdGVyYXRlZFRvb0ZhciA9IHRhcmdldFByb3AgJiYgcHJvcCA+IHRhcmdldFByb3A7XG4gICAgICAgIGNvbnN0IGlzVGFyZ2V0UHJvcE1hdGNoZWQgPSAhaXRlcmF0ZWRUb29GYXIgJiYgcHJvcCA9PT0gdGFyZ2V0UHJvcDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBnZXRNYXBWYWx1ZShzdHlsaW5nTWFwQXJyLCBjdXJzb3IpO1xuICAgICAgICBjb25zdCB2YWx1ZUlzRGVmaW5lZCA9IGlzU3R5bGluZ1ZhbHVlRGVmaW5lZCh2YWx1ZSk7XG5cbiAgICAgICAgLy8gdGhlIHJlY3Vyc2l2ZSBjb2RlIGlzIGRlc2lnbmVkIHRvIGtlZXAgYXBwbHlpbmcgdW50aWxcbiAgICAgICAgLy8gaXQgcmVhY2hlcyBvciBnb2VzIHBhc3QgdGhlIHRhcmdldCBwcm9wLiBJZiBhbmQgd2hlblxuICAgICAgICAvLyB0aGlzIGhhcHBlbnMgdGhlbiBpdCB3aWxsIHN0b3AgcHJvY2Vzc2luZyB2YWx1ZXMsIGJ1dFxuICAgICAgICAvLyBhbGwgb3RoZXIgbWFwIHZhbHVlcyBtdXN0IGFsc28gY2F0Y2ggdXAgdG8gdGhlIHNhbWVcbiAgICAgICAgLy8gcG9pbnQuIFRoaXMgaXMgd2h5IGEgcmVjdXJzaXZlIGNhbGwgaXMgc3RpbGwgaXNzdWVkXG4gICAgICAgIC8vIGV2ZW4gaWYgdGhlIGNvZGUgaGFzIGl0ZXJhdGVkIHRvbyBmYXIuXG4gICAgICAgIGNvbnN0IGlubmVyTW9kZSA9XG4gICAgICAgICAgICBpdGVyYXRlZFRvb0ZhciA/IG1vZGUgOiByZXNvbHZlSW5uZXJNYXBNb2RlKG1vZGUsIHZhbHVlSXNEZWZpbmVkLCBpc1RhcmdldFByb3BNYXRjaGVkKTtcblxuICAgICAgICBjb25zdCBpbm5lclByb3AgPSBpdGVyYXRlZFRvb0ZhciA/IHRhcmdldFByb3AgOiBwcm9wO1xuICAgICAgICBsZXQgdmFsdWVBcHBsaWVkID0gcmVjdXJzZUlubmVyTWFwcyA/XG4gICAgICAgICAgICBpbm5lclN5bmNTdHlsaW5nTWFwKFxuICAgICAgICAgICAgICAgIGNvbnRleHQsIHJlbmRlcmVyLCBlbGVtZW50LCBkYXRhLCBhcHBseVN0eWxpbmdGbiwgc2FuaXRpemVyLCBpbm5lck1vZGUsIGlubmVyUHJvcCxcbiAgICAgICAgICAgICAgICBjdXJyZW50TWFwSW5kZXggKyAxLCBkZWZhdWx0VmFsdWUpIDpcbiAgICAgICAgICAgIGZhbHNlO1xuXG4gICAgICAgIGlmIChpdGVyYXRlZFRvb0Zhcikge1xuICAgICAgICAgIGlmICghdGFyZ2V0UHJvcFZhbHVlV2FzQXBwbGllZCkge1xuICAgICAgICAgICAgdGFyZ2V0UHJvcFZhbHVlV2FzQXBwbGllZCA9IHZhbHVlQXBwbGllZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlQXBwbGllZCAmJiBpc1ZhbHVlQWxsb3dlZFRvQmVBcHBsaWVkKG1vZGUsIGlzVGFyZ2V0UHJvcE1hdGNoZWQpKSB7XG4gICAgICAgICAgdmFsdWVBcHBsaWVkID0gdHJ1ZTtcblxuICAgICAgICAgIGlmICghY2hlY2tWYWx1ZXNPbmx5KSB7XG4gICAgICAgICAgICBjb25zdCB1c2VEZWZhdWx0ID0gaXNUYXJnZXRQcm9wTWF0Y2hlZCAmJiAhdmFsdWVJc0RlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBiaW5kaW5nSW5kZXhUb0FwcGx5ID0gaXNUYXJnZXRQcm9wTWF0Y2hlZCA/IGJpbmRpbmdJbmRleCA6IG51bGw7XG5cbiAgICAgICAgICAgIGxldCBmaW5hbFZhbHVlOiBhbnk7XG4gICAgICAgICAgICBpZiAodXNlRGVmYXVsdCkge1xuICAgICAgICAgICAgICBmaW5hbFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmluYWxWYWx1ZSA9IHNhbml0aXplciA/XG4gICAgICAgICAgICAgICAgICBzYW5pdGl6ZXIocHJvcCwgdmFsdWUsIFN0eWxlU2FuaXRpemVNb2RlLlZhbGlkYXRlQW5kU2FuaXRpemUpIDpcbiAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHVud3JhcFNhZmVWYWx1ZSh2YWx1ZSkgOiBudWxsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXBwbHlTdHlsaW5nRm4ocmVuZGVyZXIsIGVsZW1lbnQsIHByb3AsIGZpbmFsVmFsdWUsIGJpbmRpbmdJbmRleFRvQXBwbHkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldFByb3BWYWx1ZVdhc0FwcGxpZWQgPSB2YWx1ZUFwcGxpZWQgJiYgaXNUYXJnZXRQcm9wTWF0Y2hlZDtcbiAgICAgICAgY3Vyc29yICs9IFN0eWxpbmdNYXBBcnJheUluZGV4LlR1cGxlU2l6ZTtcbiAgICAgIH1cbiAgICAgIHNldEN1cnJlbnRTeW5jQ3Vyc29yKGN1cnJlbnRNYXBJbmRleCwgY3Vyc29yKTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGZhbGxiYWNrIGNhc2UgaW4gdGhlIGV2ZW50IHRoYXQgdGhlIHN0eWxpbmcgbWFwIGlzIGBudWxsYCBmb3IgdGhpc1xuICAgICAgLy8gYmluZGluZyBidXQgdGhlcmUgYXJlIG90aGVyIG1hcC1iYXNlZCBiaW5kaW5ncyB0aGF0IG5lZWQgdG8gYmUgZXZhbHVhdGVkXG4gICAgICAvLyBhZnRlcndhcmRzLiBJZiB0aGUgYHByb3BgIHZhbHVlIGlzIGZhbHN5IHRoZW4gdGhlIGludGVudGlvbiBpcyB0byBjeWNsZVxuICAgICAgLy8gdGhyb3VnaCBhbGwgb2YgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHJlbWFpbmluZyBtYXBzIGFzIHdlbGwuIElmIHRoZSBjdXJyZW50XG4gICAgICAvLyBzdHlsaW5nIG1hcCBpcyB0b28gc2hvcnQgdGhlbiB0aGVyZSBhcmUgbm8gdmFsdWVzIHRvIGl0ZXJhdGUgb3Zlci4gSW4gZWl0aGVyXG4gICAgICAvLyBjYXNlIHRoZSBmb2xsb3ctdXAgbWFwcyBuZWVkIHRvIGJlIGl0ZXJhdGVkIG92ZXIuXG4gICAgICBpZiAocmVjdXJzZUlubmVyTWFwcyAmJlxuICAgICAgICAgIChzdHlsaW5nTWFwQXJyLmxlbmd0aCA9PT0gU3R5bGluZ01hcEFycmF5SW5kZXguVmFsdWVzU3RhcnRQb3NpdGlvbiB8fCAhdGFyZ2V0UHJvcCkpIHtcbiAgICAgICAgdGFyZ2V0UHJvcFZhbHVlV2FzQXBwbGllZCA9IGlubmVyU3luY1N0eWxpbmdNYXAoXG4gICAgICAgICAgICBjb250ZXh0LCByZW5kZXJlciwgZWxlbWVudCwgZGF0YSwgYXBwbHlTdHlsaW5nRm4sIHNhbml0aXplciwgbW9kZSwgdGFyZ2V0UHJvcCxcbiAgICAgICAgICAgIGN1cnJlbnRNYXBJbmRleCArIDEsIGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZWN1cnNlSW5uZXJNYXBzKSB7XG4gICAgICB0YXJnZXRQcm9wVmFsdWVXYXNBcHBsaWVkID0gaW5uZXJTeW5jU3R5bGluZ01hcChcbiAgICAgICAgICBjb250ZXh0LCByZW5kZXJlciwgZWxlbWVudCwgZGF0YSwgYXBwbHlTdHlsaW5nRm4sIHNhbml0aXplciwgbW9kZSwgdGFyZ2V0UHJvcCxcbiAgICAgICAgICBjdXJyZW50TWFwSW5kZXggKyAxLCBkZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRQcm9wVmFsdWVXYXNBcHBsaWVkO1xufVxuXG4vKipcbiAqIFVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBtb2RlIGZvciB0aGUgaW5uZXIgcmVjdXJzaXZlIGNhbGwuXG4gKlxuICogSWYgYW4gaW5uZXIgbWFwIGlzIGl0ZXJhdGVkIG9uIHRoZW4gdGhpcyBpcyBkb25lIHNvIGZvciBvbmVcbiAqIG9mIHR3byByZWFzb25zOlxuICpcbiAqIC0gdmFsdWUgaXMgYmVpbmcgYXBwbGllZDpcbiAqICAgaWYgdGhlIHZhbHVlIGlzIGJlaW5nIGFwcGxpZWQgZnJvbSB0aGlzIGN1cnJlbnQgc3R5bGluZ1xuICogICBtYXAgdGhlbiB0aGVyZSBpcyBubyBuZWVkIHRvIGFwcGx5IGl0IGluIGEgZGVlcGVyIG1hcFxuICogICAoaS5lLiB0aGUgYFNraXBUYXJnZXRQcm9wYCBmbGFnIGlzIHNldClcbiAqXG4gKiAtIHZhbHVlIGlzIGJlaW5nIG5vdCBhcHBsaWVkOlxuICogICBhcHBseSB0aGUgdmFsdWUgaWYgaXQgaXMgZm91bmQgaW4gYSBkZWVwZXIgbWFwLlxuICogICAoaS5lLiB0aGUgYFNraXBUYXJnZXRQcm9wYCBmbGFnIGlzIHVuc2V0KVxuICpcbiAqIFdoZW4gdGhlc2UgcmVhc29ucyBhcmUgZW5jb3VudGVyZWQgdGhlIGZsYWdzIHdpbGwgZm9yIHRoZVxuICogaW5uZXIgbWFwIG1vZGUgd2lsbCBiZSBjb25maWd1cmVkLlxuICovXG5mdW5jdGlvbiByZXNvbHZlSW5uZXJNYXBNb2RlKFxuICAgIGN1cnJlbnRNb2RlOiBudW1iZXIsIHZhbHVlSXNEZWZpbmVkOiBib29sZWFuLCBpc1RhcmdldFByb3BNYXRjaGVkOiBib29sZWFuKTogbnVtYmVyIHtcbiAgbGV0IGlubmVyTW9kZSA9IGN1cnJlbnRNb2RlO1xuXG4gIC8vIHRoZSBzdGF0ZW1lbnRzIGJlbG93IGZpZ3VyZXMgb3V0IHdoZXRoZXIgb3Igbm90IGFuIGlubmVyIHN0eWxpbmcgbWFwXG4gIC8vIGlzIGFsbG93ZWQgdG8gYXBwbHkgaXRzIHZhbHVlIG9yIG5vdC4gVGhlIG1haW4gdGhpbmcgdG8ga2VlcCBub3RlXG4gIC8vIG9mIGlzIHRoYXQgaWYgdGhlIHRhcmdldCBwcm9wIGlzbid0IG1hdGNoZWQgdGhlbiBpdHMgZXhwZWN0ZWQgdGhhdFxuICAvLyBhbGwgdmFsdWVzIGJlZm9yZSBpdCBhcmUgYWxsb3dlZCB0byBiZSBhcHBsaWVkIHNvIGxvbmcgYXMgXCJhcHBseSBhbGwgdmFsdWVzXCJcbiAgLy8gaXMgc2V0IHRvIHRydWUuXG4gIGNvbnN0IGFwcGx5QWxsVmFsdWVzID0gY3VycmVudE1vZGUgJiBTdHlsaW5nTWFwc1N5bmNNb2RlLkFwcGx5QWxsVmFsdWVzO1xuICBjb25zdCBhcHBseVRhcmdldFByb3AgPSBjdXJyZW50TW9kZSAmIFN0eWxpbmdNYXBzU3luY01vZGUuQXBwbHlUYXJnZXRQcm9wO1xuICBjb25zdCBhbGxvd0lubmVyQXBwbHkgPVxuICAgICAgIXZhbHVlSXNEZWZpbmVkICYmIChpc1RhcmdldFByb3BNYXRjaGVkID8gYXBwbHlUYXJnZXRQcm9wIDogYXBwbHlBbGxWYWx1ZXMpO1xuXG4gIGlmIChhbGxvd0lubmVyQXBwbHkpIHtcbiAgICAvLyBjYXNlIDE6IHNldCB0aGUgbW9kZSB0byBhcHBseSB0aGUgdGFyZ2V0ZWQgcHJvcCB2YWx1ZSBpZiBpdFxuICAgIC8vIGVuZHMgdXAgYmVpbmcgZW5jb3VudGVyZWQgaW4gYW5vdGhlciBtYXAgdmFsdWVcbiAgICBpbm5lck1vZGUgfD0gU3R5bGluZ01hcHNTeW5jTW9kZS5BcHBseVRhcmdldFByb3A7XG4gICAgaW5uZXJNb2RlICY9IH5TdHlsaW5nTWFwc1N5bmNNb2RlLlNraXBUYXJnZXRQcm9wO1xuICB9IGVsc2Uge1xuICAgIC8vIGNhc2UgMjogc2V0IHRoZSBtb2RlIHRvIHNraXAgdGhlIHRhcmdldGVkIHByb3AgdmFsdWUgaWYgaXRcbiAgICAvLyBlbmRzIHVwIGJlaW5nIGVuY291bnRlcmVkIGluIGFub3RoZXIgbWFwIHZhbHVlXG4gICAgaW5uZXJNb2RlIHw9IFN0eWxpbmdNYXBzU3luY01vZGUuU2tpcFRhcmdldFByb3A7XG4gICAgaW5uZXJNb2RlICY9IH5TdHlsaW5nTWFwc1N5bmNNb2RlLkFwcGx5VGFyZ2V0UHJvcDtcbiAgfVxuXG4gIHJldHVybiBpbm5lck1vZGU7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIG9yIG5vdCBhIHByb3AvdmFsdWUgZW50cnkgd2lsbCBiZSBhcHBsaWVkIHRvIGFuIGVsZW1lbnQuXG4gKlxuICogVG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgdmFsdWUgaXMgdG8gYmUgYXBwbGllZCxcbiAqIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlIGlzIGV2YWx1YXRlZDpcbiAqXG4gKiBGaXJzdCBjaGVjayB0byBzZWUgdGhlIGN1cnJlbnQgYG1vZGVgIHN0YXR1czpcbiAqICAxLiBJZiB0aGUgbW9kZSB2YWx1ZSBwZXJtaXRzIGFsbCBwcm9wcyB0byBiZSBhcHBsaWVkIHRoZW4gYWxsb3cuXG4gKiAgICAtIEJ1dCBkbyBub3QgYWxsb3cgaWYgdGhlIGN1cnJlbnQgcHJvcCBpcyBzZXQgdG8gYmUgc2tpcHBlZC5cbiAqICAyLiBPdGhlcndpc2UgaWYgdGhlIGN1cnJlbnQgcHJvcCBpcyBwZXJtaXR0ZWQgdGhlbiBhbGxvdy5cbiAqL1xuZnVuY3Rpb24gaXNWYWx1ZUFsbG93ZWRUb0JlQXBwbGllZChtb2RlOiBTdHlsaW5nTWFwc1N5bmNNb2RlLCBpc1RhcmdldFByb3BNYXRjaGVkOiBib29sZWFuKSB7XG4gIGxldCBkb0FwcGx5VmFsdWUgPSAobW9kZSAmIFN0eWxpbmdNYXBzU3luY01vZGUuQXBwbHlBbGxWYWx1ZXMpICE9PSAwO1xuICBpZiAoIWRvQXBwbHlWYWx1ZSkge1xuICAgIGlmIChtb2RlICYgU3R5bGluZ01hcHNTeW5jTW9kZS5BcHBseVRhcmdldFByb3ApIHtcbiAgICAgIGRvQXBwbHlWYWx1ZSA9IGlzVGFyZ2V0UHJvcE1hdGNoZWQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKChtb2RlICYgU3R5bGluZ01hcHNTeW5jTW9kZS5Ta2lwVGFyZ2V0UHJvcCkgJiYgaXNUYXJnZXRQcm9wTWF0Y2hlZCkge1xuICAgIGRvQXBwbHlWYWx1ZSA9IGZhbHNlO1xuICB9XG4gIHJldHVybiBkb0FwcGx5VmFsdWU7XG59XG5cbi8qKlxuICogVXNlZCB0byBrZWVwIHRyYWNrIG9mIGNvbmN1cnJlbnQgY3Vyc29yIHZhbHVlcyBmb3IgbXVsdGlwbGUgbWFwLWJhc2VkIHN0eWxpbmcgYmluZGluZ3MgcHJlc2VudCBvblxuICogYW4gZWxlbWVudC5cbiAqL1xuY29uc3QgTUFQX0NVUlNPUlM6IG51bWJlcltdID0gW107XG5cbi8qKlxuICogVXNlZCB0byByZXNldCB0aGUgc3RhdGUgb2YgZWFjaCBjdXJzb3IgdmFsdWUgYmVpbmcgdXNlZCB0byBpdGVyYXRlIG92ZXIgbWFwLWJhc2VkIHN0eWxpbmdcbiAqIGJpbmRpbmdzLlxuICovXG5mdW5jdGlvbiByZXNldFN5bmNDdXJzb3JzKCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IE1BUF9DVVJTT1JTLmxlbmd0aDsgaSsrKSB7XG4gICAgTUFQX0NVUlNPUlNbaV0gPSBTdHlsaW5nTWFwQXJyYXlJbmRleC5WYWx1ZXNTdGFydFBvc2l0aW9uO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBhY3RpdmUgY3Vyc29yIHZhbHVlIGF0IGEgZ2l2ZW4gbWFwSW5kZXggbG9jYXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdldEN1cnJlbnRTeW5jQ3Vyc29yKG1hcEluZGV4OiBudW1iZXIpIHtcbiAgaWYgKG1hcEluZGV4ID49IE1BUF9DVVJTT1JTLmxlbmd0aCkge1xuICAgIE1BUF9DVVJTT1JTLnB1c2goU3R5bGluZ01hcEFycmF5SW5kZXguVmFsdWVzU3RhcnRQb3NpdGlvbik7XG4gIH1cbiAgcmV0dXJuIE1BUF9DVVJTT1JTW21hcEluZGV4XTtcbn1cblxuLyoqXG4gKiBTZXRzIGEgY3Vyc29yIHZhbHVlIGF0IGEgZ2l2ZW4gbWFwSW5kZXggbG9jYXRpb24uXG4gKi9cbmZ1bmN0aW9uIHNldEN1cnJlbnRTeW5jQ3Vyc29yKG1hcEluZGV4OiBudW1iZXIsIGluZGV4VmFsdWU6IG51bWJlcikge1xuICBNQVBfQ1VSU09SU1ttYXBJbmRleF0gPSBpbmRleFZhbHVlO1xufVxuIl19
@@ -1,135 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: packages/core/src/render3/styling/state.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { TEMPLATE_DIRECTIVE_INDEX } from '../util/styling_utils';
7
- /**
8
- * Used as a state reference for update values between style/class binding instructions.
9
- *
10
- * In addition to storing the element and bit-mask related values, the state also
11
- * stores the `sourceIndex` value. The `sourceIndex` value is an incremented value
12
- * that identifies what "source" (i.e. the template, a specific directive by index or
13
- * component) is currently applying its styling bindings to the element.
14
- * @record
15
- */
16
- export function StylingState() { }
17
- if (false) {
18
- /**
19
- * The element that is currently being processed
20
- * @type {?}
21
- */
22
- StylingState.prototype.element;
23
- /**
24
- * The directive index that is currently active (`0` === template)
25
- * @type {?}
26
- */
27
- StylingState.prototype.directiveIndex;
28
- /**
29
- * The source (column) index that is currently active (`0` === template)
30
- * @type {?}
31
- */
32
- StylingState.prototype.sourceIndex;
33
- /**
34
- * The classes update bit mask value that is processed during each class binding
35
- * @type {?}
36
- */
37
- StylingState.prototype.classesBitMask;
38
- /**
39
- * The classes update bit index value that is processed during each class binding
40
- * @type {?}
41
- */
42
- StylingState.prototype.classesIndex;
43
- /**
44
- * The styles update bit mask value that is processed during each style binding
45
- * @type {?}
46
- */
47
- StylingState.prototype.stylesBitMask;
48
- /**
49
- * The styles update bit index value that is processed during each style binding
50
- * @type {?}
51
- */
52
- StylingState.prototype.stylesIndex;
53
- /**
54
- * The last class map that was applied (i.e. `[class]="x"`).
55
- *
56
- * Note that this property is only populated when direct class values are applied
57
- * (i.e. context resolution is not used).
58
- *
59
- * See `allowDirectStyling` for more info.
60
- * @type {?}
61
- */
62
- StylingState.prototype.lastDirectClassMap;
63
- /**
64
- * The last style map that was applied (i.e. `[style]="x"`)
65
- *
66
- * Note that this property is only populated when direct style values are applied
67
- * (i.e. context resolution is not used).
68
- *
69
- * See `allowDirectStyling` for more info.
70
- * @type {?}
71
- */
72
- StylingState.prototype.lastDirectStyleMap;
73
- }
74
- // these values will get filled in the very first time this is accessed...
75
- /** @type {?} */
76
- const _state = {
77
- element: null,
78
- directiveIndex: -1,
79
- sourceIndex: -1,
80
- classesBitMask: -1,
81
- classesIndex: -1,
82
- stylesBitMask: -1,
83
- stylesIndex: -1,
84
- lastDirectClassMap: null,
85
- lastDirectStyleMap: null,
86
- };
87
- /** @type {?} */
88
- const BIT_MASK_START_VALUE = 0;
89
- // the `0` start value is reserved for [map]-based entries
90
- /** @type {?} */
91
- const INDEX_START_VALUE = 1;
92
- /**
93
- * Returns (or instantiates) the styling state for the given element.
94
- *
95
- * Styling state is accessed and processed each time a style or class binding
96
- * is evaluated.
97
- *
98
- * If and when the provided `element` doesn't match the current element in the
99
- * state then this means that styling was recently cleared or the element has
100
- * changed in change detection. In both cases the styling state is fully reset.
101
- *
102
- * If and when the provided `directiveIndex` doesn't match the current directive
103
- * index in the state then this means that a new source has introduced itself into
104
- * the styling code (or, in other words, another directive or component has started
105
- * to apply its styling host bindings to the element).
106
- * @param {?} element
107
- * @param {?} directiveIndex
108
- * @return {?}
109
- */
110
- export function getStylingState(element, directiveIndex) {
111
- if (_state.element !== element) {
112
- _state.element = element;
113
- _state.directiveIndex = directiveIndex;
114
- _state.sourceIndex = directiveIndex === TEMPLATE_DIRECTIVE_INDEX ? 0 : 1;
115
- _state.classesBitMask = BIT_MASK_START_VALUE;
116
- _state.classesIndex = INDEX_START_VALUE;
117
- _state.stylesBitMask = BIT_MASK_START_VALUE;
118
- _state.stylesIndex = INDEX_START_VALUE;
119
- _state.lastDirectClassMap = null;
120
- _state.lastDirectStyleMap = null;
121
- }
122
- else if (_state.directiveIndex !== directiveIndex) {
123
- _state.directiveIndex = directiveIndex;
124
- _state.sourceIndex++;
125
- }
126
- return _state;
127
- }
128
- /**
129
- * Clears the styling state so that it can be used by another element's styling code.
130
- * @return {?}
131
- */
132
- export function resetStylingState() {
133
- _state.element = null;
134
- }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL3N0eWxpbmcvc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQThCL0Qsa0NBeUNDOzs7Ozs7SUF2Q0MsK0JBQXVCOzs7OztJQUd2QixzQ0FBdUI7Ozs7O0lBR3ZCLG1DQUFvQjs7Ozs7SUFHcEIsc0NBQXVCOzs7OztJQUd2QixvQ0FBcUI7Ozs7O0lBR3JCLHFDQUFzQjs7Ozs7SUFHdEIsbUNBQW9COzs7Ozs7Ozs7O0lBVXBCLDBDQUF5Qzs7Ozs7Ozs7OztJQVV6QywwQ0FBeUM7Ozs7TUFJckMsTUFBTSxHQUFpQjtJQUMzQixPQUFPLEVBQUUsSUFBSTtJQUNiLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDbEIsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNmLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDbEIsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNoQixhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDZixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLGtCQUFrQixFQUFFLElBQUk7Q0FDekI7O01BRUssb0JBQW9CLEdBQUcsQ0FBQzs7O01BR3hCLGlCQUFpQixHQUFHLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQjNCLE1BQU0sVUFBVSxlQUFlLENBQUMsT0FBaUIsRUFBRSxjQUFzQjtJQUN2RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxFQUFFO1FBQzlCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsY0FBYyxLQUFLLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsY0FBYyxHQUFHLG9CQUFvQixDQUFDO1FBQzdDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsTUFBTSxDQUFDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QyxNQUFNLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDakMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztLQUNsQztTQUFNLElBQUksTUFBTSxDQUFDLGNBQWMsS0FBSyxjQUFjLEVBQUU7UUFDbkQsTUFBTSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDdkMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQ3RCO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQzs7Ozs7QUFLRCxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiogQGxpY2Vuc2VcbiogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4qXG4qIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4qIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiovXG5pbXBvcnQge1JFbGVtZW50fSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlbmRlcmVyJztcbmltcG9ydCB7U3R5bGluZ01hcEFycmF5fSBmcm9tICcuLi9pbnRlcmZhY2VzL3N0eWxpbmcnO1xuaW1wb3J0IHtURU1QTEFURV9ESVJFQ1RJVkVfSU5ERVh9IGZyb20gJy4uL3V0aWwvc3R5bGluZ191dGlscyc7XG5cbi8qKlxuICogLS0tLS0tLS1cbiAqXG4gKiBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHN0YXRlLWJhc2VkIGxvZ2ljIGZvciBzdHlsaW5nIGluIEFuZ3VsYXIuXG4gKlxuICogU3R5bGluZyBpbiBBbmd1bGFyIGlzIGV2YWx1YXRlZCB3aXRoIGEgc2VyaWVzIG9mIHN0eWxpbmctc3BlY2lmaWNcbiAqIHRlbXBsYXRlIGluc3RydWN0aW9ucyB3aGljaCBhcmUgY2FsbGVkIG9uZSBhZnRlciBhbm90aGVyIGVhY2ggdGltZVxuICogY2hhbmdlIGRldGVjdGlvbiBvY2N1cnMgaW4gQW5ndWxhci5cbiAqXG4gKiBTdHlsaW5nIG1ha2VzIHVzZSBvZiB2YXJpb3VzIHRlbXBvcmFyeSwgc3RhdGUtYmFzZWQgdmFyaWFibGVzIGJldHdlZW5cbiAqIGluc3RydWN0aW9ucyBzbyB0aGF0IGl0IGNhbiBiZXR0ZXIgY2FjaGUgYW5kIG9wdGltaXplIGl0cyB2YWx1ZXMuXG4gKiBUaGVzZSB2YWx1ZXMgYXJlIHVzdWFsbHkgcG9wdWxhdGVkIGFuZCBjbGVhcmVkIHdoZW4gYW4gZWxlbWVudCBpc1xuICogZXhpdGVkIGluIGNoYW5nZSBkZXRlY3Rpb24gKG9uY2UgYWxsIHRoZSBpbnN0cnVjdGlvbnMgYXJlIHJ1biBmb3JcbiAqIHRoYXQgZWxlbWVudCkuXG4gKlxuICogVG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgYWxnb3JpdGhtIHNlZSBgVFN0eWxpbmdDb250ZXh0YC5cbiAqXG4gKiAtLS0tLS0tLVxuICovXG5cbi8qKlxuICogVXNlZCBhcyBhIHN0YXRlIHJlZmVyZW5jZSBmb3IgdXBkYXRlIHZhbHVlcyBiZXR3ZWVuIHN0eWxlL2NsYXNzIGJpbmRpbmcgaW5zdHJ1Y3Rpb25zLlxuICpcbiAqIEluIGFkZGl0aW9uIHRvIHN0b3JpbmcgdGhlIGVsZW1lbnQgYW5kIGJpdC1tYXNrIHJlbGF0ZWQgdmFsdWVzLCB0aGUgc3RhdGUgYWxzb1xuICogc3RvcmVzIHRoZSBgc291cmNlSW5kZXhgIHZhbHVlLiBUaGUgYHNvdXJjZUluZGV4YCB2YWx1ZSBpcyBhbiBpbmNyZW1lbnRlZCB2YWx1ZVxuICogdGhhdCBpZGVudGlmaWVzIHdoYXQgXCJzb3VyY2VcIiAoaS5lLiB0aGUgdGVtcGxhdGUsIGEgc3BlY2lmaWMgZGlyZWN0aXZlIGJ5IGluZGV4IG9yXG4gKiBjb21wb25lbnQpIGlzIGN1cnJlbnRseSBhcHBseWluZyBpdHMgc3R5bGluZyBiaW5kaW5ncyB0byB0aGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHlsaW5nU3RhdGUge1xuICAvKiogVGhlIGVsZW1lbnQgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkICovXG4gIGVsZW1lbnQ6IFJFbGVtZW50fG51bGw7XG5cbiAgLyoqIFRoZSBkaXJlY3RpdmUgaW5kZXggdGhhdCBpcyBjdXJyZW50bHkgYWN0aXZlIChgMGAgPT09IHRlbXBsYXRlKSAqL1xuICBkaXJlY3RpdmVJbmRleDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgc291cmNlIChjb2x1bW4pIGluZGV4IHRoYXQgaXMgY3VycmVudGx5IGFjdGl2ZSAoYDBgID09PSB0ZW1wbGF0ZSkgKi9cbiAgc291cmNlSW5kZXg6IG51bWJlcjtcblxuICAvKiogVGhlIGNsYXNzZXMgdXBkYXRlIGJpdCBtYXNrIHZhbHVlIHRoYXQgaXMgcHJvY2Vzc2VkIGR1cmluZyBlYWNoIGNsYXNzIGJpbmRpbmcgKi9cbiAgY2xhc3Nlc0JpdE1hc2s6IG51bWJlcjtcblxuICAvKiogVGhlIGNsYXNzZXMgdXBkYXRlIGJpdCBpbmRleCB2YWx1ZSB0aGF0IGlzIHByb2Nlc3NlZCBkdXJpbmcgZWFjaCBjbGFzcyBiaW5kaW5nICovXG4gIGNsYXNzZXNJbmRleDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgc3R5bGVzIHVwZGF0ZSBiaXQgbWFzayB2YWx1ZSB0aGF0IGlzIHByb2Nlc3NlZCBkdXJpbmcgZWFjaCBzdHlsZSBiaW5kaW5nICovXG4gIHN0eWxlc0JpdE1hc2s6IG51bWJlcjtcblxuICAvKiogVGhlIHN0eWxlcyB1cGRhdGUgYml0IGluZGV4IHZhbHVlIHRoYXQgaXMgcHJvY2Vzc2VkIGR1cmluZyBlYWNoIHN0eWxlIGJpbmRpbmcgKi9cbiAgc3R5bGVzSW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGxhc3QgY2xhc3MgbWFwIHRoYXQgd2FzIGFwcGxpZWQgKGkuZS4gYFtjbGFzc109XCJ4XCJgKS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgcHJvcGVydHkgaXMgb25seSBwb3B1bGF0ZWQgd2hlbiBkaXJlY3QgY2xhc3MgdmFsdWVzIGFyZSBhcHBsaWVkXG4gICAqIChpLmUuIGNvbnRleHQgcmVzb2x1dGlvbiBpcyBub3QgdXNlZCkuXG4gICAqXG4gICAqIFNlZSBgYWxsb3dEaXJlY3RTdHlsaW5nYCBmb3IgbW9yZSBpbmZvLlxuICAqL1xuICBsYXN0RGlyZWN0Q2xhc3NNYXA6IFN0eWxpbmdNYXBBcnJheXxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzdHlsZSBtYXAgdGhhdCB3YXMgYXBwbGllZCAoaS5lLiBgW3N0eWxlXT1cInhcImApXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGlzIHByb3BlcnR5IGlzIG9ubHkgcG9wdWxhdGVkIHdoZW4gZGlyZWN0IHN0eWxlIHZhbHVlcyBhcmUgYXBwbGllZFxuICAgKiAoaS5lLiBjb250ZXh0IHJlc29sdXRpb24gaXMgbm90IHVzZWQpLlxuICAgKlxuICAgKiBTZWUgYGFsbG93RGlyZWN0U3R5bGluZ2AgZm9yIG1vcmUgaW5mby5cbiAgKi9cbiAgbGFzdERpcmVjdFN0eWxlTWFwOiBTdHlsaW5nTWFwQXJyYXl8bnVsbDtcbn1cblxuLy8gdGhlc2UgdmFsdWVzIHdpbGwgZ2V0IGZpbGxlZCBpbiB0aGUgdmVyeSBmaXJzdCB0aW1lIHRoaXMgaXMgYWNjZXNzZWQuLi5cbmNvbnN0IF9zdGF0ZTogU3R5bGluZ1N0YXRlID0ge1xuICBlbGVtZW50OiBudWxsLFxuICBkaXJlY3RpdmVJbmRleDogLTEsXG4gIHNvdXJjZUluZGV4OiAtMSxcbiAgY2xhc3Nlc0JpdE1hc2s6IC0xLFxuICBjbGFzc2VzSW5kZXg6IC0xLFxuICBzdHlsZXNCaXRNYXNrOiAtMSxcbiAgc3R5bGVzSW5kZXg6IC0xLFxuICBsYXN0RGlyZWN0Q2xhc3NNYXA6IG51bGwsXG4gIGxhc3REaXJlY3RTdHlsZU1hcDogbnVsbCxcbn07XG5cbmNvbnN0IEJJVF9NQVNLX1NUQVJUX1ZBTFVFID0gMDtcblxuLy8gdGhlIGAwYCBzdGFydCB2YWx1ZSBpcyByZXNlcnZlZCBmb3IgW21hcF0tYmFzZWQgZW50cmllc1xuY29uc3QgSU5ERVhfU1RBUlRfVkFMVUUgPSAxO1xuXG4vKipcbiAqIFJldHVybnMgKG9yIGluc3RhbnRpYXRlcykgdGhlIHN0eWxpbmcgc3RhdGUgZm9yIHRoZSBnaXZlbiBlbGVtZW50LlxuICpcbiAqIFN0eWxpbmcgc3RhdGUgaXMgYWNjZXNzZWQgYW5kIHByb2Nlc3NlZCBlYWNoIHRpbWUgYSBzdHlsZSBvciBjbGFzcyBiaW5kaW5nXG4gKiBpcyBldmFsdWF0ZWQuXG4gKlxuICogSWYgYW5kIHdoZW4gdGhlIHByb3ZpZGVkIGBlbGVtZW50YCBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IGVsZW1lbnQgaW4gdGhlXG4gKiBzdGF0ZSB0aGVuIHRoaXMgbWVhbnMgdGhhdCBzdHlsaW5nIHdhcyByZWNlbnRseSBjbGVhcmVkIG9yIHRoZSBlbGVtZW50IGhhc1xuICogY2hhbmdlZCBpbiBjaGFuZ2UgZGV0ZWN0aW9uLiBJbiBib3RoIGNhc2VzIHRoZSBzdHlsaW5nIHN0YXRlIGlzIGZ1bGx5IHJlc2V0LlxuICpcbiAqIElmIGFuZCB3aGVuIHRoZSBwcm92aWRlZCBgZGlyZWN0aXZlSW5kZXhgIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgZGlyZWN0aXZlXG4gKiBpbmRleCBpbiB0aGUgc3RhdGUgdGhlbiB0aGlzIG1lYW5zIHRoYXQgYSBuZXcgc291cmNlIGhhcyBpbnRyb2R1Y2VkIGl0c2VsZiBpbnRvXG4gKiB0aGUgc3R5bGluZyBjb2RlIChvciwgaW4gb3RoZXIgd29yZHMsIGFub3RoZXIgZGlyZWN0aXZlIG9yIGNvbXBvbmVudCBoYXMgc3RhcnRlZFxuICogdG8gYXBwbHkgaXRzIHN0eWxpbmcgaG9zdCBiaW5kaW5ncyB0byB0aGUgZWxlbWVudCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsaW5nU3RhdGUoZWxlbWVudDogUkVsZW1lbnQsIGRpcmVjdGl2ZUluZGV4OiBudW1iZXIpOiBTdHlsaW5nU3RhdGUge1xuICBpZiAoX3N0YXRlLmVsZW1lbnQgIT09IGVsZW1lbnQpIHtcbiAgICBfc3RhdGUuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgX3N0YXRlLmRpcmVjdGl2ZUluZGV4ID0gZGlyZWN0aXZlSW5kZXg7XG4gICAgX3N0YXRlLnNvdXJjZUluZGV4ID0gZGlyZWN0aXZlSW5kZXggPT09IFRFTVBMQVRFX0RJUkVDVElWRV9JTkRFWCA/IDAgOiAxO1xuICAgIF9zdGF0ZS5jbGFzc2VzQml0TWFzayA9IEJJVF9NQVNLX1NUQVJUX1ZBTFVFO1xuICAgIF9zdGF0ZS5jbGFzc2VzSW5kZXggPSBJTkRFWF9TVEFSVF9WQUxVRTtcbiAgICBfc3RhdGUuc3R5bGVzQml0TWFzayA9IEJJVF9NQVNLX1NUQVJUX1ZBTFVFO1xuICAgIF9zdGF0ZS5zdHlsZXNJbmRleCA9IElOREVYX1NUQVJUX1ZBTFVFO1xuICAgIF9zdGF0ZS5sYXN0RGlyZWN0Q2xhc3NNYXAgPSBudWxsO1xuICAgIF9zdGF0ZS5sYXN0RGlyZWN0U3R5bGVNYXAgPSBudWxsO1xuICB9IGVsc2UgaWYgKF9zdGF0ZS5kaXJlY3RpdmVJbmRleCAhPT0gZGlyZWN0aXZlSW5kZXgpIHtcbiAgICBfc3RhdGUuZGlyZWN0aXZlSW5kZXggPSBkaXJlY3RpdmVJbmRleDtcbiAgICBfc3RhdGUuc291cmNlSW5kZXgrKztcbiAgfVxuICByZXR1cm4gX3N0YXRlO1xufVxuXG4vKipcbiAqIENsZWFycyB0aGUgc3R5bGluZyBzdGF0ZSBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGJ5IGFub3RoZXIgZWxlbWVudCdzIHN0eWxpbmcgY29kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0U3R5bGluZ1N0YXRlKCkge1xuICBfc3RhdGUuZWxlbWVudCA9IG51bGw7XG59XG4iXX0=