breeze-client 2.2.1-cjs → 2.2.2

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 (378) hide show
  1. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  2. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  6. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  8. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  10. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  12. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
  13. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  14. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  15. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
  16. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
  17. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  18. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
  19. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  20. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  21. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
  22. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  23. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  24. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  25. package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
  26. package/{esm5/adapter-data-service-odata/adapter-data-service-odata.js → esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs} +138 -147
  27. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  28. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
  29. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  30. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
  31. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  32. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
  33. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  34. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
  35. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
  36. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  37. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  38. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
  39. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  40. package/esm2022/breeze-client.mjs +5 -0
  41. package/esm2022/index.mjs +2 -0
  42. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  43. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  44. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  45. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
  46. package/esm2022/src/abstract-data-service-adapter.mjs +325 -0
  47. package/esm2022/src/array.mjs +4 -0
  48. package/esm2022/src/assert-param.mjs +330 -0
  49. package/esm2022/src/breeze.mjs +85 -0
  50. package/esm2022/src/complex-array.mjs +117 -0
  51. package/esm2022/src/config.mjs +232 -0
  52. package/esm2022/src/core.mjs +712 -0
  53. package/esm2022/src/csdl-metadata-parser.mjs +385 -0
  54. package/esm2022/src/data-service.mjs +221 -0
  55. package/esm2022/src/data-type.mjs +510 -0
  56. package/esm2022/src/default-property-interceptor.mjs +460 -0
  57. package/{esm2015/src/entity-action.js → esm2022/src/entity-action.mjs} +25 -25
  58. package/esm2022/src/entity-aspect.mjs +897 -0
  59. package/esm2022/src/entity-group.mjs +192 -0
  60. package/esm2022/src/entity-key.mjs +125 -0
  61. package/esm2022/src/entity-manager.mjs +2163 -0
  62. package/esm2022/src/entity-metadata.mjs +2242 -0
  63. package/esm2022/src/entity-query.mjs +1024 -0
  64. package/esm2022/src/entity-state.mjs +107 -0
  65. package/esm2022/src/enum.mjs +143 -0
  66. package/esm2022/src/event.mjs +264 -0
  67. package/esm2022/src/interface-registry.mjs +39 -0
  68. package/esm2022/src/key-generator.mjs +110 -0
  69. package/esm2022/src/local-query-comparison-options.mjs +65 -0
  70. package/esm2022/src/mapping-context.mjs +411 -0
  71. package/esm2022/src/naming-convention.mjs +92 -0
  72. package/esm2022/src/observable-array.mjs +183 -0
  73. package/esm2022/src/predicate.mjs +1259 -0
  74. package/esm2022/src/primitive-array.mjs +85 -0
  75. package/esm2022/src/query-options.mjs +152 -0
  76. package/esm2022/src/relation-array.mjs +173 -0
  77. package/esm2022/src/save-options.mjs +41 -0
  78. package/esm2022/src/unattached-children-map.mjs +56 -0
  79. package/esm2022/src/validate.mjs +995 -0
  80. package/esm2022/src/validation-options.mjs +64 -0
  81. package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
  82. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  83. package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
  84. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  85. package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
  86. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  87. package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
  88. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  89. package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
  90. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
  91. package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +68 -69
  92. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  93. package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +30 -30
  94. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  95. package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
  96. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  97. package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
  98. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  99. package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
  100. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  101. package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
  102. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  103. package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
  104. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  105. package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
  106. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
  107. package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +1933 -1538
  108. package/fesm2022/breeze-client.mjs.map +1 -0
  109. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  110. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  111. package/package.json +94 -12
  112. package/src/config.d.ts +1 -1
  113. package/src/core.d.ts +1 -1
  114. package/src/entity-aspect.d.ts +1 -1
  115. package/src/entity-metadata.d.ts +8 -6
  116. package/src/entity-query.d.ts +1 -1
  117. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  118. package/adapter-ajax-angularjs/package.json +0 -13
  119. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  120. package/adapter-ajax-fetch/package.json +0 -13
  121. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  122. package/adapter-ajax-httpclient/package.json +0 -13
  123. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  124. package/adapter-ajax-jquery/package.json +0 -13
  125. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  126. package/adapter-ajax-post/package.json +0 -13
  127. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  128. package/adapter-data-service-odata/package.json +0 -13
  129. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  130. package/adapter-data-service-webapi/package.json +0 -13
  131. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  132. package/adapter-model-library-backing-store/package.json +0 -13
  133. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  134. package/adapter-model-library-ko/package.json +0 -13
  135. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  136. package/adapter-uri-builder-json/package.json +0 -13
  137. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  138. package/adapter-uri-builder-odata/package.json +0 -13
  139. package/breeze-client.d.ts +0 -8
  140. package/breeze-client.metadata.json +0 -1
  141. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  142. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  143. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  144. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  145. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  146. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  147. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  148. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  149. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  150. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  151. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  152. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  153. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  154. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  155. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  156. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  157. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  158. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  159. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  160. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  161. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -747
  162. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  163. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  164. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  165. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -333
  166. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  167. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  168. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  169. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  170. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  171. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  172. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  173. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  174. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  175. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  176. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  177. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  178. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  179. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  180. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  181. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  182. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  183. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  184. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  185. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  186. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  187. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  188. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  189. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  190. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  191. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  192. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  193. package/bundles/breeze-client.umd.js +0 -14234
  194. package/bundles/breeze-client.umd.js.map +0 -1
  195. package/bundles/breeze-client.umd.min.js +0 -16
  196. package/bundles/breeze-client.umd.min.js.map +0 -1
  197. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  198. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  199. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  200. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  201. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  202. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  203. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  204. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  205. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  206. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  207. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  208. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  209. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  210. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  211. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -463
  212. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  213. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -100
  214. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  215. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  216. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  217. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  218. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  219. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  220. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  221. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  222. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  223. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  224. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  225. package/esm2015/breeze-client.js +0 -9
  226. package/esm2015/index.js +0 -2
  227. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  228. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  229. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  230. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  231. package/esm2015/src/abstract-data-service-adapter.js +0 -327
  232. package/esm2015/src/array.js +0 -4
  233. package/esm2015/src/assert-param.js +0 -312
  234. package/esm2015/src/breeze.js +0 -85
  235. package/esm2015/src/complex-array.js +0 -119
  236. package/esm2015/src/config.js +0 -223
  237. package/esm2015/src/core.js +0 -714
  238. package/esm2015/src/csdl-metadata-parser.js +0 -385
  239. package/esm2015/src/data-service.js +0 -203
  240. package/esm2015/src/data-type.js +0 -506
  241. package/esm2015/src/default-property-interceptor.js +0 -460
  242. package/esm2015/src/entity-aspect.js +0 -804
  243. package/esm2015/src/entity-group.js +0 -187
  244. package/esm2015/src/entity-key.js +0 -116
  245. package/esm2015/src/entity-manager.js +0 -2094
  246. package/esm2015/src/entity-metadata.js +0 -2109
  247. package/esm2015/src/entity-query.js +0 -1015
  248. package/esm2015/src/entity-state.js +0 -107
  249. package/esm2015/src/enum.js +0 -141
  250. package/esm2015/src/event.js +0 -256
  251. package/esm2015/src/interface-registry.js +0 -41
  252. package/esm2015/src/key-generator.js +0 -108
  253. package/esm2015/src/local-query-comparison-options.js +0 -65
  254. package/esm2015/src/mapping-context.js +0 -411
  255. package/esm2015/src/naming-convention.js +0 -88
  256. package/esm2015/src/observable-array.js +0 -185
  257. package/esm2015/src/predicate.js +0 -1242
  258. package/esm2015/src/primitive-array.js +0 -87
  259. package/esm2015/src/query-options.js +0 -152
  260. package/esm2015/src/relation-array.js +0 -175
  261. package/esm2015/src/save-options.js +0 -41
  262. package/esm2015/src/unattached-children-map.js +0 -58
  263. package/esm2015/src/validate.js +0 -991
  264. package/esm2015/src/validation-options.js +0 -64
  265. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  266. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  267. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  268. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  269. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  270. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  271. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  272. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  273. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  274. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  275. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  276. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  277. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  278. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  279. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  280. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -105
  281. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  282. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  283. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  284. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  285. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  286. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  287. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  288. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  289. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  290. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  291. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  292. package/esm5/breeze-client.js +0 -9
  293. package/esm5/index.js +0 -2
  294. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  295. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  296. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  297. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  298. package/esm5/src/abstract-data-service-adapter.js +0 -333
  299. package/esm5/src/array.js +0 -4
  300. package/esm5/src/assert-param.js +0 -317
  301. package/esm5/src/breeze.js +0 -85
  302. package/esm5/src/complex-array.js +0 -119
  303. package/esm5/src/config.js +0 -228
  304. package/esm5/src/core.js +0 -722
  305. package/esm5/src/csdl-metadata-parser.js +0 -385
  306. package/esm5/src/data-service.js +0 -207
  307. package/esm5/src/data-type.js +0 -513
  308. package/esm5/src/default-property-interceptor.js +0 -460
  309. package/esm5/src/entity-action.js +0 -52
  310. package/esm5/src/entity-aspect.js +0 -810
  311. package/esm5/src/entity-group.js +0 -189
  312. package/esm5/src/entity-key.js +0 -118
  313. package/esm5/src/entity-manager.js +0 -2112
  314. package/esm5/src/entity-metadata.js +0 -2144
  315. package/esm5/src/entity-query.js +0 -1042
  316. package/esm5/src/entity-state.js +0 -114
  317. package/esm5/src/enum.js +0 -144
  318. package/esm5/src/event.js +0 -259
  319. package/esm5/src/interface-registry.js +0 -43
  320. package/esm5/src/key-generator.js +0 -111
  321. package/esm5/src/local-query-comparison-options.js +0 -67
  322. package/esm5/src/mapping-context.js +0 -413
  323. package/esm5/src/naming-convention.js +0 -90
  324. package/esm5/src/observable-array.js +0 -201
  325. package/esm5/src/predicate.js +0 -1307
  326. package/esm5/src/primitive-array.js +0 -87
  327. package/esm5/src/query-options.js +0 -167
  328. package/esm5/src/relation-array.js +0 -175
  329. package/esm5/src/save-options.js +0 -43
  330. package/esm5/src/unattached-children-map.js +0 -60
  331. package/esm5/src/validate.js +0 -996
  332. package/esm5/src/validation-options.js +0 -66
  333. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  334. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  335. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  336. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  337. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  338. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  339. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  340. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  341. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  342. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  343. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  344. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  345. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  346. package/fesm2015/breeze-client.js.map +0 -1
  347. package/fesm5/breeze-client-adapter-ajax-angularjs.js +0 -186
  348. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  349. package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
  350. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  351. package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
  352. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  353. package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
  354. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  355. package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
  356. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  357. package/fesm5/breeze-client-adapter-data-service-odata.js +0 -523
  358. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  359. package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -111
  360. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  361. package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
  362. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  363. package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
  364. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  365. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  366. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  367. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  368. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  369. package/fesm5/breeze-client-mixin-get-entity-graph.js +0 -254
  370. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  371. package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
  372. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  373. package/fesm5/breeze-client.js +0 -13956
  374. package/fesm5/breeze-client.js.map +0 -1
  375. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  376. package/mixin-get-entity-graph/package.json +0 -13
  377. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  378. package/mixin-save-queuing/package.json +0 -13
