@fluid-experimental/property-properties 2.0.0-internal.3.0.2 → 2.0.0-internal.3.2.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 (266) hide show
  1. package/README.md +1 -0
  2. package/dist/containerSerializer.d.ts.map +1 -1
  3. package/dist/containerSerializer.js +5 -5
  4. package/dist/containerSerializer.js.map +1 -1
  5. package/dist/enableValidations.js.map +1 -1
  6. package/dist/index.d.ts +19 -19
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/properties/abstractStaticCollectionProperty.d.ts +10 -10
  10. package/dist/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
  11. package/dist/properties/abstractStaticCollectionProperty.js +70 -53
  12. package/dist/properties/abstractStaticCollectionProperty.js.map +1 -1
  13. package/dist/properties/arrayProperty.d.ts.map +1 -1
  14. package/dist/properties/arrayProperty.js +152 -103
  15. package/dist/properties/arrayProperty.js.map +1 -1
  16. package/dist/properties/baseProperty.d.ts +4 -4
  17. package/dist/properties/baseProperty.d.ts.map +1 -1
  18. package/dist/properties/baseProperty.js +69 -47
  19. package/dist/properties/baseProperty.js.map +1 -1
  20. package/dist/properties/boolProperty.d.ts.map +1 -1
  21. package/dist/properties/boolProperty.js +3 -3
  22. package/dist/properties/boolProperty.js.map +1 -1
  23. package/dist/properties/containerProperty.d.ts +8 -8
  24. package/dist/properties/containerProperty.d.ts.map +1 -1
  25. package/dist/properties/containerProperty.js +33 -26
  26. package/dist/properties/containerProperty.js.map +1 -1
  27. package/dist/properties/enumArrayProperty.d.ts.map +1 -1
  28. package/dist/properties/enumArrayProperty.js +14 -14
  29. package/dist/properties/enumArrayProperty.js.map +1 -1
  30. package/dist/properties/enumProperty.d.ts.map +1 -1
  31. package/dist/properties/enumProperty.js +17 -17
  32. package/dist/properties/enumProperty.js.map +1 -1
  33. package/dist/properties/floatProperties.js +4 -4
  34. package/dist/properties/floatProperties.js.map +1 -1
  35. package/dist/properties/index.d.ts +23 -23
  36. package/dist/properties/index.d.ts.map +1 -1
  37. package/dist/properties/index.js.map +1 -1
  38. package/dist/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
  39. package/dist/properties/indexedCollectionBaseProperty.js +47 -37
  40. package/dist/properties/indexedCollectionBaseProperty.js.map +1 -1
  41. package/dist/properties/intProperties.d.ts.map +1 -1
  42. package/dist/properties/intProperties.js +10 -10
  43. package/dist/properties/intProperties.js.map +1 -1
  44. package/dist/properties/lazyLoadedProperties.js.map +1 -1
  45. package/dist/properties/mapProperty.d.ts.map +1 -1
  46. package/dist/properties/mapProperty.js +21 -17
  47. package/dist/properties/mapProperty.js.map +1 -1
  48. package/dist/properties/namedNodeProperty.d.ts.map +1 -1
  49. package/dist/properties/namedNodeProperty.js +3 -3
  50. package/dist/properties/namedNodeProperty.js.map +1 -1
  51. package/dist/properties/namedProperty.d.ts.map +1 -1
  52. package/dist/properties/namedProperty.js +7 -5
  53. package/dist/properties/namedProperty.js.map +1 -1
  54. package/dist/properties/nodeProperty.d.ts.map +1 -1
  55. package/dist/properties/nodeProperty.js +5 -3
  56. package/dist/properties/nodeProperty.js.map +1 -1
  57. package/dist/properties/primitiveTypeCasts.d.ts.map +1 -1
  58. package/dist/properties/primitiveTypeCasts.js +9 -9
  59. package/dist/properties/primitiveTypeCasts.js.map +1 -1
  60. package/dist/properties/referenceArrayProperty.d.ts.map +1 -1
  61. package/dist/properties/referenceArrayProperty.js +31 -25
  62. package/dist/properties/referenceArrayProperty.js.map +1 -1
  63. package/dist/properties/referenceMapProperty.d.ts.map +1 -1
  64. package/dist/properties/referenceMapProperty.js +18 -18
  65. package/dist/properties/referenceMapProperty.js.map +1 -1
  66. package/dist/properties/referenceProperty.d.ts.map +1 -1
  67. package/dist/properties/referenceProperty.js +33 -29
  68. package/dist/properties/referenceProperty.js.map +1 -1
  69. package/dist/properties/setProperty.d.ts.map +1 -1
  70. package/dist/properties/setProperty.js +31 -29
  71. package/dist/properties/setProperty.js.map +1 -1
  72. package/dist/properties/stringProperty.d.ts.map +1 -1
  73. package/dist/properties/stringProperty.js +56 -40
  74. package/dist/properties/stringProperty.js.map +1 -1
  75. package/dist/properties/uintProperties.js +5 -5
  76. package/dist/properties/uintProperties.js.map +1 -1
  77. package/dist/properties/valueArrayProperty.d.ts +1 -1
  78. package/dist/properties/valueArrayProperty.d.ts.map +1 -1
  79. package/dist/properties/valueArrayProperty.js +30 -29
  80. package/dist/properties/valueArrayProperty.js.map +1 -1
  81. package/dist/properties/valueMapProperty.d.ts.map +1 -1
  82. package/dist/properties/valueMapProperty.js +31 -29
  83. package/dist/properties/valueMapProperty.js.map +1 -1
  84. package/dist/properties/valueProperty.d.ts.map +1 -1
  85. package/dist/properties/valueProperty.js +11 -9
  86. package/dist/properties/valueProperty.js.map +1 -1
  87. package/dist/propertyFactory.d.ts.map +1 -1
  88. package/dist/propertyFactory.js +309 -252
  89. package/dist/propertyFactory.js.map +1 -1
  90. package/dist/propertyTemplate.d.ts +17 -17
  91. package/dist/propertyTemplate.d.ts.map +1 -1
  92. package/dist/propertyTemplate.js +64 -45
  93. package/dist/propertyTemplate.js.map +1 -1
  94. package/dist/propertyTemplateWrapper.d.ts.map +1 -1
  95. package/dist/propertyTemplateWrapper.js +40 -25
  96. package/dist/propertyTemplateWrapper.js.map +1 -1
  97. package/dist/propertyUtils.d.ts.map +1 -1
  98. package/dist/propertyUtils.js.map +1 -1
  99. package/dist/test/properties/arrayProperty.spec.js +566 -490
  100. package/dist/test/properties/arrayProperty.spec.js.map +1 -1
  101. package/dist/test/properties/baseProperty.spec.js +293 -280
  102. package/dist/test/properties/baseProperty.spec.js.map +1 -1
  103. package/dist/test/properties/containerProperty.spec.js +100 -94
  104. package/dist/test/properties/containerProperty.spec.js.map +1 -1
  105. package/dist/test/properties/customArrayProperty.spec.js +174 -147
  106. package/dist/test/properties/customArrayProperty.spec.js.map +1 -1
  107. package/dist/test/properties/enumArrayProperty.spec.js +67 -63
  108. package/dist/test/properties/enumArrayProperty.spec.js.map +1 -1
  109. package/dist/test/properties/enumProperty.spec.js +115 -97
  110. package/dist/test/properties/enumProperty.spec.js.map +1 -1
  111. package/dist/test/properties/float32.spec.js +5 -5
  112. package/dist/test/properties/float32.spec.js.map +1 -1
  113. package/dist/test/properties/int64ArrayProperty.spec.js +157 -93
  114. package/dist/test/properties/int64ArrayProperty.spec.js.map +1 -1
  115. package/dist/test/properties/int64MapProperty.spec.js +185 -166
  116. package/dist/test/properties/int64MapProperty.spec.js.map +1 -1
  117. package/dist/test/properties/int64Property.spec.js +109 -109
  118. package/dist/test/properties/int64Property.spec.js.map +1 -1
  119. package/dist/test/properties/isLeafNode.spec.js +75 -76
  120. package/dist/test/properties/isLeafNode.spec.js.map +1 -1
  121. package/dist/test/properties/mapProperty.spec.js +571 -531
  122. package/dist/test/properties/mapProperty.spec.js.map +1 -1
  123. package/dist/test/properties/namedNodeProperty.spec.js +31 -31
  124. package/dist/test/properties/namedNodeProperty.spec.js.map +1 -1
  125. package/dist/test/properties/nodeProperty.spec.js +805 -795
  126. package/dist/test/properties/nodeProperty.spec.js.map +1 -1
  127. package/dist/test/properties/referenceProperty.spec.js +729 -679
  128. package/dist/test/properties/referenceProperty.spec.js.map +1 -1
  129. package/dist/test/properties/relationshipProperty.spec.js +16 -16
  130. package/dist/test/properties/relationshipProperty.spec.js.map +1 -1
  131. package/dist/test/properties/setProperty.spec.js +288 -227
  132. package/dist/test/properties/setProperty.spec.js.map +1 -1
  133. package/dist/test/properties/stringProperty.spec.js +326 -318
  134. package/dist/test/properties/stringProperty.spec.js.map +1 -1
  135. package/dist/test/properties/uint64Property.spec.js +46 -36
  136. package/dist/test/properties/uint64Property.spec.js.map +1 -1
  137. package/dist/test/properties/valueMapProperty.spec.js +259 -246
  138. package/dist/test/properties/valueMapProperty.spec.js.map +1 -1
  139. package/dist/test/properties/valueProperty.spec.js +49 -43
  140. package/dist/test/properties/valueProperty.spec.js.map +1 -1
  141. package/dist/test/propertyFactory.spec.js +2038 -1631
  142. package/dist/test/propertyFactory.spec.js.map +1 -1
  143. package/dist/test/propertyTemplateWrapper.spec.js +72 -102
  144. package/dist/test/propertyTemplateWrapper.spec.js.map +1 -1
  145. package/dist/test/propertyUtils.spec.js +22 -21
  146. package/dist/test/propertyUtils.spec.js.map +1 -1
  147. package/dist/test/reversibleChangeset.spec.js +857 -703
  148. package/dist/test/reversibleChangeset.spec.js.map +1 -1
  149. package/dist/test/setup.js +5 -5
  150. package/dist/test/setup.js.map +1 -1
  151. package/dist/test/tsconfig.tsbuildinfo +1 -1
  152. package/dist/test/utils.spec.js +1334 -1144
  153. package/dist/test/utils.spec.js.map +1 -1
  154. package/dist/test/validation/badMissingSemverInTypeid.js +20 -20
  155. package/dist/test/validation/badMissingSemverInTypeid.js.map +1 -1
  156. package/dist/test/validation/badPrimitiveTypeid.js +12 -12
  157. package/dist/test/validation/badPrimitiveTypeid.js.map +1 -1
  158. package/dist/test/validation/goodColorId.js +91 -91
  159. package/dist/test/validation/goodColorId.js.map +1 -1
  160. package/dist/test/validation/goodColorPalette.js +4 -4
  161. package/dist/test/validation/goodColorPalette.js.map +1 -1
  162. package/dist/test/validation/goodPointId.js +20 -20
  163. package/dist/test/validation/goodPointId.js.map +1 -1
  164. package/dist/test/validation/reversibleChangeSetTestData.js +23841 -2
  165. package/dist/test/validation/reversibleChangeSetTestData.js.map +1 -1
  166. package/lib/containerSerializer.d.ts.map +1 -1
  167. package/lib/containerSerializer.js +5 -5
  168. package/lib/containerSerializer.js.map +1 -1
  169. package/lib/enableValidations.js.map +1 -1
  170. package/lib/index.d.ts +19 -19
  171. package/lib/index.d.ts.map +1 -1
  172. package/lib/index.js +19 -19
  173. package/lib/index.js.map +1 -1
  174. package/lib/properties/abstractStaticCollectionProperty.d.ts +10 -10
  175. package/lib/properties/abstractStaticCollectionProperty.d.ts.map +1 -1
  176. package/lib/properties/abstractStaticCollectionProperty.js +70 -53
  177. package/lib/properties/abstractStaticCollectionProperty.js.map +1 -1
  178. package/lib/properties/arrayProperty.d.ts.map +1 -1
  179. package/lib/properties/arrayProperty.js +152 -103
  180. package/lib/properties/arrayProperty.js.map +1 -1
  181. package/lib/properties/baseProperty.d.ts +4 -4
  182. package/lib/properties/baseProperty.d.ts.map +1 -1
  183. package/lib/properties/baseProperty.js +73 -51
  184. package/lib/properties/baseProperty.js.map +1 -1
  185. package/lib/properties/boolProperty.d.ts.map +1 -1
  186. package/lib/properties/boolProperty.js +3 -3
  187. package/lib/properties/boolProperty.js.map +1 -1
  188. package/lib/properties/containerProperty.d.ts +8 -8
  189. package/lib/properties/containerProperty.d.ts.map +1 -1
  190. package/lib/properties/containerProperty.js +33 -26
  191. package/lib/properties/containerProperty.js.map +1 -1
  192. package/lib/properties/enumArrayProperty.d.ts.map +1 -1
  193. package/lib/properties/enumArrayProperty.js +14 -14
  194. package/lib/properties/enumArrayProperty.js.map +1 -1
  195. package/lib/properties/enumProperty.d.ts.map +1 -1
  196. package/lib/properties/enumProperty.js +17 -17
  197. package/lib/properties/enumProperty.js.map +1 -1
  198. package/lib/properties/floatProperties.js +4 -4
  199. package/lib/properties/floatProperties.js.map +1 -1
  200. package/lib/properties/index.d.ts +23 -23
  201. package/lib/properties/index.d.ts.map +1 -1
  202. package/lib/properties/index.js +23 -23
  203. package/lib/properties/index.js.map +1 -1
  204. package/lib/properties/indexedCollectionBaseProperty.d.ts.map +1 -1
  205. package/lib/properties/indexedCollectionBaseProperty.js +47 -37
  206. package/lib/properties/indexedCollectionBaseProperty.js.map +1 -1
  207. package/lib/properties/intProperties.d.ts.map +1 -1
  208. package/lib/properties/intProperties.js +10 -10
  209. package/lib/properties/intProperties.js.map +1 -1
  210. package/lib/properties/lazyLoadedProperties.js.map +1 -1
  211. package/lib/properties/mapProperty.d.ts.map +1 -1
  212. package/lib/properties/mapProperty.js +21 -17
  213. package/lib/properties/mapProperty.js.map +1 -1
  214. package/lib/properties/namedNodeProperty.d.ts.map +1 -1
  215. package/lib/properties/namedNodeProperty.js +3 -3
  216. package/lib/properties/namedNodeProperty.js.map +1 -1
  217. package/lib/properties/namedProperty.d.ts.map +1 -1
  218. package/lib/properties/namedProperty.js +7 -5
  219. package/lib/properties/namedProperty.js.map +1 -1
  220. package/lib/properties/nodeProperty.d.ts.map +1 -1
  221. package/lib/properties/nodeProperty.js +5 -3
  222. package/lib/properties/nodeProperty.js.map +1 -1
  223. package/lib/properties/primitiveTypeCasts.d.ts.map +1 -1
  224. package/lib/properties/primitiveTypeCasts.js +9 -9
  225. package/lib/properties/primitiveTypeCasts.js.map +1 -1
  226. package/lib/properties/referenceArrayProperty.d.ts.map +1 -1
  227. package/lib/properties/referenceArrayProperty.js +31 -25
  228. package/lib/properties/referenceArrayProperty.js.map +1 -1
  229. package/lib/properties/referenceMapProperty.d.ts.map +1 -1
  230. package/lib/properties/referenceMapProperty.js +18 -18
  231. package/lib/properties/referenceMapProperty.js.map +1 -1
  232. package/lib/properties/referenceProperty.d.ts.map +1 -1
  233. package/lib/properties/referenceProperty.js +33 -29
  234. package/lib/properties/referenceProperty.js.map +1 -1
  235. package/lib/properties/setProperty.d.ts.map +1 -1
  236. package/lib/properties/setProperty.js +31 -29
  237. package/lib/properties/setProperty.js.map +1 -1
  238. package/lib/properties/stringProperty.d.ts.map +1 -1
  239. package/lib/properties/stringProperty.js +56 -40
  240. package/lib/properties/stringProperty.js.map +1 -1
  241. package/lib/properties/uintProperties.js +5 -5
  242. package/lib/properties/uintProperties.js.map +1 -1
  243. package/lib/properties/valueArrayProperty.d.ts +1 -1
  244. package/lib/properties/valueArrayProperty.d.ts.map +1 -1
  245. package/lib/properties/valueArrayProperty.js +30 -29
  246. package/lib/properties/valueArrayProperty.js.map +1 -1
  247. package/lib/properties/valueMapProperty.d.ts.map +1 -1
  248. package/lib/properties/valueMapProperty.js +31 -29
  249. package/lib/properties/valueMapProperty.js.map +1 -1
  250. package/lib/properties/valueProperty.d.ts.map +1 -1
  251. package/lib/properties/valueProperty.js +11 -9
  252. package/lib/properties/valueProperty.js.map +1 -1
  253. package/lib/propertyFactory.d.ts.map +1 -1
  254. package/lib/propertyFactory.js +309 -252
  255. package/lib/propertyFactory.js.map +1 -1
  256. package/lib/propertyTemplate.d.ts +17 -17
  257. package/lib/propertyTemplate.d.ts.map +1 -1
  258. package/lib/propertyTemplate.js +64 -45
  259. package/lib/propertyTemplate.js.map +1 -1
  260. package/lib/propertyTemplateWrapper.d.ts.map +1 -1
  261. package/lib/propertyTemplateWrapper.js +40 -25
  262. package/lib/propertyTemplateWrapper.js.map +1 -1
  263. package/lib/propertyUtils.d.ts.map +1 -1
  264. package/lib/propertyUtils.js.map +1 -1
  265. package/package.json +28 -28
  266. package/src/index.d.ts +2750 -2681
@@ -1 +1 @@
1
- {"version":3,"file":"propertyFactory.spec.js","sourceRoot":"","sources":["../../src/test/propertyFactory.spec.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mBAAmB;AAEnB,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC,SAAS,CAAC;AACzE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,qCAAqC,CAAC,CAAC,SAAS,CAAC;AAClF,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAEnE,QAAQ,CAAC,iBAAiB,EAAE;IACxB,UAAU,CAAC,GAAG,EAAE;QACZ,eAAe,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG;QACd,MAAM,EAAE,0BAA0B;QAClC,UAAU,EAAE;YACR;gBACI,EAAE,EAAE,UAAU;gBACd,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,GAAG;wBACP,MAAM,EAAE,SAAS;qBACpB;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,MAAM,EAAE,SAAS;qBACpB;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,MAAM,EAAE,SAAS;qBACpB;iBACJ;aACJ;YACD;gBACI,EAAE,EAAE,QAAQ;gBACZ,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,CAAC;aACV;SACJ;KACJ,CAAC;IAEF,EAAE,CAAC,oBAAoB,EAAE,UAAS,IAAI;QAClC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE;QAChC,IAAI,SAAS,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACpD,IAAI,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAC9B,IAAI,SAAS,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAC3D,IAAI,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE;QAC9C,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACvE,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAErF,IAAI,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,EAAE;YACrE,QAAQ,EAAE;gBACN,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,GAAG;gBACN,CAAC,EAAE,GAAG;aACT;YACD,MAAM,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE;QACnC,IAAI,8BAA8B,GAAG;YACjC,MAAM,EAAE;gBACJ,iBAAiB,EAAE;oBACf,MAAM,EAAE;wBACJ,MAAM,EAAE;4BACJ,uBAAuB,EAAE,WAAW;yBACvC;qBACJ;iBACJ;aACJ;SACJ,CAAC;QACF,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,CACF;YACI,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE;QAC9D,IAAI,gBAAgB,GAAG;YACnB,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,WAAW,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE;QAC7D,IAAI,gBAAgB,GAAG;YACnB,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE;QAC1D,IAAI,OAAO,GAAG;YACV,MAAM,EAAE,kCAAkC;YAC1C,QAAQ,EAAE,eAAe;SAC5B,CAAC;QACF,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElC,IAAI,YAAY,GAAG;YACf,MAAM,EAAE,qDAAqD;YAC7D,UAAU,EAAE;gBACR,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;gBACjC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,kCAAkC,EAAE,OAAO,EAAE,KAAK,EAAE;gBAC7E,mGAAmG;aACtG;SACJ,CAAC;QAEF,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC;QAE7F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAE1E,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE;QACjD,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;YACzB,OAAO,gBAAgB,CAAC,UAAU,CAAC;SACtC;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACrB,OAAO,gBAAgB,CAAC,MAAM,CAAC;SAClC;QACD,OAAO,gBAAgB,CAAC,iBAAiB,CAAC;QAE1C,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE;QACpB,UAAU,CAAC;YACP,eAAe,CAAC,MAAM,EAAE,CAAC;YAEzB,IAAI,KAAK,GAAG;gBACR,MAAM,EAAE,wBAAwB;gBAChC,UAAU,EAAE,CAAC;wBACT,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;4BACrB,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;4BAC9B,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;4BAC9B;gCACI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;oCACpB,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;oCAClC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;oCACnC;wCACI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;4CACtB,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;yCAAC;qCACzC;iCAAC;6BACT;yBAAC;qBACT,CAAC;aACL,CAAC;YACF,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEhC,IAAI,KAAK,GAAG;gBACR,MAAM,EAAE,wBAAwB;gBAChC,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAClC;wBACI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;4BACpB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;yBAAC;qBACvC;iBAAC;aACT,CAAC;YACF,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEhC,IAAI,2BAA2B,GAAG;gBAC9B,MAAM,EAAE,8CAA8C;gBACtD,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;iBAC5D;aACJ,CAAC;YACF,eAAe,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;YAEtD,IAAI,+BAA+B,GAAG;gBAClC,MAAM,EAAE,kDAAkD;gBAC1D,QAAQ,EAAE,CAAC,8CAA8C,CAAC;gBAC1D,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;iBAC5D;aACJ,CAAC;YACF,eAAe,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YAE1D,IAAI,6BAA6B,GAAG;gBAChC,MAAM,EAAE,gDAAgD;gBACxD,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAC/B;wBACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;4BACvB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;yBAC7C;qBACJ;iBACJ;aACJ,CAAC;YACF,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE;YACjD,IAAI,MAAM,GAAG;gBACT,MAAM,EAAE,yBAAyB;gBACjC,QAAQ,EAAE,CAAC,wBAAwB,CAAC;gBACpC,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;iBACpC;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEjC,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YAE/D,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE;YAC3B,IAAI,iBAAiB,GAAG;gBACpB,MAAM,EAAE,oCAAoC;gBAC5C,QAAQ,EAAE,CAAC,wBAAwB,CAAC;gBACpC,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;iBAC/C;aACJ,CAAC;YAEF,IAAI,kBAAkB,GAAG;gBACrB,MAAM,EAAE,qCAAqC;gBAC7C,QAAQ,EAAE,CAAC,oCAAoC,CAAC;gBAChD,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;iBAC/C;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC5C,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAE7C,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;YAC1E,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;YAE3E,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE;YAC7D,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,0BAA0B;gBAClC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,OAAO;wBACd,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACrD;oBACD;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,CAAC,OAAO,CAAC;wBAChB,OAAO,EAAE,OAAO;wBAChB,UAAU,EAAE,EAAE,WAAW,EAAE,sBAAsB,EAAE;qBACtD;iBACJ;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,0BAA0B;gBAClC,QAAQ,EAAE,0BAA0B;gBACpC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,QAAQ;qBAClB;oBACD;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,CAAC,QAAQ,CAAC;qBACpB;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEpC,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE;YACzD,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,OAAO;wBACd,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACrD;iBACJ;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,QAAQ;qBAClB;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEzC,IAAI;gBACA,eAAe,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;aACvD;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC5B,qCAAqC;oBACrC,0EAA0E,CAC7E,CAAC;aACL;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE;YAC/D,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,OAAO;wBACd,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACrD;iBACJ;aACJ,CAAC;YAEF,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,CAAC;qBACX;iBACJ;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;gBACpE,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,QAAQ;qBAClB;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEzC,IAAI;gBACA,eAAe,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;aACvD;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC5B,mCAAmC,CACtC,CAAC;aACL;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE;YAC7E,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,OAAO;qBACjB;oBACD;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,CAAC;qBACX;iBACJ;aACJ,CAAC;YAEF,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,KAAK;wBACZ,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACrD;iBACJ;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;gBACpE,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,QAAQ;qBAClB;oBACD;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,EAAE;qBACZ;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEpC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,2BAA2B,CAAC,CAAC;iBAC5E,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE;YAC3D,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,OAAO;wBACd,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACrD;iBACJ;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,QAAQ;qBAClB;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE;YACpE,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,OAAO;wBACd,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACrD;iBACJ;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,QAAQ;qBAClB;iBACJ;aACJ,CAAC;YAEF,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,KAAK,EAAE,QAAQ;qBAClB;iBACJ;aACJ,CAAC;YAEF,IAAI;gBACA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACzC,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;aACzC;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC5B,gFAAgF,CACnF,CAAC;aACL;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE;YAC1C,IAAI,SAAS,GAAG;gBACZ,MAAM,EAAE,2BAA2B;gBACnC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,QAAQ;wBACZ,MAAM,EAAE,QAAQ;wBAChB,KAAK,EAAE,OAAO;wBACd,UAAU,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE;qBACrD;iBACJ;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,2BAA2B;gBACnC,QAAQ,EAAE,2BAA2B;gBACrC,SAAS,EAAE;oBACP;wBACI,KAAK,EAAE,QAAQ;qBAClB;iBACJ;aACJ,CAAC;YAEF,IAAI;gBACA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;aACzC;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC5B,+DAA+D,CAClE,CAAC;aACL;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE;YAClE,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,iCAAiC;aAC5C,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,iCAAiC;gBACzC,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE;oBAC9B,EAAE,EAAE,EAAE,OAAO,EAAE;iBAClB;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,iCAAiC;gBACzC,QAAQ,EAAE,CAAC,iCAAiC,EAAE,iCAAiC,CAAC;gBAChF,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;oBACjC,EAAE,EAAE,EAAE,SAAS,EAAE;oBACjB;wBACI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;4BACrB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;yBACjC;qBACJ;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEzC,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAEvE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE;YACpC,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,kCAAkC;gBAC1C,QAAQ,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;gBAC9D,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;iBACpC;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAE1C,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAExE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kFAAkF,EAAE;YACnF,IAAI,KAAK,GAAG;gBACR,MAAM,EAAE,wBAAwB;gBAChC,UAAU,EAAE,CAAC;wBACT,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;4BACrB,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;4BAC9B,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;yBAAC;qBACtC,CAAC;aACL,CAAC;YAEF,IAAI,yBAAyB,GAAG;gBAC5B,MAAM,EAAE,4CAA4C;gBACpD,QAAQ,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;gBAC9D,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;iBACtC;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChC,eAAe,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;YAEpD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;iBAC7F,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE;YAC1D,IAAI,uBAAuB,GAAG;gBAC1B,MAAM,EAAE,0CAA0C;gBAClD,QAAQ,EAAE,CAAC,wBAAwB,CAAC;gBACpC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aACnD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YAElD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC;iBAC3F,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE;YAC7D,IAAI,mBAAmB,GAAG;gBACtB,MAAM,EAAE,sCAAsC;gBAC9C,QAAQ,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;gBAC9D,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;oBAC9D;wBACI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;4BACrB,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;4BAC9B;gCACI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;oCACpB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;oCAC/B;wCACI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;4CACtB,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;yCAAC;qCACzC;iCAAC;6BACT;yBAAC;qBACT;oBACD;wBACI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;4BACpB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;yBAAC;qBACvC;iBAAC;aACT,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAE9C,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;YAE5E,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAE/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEzD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAEnE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE;YACpD,IAAI,aAAa,GAAG;gBAChB,MAAM,EAAE,gCAAgC;gBACxC,QAAQ,EAAE,CAAC,wBAAwB,CAAC;gBACpC,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;4BACrB;gCACI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;oCACpB,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;iCAAC;6BAC3C;yBAAC;qBACT;iBAAC;aACT,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,iCAAiC;gBACzC,QAAQ,EAAE,CAAC,gCAAgC,CAAC;gBAC5C,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAClC;wBACI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;4BACrB,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;4BACjC;gCACI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;oCACpB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;iCAAC;6BACxC;yBAAC;qBACT;iBAAC;aACT,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEzC,IAAI,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAEvE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAE/C,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE;YAC7C,IAAI,mBAAmB,GAAG;gBACtB,QAAQ,EAAE,sDAAsD;gBAChE,YAAY,EAAE;oBACV;wBACI,IAAI,EAAE,MAAM;wBACZ,YAAY,EAAE;4BACV;gCACI,IAAI,EAAE,OAAO;gCACb,QAAQ,EAAE,SAAS;6BACtB;4BACD;gCACI,IAAI,EAAE,MAAM;gCACZ,QAAQ,EAAE,QAAQ;6BACrB;yBACJ;qBACJ;oBACD;wBACI,IAAI,EAAE,aAAa;wBACnB,YAAY,EAAE;4BACV;gCACI,IAAI,EAAE,QAAQ;gCACd,QAAQ,EAAE,SAAS;6BACtB;4BACD;gCACI,IAAI,EAAE,OAAO;gCACb,QAAQ,EAAE,SAAS;6BACtB;4BACD;gCACI,IAAI,EAAE,QAAQ;gCACd,QAAQ,EAAE,SAAS;6BACtB;4BACD;gCACI,IAAI,EAAE,MAAM;gCACZ,QAAQ,EAAE,QAAQ;6BACrB;yBACJ;qBACJ;oBACD;wBACI,IAAI,EAAE,UAAU;wBAChB,QAAQ,EAAE,QAAQ;qBACrB;iBACJ;gBACD,YAAY,EAAE;oBACV,aAAa,EAAE,0EAA0E;iBAC5F;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAE9C,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,sDAAsD,EAAE,IAAI,EAAE;gBAC5F,IAAI,EAAE;oBACF,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,OAAO;iBAChB;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,GAAG;oBACX,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,IAAI;oBACZ,IAAI,EAAE,OAAO;iBAChB;gBACD,QAAQ,EAAE,aAAa;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,2BAA2B,EAAE;YAClC,EAAE,CAAC,wCAAwC,EAAE;gBACzC,IAAI,+BAA+B,GAAG;oBAClC,MAAM,EAAE,kDAAkD;oBAC1D,QAAQ,EAAE,CAAC,eAAe,CAAC;oBAC3B,UAAU,EAAE,CAAC;4BACT,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK;yBAC3F,CAAC;iBACL,CAAC;gBAEF,IAAI,+BAA+B,GAAG;oBAClC,MAAM,EAAE,kDAAkD;oBAC1D,QAAQ,EAAE,CAAC,eAAe,CAAC;oBAC3B,UAAU,EAAE,CAAC;4BACT,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK;yBAC3F,CAAC;iBACL,CAAC;gBAEF,IAAI,2BAA2B,GAAG;oBAC9B,MAAM,EAAE,8CAA8C;oBACtD,UAAU,EAAE;wBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;wBACvC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;wBAChG;4BACI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gCAC/F,EAAE,MAAM,EAAE,mBAAmB,EAAE;6BAAC;yBACvC;wBACD;4BACI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;4BAC/F,KAAK,EAAE,OAAO;yBACjB;wBACD;4BACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;gCACvB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gCAC/B,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;6BACrC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE;yBACjD;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,gDAAgD,EAAE,KAAK,EAAE;gCAC7E,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE;6BACxD;yBACJ;wBACD;4BACI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACzD,IAAI,EAAE,CAAC;gCACP,IAAI,EAAE,CAAC;6BACV;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACtF,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;gCAChC,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;6BACnC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC3F,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;gCACrC,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;6BACxC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,kDAAkD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC/F,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE;wCAC3C,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCAC9C;iCACJ;gCACD,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCAC9C;iCACJ;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACtF,EAAE,MAAM,EAAE,cAAc,EAAE;gCAC1B,EAAE,MAAM,EAAE,cAAc,EAAE;6BAC7B;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC3F,EAAE,MAAM,EAAE,mBAAmB,EAAE;gCAC/B,EAAE,MAAM,EAAE,mBAAmB,EAAE;6BAClC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,kDAAkD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oCAChG,UAAU,EAAE;wCACR,EAAE,MAAM,EAAE,uBAAuB,EAAE;wCACnC,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCACtC;iCACJ,EAAE;oCACC,UAAU,EAAE;wCACR,EAAE,MAAM,EAAE,uBAAuB,EAAE;wCACnC,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCACtC;iCACJ,CAAC;yBACL;qBACJ;iBACJ,CAAC;gBAEF,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,QAAQ,EAAE,CAAC,8CAA8C,CAAC;oBAC1D,UAAU,EAAE;wBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;wBACvC;4BACI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;4BAC9F,OAAO,EAAE,OAAO;yBACnB;wBACD;4BACI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAClG,CAAC;oCACG,MAAM,EAAE,kDAAkD;oCAC1D,KAAK,EAAE,EAAE,MAAM,EAAE,+BAA+B,EAAE;iCACrD;gCACD;oCACI,MAAM,EAAE,kDAAkD;oCAC1D,KAAK,EAAE,EAAE,MAAM,EAAE,+BAA+B,EAAE;iCACrD;6BACA;yBACR;wBACD;4BACI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;4BAC/F,KAAK,EAAE,QAAQ;yBAClB;wBACD;4BACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;gCACvB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;gCAC/B,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;6BACrC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE,GAAG,EAAE,CAAC,EAAE;yBAC3D;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,gDAAgD,EAAE,KAAK,EAAE;gCAC7E,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;6BAClE;yBACJ;wBACD;4BACI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACzD,IAAI,EAAE,CAAC;gCACP,IAAI,EAAE,CAAC;6BACV;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACtF,IAAI,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE;gCAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE;6BAC7C;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCAChG,IAAI,EAAE;oCACF,MAAM,EAAE,kDAAkD;oCAC1D,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;gCACD,IAAI,EAAE;oCACF,MAAM,EAAE,kDAAkD;oCAC1D,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,kDAAkD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC/F,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;wCACrD,MAAM,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;qCACxD;iCACJ;gCACD,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;qCACxD;iCACJ;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACtF,EAAE,MAAM,EAAE,wBAAwB,EAAE;gCACpC,EAAE,MAAM,EAAE,wBAAwB,EAAE;6BACvC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,8CAA8C,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCAChG;oCACI,MAAM,EAAE,8CAA8C;oCACtD,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;gCACD;oCACI,MAAM,EAAE,8CAA8C;oCACtD,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,kDAAkD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oCAChG,UAAU,EAAE;wCACR,EAAE,MAAM,EAAE,iCAAiC,EAAE;wCAC7C,EAAE,MAAM,EAAE,iCAAiC,EAAE;qCAChD;iCACJ,CAAC;yBACL;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;gBAC1D,eAAe,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;gBAC1D,eAAe,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;gBACtD,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBAEvD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;gBAEvF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;oBACtD,0BAA0B,EAAE,0BAA0B;iBACzD,CAAC,CAAC;gBACH,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACzG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACzG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAClE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBAC9F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,iCAAiC,CAAC;qBACzD,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACrD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACjF,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACjF,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACtF,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACtF,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAC3D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAC3D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAChE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACzD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAChE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACzD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;qBACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;qBACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qEAAqE,EAAE;gBACtE,IAAI,2BAA2B,GAAG;oBAC9B,MAAM,EAAE,8CAA8C;oBACtD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACxD,CAAC;gBAEF,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,QAAQ,EAAE,CAAC,8CAA8C,CAAC;oBAC1D,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACzD,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;gBACtD,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBAEvD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,+CAA+C,CAAC,CAAC;qBAChG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sEAAsE,EAAE;gBACvE,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACxD,CAAC;gBAEF,IAAI,6BAA6B,GAAG;oBAChC,MAAM,EAAE,gDAAgD;oBACxD,QAAQ,EAAE,CAAC,+CAA+C,CAAC;oBAC3D,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;iBAC/E,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBACvD,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBAExD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,gDAAgD,CAAC,CAAC;qBACjG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,sBAAsB,EAAE;YAC7B,EAAE,CAAC,mCAAmC,EAAE;gBACpC,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,QAAQ,EAAE,CAAC,eAAe,CAAC;oBAC3B,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;qBAC5D;iBACJ,CAAC;gBAEF,IAAI,gCAAgC,GAAG;oBACnC,MAAM,EAAE,mDAAmD;oBAC3D,QAAQ,EAAE,CAAC,+CAA+C,CAAC;oBAC3D,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;qBAC5D;iBACJ,CAAC;gBAEF,IAAI,8BAA8B,GAAG;oBACjC,MAAM,EAAE,iDAAiD;oBACzD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBACtD,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;gCACvB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;6BAC7C;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,IAAI,gCAAgC,GAAG;oBACnC,MAAM,EAAE,mDAAmD;oBAC3D,QAAQ,EAAE,CAAC,eAAe,CAAC;oBAC3B,SAAS,EAAE,CAAC;4BACR,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;yBACvG,CAAC;iBACL,CAAC;gBAEF,IAAI,gCAAgC,GAAG;oBACnC,MAAM,EAAE,mDAAmD;oBAC3D,QAAQ,EAAE,CAAC,eAAe,CAAC;oBAC3B,SAAS,EAAE,CAAC;4BACR,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;yBACvG,CAAC;iBACL,CAAC;gBAEF,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;wBACvC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;wBAChG;4BACI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;gCAChG,EAAE,MAAM,EAAE,mBAAmB,EAAE;6BAAC;yBACvC;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,iDAAiD,EAAE,KAAK,EAAE;gCAC9E,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,gBAAgB,EAAE;6BACxD;yBACJ;wBACD;4BACI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACzD,IAAI,EAAE,CAAC;gCACP,IAAI,EAAE,CAAC;6BACV;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACvF,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;gCAChC,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;6BACnC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC5F,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;gCACrC,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE;6BACxC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,mDAAmD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAChG,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE;wCAC3C,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCAC9C;iCACJ;gCACD,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCAC9C;iCACJ;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACvF,EAAE,MAAM,EAAE,cAAc,EAAE;gCAC1B,EAAE,MAAM,EAAE,cAAc,EAAE;6BAC7B;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC5F,EAAE,MAAM,EAAE,mBAAmB,EAAE;gCAC/B,EAAE,MAAM,EAAE,mBAAmB,EAAE;6BAClC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,mDAAmD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oCACjG,UAAU,EAAE;wCACR,EAAE,MAAM,EAAE,uBAAuB,EAAE;wCACnC,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCACtC;iCACJ,EAAE;oCACC,UAAU,EAAE;wCACR,EAAE,MAAM,EAAE,uBAAuB,EAAE;wCACnC,EAAE,MAAM,EAAE,uBAAuB,EAAE;qCACtC;iCACJ,CAAC;yBACL;qBACJ;iBACJ,CAAC;gBAEF,IAAI,6BAA6B,GAAG;oBAChC,MAAM,EAAE,gDAAgD;oBACxD,QAAQ,EAAE,CAAC,+CAA+C,CAAC;oBAC3D,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;wBACvC;4BACI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;4BAC9F,OAAO,EAAE,OAAO;yBACnB;wBACD;4BACI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EACnG,CAAC;oCACG,MAAM,EAAE,mDAAmD;oCAC3D,KAAK,EAAE,EAAE,MAAM,EAAE,+BAA+B,EAAE;iCACrD;gCACD;oCACI,MAAM,EAAE,mDAAmD;oCAC3D,KAAK,EAAE,EAAE,MAAM,EAAE,+BAA+B,EAAE;iCACrD;6BACA;yBACR;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,iDAAiD,EAAE,KAAK,EAAE;gCAC9E,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;6BAClE;yBACJ;wBACD;4BACI,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACzD,IAAI,EAAE,CAAC;gCACP,IAAI,EAAE,CAAC;6BACV;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACvF,IAAI,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE;gCAC1C,IAAI,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE;6BAC7C;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCACjG,IAAI,EAAE;oCACF,MAAM,EAAE,mDAAmD;oCAC3D,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;gCACD,IAAI,EAAE;oCACF,MAAM,EAAE,mDAAmD;oCAC3D,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,mDAAmD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAChG,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;wCACrD,MAAM,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;qCACxD;iCACJ;gCACD,IAAI,EAAE;oCACF,UAAU,EAAE;wCACR,MAAM,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;qCACxD;iCACJ;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCACvF,EAAE,MAAM,EAAE,wBAAwB,EAAE;gCACpC,EAAE,MAAM,EAAE,wBAAwB,EAAE;6BACvC;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,+CAA+C,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCACjG;oCACI,MAAM,EAAE,+CAA+C;oCACvD,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;gCACD;oCACI,MAAM,EAAE,+CAA+C;oCACvD,KAAK,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;iCACnD;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,mDAAmD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oCACjG,UAAU,EAAE;wCACR,EAAE,MAAM,EAAE,iCAAiC,EAAE;wCAC7C,EAAE,MAAM,EAAE,iCAAiC,EAAE;qCAChD;iCACJ,CAAC;yBACL;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBACvD,eAAe,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;gBAC3D,eAAe,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;gBACzD,eAAe,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;gBAC3D,eAAe,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;gBAC3D,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBACvD,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBAExD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC;gBAExF,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;oBACtD,0BAA0B,EAAE,0BAA0B;iBACzD,CAAC,CAAC;gBACH,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACzG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBACzG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,iCAAiC,CAAC;qBACzD,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACrD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACjF,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACjF,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACtF,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACtF,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;qBAC9E,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAC3D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAC3D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAChE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACzD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAChE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACzD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;qBACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBAC3F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;qBACpE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qDAAqD,EAAE;gBACtD,IAAI,iCAAiC,GAAG;oBACpC,MAAM,EAAE,oDAAoD;oBAC5D,QAAQ,EAAE,CAAC,eAAe,CAAC;oBAC3B,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;qBAC5D;iBACJ,CAAC;gBAEF,IAAI,qCAAqC,GAAG;oBACxC,MAAM,EAAE,wDAAwD;oBAChE,QAAQ,EAAE,CAAC,oDAAoD,CAAC;oBAChE,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE;wBACzD,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;qBACpD;iBACJ,CAAC;gBAEF,IAAI,iCAAiC,GAAG;oBACpC,MAAM,EAAE,oDAAoD;oBAC5D,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,oDAAoD,EAAE;wBAC9E,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,oDAAoD,EAAE;wBAC9E;4BACI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,oDAAoD,EAAE,OAAO,EAAE,OAAO;4BAC3F,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;yBACtC;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oDAAoD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC5F,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;gCAChC,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;6BACnC;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oDAAoD,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;gCAC5F,EAAE,MAAM,EAAE,cAAc,EAAE;gCAC1B,EAAE,MAAM,EAAE,cAAc,EAAE;6BAC7B;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,IAAI,kCAAkC,GAAG;oBACrC,MAAM,EAAE,qDAAqD;oBAC7D,QAAQ,EAAE,CAAC,oDAAoD,CAAC;oBAChE,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;gCACtB,MAAM,EAAE,oDAAoD;gCAC5D,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;6BACtC;yBACJ;wBACD;4BACI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;gCACtB,MAAM,EAAE,wDAAwD;gCAChE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;6BACtD;yBACJ;wBACD;4BACI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EACrC,CAAC;oCACG,MAAM,EAAE,wDAAwD;oCAChE,KAAK,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,gBAAgB,EAAE;iCACxE;gCACD;oCACI,MAAM,EAAE,wDAAwD;oCAChE,KAAK,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,gBAAgB,EAAE;iCACxE;6BACA;yBACR;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oDAAoD,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCACjG,IAAI,EAAE;oCACF,MAAM,EAAE,wDAAwD;oCAChE,KAAK,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE;iCACpE;gCACD,IAAI,EAAE;oCACF,MAAM,EAAE,wDAAwD;oCAChE,KAAK,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE;iCACpE;6BACJ;yBACJ;wBACD;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oDAAoD,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCACjG;oCACI,MAAM,EAAE,wDAAwD;oCAChE,KAAK,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE;iCACpE;gCACD;oCACI,MAAM,EAAE,wDAAwD;oCAChE,KAAK,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE;iCACpE;6BACJ;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;gBAC5D,eAAe,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;gBAChE,eAAe,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;gBAC5D,eAAe,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC;gBAE7D,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,qDAAqD,CAAC,CAAC;gBAE7F,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;qBAC7C,EAAE,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBAClE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAClF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;qBAC7C,EAAE,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gBACtE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAClF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACnF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBAC/F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACnF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBAC/F,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAC/E,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9B,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACjF,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAC/E,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC9B,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;qBACjF,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;qBACzD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAC3D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;qBACzD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;gBAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAC3D,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gEAAgE,EAAE;gBACjE,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACvD,CAAC;gBAEF,IAAI,6BAA6B,GAAG;oBAChC,MAAM,EAAE,gDAAgD;oBACxD,QAAQ,EAAE,CAAC,+CAA+C,CAAC;oBAC3D,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACxD,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBACvD,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBAExD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,gDAAgD,CAAC,CAAC;qBACjG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iEAAiE,EAAE;gBAClE,IAAI,6BAA6B,GAAG;oBAChC,MAAM,EAAE,gDAAgD;oBACxD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACvD,CAAC;gBAEF,IAAI,8BAA8B,GAAG;oBACjC,MAAM,EAAE,iDAAiD;oBACzD,QAAQ,EAAE,CAAC,gDAAgD,CAAC;oBAC5D,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;iBAC9E,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBACxD,eAAe,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;gBAEzD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,iDAAiD,CAAC,CAAC;qBAClG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YAC/E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8FAA8F,EAAE;gBAC/F,IAAI,KAAK,GAAG;oBACR,MAAM,EAAE,wBAAwB;oBAChC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACxD,CAAC;gBAEF,IAAI,KAAK,GAAG;oBACR,MAAM,EAAE,wBAAwB;oBAChC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACxD,CAAC;gBAEF,IAAI,iCAAiC,GAAG;oBACpC,MAAM,EAAE,+CAA+C;oBACvD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;iBAChE,CAAC;gBAEF,IAAI,kCAAkC,GAAG;oBACrC,MAAM,EAAE,gDAAgD;oBACxD,QAAQ,EAAE,CAAC,+CAA+C,CAAC;oBAC3D,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,wBAAwB,EAAE,EAAE,CAAC;iBAChF,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChC,eAAe,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;gBAC5D,eAAe,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC;gBAE7D,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,gDAAgD,CAAC,CAAC;qBACjG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC;oBACjD,qEAAqE,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE;QACvB,EAAE,CAAC,kDAAkD,EAAE;YACnD,IAAI,gBAAgB,GAAG;gBACnB,MAAM,EAAE,mCAAmC;gBAC3C,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC3C,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC9C;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE3C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YAC3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE;YACnD,IAAI,aAAa,GAAG;gBAChB,MAAM,EAAE,gCAAgC;gBACxC,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE;iBAC7D;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAExC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;YACxE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE;YAC5D,IAAI,YAAY,GAAG;gBACf,MAAM,EAAE,+BAA+B;gBACvC,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;iBACxE;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEvC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;YACvE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE;YACxD,IAAI,sBAAsB,GAAG;gBACzB,MAAM,EAAE,yCAAyC;gBACjD,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACrC;aACJ,CAAC;YAEF,IAAI,iBAAiB,GAAG;gBACpB,MAAM,EAAE,oCAAoC;gBAC5C,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,yCAAyC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;4BACrF,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE;yBAAC;qBAChE;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;YACjD,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAE5C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;YAC5E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE;YAClD,IAAI,WAAW,GAAG;gBACd,MAAM,EAAE,8BAA8B;gBACtC,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;4BACpC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;4BAC3B,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;4BAC5B,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC/B,EAAE,KAAK,EAAE,QAAQ;qBACrB;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEtC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yFAAyF,EAAE;YAC1F,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,iCAAiC;gBACzC,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;4BACvB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;4BAC3C,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE;yBACnE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE;qBAClD;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEzC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAEzE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gFAAgF,EAAE;YACjF,IAAI,oBAAoB,GAAG;gBACvB,MAAM,EAAE,uCAAuC;gBAC/C,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC7C;wBACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;4BACvB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;yBAC7C,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,qBAAqB,EAAE;qBACtD;iBACJ;aACJ,CAAC;YAEF,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,kCAAkC;gBAC1C,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,uCAAuC,EAAE,KAAK,EAAE;4BACpE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;yBACzD;qBACJ;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAC/C,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAE1C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAE1E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE;YACvC,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,kCAAkC;gBAC1C,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACrC;aACJ,CAAC;YAEF,IAAI,UAAU,GAAG;gBACb,MAAM,EAAE,6BAA6B;gBACrC,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAC1E,EAAE,MAAM,EAAE,iBAAiB,EAAE;4BAC7B,EAAE,MAAM,EAAE,iBAAiB,EAAE;yBAChC;qBACJ;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC1C,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAErC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAErE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE;YACjD,IAAI,mBAAmB,GAAG;gBACtB,MAAM,EAAE,sCAAsC;gBAC9C,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAC/C,IAAI,EAAE,GAAG;4BACT,IAAI,EAAE,GAAG;yBACZ;qBACJ;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAE9C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;YAE9E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE;YAC7C,IAAI,oBAAoB,GAAG;gBACvB,MAAM,EAAE,uCAAuC;gBAC/C,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACrC;aACJ,CAAC;YAEF,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,kCAAkC;gBAC1C,UAAU,EAAE;oBACR;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAC/E,IAAI,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;4BACnC,IAAI,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;yBACtC;qBACJ;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAC/C,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAE1C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAE1E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC3G,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE;YAChD,IAAI,mBAAmB,GAAG;gBACtB,MAAM,EAAE,sCAAsC;gBAC9C,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE;iBACnE;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;YAE9C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,sCAAsC,EAAE,IAAI,EAAE;gBAChF,MAAM,EAAE,eAAe;aAC1B,CAAC,CAAC;YAEH,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,cAAc,EAAE;YACrB,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,kCAAkC;gBAC1C,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;iBAC9C;aACJ,CAAC;YAEF,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,iCAAiC;gBACzC,QAAQ,EAAE,kCAAkC;gBAC5C,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC3C,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;iBAChD;aACJ,CAAC;YAEF,IAAI,iBAAiB,GAAG;gBACpB,MAAM,EAAE,oCAAoC;gBAC5C,QAAQ,EAAE,iCAAiC;gBAC3C,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC3C,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC5C,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACnD;aACJ,CAAC;YAEF,UAAU,CAAC;gBACP,eAAe,CAAC,MAAM,EAAE,CAAC;gBACzB,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAC1C,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACzC,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oEAAoE,EAAE;gBACrE,IAAI,oBAAoB,GAAG;oBACvB,MAAM,EAAE,uCAAuC;oBAC/C,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,kCAAkC;4BACzD,UAAU,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;yBACjG;wBACD;4BACI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,kCAAkC;4BAC5D,UAAU,EAAE,EAAE,MAAM,EAAE,oCAAoC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;yBACvG;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;gBAE/C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;gBAC/E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAE1E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0EAA0E,EAAE;gBAC3E,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,UAAU,EAAE,CAAC;4BACT,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,kCAAkC;4BACzD,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;yBACtD,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBAEvD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,+CAA+C,CAAC,CAAC;qBAChG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,6CAA6C,CAAC,CAAC;YAChG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kEAAkE,EAAE;gBACnE,IAAI,yBAAyB,GAAG;oBAC5B,MAAM,EAAE,4CAA4C;oBACpD,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,kCAAkC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE;gCACnF,EAAE,MAAM,EAAE,iCAAiC,EAAE;gCAC7C,EAAE,MAAM,EAAE,iCAAiC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;gCACvE,EAAE,MAAM,EAAE,oCAAoC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;6BAChF;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;gBAEpD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC;gBACpF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC5E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gEAAgE,EAAE;gBACjE,IAAI,uBAAuB,GAAG;oBAC1B,MAAM,EAAE,0CAA0C;oBAClD,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCAC/E,EAAE,MAAM,EAAE,iCAAiC,EAAE;gCAC7C,EAAE,MAAM,EAAE,iCAAiC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;gCACvE,EAAE,MAAM,EAAE,oCAAoC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;6BAChF;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAElD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;gBAElF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACrF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACxF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gEAAgE,EAAE;gBACjE,IAAI,uBAAuB,GAAG;oBAC1B,MAAM,EAAE,0CAA0C;oBAClD,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCAC/E,IAAI,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;gCACnD,IAAI,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;gCAC7E,IAAI,EAAE,EAAE,MAAM,EAAE,oCAAoC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;6BACtF;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAElD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;gBAElF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC/F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAClG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gFAAgF,EAAE;gBACjF,IAAI,WAAW,GAAG;oBACd,MAAM,EAAE,8BAA8B;oBACtC,UAAU,EAAE;wBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;qBAC9C;iBACJ,CAAC;gBAEF,IAAI,6BAA6B,GAAG;oBAChC,MAAM,EAAE,gDAAgD;oBACxD,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kCAAkC;4BACtD,UAAU,EAAE,EAAE,MAAM,EAAE,8BAA8B,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;yBAC9E;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACtC,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBAExD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,gDAAgD,CAAC,CAAC;qBACjG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,GAAG,8BAA8B,CAAC,CAAC;YAChG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8DAA8D,EAAE;gBAC/D,IAAI,WAAW,GAAG;oBACd,MAAM,EAAE,kCAAkC;oBAC1C,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kCAAkC;4BACtD,UAAU,EAAE,EAAE,MAAM,EAAE,kCAAkC,EAAE;yBAC7D;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACtC,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEtD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE;gBACxD,IAAI,yBAAyB,GAAG;oBAC5B,MAAM,EAAE,uCAAuC;oBAC/C,UAAU,EAAE,CAAC;4BACT,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC1E,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;gBAEpD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,uCAAuC,CAAC,CAAC;qBACxF,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6DAA6D,EAAE;gBAC9D,IAAI,yBAAyB,GAAG;oBAC5B,MAAM,EAAE,4CAA4C;oBACpD,UAAU,EAAE,CAAC;4BACT,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;yBAChG,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;gBAEpD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;qBAC7F,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,GAAG,OAAO,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2DAA2D,EAAE;gBAC5D,IAAI,uBAAuB,GAAG;oBAC1B,MAAM,EAAE,0CAA0C;oBAClD,UAAU,EAAE,CAAC;4BACT,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;gCACpD,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;gCACnC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;6BACtC;yBACJ,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAElD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC;qBAC3F,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE;QAClB,EAAE,CAAC,4CAA4C,EAAE;YAC7C,IAAI,gBAAgB,GAAG;gBACnB,MAAM,EAAE,mCAAmC;gBAC3C,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;iBAC9C;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE3C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YAE3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAC/C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CACpC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE;YACnD,IAAI,0BAA0B,GAAG;gBAC7B,MAAM,EAAE,6CAA6C;gBACrD,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAC/B;wBACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;4BACvB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;yBAC7C;qBACJ;iBACJ;aACJ,CAAC;YAEF,IAAI,qBAAqB,GAAG;gBACxB,MAAM,EAAE,wCAAwC;gBAChD,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,6CAA6C,EAAE,KAAK,EAAE;4BAC1E,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;yBACzD;qBACJ;iBACJ;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;YACrD,eAAe,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YAEhD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;YAEhF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAC/D,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAChG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CACpD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAChG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CACzF,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1E,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAC9E,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACpF,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE;YACrC,IAAI,iBAAiB,GAAG;gBACpB,MAAM,EAAE,oCAAoC;gBAC5C,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC3C,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC9C;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAE5C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;YAE5E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE;YACjC,IAAI,aAAa,GAAG;gBAChB,MAAM,EAAE,gCAAgC;gBACxC,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC3C,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC9C;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,IAAI,aAAa,GAAG;gBAChB,MAAM,EAAE,gCAAgC;gBACxC,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,gCAAgC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;iBAC9F;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACrD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAExC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;YAExE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE;YAClC,IAAI,cAAc,GAAG;gBACjB,MAAM,EAAE,iCAAiC;gBACzC,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE;iBAC7D;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEzC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;YAEzE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE;YAC3C,IAAI,aAAa,GAAG;gBAChB,MAAM,EAAE,gCAAgC;gBACxC,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE;iBACxE;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAExC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;YACxE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE;YACvC,IAAI,uBAAuB,GAAG;gBAC1B,MAAM,EAAE,0CAA0C;gBAClD,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACrC;aACJ,CAAC;YAEF,IAAI,kBAAkB,GAAG;gBACrB,MAAM,EAAE,qCAAqC;gBAC7C,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,0CAA0C,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;4BACtF,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE;yBAAC;qBAChE;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YAClD,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAE7C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;YAC7E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE;YACpC,IAAI,qBAAqB,GAAG;gBACxB,MAAM,EAAE,wCAAwC;gBAChD,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAC/B;wBACI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;4BACvB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;yBAC7C;qBACJ;iBACJ;aACJ,CAAC;YAEF,IAAI,gBAAgB,GAAG;gBACnB,MAAM,EAAE,mCAAmC;gBAC3C,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,wCAAwC,EAAE,KAAK,EAAE;4BACrE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,eAAe,EAAE;yBACzD;qBACJ;iBACJ;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YAChD,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAE9C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YAE3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE;YAC/B,IAAI,gBAAgB,GAAG;gBACnB,MAAM,EAAE,mCAAmC;gBAC3C,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACrC;aACJ,CAAC;YAEF,IAAI,WAAW,GAAG;gBACd,MAAM,EAAE,8BAA8B;gBACtC,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAC3E,EAAE,MAAM,EAAE,iBAAiB,EAAE;4BAC7B,EAAE,MAAM,EAAE,iBAAiB,EAAE;yBAChC;qBACJ;iBACJ;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAC3C,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAEtC,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAEtE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACjG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAEjG,uDAAuD;YACvD,IAAI,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YACvE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE;YACzC,IAAI,oBAAoB,GAAG;gBACvB,MAAM,EAAE,uCAAuC;gBAC/C,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAC/C,IAAI,EAAE,GAAG;4BACT,IAAI,EAAE,GAAG;yBACZ;qBACJ;iBACJ;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAE/C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;YAE/E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE;YACrC,IAAI,qBAAqB,GAAG;gBACxB,MAAM,EAAE,wCAAwC;gBAChD,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,UAAU,EAAE;oBACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACrC;aACJ,CAAC;YAEF,IAAI,gBAAgB,GAAG;gBACnB,MAAM,EAAE,mCAAmC;gBAC3C,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAChF,IAAI,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;4BACnC,IAAI,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;yBACtC;qBACJ;iBACJ;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YAChD,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAE3C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YAE3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC3G,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE;YACpD,IAAI,gBAAgB,GAAG;gBACnB,MAAM,EAAE,mCAAmC;gBAC3C,SAAS,EAAE;oBACP;wBACI,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,OAAO;wBACf,OAAO,EAAE,KAAK;wBACd,cAAc,EAAE,QAAQ;wBACxB,KAAK,EAAE,EAAE,oCAAoC,EAAE,CAAC,EAAE,oCAAoC,EAAE,CAAC,CAAC,EAAE;qBAC/F;iBACJ;gBACD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACpD,CAAC;YACF,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YAC9C,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;YAE3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE;YACjD,IAAI,oBAAoB,GAAG;gBACvB,MAAM,EAAE,uCAAuC;gBAC/C,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;oBAC9B,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;oBAC9B,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;iBACrC;aACJ,CAAC;YAEF,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,kCAAkC;gBAC1C,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;oBAC9B,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;oBAC9B,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;oBAClC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;oBAClD,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,OAAO,EAAE;oBACxF,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC9E,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,KAAK,EAAE;iBACjF;aACJ,CAAC;YAEF,IAAI,wBAAwB,GAAG;gBAC3B,MAAM,EAAE,2CAA2C;gBACnD,QAAQ,EAAE,kCAAkC;gBAC5C,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC1C,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC3C,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE;oBAC1D,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;oBACrE;wBACI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;4BACzF,EAAE,GAAG,EAAE,GAAG,EAAE;4BACZ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;yBAAC;qBAC3D;oBACD;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAC/E,EAAE,GAAG,EAAE,GAAG,EAAE;4BACZ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;yBAAC;qBAC3D;oBACD;wBACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;4BAC/E,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;4BAClB,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,EAAE;yBAC5D;qBACJ;iBACJ;aACJ,CAAC;YAEF,eAAe,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAC/C,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC1C,eAAe,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YAEnD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAC1E,IAAI,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC;YAE5F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEnE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9D,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAC7E,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAE7E,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC;YAEpD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAErD,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACtE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,cAAc,EAAE;YACrB,IAAI,gBAAgB,GAAG;gBACnB,MAAM,EAAE,mCAAmC;gBAC3C,QAAQ,EAAE,CAAC,eAAe,CAAC;gBAC3B,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;iBAC9C;aACJ,CAAC;YAEF,IAAI,eAAe,GAAG;gBAClB,MAAM,EAAE,kCAAkC;gBAC1C,QAAQ,EAAE,mCAAmC;gBAC7C,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC3C,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;iBAChD;aACJ,CAAC;YAEF,IAAI,kBAAkB,GAAG;gBACrB,MAAM,EAAE,qCAAqC;gBAC7C,QAAQ,EAAE,kCAAkC;gBAC5C,SAAS,EAAE;oBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC3C,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC5C,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;iBACnD;aACJ,CAAC;YAEF,UAAU,CAAC;gBACP,eAAe,CAAC,MAAM,EAAE,CAAC;gBACzB,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAC3C,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBAC1C,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oEAAoE,EAAE;gBACrE,IAAI,qBAAqB,GAAG;oBACxB,MAAM,EAAE,wCAAwC;oBAChD,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,mCAAmC;4BAC1D,UAAU,EAAE,EAAE,MAAM,EAAE,kCAAkC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;yBAClG;wBACD;4BACI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,mCAAmC;4BAC7D,UAAU,EAAE,EAAE,MAAM,EAAE,qCAAqC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;yBACxG;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;gBAEhD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAE1E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0EAA0E,EAAE;gBAC3E,IAAI,4BAA4B,GAAG;oBAC/B,MAAM,EAAE,+CAA+C;oBACvD,SAAS,EAAE,CAAC;4BACR,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,mCAAmC;4BAC1D,UAAU,EAAE,EAAE,MAAM,EAAE,kCAAkC,EAAE;yBAC7D,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;gBACvD,IAAI,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;gBAEnF,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2EAA2E,EAAE;gBAC5E,IAAI,6BAA6B,GAAG;oBAChC,MAAM,EAAE,gDAAgD;oBACxD,SAAS,EAAE,CAAC;4BACR,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,mCAAmC;4BAC1D,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;yBACtD,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;gBAExD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,gDAAgD,CAAC,CAAC;qBACjG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,GAAG,8CAA8C,CAAC,CAAC;YACjG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,mEAAmE,EAAE;gBACpE,IAAI,0BAA0B,GAAG;oBAC7B,MAAM,EAAE,6CAA6C;oBACrD,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,mCAAmC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE;gCACpF,EAAE,MAAM,EAAE,kCAAkC,EAAE;gCAC9C,EAAE,MAAM,EAAE,kCAAkC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;gCACxE,EAAE,MAAM,EAAE,qCAAqC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;6BACjF;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;gBAErD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;gBACrF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC5E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iEAAiE,EAAE;gBAClE,IAAI,wBAAwB,GAAG;oBAC3B,MAAM,EAAE,2CAA2C;oBACnD,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCAChF,EAAE,MAAM,EAAE,kCAAkC,EAAE;gCAC9C,EAAE,MAAM,EAAE,kCAAkC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;gCACxE,EAAE,MAAM,EAAE,qCAAqC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;6BACjF;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;gBAEnD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC;gBAEnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACrF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACxF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iEAAiE,EAAE;gBAClE,IAAI,wBAAwB,GAAG;oBAC3B,MAAM,EAAE,2CAA2C;oBACnD,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;gCAChF,IAAI,EAAE,EAAE,MAAM,EAAE,kCAAkC,EAAE;gCACpD,IAAI,EAAE,EAAE,MAAM,EAAE,kCAAkC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;gCAC9E,IAAI,EAAE,EAAE,MAAM,EAAE,qCAAqC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;6BACvF;yBACJ;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;gBAEnD,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC;gBAEnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC/F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAClG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iFAAiF,EAAE;gBAClF,IAAI,YAAY,GAAG;oBACf,MAAM,EAAE,+BAA+B;oBACvC,SAAS,EAAE;wBACP,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;qBAC9C;iBACJ,CAAC;gBAEF,IAAI,8BAA8B,GAAG;oBACjC,MAAM,EAAE,iDAAiD;oBACzD,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,mCAAmC;4BACvD,UAAU,EAAE,EAAE,MAAM,EAAE,+BAA+B,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;yBAC/E;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvC,eAAe,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;gBAEzD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,iDAAiD,CAAC,CAAC;qBAClG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,GAAG,+BAA+B,CAAC,CAAC;YACjG,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,uDAAuD,EAAE;gBACxD,IAAI,yBAAyB,GAAG;oBAC5B,MAAM,EAAE,uCAAuC;oBAC/C,SAAS,EAAE,CAAC;4BACR,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC1E,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;gBAEpD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,uCAAuC,CAAC,CAAC;qBACxF,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6DAA6D,EAAE;gBAC9D,IAAI,yBAAyB,GAAG;oBAC5B,MAAM,EAAE,4CAA4C;oBACpD,SAAS,EAAE,CAAC;4BACR,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;yBAChG,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;gBAEpD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;qBAC7F,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,GAAG,OAAO,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,2DAA2D,EAAE;gBAC5D,IAAI,uBAAuB,GAAG;oBAC1B,MAAM,EAAE,0CAA0C;oBAClD,SAAS,EAAE,CAAC;4BACR,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;gCACpD,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;gCACnC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;6BACtC;yBACJ,CAAC;iBACL,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAElD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC;qBAC3F,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE;QACjC,EAAE,CAAC,oCAAoC,EAAE;YACrC,IAAI,kBAAkB,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;gBACvG,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAEvC,IAAI,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;YACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBAChD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACrC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;aAC7F;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBACvC,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;aAC3G;YAED,IAAI,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBAC/C,IAAI,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;aAC/G;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0EAA0E,EAAE;YAC3E,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAE1G,MAAM,QAAQ,GAAG;gBACb,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,qBAAqB;gBAC7B,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;aACzC,CAAC;YACF,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,eAAe,CAAC,UAAU,CAC7B,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE;YAChD,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACnH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE;IAC9B,IAAI,OAAO,EAAE,iBAAiB,CAAC;IAE/B,MAAM,CAAC;QACH,OAAO,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC;QACP,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,iBAAiB,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC;QACN,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE;QACvC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CACE,iHAAiH,EACjH;QACI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CACJ,CAAC;IAEF,EAAE,CACE,8GAA8G,EAC9G;QACI,IAAI,kBAAkB,GAAG,0BAA0B,CAAC;QACpD,IAAI,eAAe,GAAG;YAClB,MAAM,EAAE,kBAAkB;YAC1B,QAAQ,EAAE,eAAe;YACzB,UAAU,EAAE,CAAC;oBACT,EAAE,EAAE,QAAQ;oBACZ,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,SAAS;iBACpB,CAAC;SACL,CAAC;QAEF,IAAI,eAAe,GAAG;YAClB,MAAM,EAAE,kBAAkB;YAC1B,QAAQ,EAAE,CAAC,eAAe,CAAC;YAC3B,UAAU,EAAE,CAAC;oBACT,EAAE,EAAE,QAAQ;oBACZ,OAAO,EAAE,OAAO;oBAChB,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,CAAC;iBACZ,CAAC;SACL,CAAC;QAEF,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC5C,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC/F,CAAC,CACJ,CAAC;IAEF,EAAE,CACE,2GAA2G,EAC3G;QACI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAClC,iBAAiB,EACjB,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAC7B,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CACJ,CAAC;IAEF,EAAE,CAAC,uDAAuD,EAAE;QACxD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAClC,iBAAiB,EACjB,OAAO,CAAC,uCAAuC,CAAC,CACnD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE;QAC9D,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAClC,iBAAiB,EACjB,OAAO,CAAC,iCAAiC,CAAC,CAC7C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE;QAC5E,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAClC,iBAAiB,EACjB,QAAQ,EACR,cAAc,CAAC,CAClB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE;QACxE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QACxD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QAExD,iBAAiB,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;QAEtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QACxD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QAExD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE;QAChE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE;QAChE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE;QACxF,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QAExD,iBAAiB,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QAExD,iBAAiB,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QAEvF,iBAAiB,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;QACxD,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAErF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE;QAChE,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE;QAC9C,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CACE,sEAAsE;QACtE,wEAAwE,EACxE;QACI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAErF,iBAAiB,GAAG,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC;QAEtD,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QACrF,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CACJ,CAAC;IAEF,EAAE,CACE,sEAAsE;QACtE,oEAAoE,EACpE;QACI,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CACjD,iBAAiB,EACjB,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EACzB,YAAY,EAAE,CAAC,CAClB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CACJ,CAAC;IAEF,EAAE,CAAC,8DAA8D,EAAE;QAC/D,MAAM,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CACjD,iBAAiB,EACjB,OAAO,CAAC,uCAAuC,CAAC,EAChD,YAAY,EAAE,CACjB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CACE,iHAAiH,EACjH;QACI,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;QAC3B,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAE7C,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9E,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CACJ,CAAC;IAEF,EAAE,CACE,iHAAiH,EACjH;QACI,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;QAC3B,IAAI,MAAM,GAAG,YAAY,EAAE,CAAC;QAC5B,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9E,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9E,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC,CAAC;QACvF,iBAAiB,CAAC,uBAAuB,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,MAAM,CAAC,CAAC;QAE5F,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;QACtD,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAE7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CACJ,CAAC;IAEF,EAAE,CAAC,6DAA6D,EAAE,UAAS,IAAI;QAC3E,IAAI,MAAM,GAAG,sBAAsB,CAAC;QACpC,IAAI,uBAAuB,GAAG,UAAS,QAAQ;YAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,eAAe,CAAC,WAAW,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;QAEnE,eAAe,CAAC,QAAQ,CAAC;YACrB,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QACH,sFAAsF;QACtF,eAAe,CAAC,cAAc,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0FAA0F,EAAE;IACjG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,SAAS,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAE1C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QACxB,QAAQ,CAAC,gFAAgF,EAAE,GAAG,EAAE;YAC5F,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBAC9B,IAAI,aAAa,GAAG;oBAChB,MAAM,EAAE,mCAAmC;iBAC9C,CAAC;gBAEF,IAAI,QAAQ,GAAG;oBACX,MAAM,EAAE,4BAA4B;oBACpC,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,WAAW;4BACf,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,mCAAmC;yBAC9C;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAExC,MAAM,CAAC,GAAG,EAAE;oBACR,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;gBAC5D,IAAI,kBAAkB,GAAG;oBACrB,MAAM,EAAE,4BAA4B;iBACvC,CAAC;gBAEF,IAAI,YAAY,GAAG;oBACf,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,4BAA4B;iBACzC,CAAC;gBAEF,IAAI,QAAQ,GAAG;oBACX,MAAM,EAAE,qBAAqB;oBAC7B,UAAU,EAAE;wBACR;4BACI,EAAE,EAAE,WAAW;4BACf,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,sBAAsB;yBACjC;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;gBAC7C,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEnC,MAAM,CAAC,GAAG,EAAE;oBACR,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBACvD,IAAI,QAAQ,GAAG;oBACX,MAAM,EAAE,sBAAsB;iBACjC,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEnC,MAAM,CAAC,GAAG,EAAE;oBACR,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACvB,QAAQ,CAAC,gFAAgF,EAAE,GAAG,EAAE;YAC5F,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;gBAC9B,IAAI,aAAa,GAAG;oBAChB,MAAM,EAAE,mCAAmC;iBAC9C,CAAC;gBAEF,IAAI,QAAQ,GAAG;oBACX,MAAM,EAAE,4BAA4B;oBACpC,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,WAAW;4BACf,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,mCAAmC;4BAC3C,KAAK,EAAE,OAAO;yBACjB;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAExC,MAAM,CAAC,GAAG,EAAE;oBACR,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;gBAC5D,IAAI,kBAAkB,GAAG;oBACrB,MAAM,EAAE,4BAA4B;iBACvC,CAAC;gBAEF,IAAI,YAAY,GAAG;oBACf,MAAM,EAAE,sBAAsB;oBAC9B,QAAQ,EAAE,4BAA4B;iBACzC,CAAC;gBAEF,IAAI,QAAQ,GAAG;oBACX,MAAM,EAAE,qBAAqB;oBAC7B,SAAS,EAAE;wBACP;4BACI,EAAE,EAAE,WAAW;4BACf,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,sBAAsB;4BAC9B,KAAK,EAAE,OAAO;yBACjB;qBACJ;iBACJ,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;gBAC7C,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBACvC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAEnC,MAAM,CAAC,GAAG,EAAE;oBACR,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,GAAG;gBACP,YAAY,EAAE;oBACV,aAAa,EAAE,yDAAyD;oBACxE,KAAK,EAAE,6EAA6E;iBACvF;gBACD,QAAQ,EAAE,0BAA0B;gBACpC,WAAW,EAAE;oBACT;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,QAAQ;qBACrB;iBACJ;aACJ,CAAC;YACF,IAAI,QAAQ,GAAG;gBACX,YAAY,EAAE,EAAE,aAAa,EAAE,wEAAwE,EAAE;gBACzG,QAAQ,EAAE,8BAA8B;gBACxC,WAAW,EAAE;oBACT;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,QAAQ;qBACrB;oBACD;wBACI,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,0BAA0B;wBACpC,SAAS,EAAE,OAAO;wBAClB,YAAY,EAAE,EAAE;wBAChB,YAAY,EAAE,EAAE,aAAa,EAAE,sEAAsE,EAAE;qBAC1G;iBACJ;aACJ,CAAC;YACF,IAAI,IAAI,GAAG;gBACP,YAAY,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE;gBACxC,QAAQ,EAAE,mCAAmC;gBAC7C,UAAU,EAAE,CAAC,8BAA8B,CAAC;gBAC5C,WAAW,EAAE;oBACT,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;oBACjC;wBACI,IAAI,EAAE,OAAO;wBACb,YAAY,EAAE;4BACV,EAAE,QAAQ,EAAE,4CAA4C,EAAE;yBAC7D;qBACJ;iBACJ;aACJ,CAAC;YACF,IAAI,UAAU,GAAG;gBACb,YAAY,EAAE,EAAE,aAAa,EAAE,qBAAqB,EAAE;gBACtD,QAAQ,EAAE,4CAA4C;gBACtD,UAAU,EAAE,CAAC,0BAA0B,CAAC;gBACxC,WAAW,EAAE;oBACT,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE;iBAClD;aACJ,CAAC;YACF,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;gBAC/E,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/B,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC/B,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACrC,IAAI,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAE/D,IAAI,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEnD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;YACtG,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE;IACzB,IAAI,iBAAiB,CAAC;IACtB,IAAI,iBAAiB,GAAG,KAAK,WAAU,KAAK,EAAE,QAAQ;QAClD,OAAO,IAAI,OAAO,CAAC,UAAS,OAAO,EAAE,MAAM;YACvC,UAAU,CAAC;gBACP,IAAI;oBACA,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;iBAC1D;gBAAC,OAAO,KAAK,EAAE;oBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;YACL,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAI,cAAc,GAAG,KAAK,WAAU,MAAM;QACtC,OAAO,IAAI,OAAO,CAAC,UAAS,OAAO,EAAE,MAAM;YACvC,UAAU,CAAC;gBACP,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1C,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,CAAC;QACH,iBAAiB,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC,iBAAiB,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAC9B,IAAI,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC1C,iBAAiB,EAAE,iBAAiB;YACpC,cAAc,EAAE,cAAc;SACjC,CAAC,CAAC;QAEH,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5D,QAAQ,CAAC,MAAM,GAAG,kCAAkC,CAAC;QACrD,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAS,MAAM;YACnF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,UAAS,IAAI;QAC7D,IAAI,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC1C,iBAAiB,EAAE,iBAAiB;YACpC,cAAc,EAAE,cAAc;SACjC,CAAC,CAAC;QAEH,4DAA4D;QAC5D,IAAI,iBAAiB,GAAG;YACpB,QAAQ,EAAE,8BAA8B;SAC3C,CAAC;QAEF,IAAI,YAAY,GAAG;YACf,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,CAAC,8BAA8B,CAAC;SAC/C,CAAC;QAEF,IAAI,WAAW,GAAG;YACd,QAAQ,EAAE,uBAAuB;YACjC,UAAU,EAAE;gBACR;oBACI,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,yBAAyB;oBACjC,OAAO,EAAE,KAAK;iBACjB;aACJ;SACJ,CAAC;QAEF,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC5C,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEvC,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAS,MAAM;YAC7D,IAAI,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,KAAK,CAAC,UAAS,KAAK;YACnB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YACvB,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACnC,UAAU,CAAC,GAAG,EAAE;QACZ,eAAe,CAAC,MAAM,EAAE,CAAC;QACzB,eAAe,CAAC,QAAQ,CAAC;YACrB;gBACI,MAAM,EAAE,kCAAkC;gBAC1C,QAAQ,EAAE,eAAe;aAC5B;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC3E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEzE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAEpE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAE5E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAEjF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAE7E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAEjF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;QAEjF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;QAElF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAE3E,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QAElF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAEjF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yGAAyG,EACxG,GAAG,EAAE;QACD,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC;QAEhG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEP,EAAE,CAAC,yEAAyE;QACxE,sDAAsD,EACtD,GAAG,EAAE;QACD,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAC1E,kCAAkC,CAAC,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEP,EAAE,CAAC,yGAAyG,EACxG,GAAG,EAAE;QACD,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC;QAEhG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEP,EAAE,CAAC,0GAA0G,EACzG,GAAG,EAAE;QACD,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,eAAe,CAAC,CAAC;QAEjG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEP,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QAEvF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CACvC,kCAAkC,EAClC,kCAAkC,CACrC,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8FAA8F,EAAE,GAAG,EAAE;QACpG,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CACvC,kCAAkC,EAClC,kCAAkC,EAClC,EAAE,WAAW,EAAE,KAAK,EAAE,CACzB,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,UAAU,CAAC,GAAG,EAAE;YACZ,0CAA0C;YAC1C,eAAe,CAAC,QAAQ,CAAC;gBACrB,MAAM,EAAE,kCAAkC;gBAC1C,QAAQ,EAAE,eAAe;aAC5B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC5B,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,eAAe,CAAC,CAAC;YAClF,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,eAAe,CAAC,CAAC;YAElF,MAAM,eAAe,GAAG;gBACpB,kCAAkC,EAAE;oBAChC,YAAY,EAAE,IAAI;oBAClB,gCAAgC,EAAE,IAAI;oBACtC,aAAa,EAAE,IAAI;iBACtB;gBACD,kCAAkC,EAAE;oBAChC,YAAY,EAAE,IAAI;oBAClB,gCAAgC,EAAE,IAAI;oBACtC,aAAa,EAAE,IAAI;iBACtB;aACJ,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,eAAe,CAAC,CAAC;YAElF,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;YACtG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAEpG,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,kCAAkC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;YACtG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAEpG,MAAM,eAAe,GAAG;gBACpB,kCAAkC,EAAE;oBAChC,YAAY,EAAE,IAAI;oBAClB,gCAAgC,EAAE,IAAI;oBACtC,YAAY,EAAE,IAAI;iBACrB;gBACD,kCAAkC,EAAE;oBAChC,YAAY,EAAE,IAAI;oBAClB,gCAAgC,EAAE,IAAI;oBACtC,YAAY,EAAE,IAAI;iBACrB;aACJ,CAAC;YAEF,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YACrG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,kCAAkC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAErG,eAAe,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC9C,IAAI,OAAO,CAAC;IACZ,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,kCAAkC,CAAC;IAErE,MAAM,CAAC,GAAG,EAAE;QACR,OAAO,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACZ,eAAe,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAElG,eAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9D,eAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE9D,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC1C,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1D,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChE,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;aAC1D,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChE,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC;aAC1D,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC7F,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAElG,eAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/D,eAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC3C,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAE3C,eAAe,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5C,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC5E,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAElG,eAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/D,eAAe,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC;aAC5E,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAExC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC;aAC5E,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACtD,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAEhG,eAAe,CAAC,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC7D,eAAe,CAAC,MAAM,EAAE,CAAC;QAEzB,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* globals sinon */\n\nconst { MSG } = require('@fluid-experimental/property-common').constants;\nconst { generateGUID } = require('@fluid-experimental/property-common').GuidUtils;\nconst { PropertyFactory } = require('..');\nconst { StringProperty } = require('../properties/stringProperty');\n\ndescribe('PropertyFactory', function() {\n beforeEach(() => {\n PropertyFactory._clear();\n });\n\n let SimplePoint = {\n typeid: 'SimpleTest:PointID-1.0.0',\n properties: [\n {\n id: 'position',\n properties: [\n {\n id: 'x',\n typeid: 'Float32',\n },\n {\n id: 'y',\n typeid: 'Float32',\n },\n {\n id: 'z',\n typeid: 'Float32',\n },\n ],\n },\n {\n id: 'normal',\n typeid: 'Float32',\n context: 'array',\n size: 3,\n },\n ],\n };\n\n it('is not a function.', function(done) {\n expect(PropertyFactory).to.not.be.a('function');\n expect(PropertyFactory).to.be.an('object');\n done();\n });\n\n it('should validate a simple file', function() {\n var testFile1 = require('./validation/goodPointId');\n var result = PropertyFactory.validate(testFile1);\n expect(result.isValid).to.equal(true);\n });\n\n it('should fail an invalid file', function() {\n var testFile1 = require('./validation/badPrimitiveTypeid');\n var result = PropertyFactory.validate(testFile1);\n expect(result.isValid).to.equal(false);\n expect(result.errors.length).to.be.greaterThan(0);\n expect(result.unresolvedTypes.length).to.equal(1);\n });\n\n it('should create and initialize a property set', function() {\n PropertyFactory.register(SimplePoint);\n var goodPointTest = PropertyFactory.create('SimpleTest:PointID-1.0.0');\n expect(goodPointTest.resolvePath('normal')._dataArrayRef._buffer.length).to.equal(3);\n\n var goodPoint = PropertyFactory.create('SimpleTest:PointID-1.0.0', null, {\n position: {\n x: 0.0,\n y: 1.0,\n z: 2.0,\n },\n normal: [1.23, 2.3399999141693115, 3.45],\n });\n\n expect(goodPoint.resolvePath('normal').get(1)).to.equal(2.3399999141693115);\n });\n\n it('should throw on unknown Template', function() {\n var insertUnknownPropertyChangeSet = {\n insert: {\n 'UnknownProperty': {\n 'test': {\n String: {\n 'unknownStringProperty': 'Hi There!',\n },\n },\n },\n },\n };\n var root = PropertyFactory.create('NodeProperty');\n expect(\n function() {\n root.deserialize(insertUnknownPropertyChangeSet);\n }).to.throw();\n });\n\n it('should throw when trying to create with undefined as typeid', function() {\n var creationFunction = function() {\n PropertyFactory.create(undefined);\n };\n expect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + 'undefined');\n });\n\n it('should throw when trying to create with a number as typeid', function() {\n var creationFunction = function() {\n PropertyFactory.create(1);\n };\n expect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + '1');\n });\n\n it('should support the creation of a polymorphic collection', function() {\n var testSet = {\n typeid: 'autodesk.examples:test.set-1.0.0',\n inherits: 'NamedProperty',\n };\n PropertyFactory.register(testSet);\n\n var testTemplate = {\n typeid: 'autodesk.examples:polymorphic.collection.test-1.0.0',\n properties: [\n { id: 'testMap', context: 'map' },\n { id: 'testSet', typeid: 'autodesk.examples:test.set-1.0.0', context: 'set' },\n // TODO: add array as soon as polymorphic arrays are supported: {id: 'testArray', context:'array' }\n ],\n };\n\n PropertyFactory._reregister(testTemplate);\n var instance = PropertyFactory.create('autodesk.examples:polymorphic.collection.test-1.0.0');\n\n expect(instance._properties.testMap).to.exist;\n expect(instance._properties.testMap.getContext()).to.equal('map');\n expect(instance._properties.testMap.getTypeid()).to.equal('BaseProperty');\n\n expect(instance._properties.testSet).to.exist;\n expect(instance._properties.testSet.getContext()).to.equal('set');\n expect(PropertyFactory.inheritsFrom(instance._properties.testSet.getTypeid(), 'NamedProperty')).to.equal(true);\n });\n\n it('should return correct template based on typeid', function() {\n PropertyFactory.register(SimplePoint);\n var returnedTemplate = JSON.parse(JSON.stringify(PropertyFactory.getTemplate(SimplePoint.typeid)));\n if (!SimplePoint.annotation) {\n delete returnedTemplate.annotation;\n }\n if (!SimplePoint.length) {\n delete returnedTemplate.length;\n }\n delete returnedTemplate._serializedParams;\n\n expect(returnedTemplate).to.deep.equal(SimplePoint);\n expect(PropertyFactory.getTemplate('Adsk.Library:Colors.ColorPalette-1.0.0')).to.be.undefined;\n });\n\n describe('Inheritance', function() {\n beforeEach(function() {\n PropertyFactory._clear();\n\n var Shape = {\n typeid: 'SimpleTest:Shape-1.0.0',\n properties: [{\n id: 'props', properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' },\n {\n id: 'size', properties: [\n { id: 'width', typeid: 'Float32' },\n { id: 'height', typeid: 'Float32' },\n {\n id: 'border', properties: [\n { id: 'weight', typeid: 'Int32' }],\n }],\n }],\n }],\n };\n PropertyFactory.register(Shape);\n\n var Color = {\n typeid: 'SimpleTest:Color-1.0.0',\n properties: [\n { id: 'stroke', typeid: 'String' },\n {\n id: 'fill', properties: [\n { id: 'rgb', typeid: 'String' }],\n }],\n };\n PropertyFactory.register(Color);\n\n var EntryWithOverriddenDefaults = {\n typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'string', typeid: 'String', value: 'entry_string' },\n ],\n };\n PropertyFactory.register(EntryWithOverriddenDefaults);\n\n var EntryWithOverriddenPolyDefaults = {\n typeid: 'SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0',\n inherits: ['SimpleTest:EntryWithOverriddenDefaults-1.0.0'],\n properties: [\n { id: 'string', typeid: 'String', value: 'entry_string' },\n ],\n };\n PropertyFactory.register(EntryWithOverriddenPolyDefaults);\n\n var DynamicWithOverriddenDefaults = {\n typeid: 'SimpleTest:DynamicWithOverriddenDefaults-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32' },\n {\n id: 'dynamic', properties: [\n { id: 'dynamic_string', typeid: 'String' },\n ],\n },\n ],\n };\n PropertyFactory.register(DynamicWithOverriddenDefaults);\n });\n\n it('should allow the creation of an inherited type', function() {\n var Square = {\n typeid: 'SimpleTest:Square-1.0.0',\n inherits: ['SimpleTest:Shape-1.0.0'],\n properties: [\n { id: 'area', typeid: 'Float32' },\n ],\n };\n\n PropertyFactory.register(Square);\n\n var square = PropertyFactory.create('SimpleTest:Square-1.0.0');\n\n expect(square._getChildrenCount()).to.equal(2);\n expect(square.get('props')).to.exist;\n expect(square.get('area')).to.exist;\n });\n\n it('should inherit constants', function() {\n var ShapeWithConstant = {\n typeid: 'SimpleTest:ShapeWithConstant-1.0.0',\n inherits: ['SimpleTest:Shape-1.0.0'],\n constants: [\n { id: 'originX', typeid: 'Int8', value: 10 },\n ],\n };\n\n var SquareWithConstant = {\n typeid: 'SimpleTest:SquareWithConstant-1.0.0',\n inherits: ['SimpleTest:ShapeWithConstant-1.0.0'],\n constants: [\n { id: 'originY', typeid: 'Int8', value: 20 },\n ],\n };\n\n PropertyFactory.register(ShapeWithConstant);\n PropertyFactory.register(SquareWithConstant);\n\n var square = PropertyFactory.create('SimpleTest:ShapeWithConstant-1.0.0');\n var square = PropertyFactory.create('SimpleTest:SquareWithConstant-1.0.0');\n\n expect(square._getChildrenCount()).to.equal(3);\n expect(square.get('props')).to.exist;\n expect(square.get('originX')).to.exist;\n expect(square.get('originY')).to.exist;\n\n expect(square.get('originX').getValue()).to.equal(10);\n expect(square.get('originY').getValue()).to.equal(20);\n });\n\n it('Will complete constants definition from inherited template', function() {\n var template1 = {\n typeid: 'consttest:template-1.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'String',\n value: 'hello',\n annotation: { description: 'The first constant.' },\n },\n {\n id: 'const2',\n typeid: 'String',\n value: ['hello'],\n context: 'array',\n annotation: { description: 'The second constant.' },\n },\n ],\n };\n\n var testedTemplate = {\n typeid: 'consttest:template-2.0.0',\n inherits: 'consttest:template-1.0.0',\n constants: [\n {\n id: 'const1',\n value: 'hello2',\n },\n {\n id: 'const2',\n value: ['hello2'],\n },\n ],\n };\n\n PropertyFactory.register(testedTemplate);\n PropertyFactory.register(template1);\n\n var tested = PropertyFactory.create('consttest:template-2.0.0');\n expect(tested._getChildrenCount()).to.equal(2);\n expect(tested.get('const1')).to.exist;\n expect(tested.get('const2')).to.exist;\n expect(tested.get('const1').getValue()).to.equal('hello2');\n expect(tested.get('const2').getValues()).to.deep.equal(['hello2']);\n });\n\n it('Will throw because typeid is still missing at creation', function() {\n var template1 = {\n typeid: 'consttest2:template-1.0.0',\n constants: [\n {\n id: 'const2',\n typeid: 'String',\n value: 'hello',\n annotation: { description: 'The first constant.' },\n },\n ],\n };\n\n var testedTemplate = {\n typeid: 'consttest2:template-2.0.0',\n inherits: 'consttest2:template-1.0.0',\n constants: [\n {\n id: 'const1',\n value: 'hello2',\n },\n ],\n };\n\n PropertyFactory.register(template1);\n PropertyFactory.register(testedTemplate);\n\n try {\n PropertyFactory.create('consttest2:template-2.0.0');\n } catch (error) {\n expect(error.message).to.include(\n 'PF-043: Field \"typeid\" is required.' +\n ' It is the \"typeid\" of the resulting PropertySets Template.const1.typeid',\n );\n }\n });\n\n it('Will throw because of a type mismatch when creating template', function() {\n var template1 = {\n typeid: 'consttest3:template-1.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'String',\n value: 'hello',\n annotation: { description: 'The first constant.' },\n },\n ],\n };\n\n var template2 = {\n typeid: 'consttest3:template-2.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'Uint8',\n value: 3,\n },\n ],\n };\n\n var testedTemplate = {\n typeid: 'consttest3:template-3.0.0',\n inherits: ['consttest3:template-2.0.0', 'consttest3:template-1.0.0'],\n constants: [\n {\n id: 'const1',\n value: 'hello2',\n },\n ],\n };\n\n PropertyFactory.register(template2);\n PropertyFactory.register(template1);\n PropertyFactory.register(testedTemplate);\n\n try {\n PropertyFactory.create('consttest3:template-3.0.0');\n } catch (error) {\n expect(error.message).to.include(\n 'PF-001: Id already exists: const1',\n );\n }\n });\n\n it('Will fail if inheriting constants with the same id from multiple templates', function() {\n var template1 = {\n typeid: 'consttest4:template-1.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'String',\n value: 'hello',\n },\n {\n id: 'const2',\n typeid: 'Uint8',\n value: 5,\n },\n ],\n };\n\n var template2 = {\n typeid: 'consttest4:template-2.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'String',\n value: 'bye',\n annotation: { description: 'The first constant.' },\n },\n ],\n };\n\n var testedTemplate = {\n typeid: 'consttest4:template-3.0.0',\n inherits: ['consttest4:template-1.0.0', 'consttest4:template-2.0.0'],\n constants: [\n {\n id: 'const1',\n value: 'hello2',\n },\n {\n id: 'const2',\n value: 14,\n },\n ],\n };\n\n PropertyFactory.register(testedTemplate);\n PropertyFactory.register(template1);\n PropertyFactory.register(template2);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'consttest4:template-3.0.0'))\n .to.throw(MSG.OVERWRITING_ID + 'const1');\n });\n\n it('Will allow to register the same inherited template again', function() {\n var template1 = {\n typeid: 'consttest5:template-1.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'String',\n value: 'hello',\n annotation: { description: 'The first constant.' },\n },\n ],\n };\n\n var testedTemplate = {\n typeid: 'consttest5:template-2.0.0',\n inherits: 'consttest5:template-1.0.0',\n constants: [\n {\n id: 'const1',\n value: 'hello2',\n },\n ],\n };\n\n PropertyFactory.register(template1);\n PropertyFactory.register(testedTemplate);\n PropertyFactory.register(testedTemplate);\n });\n\n it('Will not allow to register a different template under the same id', function() {\n var template1 = {\n typeid: 'consttest6:template-1.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'String',\n value: 'hello',\n annotation: { description: 'The first constant.' },\n },\n ],\n };\n\n var testedTemplate = {\n typeid: 'consttest6:template-2.0.0',\n inherits: 'consttest6:template-1.0.0',\n constants: [\n {\n id: 'const1',\n value: 'hello2',\n },\n ],\n };\n\n var testedTemplate2 = {\n typeid: 'consttest6:template-2.0.0',\n inherits: 'consttest6:template-1.0.0',\n constants: [\n {\n id: 'const1',\n value: 'hello3',\n },\n ],\n };\n\n try {\n PropertyFactory.register(template1);\n PropertyFactory.register(testedTemplate);\n PropertyFactory.register(testedTemplate2);\n throw new Error('Should have failed');\n } catch (error) {\n expect(error.message).to.include(\n 'PF-004: Template structures do not match for typeid: consttest6:template-2.0.0',\n );\n }\n });\n\n it('Wont register if constant id is missing', function() {\n var template1 = {\n typeid: 'consttest7:template-1.0.0',\n constants: [\n {\n id: 'const1',\n typeid: 'String',\n value: 'hello',\n annotation: { description: 'The first constant.' },\n },\n ],\n };\n\n var testedTemplate = {\n typeid: 'consttest7:template-2.0.0',\n inherits: 'consttest7:template-1.0.0',\n constants: [\n {\n value: 'hello2',\n },\n ],\n };\n\n try {\n PropertyFactory.register(template1);\n PropertyFactory.register(testedTemplate);\n throw new Error('Should have failed');\n } catch (error) {\n expect(error.message).to.include(\n 'PF-050: Failed to register typeid = consttest7:template-2.0.0',\n );\n }\n });\n\n it('should allow inheriting from schemas with no properties defined', function() {\n var ShapeAbstract1 = {\n typeid: 'SimpleTest:ShapeAbstract1-1.0.0',\n };\n\n var ShapeAbstract2 = {\n typeid: 'SimpleTest:ShapeAbstract2-1.0.0',\n properties: [\n { id: 'area', properties: [] },\n { id: 'color' },\n ],\n };\n\n var SquareAbstract = {\n typeid: 'SimpleTest:SquareAbstract-1.0.0',\n inherits: ['SimpleTest:ShapeAbstract1-1.0.0', 'SimpleTest:ShapeAbstract2-1.0.0'],\n properties: [\n { id: 'originX', properties: [] },\n { id: 'originY' },\n {\n id: 'color', properties: [\n { id: 'rgb', typeid: 'Int64' },\n ],\n },\n ],\n };\n\n PropertyFactory.register(ShapeAbstract1);\n PropertyFactory.register(ShapeAbstract2);\n PropertyFactory.register(SquareAbstract);\n\n var square = PropertyFactory.create('SimpleTest:SquareAbstract-1.0.0');\n\n expect(square._getChildrenCount()).to.equal(4);\n expect(square.get('area')).to.exist;\n expect(square.get('color')).to.exist;\n expect(square.get('originX')).to.exist;\n expect(square.get('originY')).to.exist;\n expect(square.get(['color', 'rgb'])).to.exist;\n });\n\n it('should allow multiple inheritance', function() {\n var SquareWithColor = {\n typeid: 'SimpleTest:SquareWithColor-1.0.0',\n inherits: ['SimpleTest:Shape-1.0.0', 'SimpleTest:Color-1.0.0'],\n properties: [\n { id: 'area', typeid: 'Float32' },\n ],\n };\n\n PropertyFactory.register(SquareWithColor);\n\n var square = PropertyFactory.create('SimpleTest:SquareWithColor-1.0.0');\n\n expect(square._getChildrenCount()).to.equal(4);\n expect(square.get('area')).to.exist;\n expect(square.get('props')).to.exist;\n expect(square.get('stroke')).to.exist;\n expect(square.get('fill')).to.exist;\n });\n\n it('should fail when inheriting from multiple types that have the same property name', function() {\n var Point = {\n typeid: 'SimpleTest:Point-1.0.0',\n properties: [{\n id: 'props', properties: [\n { id: 'x', typeid: 'Float32' },\n { id: 'y', typeid: 'Float32' }],\n }],\n };\n\n var ShapeWithInheritanceError = {\n typeid: 'SimpleTest:ShapeWithInheritanceError-1.0.0',\n inherits: ['SimpleTest:Shape-1.0.0', 'SimpleTest:Point-1.0.0'],\n properties: [\n { id: 'weight', typeid: 'Float32' },\n ],\n };\n\n PropertyFactory.register(Point);\n PropertyFactory.register(ShapeWithInheritanceError);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:ShapeWithInheritanceError-1.0.0'))\n .to.throw(MSG.OVERWRITING_ID + 'props');\n });\n\n it('should fail when overriding an inherited typed property', function() {\n var ShapeWithOverridesError = {\n typeid: 'SimpleTest:ShapeWithOverridesError-1.0.0',\n inherits: ['SimpleTest:Shape-1.0.0'],\n properties: [{ id: 'props', typeid: 'Float32' }],\n };\n\n PropertyFactory.register(ShapeWithOverridesError);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:ShapeWithOverridesError-1.0.0'))\n .to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n });\n\n it('should allow extending inherited nested untyped properties', function() {\n var SquareWithOverrides = {\n typeid: 'SimpleTest:SquareWithOverrides-1.0.0',\n inherits: ['SimpleTest:Shape-1.0.0', 'SimpleTest:Color-1.0.0'],\n properties: [\n { id: 'normal', typeid: 'Float32', context: 'array', size: 3 },\n {\n id: 'props', properties: [\n { id: 'z', typeid: 'Float32' },\n {\n id: 'size', properties: [\n { id: 'unit', typeid: 'Int32' },\n {\n id: 'border', properties: [\n { id: 'color', typeid: 'String' }],\n }],\n }],\n },\n {\n id: 'fill', properties: [\n { id: 'unit', typeid: 'Int32' }],\n }],\n };\n\n PropertyFactory.register(SquareWithOverrides);\n\n var square = PropertyFactory.create('SimpleTest:SquareWithOverrides-1.0.0');\n\n expect(square._getChildrenCount()).to.equal(4);\n expect(square.get('normal')).to.exist;\n expect(square.get('props')).to.exist;\n expect(square.get('stroke')).to.exist;\n expect(square.get('fill')).to.exist;\n\n expect(square.get('props')._getChildrenCount()).to.equal(4);\n expect(square.get(['props', 'x'])).to.exist;\n expect(square.get(['props', 'y'])).to.exist;\n expect(square.get(['props', 'z'])).to.exist;\n expect(square.get(['props', 'size'])).to.exist;\n\n expect(square.get(['props', 'size'])._getChildrenCount()).to.equal(4);\n expect(square.get(['props', 'size', 'unit'])).to.exist;\n expect(square.get(['props', 'size', 'border'])).to.exist;\n expect(square.get(['props', 'size', 'width'])).to.exist;\n expect(square.get(['props', 'size', 'height'])).to.exist;\n\n expect(square.get(['props', 'size', 'border'])._getChildrenCount()).to.equal(2);\n expect(square.get(['props', 'size', 'border', 'color'])).to.exist;\n expect(square.get(['props', 'size', 'border', 'weight'])).to.exist;\n\n expect(square.get('fill')._getChildrenCount()).to.equal(2);\n expect(square.get(['fill', 'rgb'])).to.exist;\n expect(square.get(['fill', 'unit'])).to.exist;\n });\n\n it('should support more than one level of inheritance', function() {\n var ShapeWithArea = {\n typeid: 'SimpleTest:ShapeWithArea-1.0.0',\n inherits: ['SimpleTest:Shape-1.0.0'],\n properties: [\n {\n id: 'props', properties: [\n {\n id: 'area', properties: [\n { id: 'length', typeid: 'Float32' }],\n }],\n }],\n };\n\n var SquareWithArea = {\n typeid: 'SimpleTest:SquareWithArea-1.0.0',\n inherits: ['SimpleTest:ShapeWithArea-1.0.0'],\n properties: [\n { id: 'normal', typeid: 'String' },\n {\n id: 'props', properties: [\n { id: 'color', typeid: 'String' },\n {\n id: 'area', properties: [\n { id: 'unit', typeid: 'String' }],\n }],\n }],\n };\n\n PropertyFactory.register(ShapeWithArea);\n PropertyFactory.register(SquareWithArea);\n\n var square = PropertyFactory.create('SimpleTest:SquareWithArea-1.0.0');\n\n expect(square._getChildrenCount()).to.equal(2);\n expect(square.get('normal')).to.exist;\n expect(square.get('props')).to.exist;\n\n expect(square.get('props')._getChildrenCount()).to.equal(5);\n expect(square.get(['props', 'x'])).to.exist;\n expect(square.get(['props', 'y'])).to.exist;\n expect(square.get(['props', 'size'])).to.exist;\n expect(square.get(['props', 'color'])).to.exist;\n expect(square.get(['props', 'area'])).to.exist;\n\n expect(square.get(['props', 'area'])._getChildrenCount()).to.equal(2);\n expect(square.get(['props', 'area', 'unit'])).to.exist;\n expect(square.get(['props', 'area', 'length'])).to.exist;\n });\n\n it('should work with properties named \"length\"', function() {\n var DefaultInitialValue = {\n 'typeid': 'autodesk.product:components.physicalProperties-0.0.0',\n 'properties': [\n {\n 'id': 'mass',\n 'properties': [\n {\n 'id': 'value',\n 'typeid': 'Float64',\n },\n {\n 'id': 'unit',\n 'typeid': 'String',\n },\n ],\n },\n {\n 'id': 'boundingBox',\n 'properties': [\n {\n 'id': 'length',\n 'typeid': 'Float64',\n },\n {\n 'id': 'width',\n 'typeid': 'Float64',\n },\n {\n 'id': 'height',\n 'typeid': 'Float64',\n },\n {\n 'id': 'unit',\n 'typeid': 'String',\n },\n ],\n },\n {\n 'id': 'material',\n 'typeid': 'String',\n },\n ],\n 'annotation': {\n 'description': 'Specialized component storing physical properties computed from a model.',\n },\n };\n\n PropertyFactory.register(DefaultInitialValue);\n\n var prop = PropertyFactory.create('autodesk.product:components.physicalProperties-0.0.0', null, {\n mass: {\n value: 1.2,\n unit: 'units',\n },\n boundingBox: {\n length: 1.2,\n width: 1.4,\n height: 34.2,\n unit: 'units',\n },\n material: 'ABS Plastic',\n });\n\n expect(prop.get('boundingBox').get('length').value).to.equal(1.2);\n });\n\n describe('Overriding default values', function() {\n it('should allow overriding default values', function() {\n var MapNestedWithOverriddenDefaults = {\n typeid: 'SimpleTest:MapNestedWithOverriddenDefaults-1.0.0',\n inherits: ['NamedProperty'],\n properties: [{\n id: 'map_nested', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'map',\n }],\n };\n\n var SetNestedWithOverriddenDefaults = {\n typeid: 'SimpleTest:SetNestedWithOverriddenDefaults-1.0.0',\n inherits: ['NamedProperty'],\n properties: [{\n id: 'set_nested', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'set',\n }],\n };\n\n var ShapeWithOverriddenDefaults = {\n typeid: 'SimpleTest:ShapeWithOverriddenDefaults-1.0.0',\n properties: [\n { id: 'num', typeid: 'Int8', value: 1 },\n { id: 'array', typeid: 'String', value: ['array_string_1', 'array_string_2'], context: 'array' },\n {\n id: 'array_poly', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'array', value: [\n { string: 'entry_string_poly' }],\n },\n {\n id: 'enum', typeid: 'Enum', properties: [{ id: 'solid', value: 1 }, { id: 'dashed', value: 2 }],\n value: 'solid',\n },\n {\n id: 'untyped', properties: [\n { id: 'num', typeid: 'Uint32' },\n { id: 'string', typeid: 'String' },\n ], value: { string: 'untyped_string', num: 1 },\n },\n {\n id: 'template', typeid: 'SimpleTest:DynamicWithOverriddenDefaults-1.0.0', value: {\n num: 1, dynamic: { dynamic_string: 'dynamic_string' },\n },\n },\n {\n id: 'map_primitive', typeid: 'Int32', context: 'map', value: {\n key1: 1,\n key3: 3,\n },\n },\n {\n id: 'map', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'map', value: {\n key1: { string: 'map_string_1' },\n key3: { string: 'map_string_3' },\n },\n },\n {\n id: 'map_poly', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'map', value: {\n key1: { string: 'map_poly_string_1' },\n key3: { string: 'map_poly_string_3' },\n },\n },\n {\n id: 'map_nest', typeid: 'SimpleTest:MapNestedWithOverriddenDefaults-1.0.0', context: 'map', value: {\n key1: {\n map_nested: {\n key1_1: { string: 'map_nested_1_string_1' },\n key1_3: { string: 'map_nested_1_string_3' },\n },\n },\n key3: {\n map_nested: {\n key3_1: { string: 'map_nested_3_string_1' },\n },\n },\n },\n },\n {\n id: 'set', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'set', value: [\n { string: 'set_string_1' },\n { string: 'set_string_2' },\n ],\n },\n {\n id: 'set_poly', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'set', value: [\n { string: 'set_poly_string_1' },\n { string: 'set_poly_string_1' },\n ],\n },\n {\n id: 'set_nest', typeid: 'SimpleTest:SetNestedWithOverriddenDefaults-1.0.0', context: 'set', value: [{\n set_nested: [\n { string: 'set_nested_1_string_1' },\n { string: 'set_nested_1_string_2' },\n ],\n }, {\n set_nested: [\n { string: 'set_nested_3_string_1' },\n { string: 'set_nested_3_string_2' },\n ],\n }],\n },\n ],\n };\n\n var SquareWithOverriddenDefaults = {\n typeid: 'SimpleTest:SquareWithOverriddenDefaults-1.0.0',\n inherits: ['SimpleTest:ShapeWithOverriddenDefaults-1.0.0'],\n properties: [\n { id: 'num', typeid: 'Int8', value: 2 },\n {\n id: 'array', typeid: 'String', value: ['array_string_1_inherited', 'array_string_2_inherited'],\n context: 'array',\n },\n {\n id: 'array_poly', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'array', typedValue:\n [{\n typeid: 'SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0',\n value: { string: 'entry_string_poly_1_inherited' },\n },\n {\n typeid: 'SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0',\n value: { string: 'entry_string_poly_2_inherited' },\n },\n ],\n },\n {\n id: 'enum', typeid: 'Enum', properties: [{ id: 'solid', value: 1 }, { id: 'dashed', value: 2 }],\n value: 'dashed',\n },\n {\n id: 'untyped', properties: [\n { id: 'num', typeid: 'Uint32' },\n { id: 'string', typeid: 'String' },\n ], value: { string: 'untyped_string_inherited', num: 2 },\n },\n {\n id: 'template', typeid: 'SimpleTest:DynamicWithOverriddenDefaults-1.0.0', value: {\n num: 2, dynamic: { dynamic_string: 'dynamic_string_inherited' },\n },\n },\n {\n id: 'map_primitive', typeid: 'Int32', context: 'map', value: {\n key2: 2,\n key3: 3,\n },\n },\n {\n id: 'map', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'map', value: {\n key2: { string: 'map_string_2_inherited' },\n key3: { string: 'map_string_3_inherited' },\n },\n },\n {\n id: 'map_poly', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'map', typedValue: {\n key2: {\n typeid: 'SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0',\n value: { string: 'map_poly_string_2_inherited' },\n },\n key3: {\n typeid: 'SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0',\n value: { string: 'map_poly_string_3_inherited' },\n },\n },\n },\n {\n id: 'map_nest', typeid: 'SimpleTest:MapNestedWithOverriddenDefaults-1.0.0', context: 'map', value: {\n key2: {\n map_nested: {\n key2_2: { string: 'map_nested_2_string_2_inherited' },\n key2_3: { string: 'map_nested_2_string_3_inherited' },\n },\n },\n key3: {\n map_nested: {\n key3_1: { string: 'map_nested_3_string_1_inherited' },\n },\n },\n },\n },\n {\n id: 'set', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'set', value: [\n { string: 'set_string_2_inherited' },\n { string: 'set_string_3_inherited' },\n ],\n },\n {\n id: 'set_poly', typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0', context: 'set', typedValue: [\n {\n typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0',\n value: { string: 'set_poly_string_2_inherited' },\n },\n {\n typeid: 'SimpleTest:EntryWithOverriddenDefaults-1.0.0',\n value: { string: 'set_poly_string_3_inherited' },\n },\n ],\n },\n {\n id: 'set_nest', typeid: 'SimpleTest:SetNestedWithOverriddenDefaults-1.0.0', context: 'set', value: [{\n set_nested: [\n { string: 'set_nested_2_string_1_inherited' },\n { string: 'set_nested_2_string_2_inherited' },\n ],\n }],\n },\n ],\n };\n\n PropertyFactory.register(MapNestedWithOverriddenDefaults);\n PropertyFactory.register(SetNestedWithOverriddenDefaults);\n PropertyFactory.register(ShapeWithOverriddenDefaults);\n PropertyFactory.register(SquareWithOverriddenDefaults);\n\n var instance = PropertyFactory.create('SimpleTest:SquareWithOverriddenDefaults-1.0.0');\n\n expect(instance._getChildrenCount()).to.equal(13);\n expect(instance.resolvePath('num').getValue()).and.eql(2);\n expect(instance.resolvePath('array').getValues()).and.eql([\n 'array_string_1_inherited', 'array_string_2_inherited',\n ]);\n expect(instance.resolvePath('array_poly').getValues().length).to.eql(2);\n expect(instance.resolvePath('array_poly').getValues()[0].string).to.eql('entry_string_poly_1_inherited');\n expect(instance.resolvePath('array_poly').getValues()[1].string).to.eql('entry_string_poly_2_inherited');\n expect(instance.resolvePath('enum').getValue()).and.eql(2);\n expect(instance.resolvePath('untyped.num').getValue()).and.eql(2);\n expect(instance.resolvePath('untyped.string').getValue()).and.eql('untyped_string_inherited');\n expect(instance.resolvePath('template.num').getValue()).and.eql(2);\n expect(instance.resolvePath('template.dynamic.dynamic_string')\n .getValue()).and.eql('dynamic_string_inherited');\n expect(instance.resolvePath('map_primitive').getIds().length).to.equal(2);\n expect(instance.resolvePath('map_primitive').getEntriesReadOnly().key2).to.equal(2);\n expect(instance.resolvePath('map_primitive').getEntriesReadOnly().key3).to.equal(3);\n expect(instance.resolvePath('map').getIds().length).to.equal(2);\n expect(instance.resolvePath('map').getEntriesReadOnly().key2.get('string').getValue())\n .to.equal('map_string_2_inherited');\n expect(instance.resolvePath('map').getEntriesReadOnly().key3.get('string').getValue())\n .to.equal('map_string_3_inherited');\n expect(instance.resolvePath('map_poly').getIds().length).to.equal(2);\n expect(instance.resolvePath('map_poly').getEntriesReadOnly().key2.get('string').getValue())\n .to.equal('map_poly_string_2_inherited');\n expect(instance.resolvePath('map_poly').getEntriesReadOnly().key3.get('string').getValue())\n .to.equal('map_poly_string_3_inherited');\n expect(instance.resolvePath('map_nest').getIds().length).to.equal(2);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getIds().length).to.equal(2);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getAsArray().length).to.equal(2);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getAsArray()[0].get('string').getValue()).to.equal('map_nested_2_string_2_inherited');\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getAsArray()[1].get('string').getValue()).to.equal('map_nested_2_string_3_inherited');\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key3.get('map_nested')\n .getIds().length).to.equal(1);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key3.get('map_nested')\n .getAsArray()[0].get('string').getValue()).to.equal('map_nested_3_string_1_inherited');\n expect(instance.resolvePath('set').getIds().length).to.equal(2);\n expect(instance.resolvePath('set').getAsArray()[0].get('string')\n .getValue()).to.equal('set_string_2_inherited');\n expect(instance.resolvePath('set').getAsArray()[1].get('string')\n .getValue()).to.equal('set_string_3_inherited');\n expect(instance.resolvePath('set_poly').getIds().length).to.equal(2);\n expect(instance.resolvePath('set_poly').getAsArray()[0].get('string')\n .getValue()).to.equal('set_poly_string_2_inherited');\n expect(instance.resolvePath('set_poly').getAsArray()[1].get('string')\n .getValue()).to.equal('set_poly_string_3_inherited');\n expect(instance.resolvePath('set_nest').getIds().length).to.equal(1);\n expect(instance.resolvePath('set_nest').getAsArray()[0].get('set_nested').getIds().length).to.equal(2);\n expect(instance.resolvePath('set_nest').getAsArray()[0].get('set_nested')\n .getAsArray()[0].get('string').getValue()).to.equal('set_nested_2_string_1_inherited');\n expect(instance.resolvePath('set_nest').getAsArray()[0].get('set_nested')\n .getAsArray()[1].get('string').getValue()).to.equal('set_nested_2_string_2_inherited');\n });\n\n it('should not allow overriding default values when typeid is different', function() {\n var ShapeWithDiffTypeidDefaults = {\n typeid: 'SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0',\n properties: [{ id: 'num', typeid: 'Int8', value: 1 }],\n };\n\n var SquareWithDiffTypeidDefaults = {\n typeid: 'SimpleTest:SquareWithDiffTypeidDefaults-1.0.0',\n inherits: ['SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0'],\n properties: [{ id: 'num', typeid: 'Int32', value: 2 }],\n };\n\n PropertyFactory.register(ShapeWithDiffTypeidDefaults);\n PropertyFactory.register(SquareWithDiffTypeidDefaults);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:SquareWithDiffTypeidDefaults-1.0.0'))\n .to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n });\n\n it('should not allow overriding default values when context is different', function() {\n var ShapeWithDiffContextDefaults = {\n typeid: 'SimpleTest:ShapeWithDiffContextDefaults-1.0.0',\n properties: [{ id: 'num', typeid: 'Int8', value: 1 }],\n };\n\n var SquareWithDiffContextDefaults = {\n typeid: 'SimpleTest:SquareWithDiffContextDefaults-1.0.0',\n inherits: ['SimpleTest:ShapeWithDiffContextDefaults-1.0.0'],\n properties: [{ id: 'num', typeid: 'Int8', value: [1, 2], context: 'array' }],\n };\n\n PropertyFactory.register(ShapeWithDiffContextDefaults);\n PropertyFactory.register(SquareWithDiffContextDefaults);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:SquareWithDiffContextDefaults-1.0.0'))\n .to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n });\n });\n\n describe('Overriding constants', function() {\n it('should allow overriding constants', function() {\n var EntryWithOverriddenConstants = {\n typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0',\n inherits: ['NamedProperty'],\n constants: [\n { id: 'string', typeid: 'String', value: 'entry_string' },\n ],\n };\n\n var EntryWithOverriddenPolyConstants = {\n typeid: 'SimpleTest:EntryWithOverriddenPolyConstants-1.0.0',\n inherits: ['SimpleTest:EntryWithOverriddenConstants-1.0.0'],\n constants: [\n { id: 'string', typeid: 'String', value: 'entry_string' },\n ],\n };\n\n var DynamicWithOverriddenConstants = {\n typeid: 'SimpleTest:DynamicWithOverriddenConstants-1.0.0',\n constants: [{ id: 'num', typeid: 'Uint32', value: 1 }],\n properties: [\n {\n id: 'dynamic', properties: [\n { id: 'dynamic_string', typeid: 'String' },\n ],\n },\n ],\n };\n\n var MapNestedWithOverriddenConstants = {\n typeid: 'SimpleTest:MapNestedWithOverriddenConstants-1.0.0',\n inherits: ['NamedProperty'],\n constants: [{\n id: 'map_nested', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'map', value: {},\n }],\n };\n\n var SetNestedWithOverriddenConstants = {\n typeid: 'SimpleTest:SetNestedWithOverriddenConstants-1.0.0',\n inherits: ['NamedProperty'],\n constants: [{\n id: 'set_nested', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'set', value: [],\n }],\n };\n\n var ShapeWithOverriddenConstants = {\n typeid: 'SimpleTest:ShapeWithOverriddenConstants-1.0.0',\n constants: [\n { id: 'num', typeid: 'Int8', value: 1 },\n { id: 'array', typeid: 'String', value: ['array_string_1', 'array_string_2'], context: 'array' },\n {\n id: 'array_poly', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'array', value: [\n { string: 'entry_string_poly' }],\n },\n {\n id: 'template', typeid: 'SimpleTest:DynamicWithOverriddenConstants-1.0.0', value: {\n num: 1, dynamic: { dynamic_string: 'dynamic_string' },\n },\n },\n {\n id: 'map_primitive', typeid: 'Int32', context: 'map', value: {\n key1: 1,\n key3: 3,\n },\n },\n {\n id: 'map', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'map', value: {\n key1: { string: 'map_string_1' },\n key3: { string: 'map_string_3' },\n },\n },\n {\n id: 'map_poly', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'map', value: {\n key1: { string: 'map_poly_string_1' },\n key3: { string: 'map_poly_string_3' },\n },\n },\n {\n id: 'map_nest', typeid: 'SimpleTest:MapNestedWithOverriddenConstants-1.0.0', context: 'map', value: {\n key1: {\n map_nested: {\n key1_1: { string: 'map_nested_1_string_1' },\n key1_3: { string: 'map_nested_1_string_3' },\n },\n },\n key3: {\n map_nested: {\n key3_1: { string: 'map_nested_3_string_1' },\n },\n },\n },\n },\n {\n id: 'set', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'set', value: [\n { string: 'set_string_1' },\n { string: 'set_string_2' },\n ],\n },\n {\n id: 'set_poly', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'set', value: [\n { string: 'set_poly_string_1' },\n { string: 'set_poly_string_1' },\n ],\n },\n {\n id: 'set_nest', typeid: 'SimpleTest:SetNestedWithOverriddenConstants-1.0.0', context: 'set', value: [{\n set_nested: [\n { string: 'set_nested_1_string_1' },\n { string: 'set_nested_1_string_2' },\n ],\n }, {\n set_nested: [\n { string: 'set_nested_3_string_1' },\n { string: 'set_nested_3_string_2' },\n ],\n }],\n },\n ],\n };\n\n var SquareWithOverriddenConstants = {\n typeid: 'SimpleTest:SquareWithOverriddenConstants-1.0.0',\n inherits: ['SimpleTest:ShapeWithOverriddenConstants-1.0.0'],\n constants: [\n { id: 'num', typeid: 'Int8', value: 2 },\n {\n id: 'array', typeid: 'String', value: ['array_string_1_inherited', 'array_string_2_inherited'],\n context: 'array',\n },\n {\n id: 'array_poly', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'array', typedValue:\n [{\n typeid: 'SimpleTest:EntryWithOverriddenPolyConstants-1.0.0',\n value: { string: 'entry_string_poly_1_inherited' },\n },\n {\n typeid: 'SimpleTest:EntryWithOverriddenPolyConstants-1.0.0',\n value: { string: 'entry_string_poly_2_inherited' },\n },\n ],\n },\n {\n id: 'template', typeid: 'SimpleTest:DynamicWithOverriddenConstants-1.0.0', value: {\n num: 2, dynamic: { dynamic_string: 'dynamic_string_inherited' },\n },\n },\n {\n id: 'map_primitive', typeid: 'Int32', context: 'map', value: {\n key2: 2,\n key3: 3,\n },\n },\n {\n id: 'map', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'map', value: {\n key2: { string: 'map_string_2_inherited' },\n key3: { string: 'map_string_3_inherited' },\n },\n },\n {\n id: 'map_poly', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'map', typedValue: {\n key2: {\n typeid: 'SimpleTest:EntryWithOverriddenPolyConstants-1.0.0',\n value: { string: 'map_poly_string_2_inherited' },\n },\n key3: {\n typeid: 'SimpleTest:EntryWithOverriddenPolyConstants-1.0.0',\n value: { string: 'map_poly_string_3_inherited' },\n },\n },\n },\n {\n id: 'map_nest', typeid: 'SimpleTest:MapNestedWithOverriddenConstants-1.0.0', context: 'map', value: {\n key2: {\n map_nested: {\n key2_2: { string: 'map_nested_2_string_2_inherited' },\n key2_3: { string: 'map_nested_2_string_3_inherited' },\n },\n },\n key3: {\n map_nested: {\n key3_1: { string: 'map_nested_3_string_1_inherited' },\n },\n },\n },\n },\n {\n id: 'set', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'set', value: [\n { string: 'set_string_2_inherited' },\n { string: 'set_string_3_inherited' },\n ],\n },\n {\n id: 'set_poly', typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0', context: 'set', typedValue: [\n {\n typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0',\n value: { string: 'set_poly_string_2_inherited' },\n },\n {\n typeid: 'SimpleTest:EntryWithOverriddenConstants-1.0.0',\n value: { string: 'set_poly_string_3_inherited' },\n },\n ],\n },\n {\n id: 'set_nest', typeid: 'SimpleTest:SetNestedWithOverriddenConstants-1.0.0', context: 'set', value: [{\n set_nested: [\n { string: 'set_nested_2_string_1_inherited' },\n { string: 'set_nested_2_string_2_inherited' },\n ],\n }],\n },\n ],\n };\n\n PropertyFactory.register(EntryWithOverriddenConstants);\n PropertyFactory.register(EntryWithOverriddenPolyConstants);\n PropertyFactory.register(DynamicWithOverriddenConstants);\n PropertyFactory.register(MapNestedWithOverriddenConstants);\n PropertyFactory.register(SetNestedWithOverriddenConstants);\n PropertyFactory.register(ShapeWithOverriddenConstants);\n PropertyFactory.register(SquareWithOverriddenConstants);\n\n var instance = PropertyFactory.create('SimpleTest:SquareWithOverriddenConstants-1.0.0');\n\n expect(instance._getChildrenCount()).to.equal(11);\n expect(instance.resolvePath('num').getValue()).and.eql(2);\n expect(instance.resolvePath('array').getValues()).and.eql([\n 'array_string_1_inherited', 'array_string_2_inherited',\n ]);\n expect(instance.resolvePath('array_poly').getValues().length).to.eql(2);\n expect(instance.resolvePath('array_poly').getValues()[0].string).to.eql('entry_string_poly_1_inherited');\n expect(instance.resolvePath('array_poly').getValues()[1].string).to.eql('entry_string_poly_2_inherited');\n expect(instance.resolvePath('template.num').getValue()).and.eql(2);\n expect(instance.resolvePath('template.dynamic.dynamic_string')\n .getValue()).and.eql('dynamic_string_inherited');\n expect(instance.resolvePath('map_primitive').getIds().length).to.equal(2);\n expect(instance.resolvePath('map_primitive').getEntriesReadOnly().key2).to.equal(2);\n expect(instance.resolvePath('map_primitive').getEntriesReadOnly().key3).to.equal(3);\n expect(instance.resolvePath('map').getIds().length).to.equal(2);\n expect(instance.resolvePath('map').getEntriesReadOnly().key2.get('string').getValue())\n .to.equal('map_string_2_inherited');\n expect(instance.resolvePath('map').getEntriesReadOnly().key3.get('string').getValue())\n .to.equal('map_string_3_inherited');\n expect(instance.resolvePath('map_poly').getIds().length).to.equal(2);\n expect(instance.resolvePath('map_poly').getEntriesReadOnly().key2.get('string').getValue())\n .to.equal('map_poly_string_2_inherited');\n expect(instance.resolvePath('map_poly').getEntriesReadOnly().key3.get('string').getValue())\n .to.equal('map_poly_string_3_inherited');\n expect(instance.resolvePath('map_nest').getIds().length).to.equal(2);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getIds().length).to.equal(2);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getAsArray().length).to.equal(2);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getAsArray()[0].get('string').getValue()).to.equal('map_nested_2_string_2_inherited');\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key2.get('map_nested')\n .getAsArray()[1].get('string').getValue()).to.equal('map_nested_2_string_3_inherited');\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key3.get('map_nested')\n .getIds().length).to.equal(1);\n expect(instance.resolvePath('map_nest').getEntriesReadOnly().key3.get('map_nested')\n .getAsArray()[0].get('string').getValue()).to.equal('map_nested_3_string_1_inherited');\n expect(instance.resolvePath('set').getIds().length).to.equal(2);\n expect(instance.resolvePath('set').getAsArray()[0].get('string')\n .getValue()).to.equal('set_string_2_inherited');\n expect(instance.resolvePath('set').getAsArray()[1].get('string')\n .getValue()).to.equal('set_string_3_inherited');\n expect(instance.resolvePath('set_poly').getIds().length).to.equal(2);\n expect(instance.resolvePath('set_poly').getAsArray()[0].get('string')\n .getValue()).to.equal('set_poly_string_2_inherited');\n expect(instance.resolvePath('set_poly').getAsArray()[1].get('string')\n .getValue()).to.equal('set_poly_string_3_inherited');\n expect(instance.resolvePath('set_nest').getIds().length).to.equal(1);\n expect(instance.resolvePath('set_nest').getAsArray()[0].get('set_nested').getIds().length).to.equal(2);\n expect(instance.resolvePath('set_nest').getAsArray()[0].get('set_nested')\n .getAsArray()[0].get('string').getValue()).to.equal('set_nested_2_string_1_inherited');\n expect(instance.resolvePath('set_nest').getAsArray()[0].get('set_nested')\n .getAsArray()[1].get('string').getValue()).to.equal('set_nested_2_string_2_inherited');\n });\n\n it('should allow overriding constants with typed values', function() {\n var EntryWithTypedOverriddenConstants = {\n typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0',\n inherits: ['NamedProperty'],\n constants: [\n { id: 'string', typeid: 'String', value: 'entry_string' },\n ],\n };\n\n var EntryWithTypedOverriddenPolyConstants = {\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n inherits: ['SimpleTest:EntryWithTypedOverriddenConstants-1.0.0'],\n constants: [\n { id: 'string', typeid: 'String', value: 'entry_string' },\n { id: 'name', typeid: 'String', value: 'entry2' },\n ],\n };\n\n var ShapeWithTypedOverriddenConstants = {\n typeid: 'SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0',\n constants: [\n { id: 'entry1', typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0' },\n { id: 'entry2', typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0' },\n {\n id: 'array', typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0', context: 'array',\n value: [{ string: 'entry_string' }],\n },\n {\n id: 'map', typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0', context: 'map', value: {\n key1: { string: 'map_string_1' },\n key3: { string: 'map_string_3' },\n },\n },\n {\n id: 'set', typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0', context: 'set', value: [\n { string: 'set_string_1' },\n { string: 'set_string_1' },\n ],\n },\n ],\n };\n\n var SquareWithTypedOverriddenConstants = {\n typeid: 'SimpleTest:SquareWithTypedOverriddenConstants-1.0.0',\n inherits: ['SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0'],\n constants: [\n {\n id: 'entry1', typedValue: {\n typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0',\n value: { string: 'entry_string_1' },\n },\n },\n {\n id: 'entry2', typedValue: {\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n value: { string: 'entry_string_2', name: 'entry2' },\n },\n },\n {\n id: 'array', context: 'array', typedValue:\n [{\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n value: { string: 'entry_string_1_inherited', name: 'entry_string_1' },\n },\n {\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n value: { string: 'entry_string_2_inherited', name: 'entry_string_2' },\n },\n ],\n },\n {\n id: 'map', typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0', context: 'map', typedValue: {\n key2: {\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n value: { string: 'map_string_2_inherited', name: 'map_string_2' },\n },\n key3: {\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n value: { string: 'map_string_3_inherited', name: 'map_string_3' },\n },\n },\n },\n {\n id: 'set', typeid: 'SimpleTest:EntryWithTypedOverriddenConstants-1.0.0', context: 'set', typedValue: [\n {\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n value: { string: 'set_string_2_inherited', name: 'set_string_2' },\n },\n {\n typeid: 'SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0',\n value: { string: 'set_string_3_inherited', name: 'set_string_3' },\n },\n ],\n },\n ],\n };\n\n PropertyFactory.register(EntryWithTypedOverriddenConstants);\n PropertyFactory.register(EntryWithTypedOverriddenPolyConstants);\n PropertyFactory.register(ShapeWithTypedOverriddenConstants);\n PropertyFactory.register(SquareWithTypedOverriddenConstants);\n\n var instance = PropertyFactory.create('SimpleTest:SquareWithTypedOverriddenConstants-1.0.0');\n\n expect(instance._getChildrenCount()).to.equal(5);\n expect(instance.resolvePath('entry1').getTypeid())\n .to.eql('SimpleTest:EntryWithTypedOverriddenConstants-1.0.0');\n expect(instance.resolvePath('entry1.string').getValue()).to.eql('entry_string_1');\n expect(instance.resolvePath('entry2').getTypeid())\n .to.eql('SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0');\n expect(instance.resolvePath('entry2.name').getValue()).to.eql('entry2');\n expect(instance.resolvePath('entry2.string').getValue()).to.eql('entry_string_2');\n expect(instance.resolvePath('array').getValues().length).to.eql(2);\n expect(instance.resolvePath('array').getValues()[0].name).to.eql('entry_string_1');\n expect(instance.resolvePath('array').getValues()[0].string).to.eql('entry_string_1_inherited');\n expect(instance.resolvePath('array').getValues()[1].name).to.eql('entry_string_2');\n expect(instance.resolvePath('array').getValues()[1].string).to.eql('entry_string_2_inherited');\n expect(instance.resolvePath('map').getIds().length).to.equal(2);\n expect(instance.resolvePath('map').getEntriesReadOnly().key2.get('name').getValue())\n .to.equal('map_string_2');\n expect(instance.resolvePath('map').getEntriesReadOnly().key2.get('string').getValue())\n .to.equal('map_string_2_inherited');\n expect(instance.resolvePath('map').getEntriesReadOnly().key3.get('name').getValue())\n .to.equal('map_string_3');\n expect(instance.resolvePath('map').getEntriesReadOnly().key3.get('string').getValue())\n .to.equal('map_string_3_inherited');\n expect(instance.resolvePath('set').getIds().length).to.equal(2);\n expect(instance.resolvePath('set').getAsArray()[0].get('name')\n .getValue()).to.equal('set_string_2');\n expect(instance.resolvePath('set').getAsArray()[0].get('string')\n .getValue()).to.equal('set_string_2_inherited');\n expect(instance.resolvePath('set').getAsArray()[1].get('name')\n .getValue()).to.equal('set_string_3');\n expect(instance.resolvePath('set').getAsArray()[1].get('string')\n .getValue()).to.equal('set_string_3_inherited');\n });\n\n it('should not allow overriding constants when typeid is different', function() {\n var ShapeWithDiffTypeidConstants = {\n typeid: 'SimpleTest:ShapeWithDiffTypeidConstants-1.0.0',\n constants: [{ id: 'num', typeid: 'Int8', value: 1 }],\n };\n\n var SquareWithDiffTypeidConstants = {\n typeid: 'SimpleTest:SquareWithDiffTypeidConstants-1.0.0',\n inherits: ['SimpleTest:ShapeWithDiffTypeidConstants-1.0.0'],\n constants: [{ id: 'num', typeid: 'Int32', value: 2 }],\n };\n\n PropertyFactory.register(ShapeWithDiffTypeidConstants);\n PropertyFactory.register(SquareWithDiffTypeidConstants);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:SquareWithDiffTypeidConstants-1.0.0'))\n .to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n });\n\n it('should not allow overriding constants when context is different', function() {\n var ShapeWithDiffContextConstants = {\n typeid: 'SimpleTest:ShapeWithDiffContextConstants-1.0.0',\n constants: [{ id: 'num', typeid: 'Int8', value: 1 }],\n };\n\n var SquareWithDiffContextConstants = {\n typeid: 'SimpleTest:SquareWithDiffContextConstants-1.0.0',\n inherits: ['SimpleTest:ShapeWithDiffContextConstants-1.0.0'],\n constants: [{ id: 'num', typeid: 'Int8', value: [1, 2], context: 'array' }],\n };\n\n PropertyFactory.register(ShapeWithDiffContextConstants);\n PropertyFactory.register(SquareWithDiffContextConstants);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:SquareWithDiffContextConstants-1.0.0'))\n .to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n });\n\n it('should not allow overriding constants with a typedValue that does not inherit from base type', function() {\n var Type1 = {\n typeid: 'SimpleTest:Type1-1.0.0',\n constants: [{ id: 'num', typeid: 'Int32', value: 1 }],\n };\n\n var Type2 = {\n typeid: 'SimpleTest:Type2-1.0.0',\n constants: [{ id: 'num', typeid: 'Int32', value: 1 }],\n };\n\n var ShapeWithDiffTypedTypeidConstants = {\n typeid: 'SimpleTest:ShapeWithDiffTypeidConstants-1.0.0',\n constants: [{ id: 'type', typeid: 'SimpleTest:Type1-1.0.0' }],\n };\n\n var SquareWithDiffTypedTypeidConstants = {\n typeid: 'SimpleTest:SquareWithDiffTypeidConstants-1.0.0',\n inherits: ['SimpleTest:ShapeWithDiffTypeidConstants-1.0.0'],\n constants: [{ id: 'type', typedValue: { typeid: 'SimpleTest:Type2-1.0.0' } }],\n };\n\n PropertyFactory.register(Type1);\n PropertyFactory.register(Type2);\n PropertyFactory.register(ShapeWithDiffTypedTypeidConstants);\n PropertyFactory.register(SquareWithDiffTypedTypeidConstants);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:SquareWithDiffTypeidConstants-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE +\n 'SimpleTest:Type2-1.0.0 must be a subclass of SimpleTest:Type1-1.0.0');\n });\n });\n });\n\n describe('Default values', function() {\n it('should set default values for primitive property', function() {\n var DefaultPrimitive = {\n typeid: 'SimpleTest:DefaultPrimitive-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n { id: 'bool', typeid: 'Bool', value: true },\n ],\n };\n\n PropertyFactory.register(DefaultPrimitive);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultPrimitive-1.0.0');\n expect(instance.get('num').getValue()).to.equal(111);\n expect(instance.get('bool').getValue()).to.equal(true);\n });\n\n it('should set a default value for a string property', function() {\n var DefaultString = {\n typeid: 'SimpleTest:DefaultString-1.0.0',\n properties: [\n { id: 'string', typeid: 'String', value: 'I am a string' },\n ],\n };\n\n PropertyFactory.register(DefaultString);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultString-1.0.0');\n expect(instance.get('string').getValue()).to.equal('I am a string');\n });\n\n it('should set a default value for a primitive array property', function() {\n var DefaultArray = {\n typeid: 'SimpleTest:DefaultArray-1.0.0',\n properties: [\n { id: 'array', typeid: 'Int32', value: [111, 222], context: 'array' },\n ],\n };\n\n PropertyFactory.register(DefaultArray);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultArray-1.0.0');\n expect(instance.get('array').get(0)).to.equal(111);\n expect(instance.get('array').get(1)).to.equal(222);\n });\n\n it('should set a default value for a typed array property', function() {\n var DefaultTypedArrayEntry = {\n typeid: 'SimpleTest:DefaultTypedArrayEntry-1.0.0',\n properties: [\n { id: 'string', typeid: 'String' },\n ],\n };\n\n var DefaultTypedArray = {\n typeid: 'SimpleTest:DefaultTypedArray-1.0.0',\n properties: [\n {\n id: 'array', typeid: 'SimpleTest:DefaultTypedArrayEntry-1.0.0', context: 'array', value: [\n { string: 'I am string 1' }, { string: 'I am string 2' }],\n },\n ],\n };\n\n PropertyFactory.register(DefaultTypedArrayEntry);\n PropertyFactory.register(DefaultTypedArray);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultTypedArray-1.0.0');\n expect(instance.get('array').get(0).get('string').value).to.equal('I am string 1');\n expect(instance.get('array').get(1).get('string').value).to.equal('I am string 2');\n });\n\n it('should set a default value for an enum property', function() {\n var DefaultEnum = {\n typeid: 'SimpleTest:DefaultEnum-1.0.0',\n properties: [\n {\n id: 'enum', typeid: 'Enum', properties: [\n { id: 'solid', value: 111 },\n { id: 'dashed', value: 222 },\n { id: 'dotted', value: 333 },\n ], value: 'dashed',\n },\n ],\n };\n\n PropertyFactory.register(DefaultEnum);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultEnum-1.0.0');\n expect(instance.get('enum').getValue()).to.equal(222);\n });\n\n it('should set a default value for an untyped property, parent default value has precedence', function() {\n var DefaultUntyped = {\n typeid: 'SimpleTest:DefaultUntyped-1.0.0',\n properties: [\n {\n id: 'untyped', properties: [\n { id: 'num', typeid: 'Uint32', value: 222 },\n { id: 'string', typeid: 'String', value: 'I should not be set' },\n ], value: { string: 'I am a string', num: 111 },\n },\n ],\n };\n\n PropertyFactory.register(DefaultUntyped);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultUntyped-1.0.0');\n\n expect(instance.get('untyped').get('string').getValue()).to.equal('I am a string');\n expect(instance.get('untyped').get('num').getValue()).to.equal(111);\n });\n\n it('should set a default value for a template, parent default value has precedence', function() {\n var DefaultTemplateEntry = {\n typeid: 'SimpleTest:DefaultTemplateEntry-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32', value: '222' },\n {\n id: 'dynamic', properties: [\n { id: 'dynamic_string', typeid: 'String' },\n ], value: { dynamic_string: 'I should not be set' },\n },\n ],\n };\n\n var DefaultTemplate = {\n typeid: 'SimpleTest:DefaultTemplate-1.0.0',\n properties: [\n {\n id: 'template', typeid: 'SimpleTest:DefaultTemplateEntry-1.0.0', value: {\n num: 111, dynamic: { dynamic_string: 'I am a string' },\n },\n },\n ],\n };\n\n PropertyFactory.register(DefaultTemplateEntry);\n PropertyFactory.register(DefaultTemplate);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultTemplate-1.0.0');\n\n expect(instance.get('template').get('num').getValue()).to.equal(111);\n expect(instance.get('template').get('dynamic').get('dynamic_string').getValue()).to.equal('I am a string');\n });\n\n it('should set a default value for a set', function() {\n var DefaultSetEntry = {\n typeid: 'SimpleTest:DefaultSetEntry-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'string', typeid: 'String' },\n ],\n };\n\n var DefaultSet = {\n typeid: 'SimpleTest:DefaultSet-1.0.0',\n properties: [\n {\n id: 'set', typeid: 'SimpleTest:DefaultSetEntry-1.0.0', context: 'set', value: [\n { string: 'I am a string 1' },\n { string: 'I am a string 2' },\n ],\n },\n ],\n };\n\n PropertyFactory.register(DefaultSetEntry);\n PropertyFactory.register(DefaultSet);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultSet-1.0.0');\n\n expect(instance.get('set').getAsArray().length).to.equal(2);\n expect(instance.get('set').getAsArray()[0].get('string').getValue()).to.equal('I am a string 1');\n expect(instance.get('set').getAsArray()[1].get('string').getValue()).to.equal('I am a string 2');\n });\n\n it('should set a default value for a primitive map', function() {\n var DefaultPrimitiveMap = {\n typeid: 'SimpleTest:DefaultPrimitiveMap-1.0.0',\n properties: [\n {\n id: 'map', typeid: 'Int32', context: 'map', value: {\n key1: 111,\n key2: 222,\n },\n },\n ],\n };\n\n PropertyFactory.register(DefaultPrimitiveMap);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultPrimitiveMap-1.0.0');\n\n expect(instance.get('map').getEntriesReadOnly().key1).to.equal(111);\n expect(instance.get('map').getEntriesReadOnly().key2).to.equal(222);\n });\n\n it('should set a default value for a typed map', function() {\n var DefaultTypedMapEntry = {\n typeid: 'SimpleTest:DefaultTypedMapEntry-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'string', typeid: 'String' },\n ],\n };\n\n var DefaultTypedMap = {\n typeid: 'SimpleTest:DefaultTypedMap-1.0.0',\n properties: [\n {\n id: 'map', typeid: 'SimpleTest:DefaultTypedMapEntry-1.0.0', context: 'map', value: {\n key1: { string: 'I am a string 1' },\n key2: { string: 'I am a string 2' },\n },\n },\n ],\n };\n\n PropertyFactory.register(DefaultTypedMapEntry);\n PropertyFactory.register(DefaultTypedMap);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultTypedMap-1.0.0');\n\n expect(instance.get('map').getEntriesReadOnly().key1.get('string').getValue()).to.equal('I am a string 1');\n expect(instance.get('map').getEntriesReadOnly().key2.get('string').getValue()).to.equal('I am a string 2');\n });\n\n it('initial values should override default values', function() {\n var DefaultInitialValue = {\n typeid: 'SimpleTest:DefaultInitialValue-1.0.0',\n properties: [\n { id: 'string', typeid: 'String', value: 'I should not be set' },\n ],\n };\n\n PropertyFactory.register(DefaultInitialValue);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultInitialValue-1.0.0', null, {\n string: 'I am a string',\n });\n\n expect(instance.get('string').getValue()).to.equal('I am a string');\n });\n\n describe('#Polymorphic', function() {\n var DefaultPolyBase = {\n typeid: 'SimpleTest:DefaultPolyBase-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n ],\n };\n\n var DefaultPolySub = {\n typeid: 'SimpleTest:DefaultPolySub-1.0.0',\n inherits: 'SimpleTest:DefaultPolyBase-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32', value: 222 },\n { id: 'str', typeid: 'String', value: 'Sub' },\n ],\n };\n\n var DefaultPolySubSub = {\n typeid: 'SimpleTest:DefaultPolySubSub-1.0.0',\n inherits: 'SimpleTest:DefaultPolySub-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32', value: 333 },\n { id: 'num2', typeid: 'Uint32', value: 111 },\n { id: 'str', typeid: 'String', value: 'SubSub' },\n ],\n };\n\n beforeEach(function() {\n PropertyFactory._clear();\n PropertyFactory.register(DefaultPolyBase);\n PropertyFactory.register(DefaultPolySub);\n PropertyFactory.register(DefaultPolySubSub);\n });\n\n it('should set default polymorphic values for non-primitive properties', function() {\n var DefaultPolyContainer = {\n typeid: 'SimpleTest:DefaultPolyContainer-1.0.0',\n properties: [\n {\n id: 'polySub', typeid: 'SimpleTest:DefaultPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:DefaultPolySub-1.0.0', value: { num: 333, str: 'PolySub' } },\n },\n {\n id: 'polySubSub', typeid: 'SimpleTest:DefaultPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:DefaultPolySubSub-1.0.0', value: { num: 444, str: 'PolySubSub' } },\n },\n ],\n };\n\n PropertyFactory.register(DefaultPolyContainer);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultPolyContainer-1.0.0');\n expect(instance.get('polySub').get('num').getValue()).to.equal(333);\n expect(instance.get('polySub').get('str').getValue()).to.equal('PolySub');\n\n expect(instance.get('polySubSub').get('num').getValue()).to.equal(444);\n expect(instance.get('polySubSub').get('str').getValue()).to.equal('PolySubSub');\n expect(instance.get('polySubSub').get('num2').getValue()).to.equal(111);\n });\n\n it('should fail when setting a default typedValue that doesnt have a typeid.', function() {\n var DefaultPolyNoTypeIdContainer = {\n typeid: 'SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0',\n properties: [{\n id: 'polySub', typeid: 'SimpleTest:DefaultPolyBase-1.0.0',\n typedValue: { value: { num: 333, str: 'PolySub' } },\n }],\n };\n\n PropertyFactory.register(DefaultPolyNoTypeIdContainer);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0'))\n .to.throw(MSG.FIELD_TYPEID_IS_REQUIRED + 'typedValue SimpleTest:DefaultPolyBase-1.0.0');\n });\n\n it('should set a default polymorphic value for a non-primitive array', function() {\n var DefaultPolyArrayContainer = {\n typeid: 'SimpleTest:DefaultPolyArrayContainer-1.0.0',\n properties: [\n {\n id: 'array', typeid: 'SimpleTest:DefaultPolyBase-1.0.0', context: 'array', typedValue: [\n { typeid: 'SimpleTest:DefaultPolySub-1.0.0' },\n { typeid: 'SimpleTest:DefaultPolySub-1.0.0', value: { str: 'ArrSub' } },\n { typeid: 'SimpleTest:DefaultPolySubSub-1.0.0', value: { str: 'ArrSubSub' } },\n ],\n },\n ],\n };\n\n PropertyFactory.register(DefaultPolyArrayContainer);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultPolyArrayContainer-1.0.0');\n expect(instance.get('array').get(0).get('num').value).to.equal(222);\n expect(instance.get('array').get(0).get('str').value).to.equal('Sub');\n expect(instance.get('array').get(1).get('num').value).to.equal(222);\n expect(instance.get('array').get(1).get('str').value).to.equal('ArrSub');\n expect(instance.get('array').get(2).get('num').value).to.equal(333);\n expect(instance.get('array').get(2).get('str').value).to.equal('ArrSubSub');\n expect(instance.get('array').get(2).get('num2').value).to.equal(111);\n });\n\n it('should set a default polymorphic value for a non-primitive set', function() {\n var DefaultPolySetContainer = {\n typeid: 'SimpleTest:DefaultPolySetContainer-1.0.0',\n properties: [\n {\n id: 'set', typeid: 'SimpleTest:DefaultPolyBase-1.0.0', context: 'set', typedValue: [\n { typeid: 'SimpleTest:DefaultPolySub-1.0.0' },\n { typeid: 'SimpleTest:DefaultPolySub-1.0.0', value: { str: 'ArrSub' } },\n { typeid: 'SimpleTest:DefaultPolySubSub-1.0.0', value: { str: 'ArrSubSub' } },\n ],\n },\n ],\n };\n\n PropertyFactory.register(DefaultPolySetContainer);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultPolySetContainer-1.0.0');\n\n expect(instance.get('set').getAsArray().length).to.equal(3);\n expect(instance.get('set').getAsArray()[0].get('num').getValue()).to.equal(222);\n expect(instance.get('set').getAsArray()[0].get('str').getValue()).to.equal('Sub');\n expect(instance.get('set').getAsArray()[1].get('num').getValue()).to.equal(222);\n expect(instance.get('set').getAsArray()[1].get('str').getValue()).to.equal('ArrSub');\n expect(instance.get('set').getAsArray()[2].get('num').getValue()).to.equal(333);\n expect(instance.get('set').getAsArray()[2].get('str').getValue()).to.equal('ArrSubSub');\n expect(instance.get('set').getAsArray()[2].get('num2').getValue()).to.equal(111);\n });\n\n it('should set a default polymorphic value for a non-primitive map', function() {\n var DefaultPolyMapContainer = {\n typeid: 'SimpleTest:DefaultPolyMapContainer-1.0.0',\n properties: [\n {\n id: 'map', typeid: 'SimpleTest:DefaultPolyBase-1.0.0', context: 'map', typedValue: {\n key1: { typeid: 'SimpleTest:DefaultPolySub-1.0.0' },\n key2: { typeid: 'SimpleTest:DefaultPolySub-1.0.0', value: { str: 'ArrSub' } },\n key3: { typeid: 'SimpleTest:DefaultPolySubSub-1.0.0', value: { str: 'ArrSubSub' } },\n },\n },\n ],\n };\n\n PropertyFactory.register(DefaultPolyMapContainer);\n\n var instance = PropertyFactory.create('SimpleTest:DefaultPolyMapContainer-1.0.0');\n\n expect(instance.get('map').getEntriesReadOnly().key1.get('num').getValue()).to.equal(222);\n expect(instance.get('map').getEntriesReadOnly().key1.get('str').getValue()).to.equal('Sub');\n expect(instance.get('map').getEntriesReadOnly().key2.get('num').getValue()).to.equal(222);\n expect(instance.get('map').getEntriesReadOnly().key2.get('str').getValue()).to.equal('ArrSub');\n expect(instance.get('map').getEntriesReadOnly().key3.get('num').getValue()).to.equal(333);\n expect(instance.get('map').getEntriesReadOnly().key3.get('str').getValue()).to.equal('ArrSubSub');\n expect(instance.get('map').getEntriesReadOnly().key3.get('num2').getValue()).to.equal(111);\n });\n\n it('should fail when setting default polymorphic values not derived from base type', function() {\n var DefaultPoly = {\n typeid: 'SimpleTest:DefaultPoly-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n ],\n };\n\n var DefaultPolyUnderivedContainer = {\n typeid: 'SimpleTest:DefaultPolyUnderivedContainer-1.0.0',\n properties: [\n {\n id: 'poly', typeid: 'SimpleTest:DefaultPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:DefaultPoly-1.0.0', value: { num: 333 } },\n },\n ],\n };\n\n PropertyFactory.register(DefaultPoly);\n PropertyFactory.register(DefaultPolyUnderivedContainer);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPolyUnderivedContainer-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + 'SimpleTest:DefaultPoly-1.0.0');\n });\n\n it('@bugfix should use default value when value field is missing', function() {\n var DefaultPoly = {\n typeid: 'SimpleTest:PolyWithNoValue-1.0.0',\n constants: [\n {\n id: 'type', typeid: 'SimpleTest:DefaultPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:DefaultPolyBase-1.0.0' },\n },\n ],\n };\n\n PropertyFactory.register(DefaultPoly);\n var prop = PropertyFactory.create(DefaultPoly.typeid);\n\n expect(prop.get('type').get('num').value).to.equal(111);\n });\n\n it('should fail when setting a typedValue to a primitive.', function() {\n var DefaultPrimitiveArrayPoly = {\n typeid: 'SimpleTest:DefaultPrimitivePoly-1.0.0',\n properties: [{\n id: 'int', typeid: 'Int32', typedValue: { typeid: 'Int32', value: 123 },\n }],\n };\n\n PropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPrimitivePoly-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + 'int');\n });\n\n it('should fail when setting a typedValue to a primitive array.', function() {\n var DefaultPrimitiveArrayPoly = {\n typeid: 'SimpleTest:DefaultPrimitiveArrayPoly-1.0.0',\n properties: [{\n id: 'array', context: 'array', typeid: 'Int32', typedValue: [{ typeid: 'Int32', value: 123 }],\n }],\n };\n\n PropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPrimitiveArrayPoly-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + 'array');\n });\n\n it('should fail when setting a typedValue to a primitive map.', function() {\n var DefaultPrimitiveMapPoly = {\n typeid: 'SimpleTest:DefaultPrimitiveMapPoly-1.0.0',\n properties: [{\n id: 'map', context: 'map', typeid: 'Int32', typedValue: {\n key1: { typeid: 'Int32', value: 1 },\n key2: { typeid: 'Int32', value: 2 },\n },\n }],\n };\n\n PropertyFactory.register(DefaultPrimitiveMapPoly);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPrimitiveMapPoly-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + 'map');\n });\n });\n });\n\n describe('Constants', function() {\n it('should set constant properties as readonly', function() {\n var ConstantReadonly = {\n typeid: 'SimpleTest:ConstantReadonly-1.0.0',\n constants: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantReadonly);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantReadonly-1.0.0');\n\n expect(instance.get('num').getValue()).to.equal(111);\n expect(instance.get('num')._isConstant).to.equal(true);\n expect(instance.get('num')._checkIsNotReadOnly.bind(\n instance.get('num'), true)).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n expect(instance.get('num').setValue.bind(\n instance.get('num'), 1111)).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n });\n\n it('should set constant child properties as readonly', function() {\n var ConstantChildReadonlyEntry = {\n typeid: 'SimpleTest:ConstantChildReadonlyEntry-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32' },\n {\n id: 'dynamic', properties: [\n { id: 'dynamic_string', typeid: 'String' },\n ],\n },\n ],\n };\n\n var ConstantChildReadonly = {\n typeid: 'SimpleTest:ConstantChildReadonly-1.0.0',\n constants: [\n {\n id: 'template', typeid: 'SimpleTest:ConstantChildReadonlyEntry-1.0.0', value: {\n num: 111, dynamic: { dynamic_string: 'I am a string' },\n },\n },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantChildReadonlyEntry);\n PropertyFactory.register(ConstantChildReadonly);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantChildReadonly-1.0.0');\n\n expect(instance.get('template').get('num')._isConstant).to.equal(true);\n expect(instance.get('template').get('dynamic')._isConstant).to.equal(true);\n expect(instance.get('template').get('dynamic').get('dynamic_string')._isConstant).to.equal(true);\n expect(instance.get('template').get('num')._checkIsNotReadOnly.bind(\n instance.get('template').get('num'), true)).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n expect(instance.get('template').get('num').setValue.bind(\n instance.get('template').get('num'), 1111)).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n expect(instance.get('template').get('dynamic').get('dynamic_string')._checkIsNotReadOnly.bind(\n instance.get('template').get('dynamic').get('dynamic_string'), true)).to.throw(\n MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n expect(instance.get('template').get('dynamic').get('dynamic_string').setValue.bind(\n instance.get('template').get('dynamic').get('dynamic_string'), 'should throw')).to.throw(\n MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n });\n\n it('should support primitive constants', function() {\n var ConstantPrimitive = {\n typeid: 'SimpleTest:ConstantPrimitive-1.0.0',\n constants: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n { id: 'bool', typeid: 'Bool', value: true },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantPrimitive);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantPrimitive-1.0.0');\n\n expect(instance.get('num').getValue()).to.equal(111);\n expect(instance.get('bool').getValue()).to.equal(true);\n });\n\n it('should support typed constants', function() {\n var ConstantEntry = {\n typeid: 'SimpleTest:ConstantEntry-1.0.0',\n constants: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n { id: 'bool', typeid: 'Bool', value: true },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n var ConstantTyped = {\n typeid: 'SimpleTest:ConstantTyped-1.0.0',\n constants: [\n { id: 'entry', typeid: 'SimpleTest:ConstantEntry-1.0.0', value: { num: 222, bool: false } },\n ],\n properties: [{ id: 'default2', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantEntry);\n PropertyFactory.register(ConstantTyped);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantTyped-1.0.0');\n\n expect(instance.get('entry').get('num').getValue()).to.equal(222);\n expect(instance.get('entry').get('bool').getValue()).to.equal(false);\n });\n\n it('should support string constants', function() {\n var ConstantString = {\n typeid: 'SimpleTest:ConstantString-1.0.0',\n constants: [\n { id: 'string', typeid: 'String', value: 'I am a string' },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantString);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantString-1.0.0');\n\n expect(instance.get('string').getValue()).to.equal('I am a string');\n });\n\n it('should support primitive array constants', function() {\n var ConstantArray = {\n typeid: 'SimpleTest:ConstantArray-1.0.0',\n constants: [\n { id: 'array', typeid: 'Int32', value: [111, 222], context: 'array' },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantArray);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantArray-1.0.0');\n expect(instance.get('array').get(0)).to.equal(111);\n expect(instance.get('array').get(1)).to.equal(222);\n });\n\n it('should support typed array constants', function() {\n var ConstantTypedArrayEntry = {\n typeid: 'SimpleTest:ConstantTypedArrayEntry-1.0.0',\n properties: [\n { id: 'string', typeid: 'String' },\n ],\n };\n\n var ConstantTypedArray = {\n typeid: 'SimpleTest:ConstantTypedArray-1.0.0',\n constants: [\n {\n id: 'array', typeid: 'SimpleTest:ConstantTypedArrayEntry-1.0.0', context: 'array', value: [\n { string: 'I am string 1' }, { string: 'I am string 2' }],\n },\n ],\n };\n\n PropertyFactory.register(ConstantTypedArrayEntry);\n PropertyFactory.register(ConstantTypedArray);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantTypedArray-1.0.0');\n expect(instance.get('array').get(0).get('string').value).to.equal('I am string 1');\n expect(instance.get('array').get(1).get('string').value).to.equal('I am string 2');\n });\n\n it('should support template constants', function() {\n var ConstantTemplateEntry = {\n typeid: 'SimpleTest:ConstantTemplateEntry-1.0.0',\n properties: [\n { id: 'num', typeid: 'Uint32' },\n {\n id: 'dynamic', properties: [\n { id: 'dynamic_string', typeid: 'String' },\n ],\n },\n ],\n };\n\n var ConstantTemplate = {\n typeid: 'SimpleTest:ConstantTemplate-1.0.0',\n constants: [\n {\n id: 'template', typeid: 'SimpleTest:ConstantTemplateEntry-1.0.0', value: {\n num: 111, dynamic: { dynamic_string: 'I am a string' },\n },\n },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantTemplateEntry);\n PropertyFactory._reregister(ConstantTemplate);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantTemplate-1.0.0');\n\n expect(instance.get('template').get('num').getValue()).to.equal(111);\n expect(instance.get('template').get('dynamic').get('dynamic_string').getValue()).to.equal('I am a string');\n });\n\n it('should support set constants', function() {\n var ConstantSetEntry = {\n typeid: 'SimpleTest:ConstantSetEntry-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'string', typeid: 'String' },\n ],\n };\n\n var ConstantSet = {\n typeid: 'SimpleTest:ConstantSet-1.0.0',\n constants: [\n {\n id: 'set', typeid: 'SimpleTest:ConstantSetEntry-1.0.0', context: 'set', value: [\n { string: 'I am a string 1' },\n { string: 'I am a string 2' },\n ],\n },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantSetEntry);\n PropertyFactory.register(ConstantSet);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantSet-1.0.0');\n\n expect(instance.get('set').getAsArray().length).to.equal(2);\n expect(instance.get('set').getAsArray()[0].get('string').getValue()).to.equal('I am a string 1');\n expect(instance.get('set').getAsArray()[1].get('string').getValue()).to.equal('I am a string 2');\n\n // All instances should share the same constant objects\n var instance2 = PropertyFactory.create('SimpleTest:ConstantSet-1.0.0');\n expect(instance.get('set') === instance2.get('set')).to.be.true;\n });\n\n it('should support primitive map constants', function() {\n var ConstantPrimitiveMap = {\n typeid: 'SimpleTest:ConstantPrimitiveMap-1.0.0',\n constants: [\n {\n id: 'map', typeid: 'Int32', context: 'map', value: {\n key1: 111,\n key2: 222,\n },\n },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantPrimitiveMap);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantPrimitiveMap-1.0.0');\n\n expect(instance.get('map').getEntriesReadOnly().key1).to.equal(111);\n expect(instance.get('map').getEntriesReadOnly().key2).to.equal(222);\n });\n\n it('should support typed map constants', function() {\n var ConstantTypedMapEntry = {\n typeid: 'SimpleTest:ConstantTypedMapEntry-1.0.0',\n inherits: ['NamedProperty'],\n properties: [\n { id: 'string', typeid: 'String' },\n ],\n };\n\n var ConstantTypedMap = {\n typeid: 'SimpleTest:ConstantTypedMap-1.0.0',\n constants: [\n {\n id: 'map', typeid: 'SimpleTest:ConstantTypedMapEntry-1.0.0', context: 'map', value: {\n key1: { string: 'I am a string 1' },\n key2: { string: 'I am a string 2' },\n },\n },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n\n PropertyFactory.register(ConstantTypedMapEntry);\n PropertyFactory.register(ConstantTypedMap);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantTypedMap-1.0.0');\n\n expect(instance.get('map')._contextKeyType).to.equal('string');\n expect(instance.get('map').getEntriesReadOnly().key1.get('string').getValue()).to.equal('I am a string 1');\n expect(instance.get('map').getEntriesReadOnly().key2.get('string').getValue()).to.equal('I am a string 2');\n });\n\n it('should support map constants with templateid keys', function() {\n var ConstantTemplate = {\n typeid: 'SimpleTest:ConstantTemplate-1.0.0',\n constants: [\n {\n id: 'map',\n typeid: 'Int32',\n context: 'map',\n contextKeyType: 'typeid',\n value: { 'SimpleTest:ConstantTemplate1-1.0.0': 1, 'SimpleTest:ConstantTemplate2-1.0.0': -1 },\n },\n ],\n properties: [{ id: 'default', typeid: 'Uint32' }],\n };\n PropertyFactory._reregister(ConstantTemplate);\n var instance = PropertyFactory.create('SimpleTest:ConstantTemplate-1.0.0');\n\n expect(instance.get('map')._contextKeyType).to.equal('typeid');\n expect(instance.get('map').get('SimpleTest:ConstantTemplate1-1.0.0')).to.equal(1);\n expect(instance.get('map').get('SimpleTest:ConstantTemplate2-1.0.0')).to.equal(-1);\n });\n\n it('should support constants with no value defined', function() {\n var ConstantNoValueEntry = {\n typeid: 'SimpleTest:ConstantNoValueEntry-1.0.0',\n inherits: ['NamedProperty'],\n constants: [\n { id: 'num', typeid: 'Int16' },\n { id: 'bool', typeid: 'Bool' },\n { id: 'string', typeid: 'String' },\n ],\n };\n\n var ConstantNoValue = {\n typeid: 'SimpleTest:ConstantNoValue-1.0.0',\n constants: [\n { id: 'int', typeid: 'Int32' },\n { id: 'bool', typeid: 'Bool' },\n { id: 'string', typeid: 'String' },\n { id: 'array', typeid: 'Int16', context: 'array' },\n { id: 'array_typed', typeid: 'SimpleTest:ConstantNoValueEntry-1.0.0', context: 'array' },\n { id: 'set', typeid: 'SimpleTest:ConstantNoValueEntry-1.0.0', context: 'set' },\n { id: 'map', typeid: 'SimpleTest:ConstantNoValueEntry-1.0.0', context: 'map' },\n ],\n };\n\n var ConstantNoValueInherited = {\n typeid: 'SimpleTest:ConstantNoValueInherited-1.0.0',\n inherits: 'SimpleTest:ConstantNoValue-1.0.0',\n constants: [\n { id: 'int', typeid: 'Int32', value: 100 },\n { id: 'bool', typeid: 'Bool', value: true },\n { id: 'string', typeid: 'String', value: 'I am a string' },\n { id: 'array', typeid: 'Int16', context: 'array', value: [100, 200] },\n {\n id: 'array_typed', typeid: 'SimpleTest:ConstantNoValueEntry-1.0.0', context: 'array', value: [\n { num: 100 },\n { num: 200, string: 'I am a string 2', bool: true }],\n },\n {\n id: 'set', typeid: 'SimpleTest:ConstantNoValueEntry-1.0.0', context: 'set', value: [\n { num: 100 },\n { num: 200, string: 'I am a string 2', bool: true }],\n },\n {\n id: 'map', typeid: 'SimpleTest:ConstantNoValueEntry-1.0.0', context: 'map', value: {\n key1: { num: 100 },\n key2: { num: 200, string: 'I am a string 2', bool: true },\n },\n },\n ],\n };\n\n PropertyFactory.register(ConstantNoValueEntry);\n PropertyFactory.register(ConstantNoValue);\n PropertyFactory.register(ConstantNoValueInherited);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantNoValue-1.0.0');\n var instanceInherited = PropertyFactory.create('SimpleTest:ConstantNoValueInherited-1.0.0');\n\n expect(instance.get('int').getValue()).to.equal(0);\n expect(instance.get('bool').getValue()).to.equal(false);\n expect(instance.get('string').getValue()).to.equal('');\n expect(instance.get('array').getValues()).to.deep.equal([]);\n expect(instance.get('array_typed').getValues()).to.deep.equal([]);\n expect(instance.get('set').getAsArray()).to.deep.equal([]);\n expect(instance.get('map').getEntriesReadOnly()).to.deep.equal({});\n\n expect(instanceInherited.get('int').getValue()).to.equal(100);\n expect(instanceInherited.get('bool').getValue()).to.equal(true);\n expect(instanceInherited.get('string').getValue()).to.equal('I am a string');\n expect(instanceInherited.get('array').getValues()).to.deep.equal([100, 200]);\n\n let arr = instanceInherited.get('array_typed').getValues();\n expect(arr[0]['num']).to.equal(100);\n expect(arr[0]['string']).to.equal('');\n expect(arr[0]['bool']).to.equal(false);\n expect(arr[1]['num']).to.equal(200);\n expect(arr[1]['string']).to.equal('I am a string 2');\n expect(arr[1]['bool']).to.equal(true);\n\n let set = instanceInherited.get('set').getAsArray();\n\n expect(set[0].get('num').getValue()).to.equal(100);\n expect(set[0].get('string').getValue()).to.equal('');\n expect(set[0].get('bool').getValue()).to.equal(false);\n expect(set[1].get('num').getValue()).to.equal(200);\n expect(set[1].get('string').getValue()).to.equal('I am a string 2');\n expect(set[1].get('bool').getValue()).to.equal(true);\n\n let map = instanceInherited.get('map').getEntriesReadOnly();\n expect(map.key1.get('num').getValue()).to.equal(100);\n expect(map.key1.get('string').getValue()).to.equal('');\n expect(map.key1.get('bool').getValue()).to.equal(false);\n expect(map.key2.get('num').getValue()).to.equal(200);\n expect(map.key2.get('string').getValue()).to.equal('I am a string 2');\n expect(map.key2.get('bool').getValue()).to.equal(true);\n });\n\n describe('#Polymorphic', function() {\n var ConstantPolyBase = {\n typeid: 'SimpleTest:ConstantPolyBase-1.0.0',\n inherits: ['NamedProperty'],\n constants: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n ],\n };\n\n var ConstantPolySub = {\n typeid: 'SimpleTest:ConstantPolySub-1.0.0',\n inherits: 'SimpleTest:ConstantPolyBase-1.0.0',\n constants: [\n { id: 'num', typeid: 'Uint32', value: 222 },\n { id: 'str', typeid: 'String', value: 'Sub' },\n ],\n };\n\n var ConstantPolySubSub = {\n typeid: 'SimpleTest:ConstantPolySubSub-1.0.0',\n inherits: 'SimpleTest:ConstantPolySub-1.0.0',\n constants: [\n { id: 'num', typeid: 'Uint32', value: 333 },\n { id: 'num2', typeid: 'Uint32', value: 111 },\n { id: 'str', typeid: 'String', value: 'SubSub' },\n ],\n };\n\n beforeEach(function() {\n PropertyFactory._clear();\n PropertyFactory.register(ConstantPolyBase);\n PropertyFactory.register(ConstantPolySub);\n PropertyFactory.register(ConstantPolySubSub);\n });\n\n it('should set constant polymorphic values for non-primitive constants', function() {\n var ConstantPolyContainer = {\n typeid: 'SimpleTest:ConstantPolyContainer-1.0.0',\n constants: [\n {\n id: 'polySub', typeid: 'SimpleTest:ConstantPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:ConstantPolySub-1.0.0', value: { num: 333, str: 'PolySub' } },\n },\n {\n id: 'polySubSub', typeid: 'SimpleTest:ConstantPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:ConstantPolySubSub-1.0.0', value: { num: 444, str: 'PolySubSub' } },\n },\n ],\n };\n\n PropertyFactory.register(ConstantPolyContainer);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantPolyContainer-1.0.0');\n expect(instance.get('polySub').get('num').getValue()).to.equal(333);\n expect(instance.get('polySub').get('str').getValue()).to.equal('PolySub');\n\n expect(instance.get('polySubSub').get('num').getValue()).to.equal(444);\n expect(instance.get('polySubSub').get('str').getValue()).to.equal('PolySubSub');\n expect(instance.get('polySubSub').get('num2').getValue()).to.equal(111);\n });\n\n it('should pass when setting a constant typedValue that doesnt have a value.', function() {\n var ConstantPolyNoValueContainer = {\n typeid: 'SimpleTest:ConstantPolyNoValueContainer-1.0.0',\n constants: [{\n id: 'polySub', typeid: 'SimpleTest:ConstantPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:ConstantPolySub-1.0.0' },\n }],\n };\n\n PropertyFactory.register(ConstantPolyNoValueContainer);\n var prop = PropertyFactory.create('SimpleTest:ConstantPolyNoValueContainer-1.0.0');\n\n expect(prop.get('polySub').get('str').value).to.equal('Sub');\n });\n\n it('should fail when setting a constant typedValue that doesnt have a typeid.', function() {\n var ConstantPolyNoTypeIdContainer = {\n typeid: 'SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0',\n constants: [{\n id: 'polySub', typeid: 'SimpleTest:ConstantPolyBase-1.0.0',\n typedValue: { value: { num: 333, str: 'PolySub' } },\n }],\n };\n\n PropertyFactory.register(ConstantPolyNoTypeIdContainer);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0'))\n .to.throw(MSG.FIELD_TYPEID_IS_REQUIRED + 'typedValue SimpleTest:ConstantPolyBase-1.0.0');\n });\n\n it('should set a constant polymorphic value for a non-primitive array', function() {\n var ConstantPolyArrayContainer = {\n typeid: 'SimpleTest:ConstantPolyArrayContainer-1.0.0',\n constants: [\n {\n id: 'array', typeid: 'SimpleTest:ConstantPolyBase-1.0.0', context: 'array', typedValue: [\n { typeid: 'SimpleTest:ConstantPolySub-1.0.0' },\n { typeid: 'SimpleTest:ConstantPolySub-1.0.0', value: { str: 'ArrSub' } },\n { typeid: 'SimpleTest:ConstantPolySubSub-1.0.0', value: { str: 'ArrSubSub' } },\n ],\n },\n ],\n };\n\n PropertyFactory.register(ConstantPolyArrayContainer);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantPolyArrayContainer-1.0.0');\n expect(instance.get('array').get(0).get('num').value).to.equal(222);\n expect(instance.get('array').get(0).get('str').value).to.equal('Sub');\n expect(instance.get('array').get(1).get('num').value).to.equal(222);\n expect(instance.get('array').get(1).get('str').value).to.equal('ArrSub');\n expect(instance.get('array').get(2).get('num').value).to.equal(333);\n expect(instance.get('array').get(2).get('str').value).to.equal('ArrSubSub');\n expect(instance.get('array').get(2).get('num2').value).to.equal(111);\n });\n\n it('should set a constant polymorphic value for a non-primitive set', function() {\n var ConstantPolySetContainer = {\n typeid: 'SimpleTest:ConstantPolySetContainer-1.0.0',\n constants: [\n {\n id: 'set', typeid: 'SimpleTest:ConstantPolyBase-1.0.0', context: 'set', typedValue: [\n { typeid: 'SimpleTest:ConstantPolySub-1.0.0' },\n { typeid: 'SimpleTest:ConstantPolySub-1.0.0', value: { str: 'ArrSub' } },\n { typeid: 'SimpleTest:ConstantPolySubSub-1.0.0', value: { str: 'ArrSubSub' } },\n ],\n },\n ],\n };\n\n PropertyFactory.register(ConstantPolySetContainer);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantPolySetContainer-1.0.0');\n\n expect(instance.get('set').getAsArray().length).to.equal(3);\n expect(instance.get('set').getAsArray()[0].get('num').getValue()).to.equal(222);\n expect(instance.get('set').getAsArray()[0].get('str').getValue()).to.equal('Sub');\n expect(instance.get('set').getAsArray()[1].get('num').getValue()).to.equal(222);\n expect(instance.get('set').getAsArray()[1].get('str').getValue()).to.equal('ArrSub');\n expect(instance.get('set').getAsArray()[2].get('num').getValue()).to.equal(333);\n expect(instance.get('set').getAsArray()[2].get('str').getValue()).to.equal('ArrSubSub');\n expect(instance.get('set').getAsArray()[2].get('num2').getValue()).to.equal(111);\n });\n\n it('should set a constant polymorphic value for a non-primitive map', function() {\n var ConstantPolyMapContainer = {\n typeid: 'SimpleTest:ConstantPolyMapContainer-1.0.0',\n constants: [\n {\n id: 'map', typeid: 'SimpleTest:ConstantPolyBase-1.0.0', context: 'map', typedValue: {\n key1: { typeid: 'SimpleTest:ConstantPolySub-1.0.0' },\n key2: { typeid: 'SimpleTest:ConstantPolySub-1.0.0', value: { str: 'ArrSub' } },\n key3: { typeid: 'SimpleTest:ConstantPolySubSub-1.0.0', value: { str: 'ArrSubSub' } },\n },\n },\n ],\n };\n\n PropertyFactory.register(ConstantPolyMapContainer);\n\n var instance = PropertyFactory.create('SimpleTest:ConstantPolyMapContainer-1.0.0');\n\n expect(instance.get('map').getEntriesReadOnly().key1.get('num').getValue()).to.equal(222);\n expect(instance.get('map').getEntriesReadOnly().key1.get('str').getValue()).to.equal('Sub');\n expect(instance.get('map').getEntriesReadOnly().key2.get('num').getValue()).to.equal(222);\n expect(instance.get('map').getEntriesReadOnly().key2.get('str').getValue()).to.equal('ArrSub');\n expect(instance.get('map').getEntriesReadOnly().key3.get('num').getValue()).to.equal(333);\n expect(instance.get('map').getEntriesReadOnly().key3.get('str').getValue()).to.equal('ArrSubSub');\n expect(instance.get('map').getEntriesReadOnly().key3.get('num2').getValue()).to.equal(111);\n });\n\n it('should fail when setting constant polymorphic values not derived from base type', function() {\n var ConstantPoly = {\n typeid: 'SimpleTest:ConstantPoly-1.0.0',\n constants: [\n { id: 'num', typeid: 'Uint32', value: 111 },\n ],\n };\n\n var ConstantPolyUnderivedContainer = {\n typeid: 'SimpleTest:ConstantPolyUnderivedContainer-1.0.0',\n constants: [\n {\n id: 'poly', typeid: 'SimpleTest:ConstantPolyBase-1.0.0',\n typedValue: { typeid: 'SimpleTest:ConstantPoly-1.0.0', value: { num: 333 } },\n },\n ],\n };\n\n PropertyFactory.register(ConstantPoly);\n PropertyFactory.register(ConstantPolyUnderivedContainer);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:ConstantPolyUnderivedContainer-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + 'SimpleTest:ConstantPoly-1.0.0');\n });\n\n it('should fail when setting a typedValue to a primitive.', function() {\n var DefaultPrimitiveArrayPoly = {\n typeid: 'SimpleTest:DefaultPrimitivePoly-1.0.0',\n constants: [{\n id: 'int', typeid: 'Int32', typedValue: { typeid: 'Int32', value: 123 },\n }],\n };\n\n PropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPrimitivePoly-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + 'int');\n });\n\n it('should fail when setting a typedValue to a primitive array.', function() {\n var DefaultPrimitiveArrayPoly = {\n typeid: 'SimpleTest:DefaultPrimitiveArrayPoly-1.0.0',\n constants: [{\n id: 'array', context: 'array', typeid: 'Int32', typedValue: [{ typeid: 'Int32', value: 123 }],\n }],\n };\n\n PropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPrimitiveArrayPoly-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + 'array');\n });\n\n it('should fail when setting a typedValue to a primitive map.', function() {\n var DefaultPrimitiveMapPoly = {\n typeid: 'SimpleTest:DefaultPrimitiveMapPoly-1.0.0',\n constants: [{\n id: 'map', context: 'map', typeid: 'Int32', typedValue: {\n key1: { typeid: 'Int32', value: 1 },\n key2: { typeid: 'Int32', value: 2 },\n },\n }],\n };\n\n PropertyFactory.register(DefaultPrimitiveMapPoly);\n\n expect(PropertyFactory.create.bind(PropertyFactory, 'SimpleTest:DefaultPrimitiveMapPoly-1.0.0'))\n .to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + 'map');\n });\n });\n });\n\n describe('InstanceOf Type Checking', function() {\n it('Native types pass instanceOf check', function() {\n var contextSingleTypes = ['NodeProperty', 'Enum'];\n var propTypes = ['String', 'Bool', 'Int8', 'Uint8', 'Int16', 'Uint16', 'Int32', 'Int64', 'Uint64', 'Uint32',\n 'Float32', 'Float64', 'Reference'];\n\n var contextSingleTypes = propTypes.concat(['NodeProperty', 'Enum']);\n for (var i = 0; i < contextSingleTypes.length; ++i) {\n var propType = contextSingleTypes[i];\n expect(PropertyFactory.instanceOf(PropertyFactory.create(propType), propType)).to.be.true;\n }\n\n for (var j = 0; j < propTypes.length; ++j) {\n var propType = propTypes[j];\n expect(PropertyFactory.instanceOf(PropertyFactory.create(propType, 'map'), propType, 'map')).to.be.true;\n }\n\n var contextArrayTypes = propTypes.concat(['Enum']);\n for (var k = 0; k < contextArrayTypes.length; ++k) {\n var propType = contextArrayTypes[k];\n expect(PropertyFactory.instanceOf(PropertyFactory.create(propType, 'array'), propType, 'array')).to.be.true;\n }\n });\n\n it('instanceOf check succeeds for schema based properties and native typeids', function() {\n PropertyFactory.register(SimplePoint);\n expect(PropertyFactory.instanceOf(PropertyFactory.create(SimplePoint.typeid), 'BaseProperty')).to.be.true;\n\n const testEnum = {\n inherits: 'Enum',\n typeid: 'test:testEnum-1.0.0',\n properties: [{ id: 'test', value: 1 }],\n };\n PropertyFactory.register(testEnum);\n expect(PropertyFactory.instanceOf(\n PropertyFactory.create(testEnum.typeid, 'array'), 'Enum', 'array')).to.be.true;\n });\n\n it('instanceOf check fails for non native typeids', function() {\n PropertyFactory.register(SimplePoint);\n expect(PropertyFactory.instanceOf(PropertyFactory.create(SimplePoint.typeid), SimplePoint.typeid)).to.be.false;\n });\n });\n});\n\ndescribe('Template registration', function() {\n var ColorID, myPropertyFactory;\n\n before(function() {\n ColorID = require('./validation/goodColorId');\n });\n\n beforeEach(function() {\n this.sinon = sinon.createSandbox();\n this.sinon.stub(console, 'warn');\n myPropertyFactory = new PropertyFactory.constructor();\n });\n\n afterEach(function() {\n this.sinon.restore();\n });\n\n it('should register a versioned template', function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n });\n\n it(\n 'should print a warning when registering an existing template that is not different from what is in the registry',\n function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['1-0-0'].original);\n expect(console.warn.callCount).to.equal(1);\n },\n );\n\n it(\n 'should accept registering a different template from what is in the registry if it is semantically equivalent',\n function() {\n var testPropertyTypeId = 'TEST:array.Float32-0.0.1';\n var ValuesTemplate1 = {\n typeid: testPropertyTypeId,\n inherits: 'NamedProperty',\n properties: [{\n id: 'values',\n context: 'array',\n typeid: 'Float32',\n }],\n };\n\n var ValuesTemplate2 = {\n typeid: testPropertyTypeId,\n inherits: ['NamedProperty'],\n properties: [{\n id: 'values',\n context: 'array',\n typeid: 'Float32',\n length: 0,\n }],\n };\n\n myPropertyFactory.register(ValuesTemplate1);\n expect(myPropertyFactory.register.bind(myPropertyFactory, ValuesTemplate2)).to.not.throw();\n },\n );\n\n it(\n 'should throw when registering an existing template version that is different from what is in the registry',\n function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n expect(myPropertyFactory.register.bind(\n myPropertyFactory,\n ColorID['1-0-0'].modified),\n ).to.throw(Error);\n },\n );\n\n it('should throw when registering an unversioned template', function() {\n expect(myPropertyFactory.register.bind(\n myPropertyFactory,\n require('./validation/badMissingSemverInTypeid'),\n )).to.throw(Error);\n });\n\n it('should throw when registering an invalid versioned template', function() {\n expect(myPropertyFactory.register.bind(\n myPropertyFactory,\n require('./validation/badPrimitiveTypeid'),\n )).to.throw(Error);\n });\n\n it('should throw when registering a primitive property through the public API', function() {\n expect(myPropertyFactory.register.bind(\n myPropertyFactory,\n 'String',\n StringProperty),\n ).to.throw(Error);\n });\n\n it('should register templates out of order without any warnings or errors', function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['1-1-0'].goodSemver);\n myPropertyFactory.register(ColorID['1-0-1'].goodSemver);\n\n myPropertyFactory = new PropertyFactory.constructor();\n\n myPropertyFactory.register(ColorID['1-1-0'].goodSemver);\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['1-0-1'].goodSemver);\n\n expect(console.warn.callCount).to.equal(0);\n });\n\n it('should register a new template with the PATCH version updated', function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['1-0-1'].goodSemver);\n expect(console.warn.callCount).to.equal(0);\n });\n\n it('should register a new template with the MINOR version updated', function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['1-1-0'].goodSemver);\n expect(console.warn.callCount).to.equal(0);\n });\n\n it('should print a warning when registering a new template with the wrong version updated', function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['1-1-0'].badSemver1);\n\n myPropertyFactory = new PropertyFactory.constructor();\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['1-1-0'].badSemver2);\n\n myPropertyFactory = new PropertyFactory.constructor();\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory._registerRemoteTemplate(ColorID['1-1-0'].badSemver1, generateGUID());\n\n myPropertyFactory = new PropertyFactory.constructor();\n myPropertyFactory.register(ColorID['1-1-0'].badSemver2);\n myPropertyFactory._registerRemoteTemplate(ColorID['1-0-0'].original, generateGUID());\n\n expect(console.warn.callCount).to.equal(4);\n });\n\n it('should register a new template with the MAJOR version updated', function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['2-0-0']);\n expect(console.warn.callCount).to.equal(0);\n });\n\n it('should register a versioned remote template', function() {\n myPropertyFactory._registerRemoteTemplate(ColorID['1-0-0'].original, generateGUID());\n });\n\n it(\n 'should pass when registering a versioned remote template that exists' +\n ' in the local registry but is the same from what is locally registered',\n function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory._registerRemoteTemplate(ColorID['1-0-0'].original, generateGUID());\n\n myPropertyFactory = new PropertyFactory.constructor();\n\n myPropertyFactory._registerRemoteTemplate(ColorID['1-0-0'].original, generateGUID());\n myPropertyFactory.register(ColorID['1-0-0'].original);\n expect(console.warn.callCount).to.equal(0);\n },\n );\n\n it(\n 'should fail when registering a versioned remote template that exists' +\n ' in the local registry but differs from what is locally registered',\n function() {\n myPropertyFactory.register(ColorID['1-0-0'].original);\n expect(myPropertyFactory._registerRemoteTemplate.bind(\n myPropertyFactory,\n ColorID['1-0-0'].modified,\n generateGUID()),\n ).to.throw(Error);\n },\n );\n\n it('should throw when registering an unversioned remote template', function() {\n expect(myPropertyFactory._registerRemoteTemplate.bind(\n myPropertyFactory,\n require('./validation/badMissingSemverInTypeid'),\n generateGUID(),\n )).to.throw(Error);\n });\n\n it(\n 'should register a remote template even when there are other versions of the same template in the local registry',\n function() {\n var scope = generateGUID();\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['2-0-0']);\n\n myPropertyFactory._registerRemoteTemplate(ColorID['1-1-0'].goodSemver, scope);\n myPropertyFactory._registerRemoteTemplate(ColorID['1-0-1'].goodSemver, scope);\n expect(console.warn.callCount).to.equal(0);\n },\n );\n\n it(\n 'should register a local template even when there are other versions of the same template in the remote registry',\n function() {\n var scope = generateGUID();\n var scope2 = generateGUID();\n myPropertyFactory._registerRemoteTemplate(ColorID['1-1-0'].goodSemver, scope);\n myPropertyFactory._registerRemoteTemplate(ColorID['1-0-1'].goodSemver, scope);\n myPropertyFactory._registerRemoteTemplate(require('./validation/goodPointId'), scope2);\n myPropertyFactory._registerRemoteTemplate(require('./validation/goodColorPalette'), scope2);\n\n myPropertyFactory.register(ColorID['1-0-0'].original);\n myPropertyFactory.register(ColorID['2-0-0']);\n\n expect(console.warn.callCount).to.equal(0);\n },\n );\n\n it('`registered` event is triggered when registering a template', function(done) {\n var typeid = 'test:schemaReg-1.0.0';\n var registeredEventListener = function(template) {\n expect(template).to.exist;\n expect(template.typeid).to.equal(typeid);\n done();\n };\n\n PropertyFactory.addListener('registered', registeredEventListener);\n\n PropertyFactory.register({\n typeid: typeid,\n });\n // We remove the listener to avoid unnecessary calls for later templates registration.\n PropertyFactory.removeListener('registered', registeredEventListener);\n });\n});\n\ndescribe('Only properties and constants that inherit from NamedProperty can have the \"set\" context', function() {\n beforeEach(() => PropertyFactory._clear());\n afterEach(() => PropertyFactory._clear());\n\n describe('Properties', () => {\n describe('should throw when trying to register a set not inheriting from a namedProperty', () => {\n it('declared in a template', () => {\n var templateChild = {\n typeid: 'adsk.test:anotherTestSchema-1.0.0',\n };\n\n var template = {\n typeid: 'adsk.test:testSchema-1.0.0',\n properties: [\n {\n id: 'something',\n context: 'set',\n typeid: 'adsk.test:anotherTestSchema-1.0.0',\n },\n ],\n };\n\n PropertyFactory.register(template);\n PropertyFactory.register(templateChild);\n\n expect(() => {\n PropertyFactory.create(template.typeid);\n }).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n });\n\n it('declared in a template with two level of inheritance', () => {\n var itemParentTemplate = {\n typeid: 'adsk.test:itemParent-1.0.0',\n };\n\n var itemTemplate = {\n typeid: 'adsk.test:item-1.0.0',\n inherits: 'adsk.test:itemParent-1.0.0',\n };\n\n var template = {\n typeid: 'adsk.test:set-1.0.0',\n properties: [\n {\n id: 'something',\n context: 'set',\n typeid: 'adsk.test:item-1.0.0',\n },\n ],\n };\n\n PropertyFactory.register(itemParentTemplate);\n PropertyFactory.register(itemTemplate);\n PropertyFactory.register(template);\n\n expect(() => {\n PropertyFactory.create(template.typeid);\n }).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n });\n\n it('when passed as a parameter of the create method', () => {\n var template = {\n typeid: 'adsk.test:test-1.0.0',\n };\n\n PropertyFactory.register(template);\n\n expect(() => {\n PropertyFactory.create(template.typeid, 'set');\n }).to.throw(MSG.SET_ONLY_NAMED_PROPS + template.typeid);\n });\n });\n });\n\n describe('Constants', () => {\n describe('should throw when trying to register a set not inheriting from a namedProperty', () => {\n it('declared in a template', () => {\n var templateChild = {\n typeid: 'adsk.test:anotherTestSchema-1.0.0',\n };\n\n var template = {\n typeid: 'adsk.test:testSchema-1.0.0',\n constants: [\n {\n id: 'something',\n context: 'set',\n typeid: 'adsk.test:anotherTestSchema-1.0.0',\n value: 'hello',\n },\n ],\n };\n\n PropertyFactory.register(template);\n PropertyFactory.register(templateChild);\n\n expect(() => {\n PropertyFactory.create(template.typeid);\n }).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n });\n\n it('declared in a template with two level of inheritance', () => {\n var itemParentTemplate = {\n typeid: 'adsk.test:itemParent-1.0.0',\n };\n\n var itemTemplate = {\n typeid: 'adsk.test:item-1.0.0',\n inherits: 'adsk.test:itemParent-1.0.0',\n };\n\n var template = {\n typeid: 'adsk.test:set-1.0.0',\n constants: [\n {\n id: 'something',\n context: 'set',\n typeid: 'adsk.test:item-1.0.0',\n value: 'hello',\n },\n ],\n };\n\n PropertyFactory.register(itemParentTemplate);\n PropertyFactory.register(itemTemplate);\n PropertyFactory.register(template);\n\n expect(() => {\n PropertyFactory.create(template.typeid);\n }).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n });\n var unit = {\n 'annotation': {\n 'description': 'A definite magnitude used as a standard of measurement.',\n 'doc': 'http://docs.adskunits.apiary.io/#introduction/definitions/measurement-units',\n },\n 'typeid': 'autodesk.unit:unit-1.0.0',\n 'constants': [\n {\n 'id': 'name',\n 'typeid': 'String',\n },\n ],\n };\n var quantity = {\n 'annotation': { 'description': 'A quantity typically measured in a particular set of compatible units.' },\n 'typeid': 'autodesk.unit:quantity-1.0.0',\n 'constants': [\n {\n 'id': 'name',\n 'typeid': 'String',\n },\n {\n 'id': 'units',\n 'typeid': 'autodesk.unit:unit-1.0.0',\n 'context': 'array',\n 'typedValue': [],\n 'annotation': { 'description': 'List of all measurement units applicable to the measurable quantity.' },\n },\n ],\n };\n var area = {\n 'annotation': { 'description': 'Area.' },\n 'typeid': 'autodesk.unit.quantity:area-1.0.0',\n 'inherits': ['autodesk.unit:quantity-1.0.0'],\n 'constants': [\n { 'id': 'name', 'value': 'Area' },\n {\n 'id': 'units',\n 'typedValue': [\n { 'typeid': 'autodesk.unit.unit:squareCentimeters-1.0.0' },\n ],\n },\n ],\n };\n var centimeter = {\n 'annotation': { 'description': 'Square centimeters.' },\n 'typeid': 'autodesk.unit.unit:squareCentimeters-1.0.0',\n 'inherits': ['autodesk.unit:unit-1.0.0'],\n 'constants': [\n { 'id': 'name', 'value': 'Square centimeters' },\n ],\n };\n it('@bugfix should support constant which inhirets from a polymorphic array', () => {\n PropertyFactory.register(unit);\n PropertyFactory.register(quantity);\n PropertyFactory.register(area);\n PropertyFactory.register(centimeter);\n var centimeterProp = PropertyFactory.create(centimeter.typeid);\n\n var areaProp = PropertyFactory.create(area.typeid);\n\n expect(areaProp.get('units').get(0).get('name').value).to.equal(centimeterProp.get('name').value);\n });\n });\n });\n});\n\ndescribe('Async validation', function() {\n var TemplateValidator;\n var inheritsFromAsync = async function(child, ancestor) {\n return new Promise(function(resolve, reject) {\n setTimeout(function() {\n try {\n resolve(PropertyFactory.inheritsFrom(child, ancestor));\n } catch (error) {\n reject(error);\n }\n }, 0);\n });\n };\n\n var hasSchemaAsync = async function(typeid) {\n return new Promise(function(resolve, reject) {\n setTimeout(function() {\n resolve(PropertyFactory._has(typeid));\n }, 0);\n });\n };\n\n before(function() {\n TemplateValidator = require('@fluid-experimental/property-changeset').TemplateValidator;\n });\n\n it('can validate asynchronously', function() {\n var templateValidator = new TemplateValidator({\n inheritsFromAsync: inheritsFromAsync,\n hasSchemaAsync: hasSchemaAsync,\n });\n\n var templatePrevious = JSON.parse(JSON.stringify(require('./validation/goodPointId')));\n var template = JSON.parse(JSON.stringify(templatePrevious));\n template.typeid = 'TeamLeoValidation2:PointID-0.9.9';\n return templateValidator.validateAsync(template, templatePrevious).then(function(result) {\n expect(result).property('isValid', false);\n expect(result.errors.length).to.be.at.least(1);\n expect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n });\n });\n\n it('can perform context validation asynchronously', function(done) {\n var templateValidator = new TemplateValidator({\n inheritsFromAsync: inheritsFromAsync,\n hasSchemaAsync: hasSchemaAsync,\n });\n\n // Doesn't inherit from 'NamedProperty'. Will cause an error\n var grandParentSchema = {\n 'typeid': 'test:grandparentschema-1.0.0',\n };\n\n var parentSchema = {\n 'typeid': 'test:parentschema-1.0.0',\n 'inherits': ['test:grandparentschema-1.0.0'],\n };\n\n var childSchema = {\n 'typeid': 'test:childchema-1.0.0',\n properties: [\n {\n id: 'set',\n typeid: 'test:parentschema-1.0.0',\n context: 'set',\n },\n ],\n };\n\n PropertyFactory.register(grandParentSchema);\n PropertyFactory.register(parentSchema);\n\n templateValidator.validateAsync(childSchema).then(function(result) {\n done(new Error('Should not be valid!'));\n }).catch(function(error) {\n expect(error).to.exist;\n done();\n });\n });\n});\n\ndescribe('inheritsFrom() method', () => {\n beforeEach(() => {\n PropertyFactory._clear();\n PropertyFactory.register([\n {\n typeid: 'autodesk.examples:test.set-1.0.0',\n inherits: 'NamedProperty',\n },\n ]);\n });\n\n it('should recognize that the Int8 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Int8', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Uint8 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Uint8', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Int16 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Int16', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Uint16 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Uint16', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Int32 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Int32', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Uint32 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Uint32', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Float32 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Float32', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Int64 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Int64', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Uint64 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Uint64', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Float64 only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Float64', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Bool only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Bool', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Reference only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Reference', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the Enum only inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('Enum', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the String inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('String', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the NodeProperty inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('NodeProperty', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the ContainerProperty inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('ContainerProperty', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the NamedProperty inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('NamedProperty', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the NamedNodeProperty inherits from BaseProperty', () => {\n const result = PropertyFactory.inheritsFrom('NamedNodeProperty', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the NodeProperty inherits from ContainerProperty', () => {\n const result = PropertyFactory.inheritsFrom('NodeProperty', 'ContainerProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the NamedProperty inherits from ContainerProperty', () => {\n const result = PropertyFactory.inheritsFrom('NamedProperty', 'ContainerProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the String inherits from ContainerProperty', () => {\n const result = PropertyFactory.inheritsFrom('String', 'ContainerProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the NamedNodeProperty inherits from NamedProperty', () => {\n const result = PropertyFactory.inheritsFrom('NamedNodeProperty', 'NamedProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the NamedNodeProperty inherits from NodeProperty', () => {\n const result = PropertyFactory.inheritsFrom('NamedNodeProperty', 'NodeProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the test set that inherits from NamedNodeProperty also inherits from BaseProperty',\n () => {\n PropertyFactory._reregister({ typeid: 'autodesk.examples:test.set-1.0.0', inherits: 'NamedNodeProperty' });\n const result = PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'BaseProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the test set that inherits from NamedNodeProperty' +\n ' also inherits from AbstractStaticCollectionProperty',\n () => {\n PropertyFactory._reregister({ typeid: 'autodesk.examples:test.set-1.0.0', inherits: 'NamedNodeProperty' });\n const result = PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0',\n 'AbstractStaticCollectionProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the test set that inherits from NamedNodeProperty also inherits from NodeProperty',\n () => {\n PropertyFactory._reregister({ typeid: 'autodesk.examples:test.set-1.0.0', inherits: 'NamedNodeProperty' });\n const result = PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'NodeProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the test set that inherits from NamedNodeProperty also inherits from NamedProperty',\n () => {\n PropertyFactory._reregister({ typeid: 'autodesk.examples:test.set-1.0.0', inherits: 'NamedNodeProperty' });\n const result = PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'NamedProperty');\n\n expect(result).to.be.true;\n });\n\n it('should recognize that the testSet doesn\\'t inherits from foe', () => {\n const result = PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'foe');\n\n expect(result).to.be.false;\n });\n\n it('should return true if in_templateTypeid = in_baseTypeid', () => {\n const result = PropertyFactory.inheritsFrom(\n 'autodesk.examples:test.set-1.0.0',\n 'autodesk.examples:test.set-1.0.0',\n );\n\n expect(result).to.be.true;\n });\n\n it('should return false if in_templateTypeid = in_baseTypeid but in_options.includeSelf is false', () => {\n const result = PropertyFactory.inheritsFrom(\n 'autodesk.examples:test.set-1.0.0',\n 'autodesk.examples:test.set-1.0.0',\n { includeSelf: false },\n );\n\n expect(result).to.be.false;\n });\n\n describe('Caching', () => {\n beforeEach(() => {\n // add a second schema for the cache tests\n PropertyFactory.register({\n typeid: 'autodesk.examples:test.set-2.0.0',\n inherits: 'NamedProperty',\n });\n });\n\n it('should cache results', () => {\n PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'NamedProperty');\n PropertyFactory.inheritsFrom('autodesk.examples:test.set-2.0.0', 'NamedProperty');\n\n const expectedResults = {\n 'autodesk.examples:test.set-1.0.0': {\n BaseProperty: true,\n AbstractStaticCollectionProperty: true,\n NamedProperty: true,\n },\n 'autodesk.examples:test.set-2.0.0': {\n BaseProperty: true,\n AbstractStaticCollectionProperty: true,\n NamedProperty: true,\n },\n };\n\n expect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n });\n\n it('should refresh the cache when _reregister() is called', () => {\n PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'NamedProperty');\n\n PropertyFactory._reregister({ typeid: 'autodesk.examples:test.set-1.0.0', inherits: 'NodeProperty' });\n expect(PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'NodeProperty')).to.be.true;\n\n PropertyFactory._reregister({ typeid: 'autodesk.examples:test.set-2.0.0', inherits: 'NodeProperty' });\n expect(PropertyFactory.inheritsFrom('autodesk.examples:test.set-2.0.0', 'NodeProperty')).to.be.true;\n\n const expectedResults = {\n 'autodesk.examples:test.set-1.0.0': {\n BaseProperty: true,\n AbstractStaticCollectionProperty: true,\n NodeProperty: true,\n },\n 'autodesk.examples:test.set-2.0.0': {\n BaseProperty: true,\n AbstractStaticCollectionProperty: true,\n NodeProperty: true,\n },\n };\n\n expect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n });\n\n it('should flush the cache when _clear() is called', () => {\n expect(PropertyFactory.inheritsFrom('autodesk.examples:test.set-1.0.0', 'NamedProperty')).to.be.true;\n expect(PropertyFactory.inheritsFrom('autodesk.examples:test.set-2.0.0', 'NamedProperty')).to.be.true;\n\n PropertyFactory._clear();\n expect(PropertyFactory._inheritanceCache).to.be.empty;\n });\n });\n});\n\ndescribe('Remote template scope collection', () => {\n var ColorID;\n var scope = () => PropertyFactory._remoteScopedAndVersionedTemplates;\n\n before(() => {\n ColorID = require('./validation/goodColorId');\n });\n\n beforeEach(() => {\n PropertyFactory._clear();\n });\n\n it('should collect registered remote templates in the scope.', () => {\n const scopeGuid = generateGUID();\n const templateA = Object.assign({}, ColorID['1-0-0'].original, { typeid: 'testA:ColorID-1.0.0' });\n const templateB = Object.assign({}, ColorID['1-0-0'].original, { typeid: 'testB:ColorID-1.0.0' });\n\n PropertyFactory._registerRemoteTemplate(templateA, scopeGuid);\n PropertyFactory._registerRemoteTemplate(templateB, scopeGuid);\n\n expect(scope().getCount()).to.be.equal(1);\n expect(scope().has(scopeGuid)).to.be.true;\n expect(scope().item(scopeGuid).getCount()).to.be.equal(2);\n\n expect(scope().item(scopeGuid).has('testA:ColorID')).to.be.true;\n expect(scope().item(scopeGuid).item('testA:ColorID').getKeys())\n .to.have.members(['1.0.0']);\n\n expect(scope().item(scopeGuid).has('testB:ColorID')).to.be.true;\n expect(scope().item(scopeGuid).item('testB:ColorID').getKeys())\n .to.have.members(['1.0.0']);\n });\n\n it('should remove a specific scope from the scope collection when _removeScope is called.', () => {\n const scopeGuidA = generateGUID();\n const scopeGuidB = generateGUID();\n const templateA = Object.assign({}, ColorID['1-0-0'].original, { typeid: 'testA:ColorID-1.0.0' });\n const templateB = Object.assign({}, ColorID['1-0-0'].original, { typeid: 'testB:ColorID-1.0.0' });\n\n PropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n PropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n expect(scope().getCount()).to.be.equal(2);\n expect(scope().has(scopeGuidA)).to.be.true;\n expect(scope().has(scopeGuidB)).to.be.true;\n\n PropertyFactory._removeScope(scopeGuidA);\n\n expect(scope().getCount()).to.be.equal(1);\n expect(scope().has(scopeGuidA)).to.be.false;\n expect(scope().has(scopeGuidB)).to.be.true;\n });\n\n it('should be able to get a specific template from the scope collection.', () => {\n const scopeGuidA = generateGUID();\n const scopeGuidB = generateGUID();\n const templateA = Object.assign({}, ColorID['1-0-0'].original, { typeid: 'testA:ColorID-1.0.0' });\n const templateB = Object.assign({}, ColorID['1-0-0'].original, { typeid: 'testB:ColorID-1.0.0' });\n\n PropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n PropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n expect(PropertyFactory._get('testA:ColorID-1.0.0', undefined, scopeGuidA).typeid)\n .to.be.equal('testA:ColorID-1.0.0');\n\n expect(PropertyFactory._get('testB:ColorID-1.0.0', undefined, scopeGuidB).typeid)\n .to.be.equal('testB:ColorID-1.0.0');\n });\n\n it('should be cleared when the PropertyFactory is.', () => {\n const scopeGuid = generateGUID();\n const template = Object.assign({}, ColorID['1-0-0'].original, { typeid: 'test:ColorID-1.0.0' });\n\n PropertyFactory._registerRemoteTemplate(template, scopeGuid);\n PropertyFactory._clear();\n\n expect(scope().getCount()).to.be.equal(0);\n });\n});\n"]}
1
+ {"version":3,"file":"propertyFactory.spec.js","sourceRoot":"","sources":["../../src/test/propertyFactory.spec.js"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* globals sinon */\n\nconst { MSG } = require(\"@fluid-experimental/property-common\").constants;\nconst { generateGUID } = require(\"@fluid-experimental/property-common\").GuidUtils;\nconst { PropertyFactory } = require(\"..\");\nconst { StringProperty } = require(\"../properties/stringProperty\");\n\ndescribe(\"PropertyFactory\", function () {\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t});\n\n\tlet SimplePoint = {\n\t\ttypeid: \"SimpleTest:PointID-1.0.0\",\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tid: \"position\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"x\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"y\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"z\",\n\t\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"normal\",\n\t\t\t\ttypeid: \"Float32\",\n\t\t\t\tcontext: \"array\",\n\t\t\t\tsize: 3,\n\t\t\t},\n\t\t],\n\t};\n\n\tit(\"is not a function.\", function (done) {\n\t\texpect(PropertyFactory).to.not.be.a(\"function\");\n\t\texpect(PropertyFactory).to.be.an(\"object\");\n\t\tdone();\n\t});\n\n\tit(\"should validate a simple file\", function () {\n\t\tvar testFile1 = require(\"./validation/goodPointId\");\n\t\tvar result = PropertyFactory.validate(testFile1);\n\t\texpect(result.isValid).to.equal(true);\n\t});\n\n\tit(\"should fail an invalid file\", function () {\n\t\tvar testFile1 = require(\"./validation/badPrimitiveTypeid\");\n\t\tvar result = PropertyFactory.validate(testFile1);\n\t\texpect(result.isValid).to.equal(false);\n\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\texpect(result.unresolvedTypes.length).to.equal(1);\n\t});\n\n\tit(\"should create and initialize a property set\", function () {\n\t\tPropertyFactory.register(SimplePoint);\n\t\tvar goodPointTest = PropertyFactory.create(\"SimpleTest:PointID-1.0.0\");\n\t\texpect(goodPointTest.resolvePath(\"normal\")._dataArrayRef._buffer.length).to.equal(3);\n\n\t\tvar goodPoint = PropertyFactory.create(\"SimpleTest:PointID-1.0.0\", null, {\n\t\t\tposition: {\n\t\t\t\tx: 0.0,\n\t\t\t\ty: 1.0,\n\t\t\t\tz: 2.0,\n\t\t\t},\n\t\t\tnormal: [1.23, 2.3399999141693115, 3.45],\n\t\t});\n\n\t\texpect(goodPoint.resolvePath(\"normal\").get(1)).to.equal(2.3399999141693115);\n\t});\n\n\tit(\"should throw on unknown Template\", function () {\n\t\tvar insertUnknownPropertyChangeSet = {\n\t\t\tinsert: {\n\t\t\t\tUnknownProperty: {\n\t\t\t\t\ttest: {\n\t\t\t\t\t\tString: {\n\t\t\t\t\t\t\tunknownStringProperty: \"Hi There!\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t\tvar root = PropertyFactory.create(\"NodeProperty\");\n\t\texpect(function () {\n\t\t\troot.deserialize(insertUnknownPropertyChangeSet);\n\t\t}).to.throw();\n\t});\n\n\tit(\"should throw when trying to create with undefined as typeid\", function () {\n\t\tvar creationFunction = function () {\n\t\t\tPropertyFactory.create(undefined);\n\t\t};\n\t\texpect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + \"undefined\");\n\t});\n\n\tit(\"should throw when trying to create with a number as typeid\", function () {\n\t\tvar creationFunction = function () {\n\t\t\tPropertyFactory.create(1);\n\t\t};\n\t\texpect(creationFunction).to.throw(MSG.UNKNOWN_TYPEID_SPECIFIED + \"1\");\n\t});\n\n\tit(\"should support the creation of a polymorphic collection\", function () {\n\t\tvar testSet = {\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedProperty\",\n\t\t};\n\t\tPropertyFactory.register(testSet);\n\n\t\tvar testTemplate = {\n\t\t\ttypeid: \"autodesk.examples:polymorphic.collection.test-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{ id: \"testMap\", context: \"map\" },\n\t\t\t\t{ id: \"testSet\", typeid: \"autodesk.examples:test.set-1.0.0\", context: \"set\" },\n\t\t\t\t// TODO: add array as soon as polymorphic arrays are supported: {id: 'testArray', context:'array' }\n\t\t\t],\n\t\t};\n\n\t\tPropertyFactory._reregister(testTemplate);\n\t\tvar instance = PropertyFactory.create(\n\t\t\t\"autodesk.examples:polymorphic.collection.test-1.0.0\",\n\t\t);\n\n\t\texpect(instance._properties.testMap).to.exist;\n\t\texpect(instance._properties.testMap.getContext()).to.equal(\"map\");\n\t\texpect(instance._properties.testMap.getTypeid()).to.equal(\"BaseProperty\");\n\n\t\texpect(instance._properties.testSet).to.exist;\n\t\texpect(instance._properties.testSet.getContext()).to.equal(\"set\");\n\t\texpect(\n\t\t\tPropertyFactory.inheritsFrom(instance._properties.testSet.getTypeid(), \"NamedProperty\"),\n\t\t).to.equal(true);\n\t});\n\n\tit(\"should return correct template based on typeid\", function () {\n\t\tPropertyFactory.register(SimplePoint);\n\t\tvar returnedTemplate = JSON.parse(\n\t\t\tJSON.stringify(PropertyFactory.getTemplate(SimplePoint.typeid)),\n\t\t);\n\t\tif (!SimplePoint.annotation) {\n\t\t\tdelete returnedTemplate.annotation;\n\t\t}\n\t\tif (!SimplePoint.length) {\n\t\t\tdelete returnedTemplate.length;\n\t\t}\n\t\tdelete returnedTemplate._serializedParams;\n\n\t\texpect(returnedTemplate).to.deep.equal(SimplePoint);\n\t\texpect(PropertyFactory.getTemplate(\"Adsk.Library:Colors.ColorPalette-1.0.0\")).to.be\n\t\t\t.undefined;\n\t});\n\n\tdescribe(\"Inheritance\", function () {\n\t\tbeforeEach(function () {\n\t\t\tPropertyFactory._clear();\n\n\t\t\tvar Shape = {\n\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"size\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"width\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t\t\t{ id: \"height\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"border\",\n\t\t\t\t\t\t\t\t\t\tproperties: [{ id: \"weight\", typeid: \"Int32\" }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(Shape);\n\n\t\t\tvar Color = {\n\t\t\t\ttypeid: \"SimpleTest:Color-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"stroke\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"fill\",\n\t\t\t\t\t\tproperties: [{ id: \"rgb\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(Color);\n\n\t\t\tvar EntryWithOverriddenDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t};\n\t\t\tPropertyFactory.register(EntryWithOverriddenDefaults);\n\n\t\t\tvar EntryWithOverriddenPolyDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:EntryWithOverriddenDefaults-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t};\n\t\t\tPropertyFactory.register(EntryWithOverriddenPolyDefaults);\n\n\t\t\tvar DynamicWithOverriddenDefaults = {\n\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tPropertyFactory.register(DynamicWithOverriddenDefaults);\n\t\t});\n\n\t\tit(\"should allow the creation of an inherited type\", function () {\n\t\t\tvar Square = {\n\t\t\t\ttypeid: \"SimpleTest:Square-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"area\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(Square);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:Square-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t});\n\n\t\tit(\"should inherit constants\", function () {\n\t\t\tvar ShapeWithConstant = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithConstant-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"originX\", typeid: \"Int8\", value: 10 }],\n\t\t\t};\n\n\t\t\tvar SquareWithConstant = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithConstant-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeWithConstant-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"originY\", typeid: \"Int8\", value: 20 }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithConstant);\n\t\t\tPropertyFactory.register(SquareWithConstant);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:ShapeWithConstant-1.0.0\");\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithConstant-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(3);\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"originX\")).to.exist;\n\t\t\texpect(square.get(\"originY\")).to.exist;\n\n\t\t\texpect(square.get(\"originX\").getValue()).to.equal(10);\n\t\t\texpect(square.get(\"originY\").getValue()).to.equal(20);\n\t\t});\n\n\t\tit(\"Will complete constants definition from inherited template\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: [\"hello\"],\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tannotation: { description: \"The second constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest:template-2.0.0\",\n\t\t\t\tinherits: \"consttest:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\tvalue: [\"hello2\"],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(template1);\n\n\t\t\tvar tested = PropertyFactory.create(\"consttest:template-2.0.0\");\n\t\t\texpect(tested._getChildrenCount()).to.equal(2);\n\t\t\texpect(tested.get(\"const1\")).to.exist;\n\t\t\texpect(tested.get(\"const2\")).to.exist;\n\t\t\texpect(tested.get(\"const1\").getValue()).to.equal(\"hello2\");\n\t\t\texpect(tested.get(\"const2\").getValues()).to.deep.equal([\"hello2\"]);\n\t\t});\n\n\t\tit(\"Will throw because typeid is still missing at creation\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest2:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest2:template-2.0.0\",\n\t\t\t\tinherits: \"consttest2:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.create(\"consttest2:template-2.0.0\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t'PF-043: Field \"typeid\" is required.' +\n\t\t\t\t\t\t' It is the \"typeid\" of the resulting PropertySets Template.const1.typeid',\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"Will throw because of a type mismatch when creating template\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest3:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar template2 = {\n\t\t\t\ttypeid: \"consttest3:template-2.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"Uint8\",\n\t\t\t\t\t\tvalue: 3,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest3:template-3.0.0\",\n\t\t\t\tinherits: [\"consttest3:template-2.0.0\", \"consttest3:template-1.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template2);\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.create(\"consttest3:template-3.0.0\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\"PF-001: Id already exists: const1\");\n\t\t\t}\n\t\t});\n\n\t\tit(\"Will fail if inheriting constants with the same id from multiple templates\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest4:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\ttypeid: \"Uint8\",\n\t\t\t\t\t\tvalue: 5,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar template2 = {\n\t\t\t\ttypeid: \"consttest4:template-2.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"bye\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest4:template-3.0.0\",\n\t\t\t\tinherits: [\"consttest4:template-1.0.0\", \"consttest4:template-2.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const2\",\n\t\t\t\t\t\tvalue: 14,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(template2);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(PropertyFactory, \"consttest4:template-3.0.0\"),\n\t\t\t).to.throw(MSG.OVERWRITING_ID + \"const1\");\n\t\t});\n\n\t\tit(\"Will allow to register the same inherited template again\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest5:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest5:template-2.0.0\",\n\t\t\t\tinherits: \"consttest5:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(template1);\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\tPropertyFactory.register(testedTemplate);\n\t\t});\n\n\t\tit(\"Will not allow to register a different template under the same id\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest6:template-2.0.0\",\n\t\t\t\tinherits: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate2 = {\n\t\t\t\ttypeid: \"consttest6:template-2.0.0\",\n\t\t\t\tinherits: \"consttest6:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\tvalue: \"hello3\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.register(template1);\n\t\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\t\tPropertyFactory.register(testedTemplate2);\n\t\t\t\tthrow new Error(\"Should have failed\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t\"PF-004: Template structures do not match for typeid: consttest6:template-2.0.0\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"Wont register if constant id is missing\", function () {\n\t\t\tvar template1 = {\n\t\t\t\ttypeid: \"consttest7:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"const1\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\tannotation: { description: \"The first constant.\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar testedTemplate = {\n\t\t\t\ttypeid: \"consttest7:template-2.0.0\",\n\t\t\t\tinherits: \"consttest7:template-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tvalue: \"hello2\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tPropertyFactory.register(template1);\n\t\t\t\tPropertyFactory.register(testedTemplate);\n\t\t\t\tthrow new Error(\"Should have failed\");\n\t\t\t} catch (error) {\n\t\t\t\texpect(error.message).to.include(\n\t\t\t\t\t\"PF-050: Failed to register typeid = consttest7:template-2.0.0\",\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tit(\"should allow inheriting from schemas with no properties defined\", function () {\n\t\t\tvar ShapeAbstract1 = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeAbstract1-1.0.0\",\n\t\t\t};\n\n\t\t\tvar ShapeAbstract2 = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeAbstract2-1.0.0\",\n\t\t\t\tproperties: [{ id: \"area\", properties: [] }, { id: \"color\" }],\n\t\t\t};\n\n\t\t\tvar SquareAbstract = {\n\t\t\t\ttypeid: \"SimpleTest:SquareAbstract-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeAbstract1-1.0.0\", \"SimpleTest:ShapeAbstract2-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"originX\", properties: [] },\n\t\t\t\t\t{ id: \"originY\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"color\",\n\t\t\t\t\t\tproperties: [{ id: \"rgb\", typeid: \"Int64\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeAbstract1);\n\t\t\tPropertyFactory.register(ShapeAbstract2);\n\t\t\tPropertyFactory.register(SquareAbstract);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareAbstract-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t\texpect(square.get(\"color\")).to.exist;\n\t\t\texpect(square.get(\"originX\")).to.exist;\n\t\t\texpect(square.get(\"originY\")).to.exist;\n\t\t\texpect(square.get([\"color\", \"rgb\"])).to.exist;\n\t\t});\n\n\t\tit(\"should allow multiple inheritance\", function () {\n\t\t\tvar SquareWithColor = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithColor-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Color-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"area\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(SquareWithColor);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithColor-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"area\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"stroke\")).to.exist;\n\t\t\texpect(square.get(\"fill\")).to.exist;\n\t\t});\n\n\t\tit(\"should fail when inheriting from multiple types that have the same property name\", function () {\n\t\t\tvar Point = {\n\t\t\t\ttypeid: \"SimpleTest:Point-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"x\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{ id: \"y\", typeid: \"Float32\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ShapeWithInheritanceError = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithInheritanceError-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Point-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"weight\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(Point);\n\t\t\tPropertyFactory.register(ShapeWithInheritanceError);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\"SimpleTest:ShapeWithInheritanceError-1.0.0\",\n\t\t\t\t),\n\t\t\t).to.throw(MSG.OVERWRITING_ID + \"props\");\n\t\t});\n\n\t\tit(\"should fail when overriding an inherited typed property\", function () {\n\t\t\tvar ShapeWithOverridesError = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverridesError-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [{ id: \"props\", typeid: \"Float32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithOverridesError);\n\n\t\t\texpect(\n\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\"SimpleTest:ShapeWithOverridesError-1.0.0\",\n\t\t\t\t),\n\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t});\n\n\t\tit(\"should allow extending inherited nested untyped properties\", function () {\n\t\t\tvar SquareWithOverrides = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithOverrides-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\", \"SimpleTest:Color-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"normal\", typeid: \"Float32\", context: \"array\", size: 3 },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"z\", typeid: \"Float32\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"size\",\n\t\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t\t{ id: \"unit\", typeid: \"Int32\" },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"border\",\n\t\t\t\t\t\t\t\t\t\tproperties: [{ id: \"color\", typeid: \"String\" }],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"fill\",\n\t\t\t\t\t\tproperties: [{ id: \"unit\", typeid: \"Int32\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(SquareWithOverrides);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithOverrides-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get(\"normal\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\t\t\texpect(square.get(\"stroke\")).to.exist;\n\t\t\texpect(square.get(\"fill\")).to.exist;\n\n\t\t\texpect(square.get(\"props\")._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get([\"props\", \"x\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"y\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"z\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"size\"])._getChildrenCount()).to.equal(4);\n\t\t\texpect(square.get([\"props\", \"size\", \"unit\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"border\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"width\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"height\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"size\", \"border\"])._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"props\", \"size\", \"border\", \"color\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\", \"border\", \"weight\"])).to.exist;\n\n\t\t\texpect(square.get(\"fill\")._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"fill\", \"rgb\"])).to.exist;\n\t\t\texpect(square.get([\"fill\", \"unit\"])).to.exist;\n\t\t});\n\n\t\tit(\"should support more than one level of inheritance\", function () {\n\t\t\tvar ShapeWithArea = {\n\t\t\t\ttypeid: \"SimpleTest:ShapeWithArea-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:Shape-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"area\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"length\", typeid: \"Float32\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar SquareWithArea = {\n\t\t\t\ttypeid: \"SimpleTest:SquareWithArea-1.0.0\",\n\t\t\t\tinherits: [\"SimpleTest:ShapeWithArea-1.0.0\"],\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"normal\", typeid: \"String\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"props\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"color\", typeid: \"String\" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"area\",\n\t\t\t\t\t\t\t\tproperties: [{ id: \"unit\", typeid: \"String\" }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ShapeWithArea);\n\t\t\tPropertyFactory.register(SquareWithArea);\n\n\t\t\tvar square = PropertyFactory.create(\"SimpleTest:SquareWithArea-1.0.0\");\n\n\t\t\texpect(square._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get(\"normal\")).to.exist;\n\t\t\texpect(square.get(\"props\")).to.exist;\n\n\t\t\texpect(square.get(\"props\")._getChildrenCount()).to.equal(5);\n\t\t\texpect(square.get([\"props\", \"x\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"y\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"size\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"color\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"area\"])).to.exist;\n\n\t\t\texpect(square.get([\"props\", \"area\"])._getChildrenCount()).to.equal(2);\n\t\t\texpect(square.get([\"props\", \"area\", \"unit\"])).to.exist;\n\t\t\texpect(square.get([\"props\", \"area\", \"length\"])).to.exist;\n\t\t});\n\n\t\tit('should work with properties named \"length\"', function () {\n\t\t\tvar DefaultInitialValue = {\n\t\t\t\ttypeid: \"autodesk.product:components.physicalProperties-0.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"mass\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"value\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"unit\",\n\t\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"boundingBox\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"length\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"width\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"height\",\n\t\t\t\t\t\t\t\ttypeid: \"Float64\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"unit\",\n\t\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"material\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"Specialized component storing physical properties computed from a model.\",\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultInitialValue);\n\n\t\t\tvar prop = PropertyFactory.create(\n\t\t\t\t\"autodesk.product:components.physicalProperties-0.0.0\",\n\t\t\t\tnull,\n\t\t\t\t{\n\t\t\t\t\tmass: {\n\t\t\t\t\t\tvalue: 1.2,\n\t\t\t\t\t\tunit: \"units\",\n\t\t\t\t\t},\n\t\t\t\t\tboundingBox: {\n\t\t\t\t\t\tlength: 1.2,\n\t\t\t\t\t\twidth: 1.4,\n\t\t\t\t\t\theight: 34.2,\n\t\t\t\t\t\tunit: \"units\",\n\t\t\t\t\t},\n\t\t\t\t\tmaterial: \"ABS Plastic\",\n\t\t\t\t},\n\t\t\t);\n\n\t\t\texpect(prop.get(\"boundingBox\").get(\"length\").value).to.equal(1.2);\n\t\t});\n\n\t\tdescribe(\"Overriding default values\", function () {\n\t\t\tit(\"should allow overriding default values\", function () {\n\t\t\t\tvar MapNestedWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SetNestedWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 1 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1\", \"array_string_2\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string_poly\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"solid\", value: 1 },\n\t\t\t\t\t\t\t\t{ id: \"dashed\", value: 2 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: \"solid\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: { string: \"untyped_string\", num: 1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 1,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: 1,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_poly_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_poly_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey1_1: { string: \"map_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\tkey1_3: { string: \"map_nested_1_string_3\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_2\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_poly_string_1\" },\n\t\t\t\t\t\t\t\t{ string: \"set_poly_string_1\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithOverriddenDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithOverriddenDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 2 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1_inherited\", \"array_string_2_inherited\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_1_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"solid\", value: 1 },\n\t\t\t\t\t\t\t\t{ id: \"dashed\", value: 2 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: \"dashed\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvalue: { string: \"untyped_string_inherited\", num: 2 },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 2,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: 2,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: { string: \"map_string_2_inherited\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey2_2: { string: \"map_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t\tkey2_3: { string: \"map_nested_2_string_3_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_string_2_inherited\" },\n\t\t\t\t\t\t\t\t{ string: \"set_string_3_inherited\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenDefaults-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(MapNestedWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(SetNestedWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(ShapeWithOverriddenDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithOverriddenDefaults);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:SquareWithOverriddenDefaults-1.0.0\",\n\t\t\t\t);\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(13);\n\t\t\t\texpect(instance.resolvePath(\"num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()).and.eql([\n\t\t\t\t\t\"array_string_1_inherited\",\n\t\t\t\t\t\"array_string_2_inherited\",\n\t\t\t\t]);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"enum\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"untyped.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"untyped.string\").getValue()).and.eql(\n\t\t\t\t\t\"untyped_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"template.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"template.dynamic.dynamic_string\").getValue()).and.eql(\n\t\t\t\t\t\"dynamic_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key2).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key3).to.equal(3);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_poly\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_poly\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_nest\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getIds().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_3_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getIds().length,\n\t\t\t\t).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_3_string_1_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_nest\").getIds().length).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_nest\").getAsArray()[0].get(\"set_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_1_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_2_inherited\");\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding default values when typeid is different\", function () {\n\t\t\t\tvar ShapeWithDiffTypeidDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypeidDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int32\", value: 2 }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypeidDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypeidDefaults);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidDefaults-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding default values when context is different\", function () {\n\t\t\t\tvar ShapeWithDiffContextDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffContextDefaults = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffContextDefaults-1.0.0\"],\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Int8\", value: [1, 2], context: \"array\" }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffContextDefaults);\n\t\t\t\tPropertyFactory.register(SquareWithDiffContextDefaults);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffContextDefaults-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Overriding constants\", function () {\n\t\t\tit(\"should allow overriding constants\", function () {\n\t\t\t\tvar EntryWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar EntryWithOverriddenPolyConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:EntryWithOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar DynamicWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 1 }],\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar MapNestedWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SetNestedWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nested\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 1 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1\", \"array_string_2\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string_poly\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 1,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: 1,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_poly_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_poly_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey1_1: { string: \"map_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\tkey1_3: { string: \"map_nested_1_string_3\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_2\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_poly_string_1\" },\n\t\t\t\t\t\t\t\t{ string: \"set_poly_string_1\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_1_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_1\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_3_string_2\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"num\", typeid: \"Int8\", value: 2 },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t\t\tvalue: [\"array_string_1_inherited\", \"array_string_2_inherited\"],\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_1_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_poly_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DynamicWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tnum: 2,\n\t\t\t\t\t\t\t\tdynamic: { dynamic_string: \"dynamic_string_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_primitive\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: 2,\n\t\t\t\t\t\t\t\tkey3: 3,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: { string: \"map_string_2_inherited\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3_inherited\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"map_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:MapNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey2_2: { string: \"map_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t\tkey2_3: { string: \"map_nested_2_string_3_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\tmap_nested: {\n\t\t\t\t\t\t\t\t\t\tkey3_1: { string: \"map_nested_3_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{ string: \"set_string_2_inherited\" },\n\t\t\t\t\t\t\t\t{ string: \"set_string_3_inherited\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_2_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { string: \"set_poly_string_3_inherited\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set_nest\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:SetNestedWithOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tset_nested: [\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_1_inherited\" },\n\t\t\t\t\t\t\t\t\t\t{ string: \"set_nested_2_string_2_inherited\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(EntryWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(EntryWithOverriddenPolyConstants);\n\t\t\t\tPropertyFactory.register(DynamicWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(MapNestedWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SetNestedWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(ShapeWithOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SquareWithOverriddenConstants);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:SquareWithOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(11);\n\t\t\t\texpect(instance.resolvePath(\"num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()).and.eql([\n\t\t\t\t\t\"array_string_1_inherited\",\n\t\t\t\t\t\"array_string_2_inherited\",\n\t\t\t\t]);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array_poly\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_poly_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"template.num\").getValue()).and.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"template.dynamic.dynamic_string\").getValue()).and.eql(\n\t\t\t\t\t\"dynamic_string_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key2).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"map_primitive\").getEntriesReadOnly().key3).to.equal(3);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_poly\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_poly\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"map_nest\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getIds().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray().length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key2.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_2_string_3_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getIds().length,\n\t\t\t\t).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"map_nest\")\n\t\t\t\t\t\t.getEntriesReadOnly()\n\t\t\t\t\t\t.key3.get(\"map_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"map_nested_3_string_1_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_poly\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_poly\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_poly_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set_nest\").getIds().length).to.equal(1);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set_nest\").getAsArray()[0].get(\"set_nested\").getIds()\n\t\t\t\t\t\t.length,\n\t\t\t\t).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_1_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance\n\t\t\t\t\t\t.resolvePath(\"set_nest\")\n\t\t\t\t\t\t.getAsArray()[0]\n\t\t\t\t\t\t.get(\"set_nested\")\n\t\t\t\t\t\t.getAsArray()[1]\n\t\t\t\t\t\t.get(\"string\")\n\t\t\t\t\t\t.getValue(),\n\t\t\t\t).to.equal(\"set_nested_2_string_2_inherited\");\n\t\t\t});\n\n\t\t\tit(\"should allow overriding constants with typed values\", function () {\n\t\t\t\tvar EntryWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"entry_string\" }],\n\t\t\t\t};\n\n\t\t\t\tvar EntryWithTypedOverriddenPolyConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"entry_string\" },\n\t\t\t\t\t\t{ id: \"name\", typeid: \"String\", value: \"entry2\" },\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry1\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry2\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\tvalue: [{ string: \"entry_string\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\tkey1: { string: \"map_string_1\" },\n\t\t\t\t\t\t\t\tkey3: { string: \"map_string_3\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\tvalue: [{ string: \"set_string_1\" }, { string: \"set_string_1\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithTypedOverriddenConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithTypedOverriddenConstants-1.0.0\"],\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry1\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_1\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"entry2\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { string: \"entry_string_2\", name: \"entry2\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"entry_string_1_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"entry_string_1\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"entry_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"entry_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"map_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"map_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"map_string_3_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"map_string_3\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"set_string_2_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"set_string_2\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\t\tstring: \"set_string_3_inherited\",\n\t\t\t\t\t\t\t\t\t\tname: \"set_string_3\",\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(EntryWithTypedOverriddenConstants);\n\t\t\t\tPropertyFactory.register(EntryWithTypedOverriddenPolyConstants);\n\t\t\t\tPropertyFactory.register(ShapeWithTypedOverriddenConstants);\n\t\t\t\tPropertyFactory.register(SquareWithTypedOverriddenConstants);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:SquareWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\n\t\t\t\texpect(instance._getChildrenCount()).to.equal(5);\n\t\t\t\texpect(instance.resolvePath(\"entry1\").getTypeid()).to.eql(\n\t\t\t\t\t\"SimpleTest:EntryWithTypedOverriddenConstants-1.0.0\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"entry1.string\").getValue()).to.eql(\"entry_string_1\");\n\t\t\t\texpect(instance.resolvePath(\"entry2\").getTypeid()).to.eql(\n\t\t\t\t\t\"SimpleTest:EntryWithTypedOverriddenPolyConstants-1.0.0\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"entry2.name\").getValue()).to.eql(\"entry2\");\n\t\t\t\texpect(instance.resolvePath(\"entry2.string\").getValue()).to.eql(\"entry_string_2\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues().length).to.eql(2);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[0].name).to.eql(\"entry_string_1\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[0].string).to.eql(\n\t\t\t\t\t\"entry_string_1_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[1].name).to.eql(\"entry_string_2\");\n\t\t\t\texpect(instance.resolvePath(\"array\").getValues()[1].string).to.eql(\n\t\t\t\t\t\"entry_string_2_inherited\",\n\t\t\t\t);\n\t\t\t\texpect(instance.resolvePath(\"map\").getIds().length).to.equal(2);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"name\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_2_inherited\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"name\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"map\").getEntriesReadOnly().key3.get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"map_string_3_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getIds().length).to.equal(2);\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[0].get(\"name\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_2\",\n\t\t\t\t);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set\").getAsArray()[0].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_string_2_inherited\");\n\t\t\t\texpect(instance.resolvePath(\"set\").getAsArray()[1].get(\"name\").getValue()).to.equal(\n\t\t\t\t\t\"set_string_3\",\n\t\t\t\t);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.resolvePath(\"set\").getAsArray()[1].get(\"string\").getValue(),\n\t\t\t\t).to.equal(\"set_string_3_inherited\");\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants when typeid is different\", function () {\n\t\t\t\tvar ShapeWithDiffTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 2 }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypeidConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypeidConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants when context is different\", function () {\n\t\t\t\tvar ShapeWithDiffContextConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffContextConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffContextConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffContextConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffContextConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int8\", value: [1, 2], context: \"array\" }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ShapeWithDiffContextConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffContextConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffContextConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.OVERRIDEN_PROP_MUST_HAVE_SAME_FIELD_VALUES_AS_BASE_TYPE);\n\t\t\t});\n\n\t\t\tit(\"should not allow overriding constants with a typedValue that does not inherit from base type\", function () {\n\t\t\t\tvar Type1 = {\n\t\t\t\t\ttypeid: \"SimpleTest:Type1-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar Type2 = {\n\t\t\t\t\ttypeid: \"SimpleTest:Type2-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Int32\", value: 1 }],\n\t\t\t\t};\n\n\t\t\t\tvar ShapeWithDiffTypedTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"type\", typeid: \"SimpleTest:Type1-1.0.0\" }],\n\t\t\t\t};\n\n\t\t\t\tvar SquareWithDiffTypedTypeidConstants = {\n\t\t\t\t\ttypeid: \"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\tinherits: [\"SimpleTest:ShapeWithDiffTypeidConstants-1.0.0\"],\n\t\t\t\t\tconstants: [{ id: \"type\", typedValue: { typeid: \"SimpleTest:Type2-1.0.0\" } }],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(Type1);\n\t\t\t\tPropertyFactory.register(Type2);\n\t\t\t\tPropertyFactory.register(ShapeWithDiffTypedTypeidConstants);\n\t\t\t\tPropertyFactory.register(SquareWithDiffTypedTypeidConstants);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:SquareWithDiffTypeidConstants-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE +\n\t\t\t\t\t\t\"SimpleTest:Type2-1.0.0 must be a subclass of SimpleTest:Type1-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Default values\", function () {\n\t\tit(\"should set default values for primitive property\", function () {\n\t\t\tvar DefaultPrimitive = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitive-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultPrimitive);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPrimitive-1.0.0\");\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tit(\"should set a default value for a string property\", function () {\n\t\t\tvar DefaultString = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultString-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"I am a string\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultString);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultString-1.0.0\");\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should set a default value for a primitive array property\", function () {\n\t\t\tvar DefaultArray = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultArray-1.0.0\",\n\t\t\t\tproperties: [{ id: \"array\", typeid: \"Int32\", value: [111, 222], context: \"array\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0)).to.equal(111);\n\t\t\texpect(instance.get(\"array\").get(1)).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for a typed array property\", function () {\n\t\t\tvar DefaultTypedArrayEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArrayEntry-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultTypedArray = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArray-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTypedArrayEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ string: \"I am string 1\" }, { string: \"I am string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTypedArrayEntry);\n\t\t\tPropertyFactory.register(DefaultTypedArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTypedArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0).get(\"string\").value).to.equal(\"I am string 1\");\n\t\t\texpect(instance.get(\"array\").get(1).get(\"string\").value).to.equal(\"I am string 2\");\n\t\t});\n\n\t\tit(\"should set a default value for an enum property\", function () {\n\t\t\tvar DefaultEnum = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultEnum-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"enum\",\n\t\t\t\t\t\ttypeid: \"Enum\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"solid\", value: 111 },\n\t\t\t\t\t\t\t{ id: \"dashed\", value: 222 },\n\t\t\t\t\t\t\t{ id: \"dotted\", value: 333 },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tvalue: \"dashed\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultEnum);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultEnum-1.0.0\");\n\t\t\texpect(instance.get(\"enum\").getValue()).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for an untyped property, parent default value has precedence\", function () {\n\t\t\tvar DefaultUntyped = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultUntyped-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"untyped\",\n\t\t\t\t\t\tproperties: [\n\t\t\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"I should not be set\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tvalue: { string: \"I am a string\", num: 111 },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultUntyped);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultUntyped-1.0.0\");\n\n\t\t\texpect(instance.get(\"untyped\").get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t\texpect(instance.get(\"untyped\").get(\"num\").getValue()).to.equal(111);\n\t\t});\n\n\t\tit(\"should set a default value for a template, parent default value has precedence\", function () {\n\t\t\tvar DefaultTemplateEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTemplateEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: \"222\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t\tvalue: { dynamic_string: \"I should not be set\" },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar DefaultTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTemplate-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTemplateEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTemplateEntry);\n\t\t\tPropertyFactory.register(DefaultTemplate);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\").getValue(),\n\t\t\t).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should set a default value for a set\", function () {\n\t\t\tvar DefaultSetEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultSetEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultSet = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultSet-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultSetEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ string: \"I am a string 1\" }, { string: \"I am a string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultSetEntry);\n\t\t\tPropertyFactory.register(DefaultSet);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultSet-1.0.0\");\n\n\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(2);\n\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"should set a default value for a primitive map\", function () {\n\t\t\tvar DefaultPrimitiveMap = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMap-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: 111,\n\t\t\t\t\t\t\tkey2: 222,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultPrimitiveMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPrimitiveMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1).to.equal(111);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2).to.equal(222);\n\t\t});\n\n\t\tit(\"should set a default value for a typed map\", function () {\n\t\t\tvar DefaultTypedMapEntry = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMapEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar DefaultTypedMap = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMap-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultTypedMapEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { string: \"I am a string 1\" },\n\t\t\t\t\t\t\tkey2: { string: \"I am a string 2\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultTypedMapEntry);\n\t\t\tPropertyFactory.register(DefaultTypedMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultTypedMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"initial values should override default values\", function () {\n\t\t\tvar DefaultInitialValue = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultInitialValue-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\", value: \"I should not be set\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(DefaultInitialValue);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultInitialValue-1.0.0\", null, {\n\t\t\t\tstring: \"I am a string\",\n\t\t\t});\n\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tdescribe(\"#Polymorphic\", function () {\n\t\t\tvar DefaultPolyBase = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t};\n\n\t\t\tvar DefaultPolySub = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"Sub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar DefaultPolySubSub = {\n\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 333 },\n\t\t\t\t\t{ id: \"num2\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"SubSub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbeforeEach(function () {\n\t\t\t\tPropertyFactory._clear();\n\t\t\t\tPropertyFactory.register(DefaultPolyBase);\n\t\t\t\tPropertyFactory.register(DefaultPolySub);\n\t\t\t\tPropertyFactory.register(DefaultPolySubSub);\n\t\t\t});\n\n\t\t\tit(\"should set default polymorphic values for non-primitive properties\", function () {\n\t\t\t\tvar DefaultPolyContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333, str: \"PolySub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySubSub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 444, str: \"PolySubSub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"polySub\").get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"polySub\").get(\"str\").getValue()).to.equal(\"PolySub\");\n\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num\").getValue()).to.equal(444);\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"str\").getValue()).to.equal(\"PolySubSub\");\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a default typedValue that doesnt have a typeid.\", function () {\n\t\t\t\tvar DefaultPolyNoTypeIdContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { value: { num: 333, str: \"PolySub\" } },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyNoTypeIdContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.FIELD_TYPEID_IS_REQUIRED + \"typedValue SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive array\", function () {\n\t\t\t\tvar DefaultPolyArrayContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyArrayContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyArrayContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyArrayContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"str\").value).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"str\").value).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num\").value).to.equal(333);\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"str\").value).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num2\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive set\", function () {\n\t\t\t\tvar DefaultPolySetContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySetContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolySetContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolySetContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(3);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"str\").getValue()).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a default polymorphic value for a non-primitive map\", function () {\n\t\t\t\tvar DefaultPolyMapContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyMapContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"SimpleTest:DefaultPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPolyMapContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:DefaultPolyMapContainer-1.0.0\");\n\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key1.get(\"num\").getValue(),\n\t\t\t\t).to.equal(222);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key1.get(\"str\").getValue(),\n\t\t\t\t).to.equal(\"Sub\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key2.get(\"num\").getValue(),\n\t\t\t\t).to.equal(222);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key2.get(\"str\").getValue(),\n\t\t\t\t).to.equal(\"ArrSub\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key3.get(\"num\").getValue(),\n\t\t\t\t).to.equal(333);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key3.get(\"str\").getValue(),\n\t\t\t\t).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key3.get(\"num2\").getValue(),\n\t\t\t\t).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting default polymorphic values not derived from base type\", function () {\n\t\t\t\tvar DefaultPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t\tproperties: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\t};\n\n\t\t\t\tvar DefaultPolyUnderivedContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPoly);\n\t\t\t\tPropertyFactory.register(DefaultPolyUnderivedContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + \"SimpleTest:DefaultPoly-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"@bugfix should use default value when value field is missing\", function () {\n\t\t\t\tvar DefaultPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:PolyWithNoValue-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"type\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:DefaultPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"SimpleTest:DefaultPolyBase-1.0.0\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPoly);\n\t\t\t\tvar prop = PropertyFactory.create(DefaultPoly.typeid);\n\n\t\t\t\texpect(prop.get(\"type\").get(\"num\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"int\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"Int32\", value: 123 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"int\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive array.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: [{ typeid: \"Int32\", value: 123 }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"array\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive map.\", function () {\n\t\t\t\tvar DefaultPrimitiveMapPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"Int32\", value: 1 },\n\t\t\t\t\t\t\t\tkey2: { typeid: \"Int32\", value: 2 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveMapPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"map\");\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Constants\", function () {\n\t\tit(\"should set constant properties as readonly\", function () {\n\t\t\tvar ConstantReadonly = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantReadonly-1.0.0\",\n\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantReadonly);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantReadonly-1.0.0\");\n\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"num\")._isConstant).to.equal(true);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"num\")._checkIsNotReadOnly.bind(instance.get(\"num\"), true),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(instance.get(\"num\").setValue.bind(instance.get(\"num\"), 1111)).to.throw(\n\t\t\t\tMSG.MODIFICATION_OF_CONSTANT_PROPERTY,\n\t\t\t);\n\t\t});\n\n\t\tit(\"should set constant child properties as readonly\", function () {\n\t\t\tvar ConstantChildReadonlyEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonlyEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantChildReadonly = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonly-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantChildReadonlyEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantChildReadonlyEntry);\n\t\t\tPropertyFactory.register(ConstantChildReadonly);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantChildReadonly-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\")._isConstant).to.equal(true);\n\t\t\texpect(instance.get(\"template\").get(\"dynamic\")._isConstant).to.equal(true);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\")._isConstant,\n\t\t\t).to.equal(true);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"num\")\n\t\t\t\t\t._checkIsNotReadOnly.bind(instance.get(\"template\").get(\"num\"), true),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"num\")\n\t\t\t\t\t.setValue.bind(instance.get(\"template\").get(\"num\"), 1111),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"dynamic\")\n\t\t\t\t\t.get(\"dynamic_string\")\n\t\t\t\t\t._checkIsNotReadOnly.bind(\n\t\t\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\"),\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t\texpect(\n\t\t\t\tinstance\n\t\t\t\t\t.get(\"template\")\n\t\t\t\t\t.get(\"dynamic\")\n\t\t\t\t\t.get(\"dynamic_string\")\n\t\t\t\t\t.setValue.bind(\n\t\t\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\"),\n\t\t\t\t\t\t\"should throw\",\n\t\t\t\t\t),\n\t\t\t).to.throw(MSG.MODIFICATION_OF_CONSTANT_PROPERTY);\n\t\t});\n\n\t\tit(\"should support primitive constants\", function () {\n\t\t\tvar ConstantPrimitive = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPrimitive-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantPrimitive);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPrimitive-1.0.0\");\n\n\t\t\texpect(instance.get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tit(\"should support typed constants\", function () {\n\t\t\tvar ConstantEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantEntry-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTyped = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTyped-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"entry\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantEntry-1.0.0\",\n\t\t\t\t\t\tvalue: { num: 222, bool: false },\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default2\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantEntry);\n\t\t\tPropertyFactory.register(ConstantTyped);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTyped-1.0.0\");\n\n\t\t\texpect(instance.get(\"entry\").get(\"num\").getValue()).to.equal(222);\n\t\t\texpect(instance.get(\"entry\").get(\"bool\").getValue()).to.equal(false);\n\t\t});\n\n\t\tit(\"should support string constants\", function () {\n\t\t\tvar ConstantString = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantString-1.0.0\",\n\t\t\t\tconstants: [{ id: \"string\", typeid: \"String\", value: \"I am a string\" }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantString);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantString-1.0.0\");\n\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should support primitive array constants\", function () {\n\t\t\tvar ConstantArray = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantArray-1.0.0\",\n\t\t\t\tconstants: [{ id: \"array\", typeid: \"Int32\", value: [111, 222], context: \"array\" }],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0)).to.equal(111);\n\t\t\texpect(instance.get(\"array\").get(1)).to.equal(222);\n\t\t});\n\n\t\tit(\"should support typed array constants\", function () {\n\t\t\tvar ConstantTypedArrayEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArrayEntry-1.0.0\",\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTypedArray = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArray-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTypedArrayEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ string: \"I am string 1\" }, { string: \"I am string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTypedArrayEntry);\n\t\t\tPropertyFactory.register(ConstantTypedArray);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTypedArray-1.0.0\");\n\t\t\texpect(instance.get(\"array\").get(0).get(\"string\").value).to.equal(\"I am string 1\");\n\t\t\texpect(instance.get(\"array\").get(1).get(\"string\").value).to.equal(\"I am string 2\");\n\t\t});\n\n\t\tit(\"should support template constants\", function () {\n\t\t\tvar ConstantTemplateEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplateEntry-1.0.0\",\n\t\t\t\tproperties: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"dynamic\",\n\t\t\t\t\t\tproperties: [{ id: \"dynamic_string\", typeid: \"String\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplate-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"template\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTemplateEntry-1.0.0\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tnum: 111,\n\t\t\t\t\t\t\tdynamic: { dynamic_string: \"I am a string\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTemplateEntry);\n\t\t\tPropertyFactory._reregister(ConstantTemplate);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"template\").get(\"num\").getValue()).to.equal(111);\n\t\t\texpect(\n\t\t\t\tinstance.get(\"template\").get(\"dynamic\").get(\"dynamic_string\").getValue(),\n\t\t\t).to.equal(\"I am a string\");\n\t\t});\n\n\t\tit(\"should support set constants\", function () {\n\t\t\tvar ConstantSetEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantSetEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantSet = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantSet-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantSetEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ string: \"I am a string 1\" }, { string: \"I am a string 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantSetEntry);\n\t\t\tPropertyFactory.register(ConstantSet);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantSet-1.0.0\");\n\n\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(2);\n\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\n\t\t\t// All instances should share the same constant objects\n\t\t\tvar instance2 = PropertyFactory.create(\"SimpleTest:ConstantSet-1.0.0\");\n\t\t\texpect(instance.get(\"set\") === instance2.get(\"set\")).to.be.true;\n\t\t});\n\n\t\tit(\"should support primitive map constants\", function () {\n\t\t\tvar ConstantPrimitiveMap = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPrimitiveMap-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: 111,\n\t\t\t\t\t\t\tkey2: 222,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantPrimitiveMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPrimitiveMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1).to.equal(111);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2).to.equal(222);\n\t\t});\n\n\t\tit(\"should support typed map constants\", function () {\n\t\t\tvar ConstantTypedMapEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMapEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tproperties: [{ id: \"string\", typeid: \"String\" }],\n\t\t\t};\n\n\t\t\tvar ConstantTypedMap = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMap-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantTypedMapEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { string: \"I am a string 1\" },\n\t\t\t\t\t\t\tkey2: { string: \"I am a string 2\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantTypedMapEntry);\n\t\t\tPropertyFactory.register(ConstantTypedMap);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTypedMap-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\")._contextKeyType).to.equal(\"string\");\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key1.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 1\",\n\t\t\t);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly().key2.get(\"string\").getValue()).to.equal(\n\t\t\t\t\"I am a string 2\",\n\t\t\t);\n\t\t});\n\n\t\tit(\"should support map constants with templateid keys\", function () {\n\t\t\tvar ConstantTemplate = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantTemplate-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tproperties: [{ id: \"default\", typeid: \"Uint32\" }],\n\t\t\t};\n\t\t\tPropertyFactory._reregister(ConstantTemplate);\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantTemplate-1.0.0\");\n\n\t\t\texpect(instance.get(\"map\")._contextKeyType).to.equal(\"typeid\");\n\t\t\texpect(instance.get(\"map\").get(\"SimpleTest:ConstantTemplate1-1.0.0\")).to.equal(1);\n\t\t\texpect(instance.get(\"map\").get(\"SimpleTest:ConstantTemplate2-1.0.0\")).to.equal(-1);\n\t\t});\n\n\t\tit(\"should support constants with no value defined\", function () {\n\t\t\tvar ConstantNoValueEntry = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Int16\" },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\" },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantNoValue = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValue-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"int\", typeid: \"Int32\" },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\" },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\" },\n\t\t\t\t\t{ id: \"array\", typeid: \"Int16\", context: \"array\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array_typed\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t},\n\t\t\t\t\t{ id: \"set\", typeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\", context: \"set\" },\n\t\t\t\t\t{ id: \"map\", typeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\", context: \"map\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantNoValueInherited = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueInherited-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantNoValue-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"int\", typeid: \"Int32\", value: 100 },\n\t\t\t\t\t{ id: \"bool\", typeid: \"Bool\", value: true },\n\t\t\t\t\t{ id: \"string\", typeid: \"String\", value: \"I am a string\" },\n\t\t\t\t\t{ id: \"array\", typeid: \"Int16\", context: \"array\", value: [100, 200] },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"array_typed\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\tvalue: [{ num: 100 }, { num: 200, string: \"I am a string 2\", bool: true }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\tvalue: [{ num: 100 }, { num: 200, string: \"I am a string 2\", bool: true }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantNoValueEntry-1.0.0\",\n\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\tkey1: { num: 100 },\n\t\t\t\t\t\t\tkey2: { num: 200, string: \"I am a string 2\", bool: true },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tPropertyFactory.register(ConstantNoValueEntry);\n\t\t\tPropertyFactory.register(ConstantNoValue);\n\t\t\tPropertyFactory.register(ConstantNoValueInherited);\n\n\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantNoValue-1.0.0\");\n\t\t\tvar instanceInherited = PropertyFactory.create(\n\t\t\t\t\"SimpleTest:ConstantNoValueInherited-1.0.0\",\n\t\t\t);\n\n\t\t\texpect(instance.get(\"int\").getValue()).to.equal(0);\n\t\t\texpect(instance.get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(instance.get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(instance.get(\"array\").getValues()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"array_typed\").getValues()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"set\").getAsArray()).to.deep.equal([]);\n\t\t\texpect(instance.get(\"map\").getEntriesReadOnly()).to.deep.equal({});\n\n\t\t\texpect(instanceInherited.get(\"int\").getValue()).to.equal(100);\n\t\t\texpect(instanceInherited.get(\"bool\").getValue()).to.equal(true);\n\t\t\texpect(instanceInherited.get(\"string\").getValue()).to.equal(\"I am a string\");\n\t\t\texpect(instanceInherited.get(\"array\").getValues()).to.deep.equal([100, 200]);\n\n\t\t\tlet arr = instanceInherited.get(\"array_typed\").getValues();\n\t\t\texpect(arr[0][\"num\"]).to.equal(100);\n\t\t\texpect(arr[0][\"string\"]).to.equal(\"\");\n\t\t\texpect(arr[0][\"bool\"]).to.equal(false);\n\t\t\texpect(arr[1][\"num\"]).to.equal(200);\n\t\t\texpect(arr[1][\"string\"]).to.equal(\"I am a string 2\");\n\t\t\texpect(arr[1][\"bool\"]).to.equal(true);\n\n\t\t\tlet set = instanceInherited.get(\"set\").getAsArray();\n\n\t\t\texpect(set[0].get(\"num\").getValue()).to.equal(100);\n\t\t\texpect(set[0].get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(set[0].get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(set[1].get(\"num\").getValue()).to.equal(200);\n\t\t\texpect(set[1].get(\"string\").getValue()).to.equal(\"I am a string 2\");\n\t\t\texpect(set[1].get(\"bool\").getValue()).to.equal(true);\n\n\t\t\tlet map = instanceInherited.get(\"map\").getEntriesReadOnly();\n\t\t\texpect(map.key1.get(\"num\").getValue()).to.equal(100);\n\t\t\texpect(map.key1.get(\"string\").getValue()).to.equal(\"\");\n\t\t\texpect(map.key1.get(\"bool\").getValue()).to.equal(false);\n\t\t\texpect(map.key2.get(\"num\").getValue()).to.equal(200);\n\t\t\texpect(map.key2.get(\"string\").getValue()).to.equal(\"I am a string 2\");\n\t\t\texpect(map.key2.get(\"bool\").getValue()).to.equal(true);\n\t\t});\n\n\t\tdescribe(\"#Polymorphic\", function () {\n\t\t\tvar ConstantPolyBase = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\tinherits: [\"NamedProperty\"],\n\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t};\n\n\t\t\tvar ConstantPolySub = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 222 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"Sub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tvar ConstantPolySubSub = {\n\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\tinherits: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"num\", typeid: \"Uint32\", value: 333 },\n\t\t\t\t\t{ id: \"num2\", typeid: \"Uint32\", value: 111 },\n\t\t\t\t\t{ id: \"str\", typeid: \"String\", value: \"SubSub\" },\n\t\t\t\t],\n\t\t\t};\n\n\t\t\tbeforeEach(function () {\n\t\t\t\tPropertyFactory._clear();\n\t\t\t\tPropertyFactory.register(ConstantPolyBase);\n\t\t\t\tPropertyFactory.register(ConstantPolySub);\n\t\t\t\tPropertyFactory.register(ConstantPolySubSub);\n\t\t\t});\n\n\t\t\tit(\"should set constant polymorphic values for non-primitive constants\", function () {\n\t\t\t\tvar ConstantPolyContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333, str: \"PolySub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySubSub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 444, str: \"PolySubSub\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyContainer-1.0.0\");\n\t\t\t\texpect(instance.get(\"polySub\").get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"polySub\").get(\"str\").getValue()).to.equal(\"PolySub\");\n\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num\").getValue()).to.equal(444);\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"str\").getValue()).to.equal(\"PolySubSub\");\n\t\t\t\texpect(instance.get(\"polySubSub\").get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should pass when setting a constant typedValue that doesnt have a value.\", function () {\n\t\t\t\tvar ConstantPolyNoValueContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyNoValueContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyNoValueContainer);\n\t\t\t\tvar prop = PropertyFactory.create(\"SimpleTest:ConstantPolyNoValueContainer-1.0.0\");\n\n\t\t\t\texpect(prop.get(\"polySub\").get(\"str\").value).to.equal(\"Sub\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a constant typedValue that doesnt have a typeid.\", function () {\n\t\t\t\tvar ConstantPolyNoTypeIdContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"polySub\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: { value: { num: 333, str: \"PolySub\" } },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyNoTypeIdContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:ConstantPolyNoTypeIdContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.FIELD_TYPEID_IS_REQUIRED + \"typedValue SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive array\", function () {\n\t\t\t\tvar ConstantPolyArrayContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyArrayContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyArrayContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\n\t\t\t\t\t\"SimpleTest:ConstantPolyArrayContainer-1.0.0\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(0).get(\"str\").value).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"num\").value).to.equal(222);\n\t\t\t\texpect(instance.get(\"array\").get(1).get(\"str\").value).to.equal(\"ArrSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num\").value).to.equal(333);\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"str\").value).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(instance.get(\"array\").get(2).get(\"num2\").value).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive set\", function () {\n\t\t\t\tvar ConstantPolySetContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySetContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypedValue: [\n\t\t\t\t\t\t\t\t{ typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolySetContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolySetContainer-1.0.0\");\n\n\t\t\t\texpect(instance.get(\"set\").getAsArray().length).to.equal(3);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[0].get(\"str\").getValue()).to.equal(\"Sub\");\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"num\").getValue()).to.equal(222);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[1].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num\").getValue()).to.equal(333);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"str\").getValue()).to.equal(\n\t\t\t\t\t\"ArrSubSub\",\n\t\t\t\t);\n\t\t\t\texpect(instance.get(\"set\").getAsArray()[2].get(\"num2\").getValue()).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should set a constant polymorphic value for a non-primitive map\", function () {\n\t\t\t\tvar ConstantPolyMapContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyMapContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"SimpleTest:ConstantPolySub-1.0.0\" },\n\t\t\t\t\t\t\t\tkey2: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tkey3: {\n\t\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolySubSub-1.0.0\",\n\t\t\t\t\t\t\t\t\tvalue: { str: \"ArrSubSub\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPolyMapContainer);\n\n\t\t\t\tvar instance = PropertyFactory.create(\"SimpleTest:ConstantPolyMapContainer-1.0.0\");\n\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key1.get(\"num\").getValue(),\n\t\t\t\t).to.equal(222);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key1.get(\"str\").getValue(),\n\t\t\t\t).to.equal(\"Sub\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key2.get(\"num\").getValue(),\n\t\t\t\t).to.equal(222);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key2.get(\"str\").getValue(),\n\t\t\t\t).to.equal(\"ArrSub\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key3.get(\"num\").getValue(),\n\t\t\t\t).to.equal(333);\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key3.get(\"str\").getValue(),\n\t\t\t\t).to.equal(\"ArrSubSub\");\n\t\t\t\texpect(\n\t\t\t\t\tinstance.get(\"map\").getEntriesReadOnly().key3.get(\"num2\").getValue(),\n\t\t\t\t).to.equal(111);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting constant polymorphic values not derived from base type\", function () {\n\t\t\t\tvar ConstantPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"num\", typeid: \"Uint32\", value: 111 }],\n\t\t\t\t};\n\n\t\t\t\tvar ConstantPolyUnderivedContainer = {\n\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"poly\",\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPolyBase-1.0.0\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\ttypeid: \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t\t\t\t\tvalue: { num: 333 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(ConstantPoly);\n\t\t\t\tPropertyFactory.register(ConstantPolyUnderivedContainer);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:ConstantPolyUnderivedContainer-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(\n\t\t\t\t\tMSG.TYPED_VALUES_MUST_DERIVE_FROM_BASE_TYPE + \"SimpleTest:ConstantPoly-1.0.0\",\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"int\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: { typeid: \"Int32\", value: 123 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitivePoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"int\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive array.\", function () {\n\t\t\t\tvar DefaultPrimitiveArrayPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"array\",\n\t\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: [{ typeid: \"Int32\", value: 123 }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveArrayPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveArrayPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"array\");\n\t\t\t});\n\n\t\t\tit(\"should fail when setting a typedValue to a primitive map.\", function () {\n\t\t\t\tvar DefaultPrimitiveMapPoly = {\n\t\t\t\t\ttypeid: \"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\ttypedValue: {\n\t\t\t\t\t\t\t\tkey1: { typeid: \"Int32\", value: 1 },\n\t\t\t\t\t\t\t\tkey2: { typeid: \"Int32\", value: 2 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(DefaultPrimitiveMapPoly);\n\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.create.bind(\n\t\t\t\t\t\tPropertyFactory,\n\t\t\t\t\t\t\"SimpleTest:DefaultPrimitiveMapPoly-1.0.0\",\n\t\t\t\t\t),\n\t\t\t\t).to.throw(MSG.TYPED_VALUES_FOR_PRIMITIVES_NOT_SUPPORTED + \"map\");\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"InstanceOf Type Checking\", function () {\n\t\tit(\"Native types pass instanceOf check\", function () {\n\t\t\tvar contextSingleTypes = [\"NodeProperty\", \"Enum\"];\n\t\t\tvar propTypes = [\n\t\t\t\t\"String\",\n\t\t\t\t\"Bool\",\n\t\t\t\t\"Int8\",\n\t\t\t\t\"Uint8\",\n\t\t\t\t\"Int16\",\n\t\t\t\t\"Uint16\",\n\t\t\t\t\"Int32\",\n\t\t\t\t\"Int64\",\n\t\t\t\t\"Uint64\",\n\t\t\t\t\"Uint32\",\n\t\t\t\t\"Float32\",\n\t\t\t\t\"Float64\",\n\t\t\t\t\"Reference\",\n\t\t\t];\n\n\t\t\tvar contextSingleTypes = propTypes.concat([\"NodeProperty\", \"Enum\"]);\n\t\t\tfor (var i = 0; i < contextSingleTypes.length; ++i) {\n\t\t\t\tvar propType = contextSingleTypes[i];\n\t\t\t\texpect(PropertyFactory.instanceOf(PropertyFactory.create(propType), propType)).to.be\n\t\t\t\t\t.true;\n\t\t\t}\n\n\t\t\tfor (var j = 0; j < propTypes.length; ++j) {\n\t\t\t\tvar propType = propTypes[j];\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\t\tPropertyFactory.create(propType, \"map\"),\n\t\t\t\t\t\tpropType,\n\t\t\t\t\t\t\"map\",\n\t\t\t\t\t),\n\t\t\t\t).to.be.true;\n\t\t\t}\n\n\t\t\tvar contextArrayTypes = propTypes.concat([\"Enum\"]);\n\t\t\tfor (var k = 0; k < contextArrayTypes.length; ++k) {\n\t\t\t\tvar propType = contextArrayTypes[k];\n\t\t\t\texpect(\n\t\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\t\tPropertyFactory.create(propType, \"array\"),\n\t\t\t\t\t\tpropType,\n\t\t\t\t\t\t\"array\",\n\t\t\t\t\t),\n\t\t\t\t).to.be.true;\n\t\t\t}\n\t\t});\n\n\t\tit(\"instanceOf check succeeds for schema based properties and native typeids\", function () {\n\t\t\tPropertyFactory.register(SimplePoint);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\tPropertyFactory.create(SimplePoint.typeid),\n\t\t\t\t\t\"BaseProperty\",\n\t\t\t\t),\n\t\t\t).to.be.true;\n\n\t\t\tconst testEnum = {\n\t\t\t\tinherits: \"Enum\",\n\t\t\t\ttypeid: \"test:testEnum-1.0.0\",\n\t\t\t\tproperties: [{ id: \"test\", value: 1 }],\n\t\t\t};\n\t\t\tPropertyFactory.register(testEnum);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\tPropertyFactory.create(testEnum.typeid, \"array\"),\n\t\t\t\t\t\"Enum\",\n\t\t\t\t\t\"array\",\n\t\t\t\t),\n\t\t\t).to.be.true;\n\t\t});\n\n\t\tit(\"instanceOf check fails for non native typeids\", function () {\n\t\t\tPropertyFactory.register(SimplePoint);\n\t\t\texpect(\n\t\t\t\tPropertyFactory.instanceOf(\n\t\t\t\t\tPropertyFactory.create(SimplePoint.typeid),\n\t\t\t\t\tSimplePoint.typeid,\n\t\t\t\t),\n\t\t\t).to.be.false;\n\t\t});\n\t});\n});\n\ndescribe(\"Template registration\", function () {\n\tvar ColorID, myPropertyFactory;\n\n\tbefore(function () {\n\t\tColorID = require(\"./validation/goodColorId\");\n\t});\n\n\tbeforeEach(function () {\n\t\tthis.sinon = sinon.createSandbox();\n\t\tthis.sinon.stub(console, \"warn\");\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t});\n\n\tafterEach(function () {\n\t\tthis.sinon.restore();\n\t});\n\n\tit(\"should register a versioned template\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t});\n\n\tit(\"should print a warning when registering an existing template that is not different from what is in the registry\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\texpect(console.warn.callCount).to.equal(1);\n\t});\n\n\tit(\"should accept registering a different template from what is in the registry if it is semantically equivalent\", function () {\n\t\tvar testPropertyTypeId = \"TEST:array.Float32-0.0.1\";\n\t\tvar ValuesTemplate1 = {\n\t\t\ttypeid: testPropertyTypeId,\n\t\t\tinherits: \"NamedProperty\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"values\",\n\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tvar ValuesTemplate2 = {\n\t\t\ttypeid: testPropertyTypeId,\n\t\t\tinherits: [\"NamedProperty\"],\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"values\",\n\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\ttypeid: \"Float32\",\n\t\t\t\t\tlength: 0,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tmyPropertyFactory.register(ValuesTemplate1);\n\t\texpect(myPropertyFactory.register.bind(myPropertyFactory, ValuesTemplate2)).to.not.throw();\n\t});\n\n\tit(\"should throw when registering an existing template version that is different from what is in the registry\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(myPropertyFactory, ColorID[\"1-0-0\"].modified),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering an unversioned template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badMissingSemverInTypeid\"),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering an invalid versioned template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badPrimitiveTypeid\"),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should throw when registering a primitive property through the public API\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory.register.bind(myPropertyFactory, \"String\", StringProperty),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should register templates out of order without any warnings or errors\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a new template with the PATCH version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-0-1\"].goodSemver);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a new template with the MINOR version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].goodSemver);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should print a warning when registering a new template with the wrong version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver1);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver2);\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].badSemver1, generateGUID());\n\n\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\t\tmyPropertyFactory.register(ColorID[\"1-1-0\"].badSemver2);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\n\t\texpect(console.warn.callCount).to.equal(4);\n\t});\n\n\tit(\"should register a new template with the MAJOR version updated\", function () {\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a versioned remote template\", function () {\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\t});\n\n\tit(\n\t\t\"should pass when registering a versioned remote template that exists\" +\n\t\t\t\" in the local registry but is the same from what is locally registered\",\n\t\tfunction () {\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\n\t\t\tmyPropertyFactory = new PropertyFactory.constructor();\n\n\t\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-0\"].original, generateGUID());\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\texpect(console.warn.callCount).to.equal(0);\n\t\t},\n\t);\n\n\tit(\n\t\t\"should fail when registering a versioned remote template that exists\" +\n\t\t\t\" in the local registry but differs from what is locally registered\",\n\t\tfunction () {\n\t\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\t\texpect(\n\t\t\t\tmyPropertyFactory._registerRemoteTemplate.bind(\n\t\t\t\t\tmyPropertyFactory,\n\t\t\t\t\tColorID[\"1-0-0\"].modified,\n\t\t\t\t\tgenerateGUID(),\n\t\t\t\t),\n\t\t\t).to.throw(Error);\n\t\t},\n\t);\n\n\tit(\"should throw when registering an unversioned remote template\", function () {\n\t\texpect(\n\t\t\tmyPropertyFactory._registerRemoteTemplate.bind(\n\t\t\t\tmyPropertyFactory,\n\t\t\t\trequire(\"./validation/badMissingSemverInTypeid\"),\n\t\t\t\tgenerateGUID(),\n\t\t\t),\n\t\t).to.throw(Error);\n\t});\n\n\tit(\"should register a remote template even when there are other versions of the same template in the local registry\", function () {\n\t\tvar scope = generateGUID();\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-1\"].goodSemver, scope);\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"should register a local template even when there are other versions of the same template in the remote registry\", function () {\n\t\tvar scope = generateGUID();\n\t\tvar scope2 = generateGUID();\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-1-0\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(ColorID[\"1-0-1\"].goodSemver, scope);\n\t\tmyPropertyFactory._registerRemoteTemplate(require(\"./validation/goodPointId\"), scope2);\n\t\tmyPropertyFactory._registerRemoteTemplate(require(\"./validation/goodColorPalette\"), scope2);\n\n\t\tmyPropertyFactory.register(ColorID[\"1-0-0\"].original);\n\t\tmyPropertyFactory.register(ColorID[\"2-0-0\"]);\n\n\t\texpect(console.warn.callCount).to.equal(0);\n\t});\n\n\tit(\"`registered` event is triggered when registering a template\", function (done) {\n\t\tvar typeid = \"test:schemaReg-1.0.0\";\n\t\tvar registeredEventListener = function (template) {\n\t\t\texpect(template).to.exist;\n\t\t\texpect(template.typeid).to.equal(typeid);\n\t\t\tdone();\n\t\t};\n\n\t\tPropertyFactory.addListener(\"registered\", registeredEventListener);\n\n\t\tPropertyFactory.register({\n\t\t\ttypeid: typeid,\n\t\t});\n\t\t// We remove the listener to avoid unnecessary calls for later templates registration.\n\t\tPropertyFactory.removeListener(\"registered\", registeredEventListener);\n\t});\n});\n\ndescribe('Only properties and constants that inherit from NamedProperty can have the \"set\" context', function () {\n\tbeforeEach(() => PropertyFactory._clear());\n\tafterEach(() => PropertyFactory._clear());\n\n\tdescribe(\"Properties\", () => {\n\t\tdescribe(\"should throw when trying to register a set not inheriting from a namedProperty\", () => {\n\t\t\tit(\"declared in a template\", () => {\n\t\t\t\tvar templateChild = {\n\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:testSchema-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\t\t\t\tPropertyFactory.register(templateChild);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n\t\t\t});\n\n\t\t\tit(\"declared in a template with two level of inheritance\", () => {\n\t\t\t\tvar itemParentTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar itemTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\tinherits: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:set-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(itemParentTemplate);\n\t\t\t\tPropertyFactory.register(itemTemplate);\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n\t\t\t});\n\n\t\t\tit(\"when passed as a parameter of the create method\", () => {\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:test-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid, \"set\");\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + template.typeid);\n\t\t\t});\n\t\t});\n\t});\n\n\tdescribe(\"Constants\", () => {\n\t\tdescribe(\"should throw when trying to register a set not inheriting from a namedProperty\", () => {\n\t\t\tit(\"declared in a template\", () => {\n\t\t\t\tvar templateChild = {\n\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:testSchema-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:anotherTestSchema-1.0.0\",\n\t\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(template);\n\t\t\t\tPropertyFactory.register(templateChild);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + templateChild.typeid);\n\t\t\t});\n\n\t\t\tit(\"declared in a template with two level of inheritance\", () => {\n\t\t\t\tvar itemParentTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar itemTemplate = {\n\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\tinherits: \"adsk.test:itemParent-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tvar template = {\n\t\t\t\t\ttypeid: \"adsk.test:set-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"something\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t\ttypeid: \"adsk.test:item-1.0.0\",\n\t\t\t\t\t\t\tvalue: \"hello\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tPropertyFactory.register(itemParentTemplate);\n\t\t\t\tPropertyFactory.register(itemTemplate);\n\t\t\t\tPropertyFactory.register(template);\n\n\t\t\t\texpect(() => {\n\t\t\t\t\tPropertyFactory.create(template.typeid);\n\t\t\t\t}).to.throw(MSG.SET_ONLY_NAMED_PROPS + itemTemplate.typeid);\n\t\t\t});\n\t\t\tvar unit = {\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription: \"A definite magnitude used as a standard of measurement.\",\n\t\t\t\t\tdoc: \"http://docs.adskunits.apiary.io/#introduction/definitions/measurement-units\",\n\t\t\t\t},\n\t\t\t\ttypeid: \"autodesk.unit:unit-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"name\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar quantity = {\n\t\t\t\tannotation: {\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"A quantity typically measured in a particular set of compatible units.\",\n\t\t\t\t},\n\t\t\t\ttypeid: \"autodesk.unit:quantity-1.0.0\",\n\t\t\t\tconstants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"name\",\n\t\t\t\t\t\ttypeid: \"String\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"units\",\n\t\t\t\t\t\ttypeid: \"autodesk.unit:unit-1.0.0\",\n\t\t\t\t\t\tcontext: \"array\",\n\t\t\t\t\t\ttypedValue: [],\n\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\"List of all measurement units applicable to the measurable quantity.\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar area = {\n\t\t\t\tannotation: { description: \"Area.\" },\n\t\t\t\ttypeid: \"autodesk.unit.quantity:area-1.0.0\",\n\t\t\t\tinherits: [\"autodesk.unit:quantity-1.0.0\"],\n\t\t\t\tconstants: [\n\t\t\t\t\t{ id: \"name\", value: \"Area\" },\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"units\",\n\t\t\t\t\t\ttypedValue: [{ typeid: \"autodesk.unit.unit:squareCentimeters-1.0.0\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t\tvar centimeter = {\n\t\t\t\tannotation: { description: \"Square centimeters.\" },\n\t\t\t\ttypeid: \"autodesk.unit.unit:squareCentimeters-1.0.0\",\n\t\t\t\tinherits: [\"autodesk.unit:unit-1.0.0\"],\n\t\t\t\tconstants: [{ id: \"name\", value: \"Square centimeters\" }],\n\t\t\t};\n\t\t\tit(\"@bugfix should support constant which inhirets from a polymorphic array\", () => {\n\t\t\t\tPropertyFactory.register(unit);\n\t\t\t\tPropertyFactory.register(quantity);\n\t\t\t\tPropertyFactory.register(area);\n\t\t\t\tPropertyFactory.register(centimeter);\n\t\t\t\tvar centimeterProp = PropertyFactory.create(centimeter.typeid);\n\n\t\t\t\tvar areaProp = PropertyFactory.create(area.typeid);\n\n\t\t\t\texpect(areaProp.get(\"units\").get(0).get(\"name\").value).to.equal(\n\t\t\t\t\tcentimeterProp.get(\"name\").value,\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n});\n\ndescribe(\"Async validation\", function () {\n\tvar TemplateValidator;\n\tvar inheritsFromAsync = async function (child, ancestor) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tsetTimeout(function () {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(PropertyFactory.inheritsFrom(child, ancestor));\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t});\n\t};\n\n\tvar hasSchemaAsync = async function (typeid) {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\tsetTimeout(function () {\n\t\t\t\tresolve(PropertyFactory._has(typeid));\n\t\t\t}, 0);\n\t\t});\n\t};\n\n\tbefore(function () {\n\t\tTemplateValidator = require(\"@fluid-experimental/property-changeset\").TemplateValidator;\n\t});\n\n\tit(\"can validate asynchronously\", function () {\n\t\tvar templateValidator = new TemplateValidator({\n\t\t\tinheritsFromAsync: inheritsFromAsync,\n\t\t\thasSchemaAsync: hasSchemaAsync,\n\t\t});\n\n\t\tvar templatePrevious = JSON.parse(JSON.stringify(require(\"./validation/goodPointId\")));\n\t\tvar template = JSON.parse(JSON.stringify(templatePrevious));\n\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.9.9\";\n\t\treturn templateValidator.validateAsync(template, templatePrevious).then(function (result) {\n\t\t\texpect(result).property(\"isValid\", false);\n\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\texpect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n\t\t});\n\t});\n\n\tit(\"can perform context validation asynchronously\", function (done) {\n\t\tvar templateValidator = new TemplateValidator({\n\t\t\tinheritsFromAsync: inheritsFromAsync,\n\t\t\thasSchemaAsync: hasSchemaAsync,\n\t\t});\n\n\t\t// Doesn't inherit from 'NamedProperty'. Will cause an error\n\t\tvar grandParentSchema = {\n\t\t\ttypeid: \"test:grandparentschema-1.0.0\",\n\t\t};\n\n\t\tvar parentSchema = {\n\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\tinherits: [\"test:grandparentschema-1.0.0\"],\n\t\t};\n\n\t\tvar childSchema = {\n\t\t\ttypeid: \"test:childchema-1.0.0\",\n\t\t\tproperties: [\n\t\t\t\t{\n\t\t\t\t\tid: \"set\",\n\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\tcontext: \"set\",\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tPropertyFactory.register(grandParentSchema);\n\t\tPropertyFactory.register(parentSchema);\n\n\t\ttemplateValidator\n\t\t\t.validateAsync(childSchema)\n\t\t\t.then(function (result) {\n\t\t\t\tdone(new Error(\"Should not be valid!\"));\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\texpect(error).to.exist;\n\t\t\t\tdone();\n\t\t\t});\n\t});\n});\n\ndescribe(\"inheritsFrom() method\", () => {\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t\tPropertyFactory.register([\n\t\t\t{\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NamedProperty\",\n\t\t\t},\n\t\t]);\n\t});\n\n\tit(\"should recognize that the Int8 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int8\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint8 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint8\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int16 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int16\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint16 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint16\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Float32 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Float32\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Int64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Int64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Uint64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Uint64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Float64 only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Float64\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Bool only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Bool\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Reference only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Reference\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the Enum only inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"Enum\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the String inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"String\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NodeProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NodeProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the ContainerProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"ContainerProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from BaseProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"BaseProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NodeProperty inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NodeProperty\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedProperty inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedProperty\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the String inherits from ContainerProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"String\", \"ContainerProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from NamedProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"NamedProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the NamedNodeProperty inherits from NodeProperty\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"NamedNodeProperty\", \"NodeProperty\");\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from BaseProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"BaseProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\n\t\t\"should recognize that the test set that inherits from NamedNodeProperty\" +\n\t\t\t\" also inherits from AbstractStaticCollectionProperty\",\n\t\t() => {\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NamedNodeProperty\",\n\t\t\t});\n\t\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\t\"AbstractStaticCollectionProperty\",\n\t\t\t);\n\n\t\t\texpect(result).to.be.true;\n\t\t},\n\t);\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from NodeProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"NodeProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the test set that inherits from NamedNodeProperty also inherits from NamedProperty\", () => {\n\t\tPropertyFactory._reregister({\n\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\tinherits: \"NamedNodeProperty\",\n\t\t});\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"NamedProperty\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should recognize that the testSet doesn't inherits from foe\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"foe\");\n\n\t\texpect(result).to.be.false;\n\t});\n\n\tit(\"should return true if in_templateTypeid = in_baseTypeid\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t);\n\n\t\texpect(result).to.be.true;\n\t});\n\n\tit(\"should return false if in_templateTypeid = in_baseTypeid but in_options.includeSelf is false\", () => {\n\t\tconst result = PropertyFactory.inheritsFrom(\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t\"autodesk.examples:test.set-1.0.0\",\n\t\t\t{ includeSelf: false },\n\t\t);\n\n\t\texpect(result).to.be.false;\n\t});\n\n\tdescribe(\"Caching\", () => {\n\t\tbeforeEach(() => {\n\t\t\t// add a second schema for the cache tests\n\t\t\tPropertyFactory.register({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-2.0.0\",\n\t\t\t\tinherits: \"NamedProperty\",\n\t\t\t});\n\t\t});\n\n\t\tit(\"should cache results\", () => {\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\");\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NamedProperty\");\n\n\t\t\tconst expectedResults = {\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNamedProperty: true,\n\t\t\t\t},\n\t\t\t\t\"autodesk.examples:test.set-2.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNamedProperty: true,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\texpect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n\t\t});\n\n\t\tit(\"should refresh the cache when _reregister() is called\", () => {\n\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\");\n\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-1.0.0\",\n\t\t\t\tinherits: \"NodeProperty\",\n\t\t\t});\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NodeProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tPropertyFactory._reregister({\n\t\t\t\ttypeid: \"autodesk.examples:test.set-2.0.0\",\n\t\t\t\tinherits: \"NodeProperty\",\n\t\t\t});\n\t\t\texpect(PropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NodeProperty\"))\n\t\t\t\t.to.be.true;\n\n\t\t\tconst expectedResults = {\n\t\t\t\t\"autodesk.examples:test.set-1.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNodeProperty: true,\n\t\t\t\t},\n\t\t\t\t\"autodesk.examples:test.set-2.0.0\": {\n\t\t\t\t\tBaseProperty: true,\n\t\t\t\t\tAbstractStaticCollectionProperty: true,\n\t\t\t\t\tNodeProperty: true,\n\t\t\t\t},\n\t\t\t};\n\n\t\t\texpect(PropertyFactory._inheritanceCache).to.deep.equal(expectedResults);\n\t\t});\n\n\t\tit(\"should flush the cache when _clear() is called\", () => {\n\t\t\texpect(\n\t\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-1.0.0\", \"NamedProperty\"),\n\t\t\t).to.be.true;\n\t\t\texpect(\n\t\t\t\tPropertyFactory.inheritsFrom(\"autodesk.examples:test.set-2.0.0\", \"NamedProperty\"),\n\t\t\t).to.be.true;\n\n\t\t\tPropertyFactory._clear();\n\t\t\texpect(PropertyFactory._inheritanceCache).to.be.empty;\n\t\t});\n\t});\n});\n\ndescribe(\"Remote template scope collection\", () => {\n\tvar ColorID;\n\tvar scope = () => PropertyFactory._remoteScopedAndVersionedTemplates;\n\n\tbefore(() => {\n\t\tColorID = require(\"./validation/goodColorId\");\n\t});\n\n\tbeforeEach(() => {\n\t\tPropertyFactory._clear();\n\t});\n\n\tit(\"should collect registered remote templates in the scope.\", () => {\n\t\tconst scopeGuid = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuid);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuid);\n\n\t\texpect(scope().getCount()).to.be.equal(1);\n\t\texpect(scope().has(scopeGuid)).to.be.true;\n\t\texpect(scope().item(scopeGuid).getCount()).to.be.equal(2);\n\n\t\texpect(scope().item(scopeGuid).has(\"testA:ColorID\")).to.be.true;\n\t\texpect(scope().item(scopeGuid).item(\"testA:ColorID\").getKeys()).to.have.members([\"1.0.0\"]);\n\n\t\texpect(scope().item(scopeGuid).has(\"testB:ColorID\")).to.be.true;\n\t\texpect(scope().item(scopeGuid).item(\"testB:ColorID\").getKeys()).to.have.members([\"1.0.0\"]);\n\t});\n\n\tit(\"should remove a specific scope from the scope collection when _removeScope is called.\", () => {\n\t\tconst scopeGuidA = generateGUID();\n\t\tconst scopeGuidB = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n\t\texpect(scope().getCount()).to.be.equal(2);\n\t\texpect(scope().has(scopeGuidA)).to.be.true;\n\t\texpect(scope().has(scopeGuidB)).to.be.true;\n\n\t\tPropertyFactory._removeScope(scopeGuidA);\n\n\t\texpect(scope().getCount()).to.be.equal(1);\n\t\texpect(scope().has(scopeGuidA)).to.be.false;\n\t\texpect(scope().has(scopeGuidB)).to.be.true;\n\t});\n\n\tit(\"should be able to get a specific template from the scope collection.\", () => {\n\t\tconst scopeGuidA = generateGUID();\n\t\tconst scopeGuidB = generateGUID();\n\t\tconst templateA = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testA:ColorID-1.0.0\",\n\t\t});\n\t\tconst templateB = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"testB:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(templateA, scopeGuidA);\n\t\tPropertyFactory._registerRemoteTemplate(templateB, scopeGuidB);\n\n\t\texpect(\n\t\t\tPropertyFactory._get(\"testA:ColorID-1.0.0\", undefined, scopeGuidA).typeid,\n\t\t).to.be.equal(\"testA:ColorID-1.0.0\");\n\n\t\texpect(\n\t\t\tPropertyFactory._get(\"testB:ColorID-1.0.0\", undefined, scopeGuidB).typeid,\n\t\t).to.be.equal(\"testB:ColorID-1.0.0\");\n\t});\n\n\tit(\"should be cleared when the PropertyFactory is.\", () => {\n\t\tconst scopeGuid = generateGUID();\n\t\tconst template = Object.assign({}, ColorID[\"1-0-0\"].original, {\n\t\t\ttypeid: \"test:ColorID-1.0.0\",\n\t\t});\n\n\t\tPropertyFactory._registerRemoteTemplate(template, scopeGuid);\n\t\tPropertyFactory._clear();\n\n\t\texpect(scope().getCount()).to.be.equal(0);\n\t});\n});\n"]}