@@ -1,327 +0,0 @@
1
- import { core } from './core';
2
- import { config } from './config';
3
- import { JsonResultsAdapter } from './data-service';
4
- import { EntityType, MetadataStore } from './entity-metadata';
5
- /** For use by breeze plugin authors only. The class is used as the base class for most [[IDataServiceAdapter]] implementations
6
- @adapter (see [[IDataServiceAdapter]])
7
- @hidden
8
- */
9
- export class AbstractDataServiceAdapter {
10
- constructor() {
11
- /**
12
- Returns a constructor function for a "ChangeRequestInterceptor"
13
- that can tweak the saveBundle both as it is built and when it is completed
14
- by a concrete DataServiceAdapater.
15
-
16
- Initialized with a default, no-op implementation that developers can replace with a
17
- substantive implementation that changes the individual entity change requests
18
- or aspects of the entire 'saveBundle' without having to write their own DataService adapters.
19
- > let adapter = breeze.config.getAdapterInstance('dataService');
20
- > adapter.changeRequestInterceptor = function (saveContext, saveBundle) {
21
- > this.getRequest = function (request, entity, index) {
22
- > // alter the request that the adapter prepared for this entity
23
- > // based on the entity, saveContext, and saveBundle
24
- > // e.g., add a custom header or prune the originalValuesMap
25
- > return request;
26
- > };
27
- > this.done = function (requests) {
28
- > // alter the array of requests representing the entire change-set
29
- > // based on the saveContext and saveBundle
30
- > };
31
- > }
32
-
33
- @param saveContext - The BreezeJS "context" for the save operation.
34
- @param saveBundle - Contains the array of entities-to-be-saved (AKA, the entity change-set).
35
- @return Constructor for a "ChangeRequestInterceptor".
36
- **/
37
- this.changeRequestInterceptor = DefaultChangeRequestInterceptor;
38
- this.jsonResultsAdapter = new JsonResultsAdapter({
39
- name: "noop",
40
- visitNode: function ( /* node, mappingContext, nodeContext */) {
41
- return {};
42
- }
43
- });
44
- }
45
- // TODO use interface
46
- checkForRecomposition(interfaceInitializedArgs) {
47
- if (interfaceInitializedArgs.interfaceName === "ajax" && interfaceInitializedArgs.isDefault) {
48
- this.initialize();
49
- }
50
- }
51
- initialize() {
52
- this.ajaxImpl = config.getAdapterInstance("ajax");
53
- // don't cache 'ajax' because then we would need to ".bind" it, and don't want to because of brower support issues.
54
- if (this.ajaxImpl && this.ajaxImpl.ajax) {
55
- return;
56
- }
57
- throw new Error("Unable to find ajax adapter for dataservice adapter '" + (this.name || '') + "'.");
58
- }
59
- fetchMetadata(metadataStore, dataService) {
60
- let serviceName = dataService.serviceName;
61
- let url = dataService.qualifyUrl("Metadata");
62
- let promise = new Promise((resolve, reject) => {
63
- this.ajaxImpl.ajax({
64
- type: "GET",
65
- url: url,
66
- dataType: 'json',
67
- success: (httpResponse) => {
68
- // might have been fetched by another query
69
- if (metadataStore.hasMetadataFor(serviceName)) {
70
- return resolve("already fetched");
71
- }
72
- let data = httpResponse.data;
73
- let metadata;
74
- try {
75
- metadata = typeof (data) === "string" ? JSON.parse(data) : data;
76
- metadataStore.importMetadata(metadata);
77
- }
78
- catch (e) {
79
- let errMsg = "Unable to either parse or import metadata: " + e.message;
80
- handleHttpError(reject, httpResponse, "Metadata query failed for: " + url + ". " + errMsg);
81
- }
82
- // import may have brought in the service.
83
- if (!metadataStore.hasMetadataFor(serviceName)) {
84
- metadataStore.addDataService(dataService);
85
- }
86
- resolve(metadata);
87
- },
88
- error: (httpResponse) => {
89
- handleHttpError(reject, httpResponse, "Metadata query failed for: " + url);
90
- }
91
- });
92
- });
93
- return promise;
94
- }
95
- /** Execute the query in the mappingContext using the ajaxImpl. */
96
- executeQuery(mappingContext) {
97
- mappingContext.adapter = this;
98
- const usePost = mappingContext.query.usePostEnabled;
99
- const params = usePost ? this._makeQueryPostParams(mappingContext) : this._makeQueryGetParams(mappingContext);
100
- let promise = new Promise((resolve, reject) => {
101
- params.success = function (httpResponse) {
102
- let data = httpResponse.data;
103
- try {
104
- let rData;
105
- let results = data && (data.results || data.Results);
106
- if (results) {
107
- rData = { results: results, inlineCount: data.inlineCount || data.InlineCount,
108
- httpResponse: httpResponse, query: mappingContext.query };
109
- }
110
- else {
111
- rData = { results: data, httpResponse: httpResponse, query: mappingContext.query };
112
- }
113
- resolve(rData);
114
- }
115
- catch (e) {
116
- if (e instanceof Error) {
117
- reject(e);
118
- }
119
- else {
120
- handleHttpError(reject, httpResponse);
121
- }
122
- }
123
- };
124
- params.error = function (httpResponse) {
125
- handleHttpError(reject, httpResponse);
126
- };
127
- this.ajaxImpl.ajax(params);
128
- });
129
- return promise;
130
- }
131
- /** Set up ajax parameters for query GET. This puts the query into the request querystring in either JSON or OData-style syntax, depending upon the UriBuilder. */
132
- _makeQueryGetParams(mappingContext) {
133
- const url = mappingContext.getUrl();
134
- const params = {
135
- type: "GET",
136
- url: url,
137
- params: mappingContext.query.parameters,
138
- dataType: 'json',
139
- crossDomain: false,
140
- };
141
- if (mappingContext.dataService.useJsonp) {
142
- params.dataType = 'jsonp';
143
- params.crossDomain = true;
144
- }
145
- return params;
146
- }
147
- /** Set up ajax parameters for query POST. This put the query into the request body as JSON. */
148
- _makeQueryPostParams(mappingContext) {
149
- const entityQuery = mappingContext.query;
150
- const metadataStore = mappingContext.entityManager.metadataStore;
151
- const url = mappingContext.dataService.qualifyUrl(entityQuery.resourceName);
152
- let entityType = entityQuery._getFromEntityType(metadataStore, false);
153
- if (!entityType) {
154
- entityType = new EntityType(metadataStore);
155
- }
156
- const json = entityQuery.toJSONExt({ entityType: entityType, toNameOnServer: true });
157
- json.from = undefined;
158
- json.queryOptions = undefined;
159
- const params = {
160
- type: "POST",
161
- url: url,
162
- params: mappingContext.query.parameters,
163
- dataType: 'json',
164
- processData: false,
165
- contentType: "application/json; charset=UTF-8",
166
- data: JSON.stringify(json),
167
- crossDomain: false,
168
- };
169
- return params;
170
- }
171
- saveChanges(saveContext, saveBundle) {
172
- let adapter = saveContext.adapter = this;
173
- let saveBundleSer = adapter._prepareSaveBundle(saveContext, saveBundle);
174
- let bundle = JSON.stringify(saveBundleSer);
175
- let url = saveContext.dataService.qualifyUrl(saveContext.resourceName);
176
- let promise = new Promise((resolve, reject) => {
177
- this.ajaxImpl.ajax({
178
- type: "POST",
179
- url: url,
180
- dataType: 'json',
181
- contentType: "application/json",
182
- data: bundle,
183
- success: function (httpResponse) {
184
- httpResponse.saveContext = saveContext;
185
- let data = httpResponse.data;
186
- if (data.Errors || data.errors) {
187
- handleHttpError(reject, httpResponse);
188
- }
189
- else {
190
- let saveResult = adapter._prepareSaveResult(saveContext, data);
191
- saveResult.httpResponse = httpResponse;
192
- resolve(saveResult);
193
- }
194
- },
195
- error: function (httpResponse) {
196
- httpResponse.saveContext = saveContext;
197
- handleHttpError(reject, httpResponse);
198
- }
199
- });
200
- });
201
- return promise;
202
- }
203
- /** Abstract method that needs to be overwritten in any concrete DataServiceAdapter subclass.
204
- The return value from this method should be a serializable object that will be sent to the server after calling JSON.stringify on it.
205
- */
206
- _prepareSaveBundle(saveContext, saveBundle) {
207
- // The implementor should call _createChangeRequestInterceptor
208
- throw new Error("Need a concrete implementation of _prepareSaveBundle");
209
- }
210
- /** @hidden @internal */
211
- _createChangeRequestInterceptor(saveContext, saveBundle) {
212
- let adapter = saveContext.adapter;
213
- let cri = adapter.changeRequestInterceptor;
214
- let isFn = core.isFunction;
215
- if (isFn(cri)) {
216
- let pre = adapter.name + " DataServiceAdapter's ChangeRequestInterceptor";
217
- let post = " is missing or not a function.";
218
- let interceptor = new cri(saveContext, saveBundle);
219
- if (!isFn(interceptor.getRequest)) {
220
- throw new Error(pre + '.getRequest' + post);
221
- }
222
- if (!isFn(interceptor.done)) {
223
- throw new Error(pre + '.done' + post);
224
- }
225
- return interceptor;
226
- }
227
- else {
228
- return new DefaultChangeRequestInterceptor(saveContext, saveBundle);
229
- }
230
- }
231
- /** Abstract method that needs to be overwritten in any concrete DataServiceAdapter sublclass.
232
- This method needs to take the result returned the server and convert it into an ISaveResult.
233
- */
234
- _prepareSaveResult(saveContext, data) {
235
- throw new Error("Need a concrete implementation of _prepareSaveResult");
236
- }
237
- /** Utility method that may be used in any concrete DataServiceAdapter sublclass to handle any
238
- http connection issues.
239
- */
240
- // Put this at the bottom of your http error analysis
241
- static _catchNoConnectionError(err) {
242
- if (err.status === 0 && err.message == null) {
243
- err.message = "HTTP response status 0 and no message. " +
244
- "Likely did not or could not reach server. Is the server running?";
245
- }
246
- }
247
- }
248
- function handleHttpError(reject, httpResponse, messagePrefix) {
249
- let err = createError(httpResponse);
250
- AbstractDataServiceAdapter._catchNoConnectionError(err);
251
- if (messagePrefix) {
252
- err.message = messagePrefix + "; " + err.message;
253
- }
254
- reject(err);
255
- }
256
- function createError(httpResponse) {
257
- let err = new Error();
258
- err.httpResponse = httpResponse;
259
- err.status = httpResponse.status;
260
- let errObj = httpResponse.data;
261
- if (!errObj) {
262
- err.message = httpResponse.error && httpResponse.error.toString();
263
- return err;
264
- }
265
- // some ajax providers will convert errant result into an object (angularjs), others will not (jQuery)
266
- // if not do it here.
267
- if (typeof errObj === "string") {
268
- try {
269
- errObj = JSON.parse(errObj);
270
- }
271
- catch (e) {
272
- // sometimes httpResponse.data is just the error message itself
273
- err.message = errObj;
274
- return err;
275
- }
276
- }
277
- let saveContext = httpResponse.saveContext;
278
- // if any of the follow properties exist the source is .NET
279
- let tmp = errObj.Message || errObj.ExceptionMessage || errObj.EntityErrors || errObj.Errors;
280
- let isDotNet = !!tmp;
281
- let message, entityErrors;
282
- if (!isDotNet) {
283
- message = errObj.message;
284
- entityErrors = errObj.errors || errObj.entityErrors;
285
- }
286
- else {
287
- let tmp = errObj;
288
- do {
289
- // .NET exceptions can provide both ExceptionMessage and Message but ExceptionMethod if it
290
- // exists has a more detailed message.
291
- message = tmp.ExceptionMessage || tmp.Message;
292
- tmp = tmp.InnerException;
293
- } while (tmp);
294
- // .EntityErrors will only occur as a result of an EntityErrorsException being deliberately thrown on the server
295
- entityErrors = errObj.Errors || errObj.EntityErrors;
296
- entityErrors = entityErrors && entityErrors.map(function (e) {
297
- return {
298
- errorName: e.ErrorName,
299
- entityTypeName: MetadataStore.normalizeTypeName(e.EntityTypeName),
300
- keyValues: e.KeyValues,
301
- propertyName: e.PropertyName,
302
- errorMessage: e.ErrorMessage,
303
- custom: e.Custom
304
- };
305
- });
306
- }
307
- if (saveContext && entityErrors) {
308
- let propNameFn = saveContext.entityManager.metadataStore.namingConvention.serverPropertyNameToClient;
309
- entityErrors.forEach(function (e) {
310
- e.propertyName = e.propertyName && propNameFn(e.propertyName);
311
- });
312
- err.entityErrors = entityErrors;
313
- }
314
- err.message = message || "Server side errors encountered - see the entityErrors collection on this object for more detail";
315
- return err;
316
- }
317
- /** This is a default, no-op implementation that developers can replace. */
318
- class DefaultChangeRequestInterceptor {
319
- constructor(saveContext, saveBundle) {
320
- }
321
- getRequest(request, entity, index) {
322
- return request;
323
- }
324
- done(requests) {
325
- }
326
- }
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGF0YS1zZXJ2aWNlLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2Fic3RyYWN0LWRhdGEtc2VydmljZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUtsQyxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlEOzs7RUFHRTtBQUNGLE1BQU0sT0FBZ0IsMEJBQTBCO0lBQWhEO1FBOExFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBeUJHO1FBQ0gsNkJBQXdCLEdBQWlDLCtCQUErQixDQUFDO1FBMkN6Rix1QkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDO1lBQzFDLElBQUksRUFBRSxNQUFNO1lBRVosU0FBUyxFQUFFLFdBQVUsdUNBQXVDO2dCQUMxRCxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBbFFDLHFCQUFxQjtJQUNyQixxQkFBcUIsQ0FBQyx3QkFBNkI7UUFDakQsSUFBSSx3QkFBd0IsQ0FBQyxhQUFhLEtBQUssTUFBTSxJQUFJLHdCQUF3QixDQUFDLFNBQVMsRUFBRTtZQUMzRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFjLE1BQU0sQ0FBRyxDQUFDO1FBRWpFLG1IQUFtSDtRQUNuSCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDdkMsT0FBTztTQUNSO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELGFBQWEsQ0FBQyxhQUE0QixFQUFFLFdBQXdCO1FBQ2xFLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDMUMsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3QyxJQUFJLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUU1QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQTBCLEVBQUUsRUFBRTtvQkFFdEMsMkNBQTJDO29CQUMzQyxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUU7d0JBQzdDLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7cUJBQ25DO29CQUNELElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7b0JBQzdCLElBQUksUUFBYSxDQUFDO29CQUNsQixJQUFJO3dCQUNGLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ2hFLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQ3hDO29CQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUNWLElBQUksTUFBTSxHQUFHLDZDQUE2QyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7d0JBQ3ZFLGVBQWUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUM7cUJBQzVGO29CQUVELDBDQUEwQztvQkFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUU7d0JBQzlDLGFBQWEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7cUJBQzNDO29CQUVELE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFcEIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxZQUEwQixFQUFFLEVBQUU7b0JBQ3BDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLDZCQUE2QixHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUM3RSxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLFlBQVksQ0FBQyxjQUE4QjtRQUN6QyxjQUFjLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUU5QixNQUFNLE9BQU8sR0FBSSxjQUFjLENBQUMsS0FBcUIsQ0FBQyxjQUFjLENBQUM7UUFDckUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQVEsQ0FBQztRQUVySCxJQUFJLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN6RCxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsWUFBMEI7Z0JBQ25ELElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQzdCLElBQUk7b0JBQ0YsSUFBSSxLQUFrQixDQUFDO29CQUN2QixJQUFJLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDckQsSUFBSSxPQUFPLEVBQUU7d0JBQ1gsS0FBSyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVzs0QkFDM0UsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUM3RDt5QkFBTTt3QkFDTCxLQUFLLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDcEY7b0JBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoQjtnQkFBQyxPQUFPLENBQUMsRUFBRTtvQkFDVixJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUU7d0JBQ3RCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDWDt5QkFBTTt3QkFDTCxlQUFlLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO3FCQUN2QztpQkFDRjtZQUNILENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxLQUFLLEdBQUcsVUFBVSxZQUEwQjtnQkFDakQsZUFBZSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxtS0FBbUs7SUFDbkssbUJBQW1CLENBQUMsY0FBOEI7UUFDaEQsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXBDLE1BQU0sTUFBTSxHQUFHO1lBQ2IsSUFBSSxFQUFFLEtBQUs7WUFDWCxHQUFHLEVBQUUsR0FBRztZQUNSLE1BQU0sRUFBRyxjQUFjLENBQUMsS0FBcUIsQ0FBQyxVQUFVO1lBQ3hELFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUM7UUFDRixJQUFJLGNBQWMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGdHQUFnRztJQUNoRyxvQkFBb0IsQ0FBQyxjQUE4QjtRQUNqRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBb0IsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUNqRSxNQUFNLEdBQUcsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFNUUsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQUU7UUFDaEUsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFRLENBQUM7UUFDM0YsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFFOUIsTUFBTSxNQUFNLEdBQUc7WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNaLEdBQUcsRUFBRSxHQUFHO1lBQ1IsTUFBTSxFQUFHLGNBQWMsQ0FBQyxLQUFxQixDQUFDLFVBQVU7WUFDeEQsUUFBUSxFQUFFLE1BQU07WUFDaEIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsV0FBVyxFQUFFLGlDQUFpQztZQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsV0FBVyxFQUFFLEtBQUs7U0FDbkIsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsV0FBd0IsRUFBRSxVQUFzQjtRQUMxRCxJQUFJLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUV6QyxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFM0MsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxHQUFHLElBQUksT0FBTyxDQUFhLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsTUFBTTtnQkFDWixHQUFHLEVBQUUsR0FBRztnQkFDUixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsV0FBVyxFQUFFLGtCQUFrQjtnQkFDL0IsSUFBSSxFQUFFLE1BQU07Z0JBQ1osT0FBTyxFQUFFLFVBQVUsWUFBMEI7b0JBQzNDLFlBQVksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO29CQUN2QyxJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTt3QkFDOUIsZUFBZSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztxQkFDdkM7eUJBQU07d0JBQ0wsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDL0QsVUFBVSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7d0JBQ3ZDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDckI7Z0JBQ0gsQ0FBQztnQkFDRCxLQUFLLEVBQUUsVUFBVSxZQUEwQjtvQkFDekMsWUFBWSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7b0JBQ3ZDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7TUFFRTtJQUNGLGtCQUFrQixDQUFDLFdBQXdCLEVBQUUsVUFBc0I7UUFDakUsOERBQThEO1FBQzlELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBOEJELHdCQUF3QjtJQUN4QiwrQkFBK0IsQ0FBQyxXQUF3QixFQUFFLFVBQXNCO1FBQzlFLElBQUksT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFRLENBQUM7UUFDbkMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1FBQzNDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxHQUFHLGdEQUFnRCxDQUFDO1lBQzFFLElBQUksSUFBSSxHQUFHLGdDQUFnQyxDQUFDO1lBQzVDLElBQUksV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQzthQUN2QztZQUNELE9BQU8sV0FBVyxDQUFDO1NBQ3BCO2FBQU07WUFDTCxPQUFPLElBQUksK0JBQStCLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBNkIsQ0FBQztTQUNqRztJQUNILENBQUM7SUFFRDs7TUFFRTtJQUNGLGtCQUFrQixDQUFDLFdBQXdCLEVBQUUsSUFBUztRQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUdEOztNQUVFO0lBQ0YscURBQXFEO0lBQ3JELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUFnQjtRQUM3QyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO1lBQzNDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsMENBQTBDO2dCQUN0RCxrRUFBa0UsQ0FBQztTQUN0RTtJQUNILENBQUM7Q0FTRjtBQUVELFNBQVMsZUFBZSxDQUFDLE1BQThCLEVBQUUsWUFBMEIsRUFBRSxhQUFzQjtJQUN6RyxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEMsMEJBQTBCLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEQsSUFBSSxhQUFhLEVBQUU7UUFDakIsR0FBRyxDQUFDLE9BQU8sR0FBRyxhQUFhLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7S0FDbEQ7SUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsWUFBMEI7SUFDN0MsSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQWlCLENBQUM7SUFDckMsR0FBRyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDaEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBRWpDLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFFL0IsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLEdBQUcsQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xFLE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxzR0FBc0c7SUFDdEcscUJBQXFCO0lBQ3JCLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFO1FBQzlCLElBQUk7WUFDRixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsK0RBQStEO1lBQy9ELEdBQUcsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDO1NBQ1o7S0FDRjtJQUVELElBQUksV0FBVyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFFM0MsMkRBQTJEO0lBQzNELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM1RixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3JCLElBQUksT0FBZSxFQUFFLFlBQW1CLENBQUM7SUFDekMsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQ3pCLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUM7S0FDckQ7U0FBTTtRQUNMLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQztRQUNqQixHQUFHO1lBQ0QsMEZBQTBGO1lBQzFGLHNDQUFzQztZQUN0QyxPQUFPLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDOUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUM7U0FDMUIsUUFBUSxHQUFHLEVBQUU7UUFDZCxnSEFBZ0g7UUFDaEgsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNwRCxZQUFZLEdBQUcsWUFBWSxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ3pELE9BQU87Z0JBQ0wsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTO2dCQUN0QixjQUFjLEVBQUUsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7Z0JBQ2pFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUztnQkFDdEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO2dCQUM1QixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7Z0JBQzVCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTthQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELElBQUksV0FBVyxJQUFJLFlBQVksRUFBRTtRQUUvQixJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQztRQUNyRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUM5QixDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNGLEdBQTJCLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztLQUMxRDtJQUVELEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLGlHQUFpRyxDQUFDO0lBQzNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUdELDJFQUEyRTtBQUMzRSxNQUFNLCtCQUErQjtJQUNuQyxZQUFZLFdBQXdCLEVBQUUsVUFBc0I7SUFFNUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFZLEVBQUUsTUFBYyxFQUFFLEtBQWE7UUFDcEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFrQjtJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb3JlIH0gZnJvbSAnLi9jb3JlJztcclxuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSB9IGZyb20gJy4vZW50aXR5LXF1ZXJ5JztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VBZGFwdGVyLCBBamF4QWRhcHRlciwgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yQ3RvciwgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmZhY2UtcmVnaXN0cnknO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL2VudGl0eS1hc3BlY3QnO1xyXG5pbXBvcnQgeyBNYXBwaW5nQ29udGV4dCB9IGZyb20gJy4vbWFwcGluZy1jb250ZXh0JztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UsIEpzb25SZXN1bHRzQWRhcHRlciB9IGZyb20gJy4vZGF0YS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlLCBTYXZlQ29udGV4dCwgU2F2ZUJ1bmRsZSwgU2VydmVyRXJyb3IsIFNhdmVSZXN1bHQsIFNhdmVFcnJvckZyb21TZXJ2ZXIsIFF1ZXJ5UmVzdWx0IH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IEVudGl0eVR5cGUsIE1ldGFkYXRhU3RvcmUgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcblxyXG4vKiogRm9yIHVzZSBieSBicmVlemUgcGx1Z2luIGF1dGhvcnMgb25seS4gIFRoZSBjbGFzcyBpcyB1c2VkIGFzIHRoZSBiYXNlIGNsYXNzIGZvciBtb3N0IFtbSURhdGFTZXJ2aWNlQWRhcHRlcl1dIGltcGxlbWVudGF0aW9uc1xyXG5AYWRhcHRlciAoc2VlIFtbSURhdGFTZXJ2aWNlQWRhcHRlcl1dKSAgICBcclxuQGhpZGRlblxyXG4qL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXIgaW1wbGVtZW50cyBEYXRhU2VydmljZUFkYXB0ZXIge1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIGRlY2xhcmUgXyRpbXBsPzogYW55O1xyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGlzIGFkYXB0ZXIuICovXHJcbiAgZGVjbGFyZSBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBbW0lBamF4QWRhcHRlcl1dIHVzZWQgYnkgdGhpcyBbW0lEYXRhU2VydmljZUFkYXB0ZXJdXS4gKi9cclxuICBkZWNsYXJlIGFqYXhJbXBsOiBBamF4QWRhcHRlcjtcclxuXHJcbiAgLy8gVE9ETyB1c2UgaW50ZXJmYWNlXHJcbiAgY2hlY2tGb3JSZWNvbXBvc2l0aW9uKGludGVyZmFjZUluaXRpYWxpemVkQXJnczogYW55KSB7XHJcbiAgICBpZiAoaW50ZXJmYWNlSW5pdGlhbGl6ZWRBcmdzLmludGVyZmFjZU5hbWUgPT09IFwiYWpheFwiICYmIGludGVyZmFjZUluaXRpYWxpemVkQXJncy5pc0RlZmF1bHQpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5hamF4SW1wbCA9IGNvbmZpZy5nZXRBZGFwdGVySW5zdGFuY2U8QWpheEFkYXB0ZXI+KFwiYWpheFwiKSAhO1xyXG5cclxuICAgIC8vIGRvbid0IGNhY2hlICdhamF4JyBiZWNhdXNlIHRoZW4gd2Ugd291bGQgbmVlZCB0byBcIi5iaW5kXCIgaXQsIGFuZCBkb24ndCB3YW50IHRvIGJlY2F1c2Ugb2YgYnJvd2VyIHN1cHBvcnQgaXNzdWVzLlxyXG4gICAgaWYgKHRoaXMuYWpheEltcGwgJiYgdGhpcy5hamF4SW1wbC5hamF4KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmaW5kIGFqYXggYWRhcHRlciBmb3IgZGF0YXNlcnZpY2UgYWRhcHRlciAnXCIgKyAodGhpcy5uYW1lIHx8ICcnKSArIFwiJy5cIik7XHJcbiAgfVxyXG5cclxuICBmZXRjaE1ldGFkYXRhKG1ldGFkYXRhU3RvcmU6IE1ldGFkYXRhU3RvcmUsIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge1xyXG4gICAgbGV0IHNlcnZpY2VOYW1lID0gZGF0YVNlcnZpY2Uuc2VydmljZU5hbWU7XHJcbiAgICBsZXQgdXJsID0gZGF0YVNlcnZpY2UucXVhbGlmeVVybChcIk1ldGFkYXRhXCIpO1xyXG5cclxuICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5hamF4SW1wbC5hamF4KHtcclxuICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgc3VjY2VzczogKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgICAgLy8gbWlnaHQgaGF2ZSBiZWVuIGZldGNoZWQgYnkgYW5vdGhlciBxdWVyeVxyXG4gICAgICAgICAgaWYgKG1ldGFkYXRhU3RvcmUuaGFzTWV0YWRhdGFGb3Ioc2VydmljZU5hbWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRhdGEgPSBodHRwUmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIGxldCBtZXRhZGF0YTogYW55O1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbWV0YWRhdGEgPSB0eXBlb2YgKGRhdGEpID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShkYXRhKSA6IGRhdGE7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhU3RvcmUuaW1wb3J0TWV0YWRhdGEobWV0YWRhdGEpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgZXJyTXNnID0gXCJVbmFibGUgdG8gZWl0aGVyIHBhcnNlIG9yIGltcG9ydCBtZXRhZGF0YTogXCIgKyBlLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSwgXCJNZXRhZGF0YSBxdWVyeSBmYWlsZWQgZm9yOiBcIiArIHVybCArIFwiLiBcIiArIGVyck1zZyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gaW1wb3J0IG1heSBoYXZlIGJyb3VnaHQgaW4gdGhlIHNlcnZpY2UuXHJcbiAgICAgICAgICBpZiAoIW1ldGFkYXRhU3RvcmUuaGFzTWV0YWRhdGFGb3Ioc2VydmljZU5hbWUpKSB7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhU3RvcmUuYWRkRGF0YVNlcnZpY2UoZGF0YVNlcnZpY2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJlc29sdmUobWV0YWRhdGEpO1xyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSwgXCJNZXRhZGF0YSBxdWVyeSBmYWlsZWQgZm9yOiBcIiArIHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHByb21pc2U7XHJcbiAgfVxyXG5cclxuICAvKiogRXhlY3V0ZSB0aGUgcXVlcnkgaW4gdGhlIG1hcHBpbmdDb250ZXh0IHVzaW5nIHRoZSBhamF4SW1wbC4gKi9cclxuICBleGVjdXRlUXVlcnkobWFwcGluZ0NvbnRleHQ6IE1hcHBpbmdDb250ZXh0KSB7XHJcbiAgICBtYXBwaW5nQ29udGV4dC5hZGFwdGVyID0gdGhpcztcclxuXHJcbiAgICBjb25zdCB1c2VQb3N0ID0gKG1hcHBpbmdDb250ZXh0LnF1ZXJ5IGFzIEVudGl0eVF1ZXJ5KS51c2VQb3N0RW5hYmxlZDtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHVzZVBvc3QgPyB0aGlzLl9tYWtlUXVlcnlQb3N0UGFyYW1zKG1hcHBpbmdDb250ZXh0KSA6IHRoaXMuX21ha2VRdWVyeUdldFBhcmFtcyhtYXBwaW5nQ29udGV4dCkgYXMgYW55O1xyXG5cclxuICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2U8UXVlcnlSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgcGFyYW1zLnN1Y2Nlc3MgPSBmdW5jdGlvbiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IGh0dHBSZXNwb25zZS5kYXRhO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgckRhdGE6IFF1ZXJ5UmVzdWx0O1xyXG4gICAgICAgICAgbGV0IHJlc3VsdHMgPSBkYXRhICYmIChkYXRhLnJlc3VsdHMgfHwgZGF0YS5SZXN1bHRzKTtcclxuICAgICAgICAgIGlmIChyZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIHJEYXRhID0geyByZXN1bHRzOiByZXN1bHRzLCBpbmxpbmVDb3VudDogZGF0YS5pbmxpbmVDb3VudCB8fCBkYXRhLklubGluZUNvdW50LCBcclxuICAgICAgICAgICAgICBodHRwUmVzcG9uc2U6IGh0dHBSZXNwb25zZSwgcXVlcnk6IG1hcHBpbmdDb250ZXh0LnF1ZXJ5IH07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByRGF0YSA9IHsgcmVzdWx0czogZGF0YSwgaHR0cFJlc3BvbnNlOiBodHRwUmVzcG9uc2UsIHF1ZXJ5OiBtYXBwaW5nQ29udGV4dC5xdWVyeSB9O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJlc29sdmUockRhdGEpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIHBhcmFtcy5lcnJvciA9IGZ1bmN0aW9uIChodHRwUmVzcG9uc2U6IEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYWpheEltcGwuYWpheChwYXJhbXMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvbWlzZTtcclxuICB9XHJcblxyXG4gIC8qKiBTZXQgdXAgYWpheCBwYXJhbWV0ZXJzIGZvciBxdWVyeSBHRVQuICBUaGlzIHB1dHMgdGhlIHF1ZXJ5IGludG8gdGhlIHJlcXVlc3QgcXVlcnlzdHJpbmcgaW4gZWl0aGVyIEpTT04gb3IgT0RhdGEtc3R5bGUgc3ludGF4LCBkZXBlbmRpbmcgdXBvbiB0aGUgVXJpQnVpbGRlci4gKi9cclxuICBfbWFrZVF1ZXJ5R2V0UGFyYW1zKG1hcHBpbmdDb250ZXh0OiBNYXBwaW5nQ29udGV4dCkge1xyXG4gICAgY29uc3QgdXJsID0gbWFwcGluZ0NvbnRleHQuZ2V0VXJsKCk7XHJcblxyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICB1cmw6IHVybCxcclxuICAgICAgcGFyYW1zOiAobWFwcGluZ0NvbnRleHQucXVlcnkgYXMgRW50aXR5UXVlcnkpLnBhcmFtZXRlcnMsXHJcbiAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgIGNyb3NzRG9tYWluOiBmYWxzZSxcclxuICAgIH07XHJcbiAgICBpZiAobWFwcGluZ0NvbnRleHQuZGF0YVNlcnZpY2UudXNlSnNvbnApIHtcclxuICAgICAgcGFyYW1zLmRhdGFUeXBlID0gJ2pzb25wJztcclxuICAgICAgcGFyYW1zLmNyb3NzRG9tYWluID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvKiogU2V0IHVwIGFqYXggcGFyYW1ldGVycyBmb3IgcXVlcnkgUE9TVC4gIFRoaXMgcHV0IHRoZSBxdWVyeSBpbnRvIHRoZSByZXF1ZXN0IGJvZHkgYXMgSlNPTi4gKi9cclxuICBfbWFrZVF1ZXJ5UG9zdFBhcmFtcyhtYXBwaW5nQ29udGV4dDogTWFwcGluZ0NvbnRleHQpIHtcclxuICAgIGNvbnN0IGVudGl0eVF1ZXJ5ID0gbWFwcGluZ0NvbnRleHQucXVlcnkgYXMgRW50aXR5UXVlcnk7XHJcbiAgICBjb25zdCBtZXRhZGF0YVN0b3JlID0gbWFwcGluZ0NvbnRleHQuZW50aXR5TWFuYWdlci5tZXRhZGF0YVN0b3JlO1xyXG4gICAgY29uc3QgdXJsID0gbWFwcGluZ0NvbnRleHQuZGF0YVNlcnZpY2UucXVhbGlmeVVybChlbnRpdHlRdWVyeS5yZXNvdXJjZU5hbWUpO1xyXG5cclxuICAgIGxldCBlbnRpdHlUeXBlID0gZW50aXR5UXVlcnkuX2dldEZyb21FbnRpdHlUeXBlKG1ldGFkYXRhU3RvcmUsIGZhbHNlKTtcclxuICAgIGlmICghZW50aXR5VHlwZSkgeyBlbnRpdHlUeXBlID0gbmV3IEVudGl0eVR5cGUobWV0YWRhdGFTdG9yZSk7IH1cclxuICAgIGNvbnN0IGpzb24gPSBlbnRpdHlRdWVyeS50b0pTT05FeHQoeyBlbnRpdHlUeXBlOiBlbnRpdHlUeXBlLCB0b05hbWVPblNlcnZlcjogdHJ1ZX0pIGFzIGFueTtcclxuICAgIGpzb24uZnJvbSA9IHVuZGVmaW5lZDtcclxuICAgIGpzb24ucXVlcnlPcHRpb25zID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgdHlwZTogXCJQT1NUXCIsXHJcbiAgICAgIHVybDogdXJsLFxyXG4gICAgICBwYXJhbXM6IChtYXBwaW5nQ29udGV4dC5xdWVyeSBhcyBFbnRpdHlRdWVyeSkucGFyYW1ldGVycyxcclxuICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLCAvLyBkb24ndCBsZXQgSlF1ZXJ5IGZvcm0tZW5jb2RlIGl0XHJcbiAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIixcclxuICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoanNvbiksXHJcbiAgICAgIGNyb3NzRG9tYWluOiBmYWxzZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUNoYW5nZXMoc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKSB7XHJcbiAgICBsZXQgYWRhcHRlciA9IHNhdmVDb250ZXh0LmFkYXB0ZXIgPSB0aGlzO1xyXG5cclxuICAgIGxldCBzYXZlQnVuZGxlU2VyID0gYWRhcHRlci5fcHJlcGFyZVNhdmVCdW5kbGUoc2F2ZUNvbnRleHQsIHNhdmVCdW5kbGUpO1xyXG4gICAgbGV0IGJ1bmRsZSA9IEpTT04uc3RyaW5naWZ5KHNhdmVCdW5kbGVTZXIpO1xyXG5cclxuICAgIGxldCB1cmwgPSBzYXZlQ29udGV4dC5kYXRhU2VydmljZS5xdWFsaWZ5VXJsKHNhdmVDb250ZXh0LnJlc291cmNlTmFtZSk7XHJcbiAgICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlPFNhdmVSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5hamF4SW1wbC5hamF4KHtcclxuICAgICAgICB0eXBlOiBcIlBPU1RcIixcclxuICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICBkYXRhOiBidW5kbGUsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBodHRwUmVzcG9uc2Uuc2F2ZUNvbnRleHQgPSBzYXZlQ29udGV4dDtcclxuICAgICAgICAgIGxldCBkYXRhID0gaHR0cFJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICBpZiAoZGF0YS5FcnJvcnMgfHwgZGF0YS5lcnJvcnMpIHtcclxuICAgICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBzYXZlUmVzdWx0ID0gYWRhcHRlci5fcHJlcGFyZVNhdmVSZXN1bHQoc2F2ZUNvbnRleHQsIGRhdGEpO1xyXG4gICAgICAgICAgICBzYXZlUmVzdWx0Lmh0dHBSZXNwb25zZSA9IGh0dHBSZXNwb25zZTtcclxuICAgICAgICAgICAgcmVzb2x2ZShzYXZlUmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBmdW5jdGlvbiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgIGh0dHBSZXNwb25zZS5zYXZlQ29udGV4dCA9IHNhdmVDb250ZXh0O1xyXG4gICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHByb21pc2U7XHJcbiAgfVxyXG5cclxuICAvKiogQWJzdHJhY3QgbWV0aG9kIHRoYXQgbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gaW4gYW55IGNvbmNyZXRlIERhdGFTZXJ2aWNlQWRhcHRlciBzdWJjbGFzcy4gXHJcbiAgVGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBhIHNlcmlhbGl6YWJsZSBvYmplY3QgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlciBhZnRlciBjYWxsaW5nIEpTT04uc3RyaW5naWZ5IG9uIGl0LlxyXG4gICovXHJcbiAgX3ByZXBhcmVTYXZlQnVuZGxlKHNhdmVDb250ZXh0OiBTYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZTogU2F2ZUJ1bmRsZSk6IGFueSB7XHJcbiAgICAvLyBUaGUgaW1wbGVtZW50b3Igc2hvdWxkIGNhbGwgX2NyZWF0ZUNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvclxyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmVlZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIF9wcmVwYXJlU2F2ZUJ1bmRsZVwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3IgYSBcIkNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvclwiXHJcbiAgdGhhdCBjYW4gdHdlYWsgdGhlIHNhdmVCdW5kbGUgYm90aCBhcyBpdCBpcyBidWlsdCBhbmQgd2hlbiBpdCBpcyBjb21wbGV0ZWRcclxuICBieSBhIGNvbmNyZXRlIERhdGFTZXJ2aWNlQWRhcGF0ZXIuXHJcblxyXG4gIEluaXRpYWxpemVkIHdpdGggYSBkZWZhdWx0LCBuby1vcCBpbXBsZW1lbnRhdGlvbiB0aGF0IGRldmVsb3BlcnMgY2FuIHJlcGxhY2Ugd2l0aCBhXHJcbiAgc3Vic3RhbnRpdmUgaW1wbGVtZW50YXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBpbmRpdmlkdWFsIGVudGl0eSBjaGFuZ2UgcmVxdWVzdHNcclxuICBvciBhc3BlY3RzIG9mIHRoZSBlbnRpcmUgJ3NhdmVCdW5kbGUnIHdpdGhvdXQgaGF2aW5nIHRvIHdyaXRlIHRoZWlyIG93biBEYXRhU2VydmljZSBhZGFwdGVycy5cclxuICA+ICAgICBsZXQgYWRhcHRlciA9IGJyZWV6ZS5jb25maWcuZ2V0QWRhcHRlckluc3RhbmNlKCdkYXRhU2VydmljZScpO1xyXG4gID4gICAgIGFkYXB0ZXIuY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yID0gZnVuY3Rpb24gKHNhdmVDb250ZXh0LCBzYXZlQnVuZGxlKSB7XHJcbiAgPiAgICAgICAgIHRoaXMuZ2V0UmVxdWVzdCA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBlbnRpdHksIGluZGV4KSB7XHJcbiAgPiAgICAgICAgICAgIC8vIGFsdGVyIHRoZSByZXF1ZXN0IHRoYXQgdGhlIGFkYXB0ZXIgcHJlcGFyZWQgZm9yIHRoaXMgZW50aXR5XHJcbiAgPiAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBlbnRpdHksIHNhdmVDb250ZXh0LCBhbmQgc2F2ZUJ1bmRsZVxyXG4gID4gICAgICAgICAgICAvLyBlLmcuLCBhZGQgYSBjdXN0b20gaGVhZGVyIG9yIHBydW5lIHRoZSBvcmlnaW5hbFZhbHVlc01hcFxyXG4gID4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICA+ICAgICAgICB9O1xyXG4gID4gICAgICAgIHRoaXMuZG9uZSA9IGZ1bmN0aW9uIChyZXF1ZXN0cykge1xyXG4gID4gICAgICAgICAgICAvLyBhbHRlciB0aGUgYXJyYXkgb2YgcmVxdWVzdHMgcmVwcmVzZW50aW5nIHRoZSBlbnRpcmUgY2hhbmdlLXNldFxyXG4gID4gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgc2F2ZUNvbnRleHQgYW5kIHNhdmVCdW5kbGVcclxuICA+ICAgICAgICB9O1xyXG4gID4gICAgIH1cclxuXHJcbiAgQHBhcmFtIHNhdmVDb250ZXh0IC0gVGhlIEJyZWV6ZUpTIFwiY29udGV4dFwiIGZvciB0aGUgc2F2ZSBvcGVyYXRpb24uXHJcbiAgQHBhcmFtIHNhdmVCdW5kbGUgLSBDb250YWlucyB0aGUgYXJyYXkgb2YgZW50aXRpZXMtdG8tYmUtc2F2ZWQgKEFLQSwgdGhlIGVudGl0eSBjaGFuZ2Utc2V0KS5cclxuICBAcmV0dXJuIENvbnN0cnVjdG9yIGZvciBhIFwiQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yXCIuXHJcbiAgKiovXHJcbiAgY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yOiBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yID0gRGVmYXVsdENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcjtcclxuXHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgX2NyZWF0ZUNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcihzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpIHtcclxuICAgIGxldCBhZGFwdGVyID0gc2F2ZUNvbnRleHQuYWRhcHRlciE7XHJcbiAgICBsZXQgY3JpID0gYWRhcHRlci5jaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3I7XHJcbiAgICBsZXQgaXNGbiA9IGNvcmUuaXNGdW5jdGlvbjtcclxuXHJcbiAgICBpZiAoaXNGbihjcmkpKSB7XHJcbiAgICAgIGxldCBwcmUgPSBhZGFwdGVyLm5hbWUgKyBcIiBEYXRhU2VydmljZUFkYXB0ZXIncyBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JcIjtcclxuICAgICAgbGV0IHBvc3QgPSBcIiBpcyBtaXNzaW5nIG9yIG5vdCBhIGZ1bmN0aW9uLlwiO1xyXG4gICAgICBsZXQgaW50ZXJjZXB0b3IgPSBuZXcgY3JpKHNhdmVDb250ZXh0LCBzYXZlQnVuZGxlKTtcclxuICAgICAgaWYgKCFpc0ZuKGludGVyY2VwdG9yLmdldFJlcXVlc3QpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByZSArICcuZ2V0UmVxdWVzdCcgKyBwb3N0KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWlzRm4oaW50ZXJjZXB0b3IuZG9uZSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJlICsgJy5kb25lJyArIHBvc3QpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpbnRlcmNlcHRvcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGVmYXVsdENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcihzYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZSkgYXMgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEFic3RyYWN0IG1ldGhvZCB0aGF0IG5lZWRzIHRvIGJlIG92ZXJ3cml0dGVuIGluIGFueSBjb25jcmV0ZSBEYXRhU2VydmljZUFkYXB0ZXIgc3VibGNsYXNzLiBcclxuICBUaGlzIG1ldGhvZCBuZWVkcyB0byB0YWtlIHRoZSByZXN1bHQgcmV0dXJuZWQgdGhlIHNlcnZlciBhbmQgY29udmVydCBpdCBpbnRvIGFuIElTYXZlUmVzdWx0LiBcclxuICAqL1xyXG4gIF9wcmVwYXJlU2F2ZVJlc3VsdChzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIGRhdGE6IGFueSk6IFNhdmVSZXN1bHQge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmVlZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIF9wcmVwYXJlU2F2ZVJlc3VsdFwiKTtcclxuICB9XHJcblxyXG5cclxuICAvKiogVXRpbGl0eSBtZXRob2QgdGhhdCBtYXkgYmUgdXNlZCBpbiBhbnkgY29uY3JldGUgRGF0YVNlcnZpY2VBZGFwdGVyIHN1YmxjbGFzcyB0byBoYW5kbGUgYW55IFxyXG4gIGh0dHAgY29ubmVjdGlvbiBpc3N1ZXMuIFxyXG4gICovXHJcbiAgLy8gUHV0IHRoaXMgYXQgdGhlIGJvdHRvbSBvZiB5b3VyIGh0dHAgZXJyb3IgYW5hbHlzaXNcclxuICBzdGF0aWMgX2NhdGNoTm9Db25uZWN0aW9uRXJyb3IoZXJyOiBTZXJ2ZXJFcnJvcikge1xyXG4gICAgaWYgKGVyci5zdGF0dXMgPT09IDAgJiYgZXJyLm1lc3NhZ2UgPT0gbnVsbCkge1xyXG4gICAgICBlcnIubWVzc2FnZSA9IFwiSFRUUCByZXNwb25zZSBzdGF0dXMgMCBhbmQgbm8gbWVzc2FnZS4gIFwiICtcclxuICAgICAgICBcIkxpa2VseSBkaWQgbm90IG9yIGNvdWxkIG5vdCByZWFjaCBzZXJ2ZXIuIElzIHRoZSBzZXJ2ZXIgcnVubmluZz9cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGpzb25SZXN1bHRzQWRhcHRlciA9IG5ldyBKc29uUmVzdWx0c0FkYXB0ZXIoe1xyXG4gICAgbmFtZTogXCJub29wXCIsXHJcblxyXG4gICAgdmlzaXROb2RlOiBmdW5jdGlvbiAoLyogbm9kZSwgbWFwcGluZ0NvbnRleHQsIG5vZGVDb250ZXh0ICovKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlSHR0cEVycm9yKHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCwgaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UsIG1lc3NhZ2VQcmVmaXg/OiBzdHJpbmcpIHtcclxuICBsZXQgZXJyID0gY3JlYXRlRXJyb3IoaHR0cFJlc3BvbnNlKTtcclxuICBBYnN0cmFjdERhdGFTZXJ2aWNlQWRhcHRlci5fY2F0Y2hOb0Nvbm5lY3Rpb25FcnJvcihlcnIpO1xyXG4gIGlmIChtZXNzYWdlUHJlZml4KSB7XHJcbiAgICBlcnIubWVzc2FnZSA9IG1lc3NhZ2VQcmVmaXggKyBcIjsgXCIgKyBlcnIubWVzc2FnZTtcclxuICB9XHJcbiAgcmVqZWN0KGVycik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUVycm9yKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSB7XHJcbiAgbGV0IGVyciA9IG5ldyBFcnJvcigpIGFzIFNlcnZlckVycm9yO1xyXG4gIGVyci5odHRwUmVzcG9uc2UgPSBodHRwUmVzcG9uc2U7XHJcbiAgZXJyLnN0YXR1cyA9IGh0dHBSZXNwb25zZS5zdGF0dXM7XHJcblxyXG4gIGxldCBlcnJPYmogPSBodHRwUmVzcG9uc2UuZGF0YTtcclxuXHJcbiAgaWYgKCFlcnJPYmopIHtcclxuICAgIGVyci5tZXNzYWdlID0gaHR0cFJlc3BvbnNlLmVycm9yICYmIGh0dHBSZXNwb25zZS5lcnJvci50b1N0cmluZygpO1xyXG4gICAgcmV0dXJuIGVycjtcclxuICB9XHJcblxyXG4gIC8vIHNvbWUgYWpheCBwcm92aWRlcnMgd2lsbCBjb252ZXJ0IGVycmFudCByZXN1bHQgaW50byBhbiBvYmplY3QgKGFuZ3VsYXJqcyksIG90aGVycyB3aWxsIG5vdCAoalF1ZXJ5KVxyXG4gIC8vIGlmIG5vdCBkbyBpdCBoZXJlLlxyXG4gIGlmICh0eXBlb2YgZXJyT2JqID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBlcnJPYmogPSBKU09OLnBhcnNlKGVyck9iaik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHNvbWV0aW1lcyBodHRwUmVzcG9uc2UuZGF0YSBpcyBqdXN0IHRoZSBlcnJvciBtZXNzYWdlIGl0c2VsZlxyXG4gICAgICBlcnIubWVzc2FnZSA9IGVyck9iajtcclxuICAgICAgcmV0dXJuIGVycjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxldCBzYXZlQ29udGV4dCA9IGh0dHBSZXNwb25zZS5zYXZlQ29udGV4dDtcclxuXHJcbiAgLy8gaWYgYW55IG9mIHRoZSBmb2xsb3cgcHJvcGVydGllcyBleGlzdCB0aGUgc291cmNlIGlzIC5ORVRcclxuICBsZXQgdG1wID0gZXJyT2JqLk1lc3NhZ2UgfHwgZXJyT2JqLkV4Y2VwdGlvbk1lc3NhZ2UgfHwgZXJyT2JqLkVudGl0eUVycm9ycyB8fCBlcnJPYmouRXJyb3JzO1xyXG4gIGxldCBpc0RvdE5ldCA9ICEhdG1wO1xyXG4gIGxldCBtZXNzYWdlOiBzdHJpbmcsIGVudGl0eUVycm9yczogYW55W107XHJcbiAgaWYgKCFpc0RvdE5ldCkge1xyXG4gICAgbWVzc2FnZSA9IGVyck9iai5tZXNzYWdlO1xyXG4gICAgZW50aXR5RXJyb3JzID0gZXJyT2JqLmVycm9ycyB8fCBlcnJPYmouZW50aXR5RXJyb3JzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBsZXQgdG1wID0gZXJyT2JqO1xyXG4gICAgZG8ge1xyXG4gICAgICAvLyAuTkVUIGV4Y2VwdGlvbnMgY2FuIHByb3ZpZGUgYm90aCBFeGNlcHRpb25NZXNzYWdlIGFuZCBNZXNzYWdlIGJ1dCBFeGNlcHRpb25NZXRob2QgaWYgaXRcclxuICAgICAgLy8gZXhpc3RzIGhhcyBhIG1vcmUgZGV0YWlsZWQgbWVzc2FnZS5cclxuICAgICAgbWVzc2FnZSA9IHRtcC5FeGNlcHRpb25NZXNzYWdlIHx8IHRtcC5NZXNzYWdlO1xyXG4gICAgICB0bXAgPSB0bXAuSW5uZXJFeGNlcHRpb247XHJcbiAgICB9IHdoaWxlICh0bXApO1xyXG4gICAgLy8gLkVudGl0eUVycm9ycyB3aWxsIG9ubHkgb2NjdXIgYXMgYSByZXN1bHQgb2YgYW4gRW50aXR5RXJyb3JzRXhjZXB0aW9uIGJlaW5nIGRlbGliZXJhdGVseSB0aHJvd24gb24gdGhlIHNlcnZlclxyXG4gICAgZW50aXR5RXJyb3JzID0gZXJyT2JqLkVycm9ycyB8fCBlcnJPYmouRW50aXR5RXJyb3JzO1xyXG4gICAgZW50aXR5RXJyb3JzID0gZW50aXR5RXJyb3JzICYmIGVudGl0eUVycm9ycy5tYXAoZnVuY3Rpb24gKGUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBlcnJvck5hbWU6IGUuRXJyb3JOYW1lLFxyXG4gICAgICAgIGVudGl0eVR5cGVOYW1lOiBNZXRhZGF0YVN0b3JlLm5vcm1hbGl6ZVR5cGVOYW1lKGUuRW50aXR5VHlwZU5hbWUpLFxyXG4gICAgICAgIGtleVZhbHVlczogZS5LZXlWYWx1ZXMsXHJcbiAgICAgICAgcHJvcGVydHlOYW1lOiBlLlByb3BlcnR5TmFtZSxcclxuICAgICAgICBlcnJvck1lc3NhZ2U6IGUuRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgIGN1c3RvbTogZS5DdXN0b21cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaWYgKHNhdmVDb250ZXh0ICYmIGVudGl0eUVycm9ycykge1xyXG5cclxuICAgIGxldCBwcm9wTmFtZUZuID0gc2F2ZUNvbnRleHQuZW50aXR5TWFuYWdlci5tZXRhZGF0YVN0b3JlLm5hbWluZ0NvbnZlbnRpb24uc2VydmVyUHJvcGVydHlOYW1lVG9DbGllbnQ7XHJcbiAgICBlbnRpdHlFcnJvcnMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICBlLnByb3BlcnR5TmFtZSA9IGUucHJvcGVydHlOYW1lICYmIHByb3BOYW1lRm4oZS5wcm9wZXJ0eU5hbWUpO1xyXG4gICAgfSk7XHJcbiAgICAoZXJyIGFzIFNhdmVFcnJvckZyb21TZXJ2ZXIpLmVudGl0eUVycm9ycyA9IGVudGl0eUVycm9ycztcclxuICB9XHJcblxyXG4gIGVyci5tZXNzYWdlID0gbWVzc2FnZSB8fCBcIlNlcnZlciBzaWRlIGVycm9ycyBlbmNvdW50ZXJlZCAtIHNlZSB0aGUgZW50aXR5RXJyb3JzIGNvbGxlY3Rpb24gb24gdGhpcyBvYmplY3QgZm9yIG1vcmUgZGV0YWlsXCI7XHJcbiAgcmV0dXJuIGVycjtcclxufVxyXG5cclxuXHJcbi8qKiBUaGlzIGlzIGEgZGVmYXVsdCwgbm8tb3AgaW1wbGVtZW50YXRpb24gdGhhdCBkZXZlbG9wZXJzIGNhbiByZXBsYWNlLiAqL1xyXG5jbGFzcyBEZWZhdWx0Q2hhbmdlUmVxdWVzdEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3RvcihzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpIHtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRSZXF1ZXN0KHJlcXVlc3Q6IGFueSwgZW50aXR5OiBFbnRpdHksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiByZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgZG9uZShyZXF1ZXN0czogT2JqZWN0W10pIHtcclxuICB9XHJcbn1cclxuIl19
@@ -1,4 +0,0 @@
1
- export { makeRelationArray } from './relation-array';
2
- export { makeComplexArray } from './complex-array';
3
- export { makePrimitiveArray } from './primitive-array';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgbWFrZVJlbGF0aW9uQXJyYXkgfSBmcm9tICcuL3JlbGF0aW9uLWFycmF5JztcclxuZXhwb3J0IHsgbWFrZUNvbXBsZXhBcnJheSB9IGZyb20gJy4vY29tcGxleC1hcnJheSc7XHJcbmV4cG9ydCB7IG1ha2VQcmltaXRpdmVBcnJheSB9IGZyb20gJy4vcHJpbWl0aXZlLWFycmF5JztcclxuIl19