@cuemath/leap 4.1.1-gg4 → 4.1.1-j2

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 (2300) hide show
  1. package/dist/_virtual/___vite-browser-external.js +7 -0
  2. package/dist/_virtual/___vite-browser-external.js.map +1 -0
  3. package/dist/_virtual/__vite-browser-external.js +5 -0
  4. package/dist/_virtual/__vite-browser-external.js.map +1 -0
  5. package/dist/_virtual/_commonjsHelpers.js +24 -4
  6. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  7. package/dist/_virtual/alea.js +5 -0
  8. package/dist/_virtual/alea.js.map +1 -0
  9. package/dist/_virtual/seedrandom.js +5 -0
  10. package/dist/_virtual/seedrandom.js.map +1 -0
  11. package/dist/_virtual/tychei.js +5 -0
  12. package/dist/_virtual/tychei.js.map +1 -0
  13. package/dist/_virtual/xor128.js +5 -0
  14. package/dist/_virtual/xor128.js.map +1 -0
  15. package/dist/_virtual/xor4096.js +5 -0
  16. package/dist/_virtual/xor4096.js.map +1 -0
  17. package/dist/_virtual/xorshift7.js +5 -0
  18. package/dist/_virtual/xorshift7.js.map +1 -0
  19. package/dist/_virtual/xorwow.js +5 -0
  20. package/dist/_virtual/xorwow.js.map +1 -0
  21. package/dist/features/av/av-preview/av-preview.js +144 -108
  22. package/dist/features/av/av-preview/av-preview.js.map +1 -1
  23. package/dist/features/av/video-analysis/hooks/use-video-analysis.js +143 -0
  24. package/dist/features/av/video-analysis/hooks/use-video-analysis.js.map +1 -0
  25. package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js +89 -0
  26. package/dist/features/av/video-analysis/mediapipe/mediapipe-constants.js.map +1 -0
  27. package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js +126 -0
  28. package/dist/features/av/video-analysis/mediapipe/mediapipe-face-detector.js.map +1 -0
  29. package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js +86 -0
  30. package/dist/features/av/video-analysis/mediapipe/mediapipe-helpers.js.map +1 -0
  31. package/dist/features/av/video-analysis/tensorflow/emotion-model.js +404 -0
  32. package/dist/features/av/video-analysis/tensorflow/emotion-model.js.map +1 -0
  33. package/dist/features/av/video-analysis/tensorflow/emotion-types.js +20 -0
  34. package/dist/features/av/video-analysis/tensorflow/emotion-types.js.map +1 -0
  35. package/dist/features/av/video-analysis/video-analysis-helpers.js +40 -0
  36. package/dist/features/av/video-analysis/video-analysis-helpers.js.map +1 -0
  37. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js +64 -0
  38. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-helpers.js.map +1 -0
  39. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js +73 -0
  40. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay-styled.js.map +1 -0
  41. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js +78 -0
  42. package/dist/features/av/video-analysis/video-analysis-overlay/video-analysis-overlay.js.map +1 -0
  43. package/dist/features/av/video-analysis/video-analysis-styled.js +40 -0
  44. package/dist/features/av/video-analysis/video-analysis-styled.js.map +1 -0
  45. package/dist/features/av/video-analysis/video-analysis.js +316 -0
  46. package/dist/features/av/video-analysis/video-analysis.js.map +1 -0
  47. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +27 -25
  48. package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
  49. package/dist/features/chapters/chapters-list/chapters-list.js +53 -43
  50. package/dist/features/chapters/chapters-list/chapters-list.js.map +1 -1
  51. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +17 -15
  52. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
  53. package/dist/features/chapters-v2/chapter-details/chapter-details.js +66 -62
  54. package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -1
  55. package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js +97 -0
  56. package/dist/features/journey/hooks/use-learning-plan-journey/use-chapter-details-journey.js.map +1 -0
  57. package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js +105 -0
  58. package/dist/features/journey/hooks/use-learning-plan-journey/use-learning-plan-journey.js.map +1 -0
  59. package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js +64 -0
  60. package/dist/features/journey/hooks/use-learning-plan-journey/use-resource-assignment-journey.js.map +1 -0
  61. package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js +64 -0
  62. package/dist/features/journey/hooks/use-learning-plan-journey/use-test-creation-journey.js.map +1 -0
  63. package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js +65 -0
  64. package/dist/features/journey/hooks/use-learning-plan-journey/use-worksheet-preview-journey.js.map +1 -0
  65. package/dist/features/journey/journey-id/journey-id-teacher.js +1 -1
  66. package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
  67. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +105 -93
  68. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  69. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +42 -40
  70. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  71. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +36 -34
  72. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  73. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +126 -107
  74. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  75. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +107 -95
  76. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  77. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +116 -104
  78. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  79. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +99 -91
  80. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  81. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +89 -83
  82. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  83. package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js +40 -0
  84. package/dist/features/trial-session/comps/learning-plan/goal-edit-sync.js.map +1 -0
  85. package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js +55 -0
  86. package/dist/features/trial-session/comps/learning-plan/learning-assign-resource-sync.js.map +1 -0
  87. package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js +48 -0
  88. package/dist/features/trial-session/comps/learning-plan/learning-chapter-details.js.map +1 -0
  89. package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js +145 -0
  90. package/dist/features/trial-session/comps/learning-plan/learning-milestone-sync.js.map +1 -0
  91. package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js +30 -0
  92. package/dist/features/trial-session/comps/learning-plan/learning-plan-helpers.js.map +1 -0
  93. package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js +17 -0
  94. package/dist/features/trial-session/comps/learning-plan/learning-plan-view.js.map +1 -0
  95. package/dist/features/trial-session/comps/learning-plan/learning-plan.js +93 -0
  96. package/dist/features/trial-session/comps/learning-plan/learning-plan.js.map +1 -0
  97. package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js +81 -0
  98. package/dist/features/trial-session/comps/learning-plan/learning-preview-worksheet.js.map +1 -0
  99. package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js +41 -0
  100. package/dist/features/trial-session/comps/learning-plan/learning-test-creation-sync.js.map +1 -0
  101. package/dist/features/trial-session/comps/worksheet/worksheet.js +41 -34
  102. package/dist/features/trial-session/comps/worksheet/worksheet.js.map +1 -1
  103. package/dist/features/trial-session/right-panel/index.js +26 -26
  104. package/dist/features/trial-session/right-panel/index.js.map +1 -1
  105. package/dist/features/trial-session/right-panel/right-panel-styled.js +27 -31
  106. package/dist/features/trial-session/right-panel/right-panel-styled.js.map +1 -1
  107. package/dist/features/trial-session/right-panel/slide-components-map.js +1 -1
  108. package/dist/features/trial-session/right-panel/slide-components-map.js.map +1 -1
  109. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  110. package/dist/features/ui/buttons/button/button.js +51 -50
  111. package/dist/features/ui/buttons/button/button.js.map +1 -1
  112. package/dist/features/ui/buttons/icon-button/icon-button.js +21 -20
  113. package/dist/features/ui/buttons/icon-button/icon-button.js.map +1 -1
  114. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +76 -66
  115. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  116. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +44 -48
  117. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
  118. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js +72 -73
  119. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-section-navigation/worksheet-section-navigation.js.map +1 -1
  120. package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js +31 -33
  121. package/dist/features/worksheet/worksheet/worksheet-questions/worksheet-questions.js.map +1 -1
  122. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  123. package/dist/features/worksheet/worksheet/worksheet-view.js +39 -39
  124. package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
  125. package/dist/features/worksheet/worksheet/worksheet.js +51 -41
  126. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  127. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +47 -34
  128. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
  129. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +27 -24
  130. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  131. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +47 -41
  132. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  133. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +28 -26
  134. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  135. package/dist/index.d.ts +161 -4
  136. package/dist/index.js +452 -446
  137. package/dist/index.js.map +1 -1
  138. package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js +3713 -0
  139. package/dist/node_modules/@mediapipe/tasks-vision/vision_bundle.js.map +1 -0
  140. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js +155 -0
  141. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/backend_cpu.js.map +1 -0
  142. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js +29 -0
  143. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/base.js.map +1 -0
  144. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js +27 -0
  145. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/cpu_util.js.map +1 -0
  146. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js +43 -0
  147. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Abs.js.map +1 -0
  148. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js +29 -0
  149. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acos.js.map +1 -0
  150. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js +29 -0
  151. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Acosh.js.map +1 -0
  152. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js +32 -0
  153. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Add.js.map +1 -0
  154. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js +41 -0
  155. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AddN.js.map +1 -0
  156. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js +59 -0
  157. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/All.js.map +1 -0
  158. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js +59 -0
  159. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Any.js.map +1 -0
  160. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js +52 -0
  161. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMax.js.map +1 -0
  162. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js +52 -0
  163. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ArgMin.js.map +1 -0
  164. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js +29 -0
  165. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asin.js.map +1 -0
  166. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js +29 -0
  167. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Asinh.js.map +1 -0
  168. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js +29 -0
  169. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan.js.map +1 -0
  170. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js +31 -0
  171. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atan2.js.map +1 -0
  172. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js +29 -0
  173. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Atanh.js.map +1 -0
  174. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js +48 -0
  175. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool.js.map +1 -0
  176. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js +38 -0
  177. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3D.js.map +1 -0
  178. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js +61 -0
  179. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPool3DGrad.js.map +1 -0
  180. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js +56 -0
  181. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/AvgPoolGrad.js.map +1 -0
  182. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js +68 -0
  183. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchMatMul.js.map +1 -0
  184. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js +41 -0
  185. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchNorm.js.map +1 -0
  186. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js +43 -0
  187. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BatchToSpaceND.js.map +1 -0
  188. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js +33 -0
  189. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount.js.map +1 -0
  190. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js +45 -0
  191. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Bincount_impl.js.map +1 -0
  192. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js +31 -0
  193. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BitwiseAnd.js.map +1 -0
  194. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js +33 -0
  195. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/BroadcastArgs.js.map +1 -0
  196. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js +66 -0
  197. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cast.js.map +1 -0
  198. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js +31 -0
  199. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Ceil.js.map +1 -0
  200. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js +32 -0
  201. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ClipByValue.js.map +1 -0
  202. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js +35 -0
  203. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Complex.js.map +1 -0
  204. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js +36 -0
  205. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ComplexAbs.js.map +1 -0
  206. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js +61 -0
  207. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat.js.map +1 -0
  208. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js +46 -0
  209. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Concat_impl.js.map +1 -0
  210. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js +66 -0
  211. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2D.js.map +1 -0
  212. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js +56 -0
  213. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
  214. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js +63 -0
  215. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv2DBackpropInput.js.map +1 -0
  216. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js +75 -0
  217. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3D.js.map +1 -0
  218. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js +67 -0
  219. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
  220. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js +64 -0
  221. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
  222. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js +29 -0
  223. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cos.js.map +1 -0
  224. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js +29 -0
  225. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cosh.js.map +1 -0
  226. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js +91 -0
  227. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/CropAndResize.js.map +1 -0
  228. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js +60 -0
  229. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumprod.js.map +1 -0
  230. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js +60 -0
  231. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Cumsum.js.map +1 -0
  232. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js +40 -0
  233. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DenseBincount.js.map +1 -0
  234. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js +47 -0
  235. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthToSpace.js.map +1 -0
  236. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js +78 -0
  237. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
  238. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +65 -0
  239. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
  240. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +67 -0
  241. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
  242. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js +37 -0
  243. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Diag.js.map +1 -0
  244. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js +56 -0
  245. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2D.js.map +1 -0
  246. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js +57 -0
  247. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropFilter.js.map +1 -0
  248. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js +57 -0
  249. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Dilation2DBackpropInput.js.map +1 -0
  250. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js +54 -0
  251. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Draw.js.map +1 -0
  252. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js +63 -0
  253. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Einsum.js.map +1 -0
  254. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js +29 -0
  255. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Elu.js.map +1 -0
  256. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js +40 -0
  257. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/EluGrad.js.map +1 -0
  258. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js +31 -0
  259. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Equal.js.map +1 -0
  260. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js +33 -0
  261. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Erf.js.map +1 -0
  262. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js +31 -0
  263. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Exp.js.map +1 -0
  264. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js +35 -0
  265. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ExpandDims.js.map +1 -0
  266. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js +31 -0
  267. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Expm1.js.map +1 -0
  268. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js +39 -0
  269. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FFT.js.map +1 -0
  270. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js +36 -0
  271. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Fill.js.map +1 -0
  272. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js +49 -0
  273. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FlipLeftRight.js.map +1 -0
  274. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js +31 -0
  275. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Floor.js.map +1 -0
  276. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js +31 -0
  277. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FloorDiv.js.map +1 -0
  278. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js +63 -0
  279. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedConv2D.js.map +1 -0
  280. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js +48 -0
  281. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
  282. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js +38 -0
  283. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd.js.map +1 -0
  284. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js +38 -0
  285. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherNd_Impl.js.map +1 -0
  286. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js +66 -0
  287. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2.js.map +1 -0
  288. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js +32 -0
  289. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GatherV2_impl.js.map +1 -0
  290. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js +31 -0
  291. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Greater.js.map +1 -0
  292. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js +31 -0
  293. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/GreaterEqual.js.map +1 -0
  294. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js +39 -0
  295. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IFFT.js.map +1 -0
  296. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js +32 -0
  297. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Identity.js.map +1 -0
  298. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js +32 -0
  299. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Imag.js.map +1 -0
  300. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js +29 -0
  301. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsFinite.js.map +1 -0
  302. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js +29 -0
  303. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsInf.js.map +1 -0
  304. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js +29 -0
  305. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/IsNaN.js.map +1 -0
  306. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js +51 -0
  307. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRN.js.map +1 -0
  308. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js +47 -0
  309. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LRNGrad.js.map +1 -0
  310. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js +38 -0
  311. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LeakyRelu.js.map +1 -0
  312. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js +31 -0
  313. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Less.js.map +1 -0
  314. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js +31 -0
  315. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LessEqual.js.map +1 -0
  316. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js +33 -0
  317. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace.js.map +1 -0
  318. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js +29 -0
  319. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LinSpace_impl.js.map +1 -0
  320. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js +31 -0
  321. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log.js.map +1 -0
  322. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js +29 -0
  323. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Log1p.js.map +1 -0
  324. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js +31 -0
  325. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalAnd.js.map +1 -0
  326. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js +29 -0
  327. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalNot.js.map +1 -0
  328. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js +31 -0
  329. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/LogicalOr.js.map +1 -0
  330. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js +51 -0
  331. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max.js.map +1 -0
  332. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js +48 -0
  333. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool.js.map +1 -0
  334. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js +38 -0
  335. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3D.js.map +1 -0
  336. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js +65 -0
  337. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPool3DGrad.js.map +1 -0
  338. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js +60 -0
  339. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolGrad.js.map +1 -0
  340. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js +38 -0
  341. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
  342. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js +27 -0
  343. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
  344. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js +35 -0
  345. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Max_impl.js.map +1 -0
  346. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js +31 -0
  347. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Maximum.js.map +1 -0
  348. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js +43 -0
  349. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mean.js.map +1 -0
  350. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js +59 -0
  351. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Min.js.map +1 -0
  352. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js +31 -0
  353. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Minimum.js.map +1 -0
  354. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js +47 -0
  355. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/MirrorPad.js.map +1 -0
  356. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js +34 -0
  357. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Mod.js.map +1 -0
  358. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js +54 -0
  359. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multinomial.js.map +1 -0
  360. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js +35 -0
  361. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Multiply.js.map +1 -0
  362. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js +42 -0
  363. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Neg.js.map +1 -0
  364. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js +37 -0
  365. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
  366. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js +40 -0
  367. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
  368. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js +40 -0
  369. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
  370. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js +31 -0
  371. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/NotEqual.js.map +1 -0
  372. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js +40 -0
  373. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OneHot.js.map +1 -0
  374. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js +43 -0
  375. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/OnesLike.js.map +1 -0
  376. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js +45 -0
  377. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pack.js.map +1 -0
  378. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js +44 -0
  379. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/PadV2.js.map +1 -0
  380. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js +31 -0
  381. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Pow.js.map +1 -0
  382. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js +37 -0
  383. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prelu.js.map +1 -0
  384. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js +56 -0
  385. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Prod.js.map +1 -0
  386. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js +33 -0
  387. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather.js.map +1 -0
  388. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js +114 -0
  389. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedGather_impl.js.map +1 -0
  390. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js +33 -0
  391. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange.js.map +1 -0
  392. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js +59 -0
  393. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedRange_impl.js.map +1 -0
  394. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js +33 -0
  395. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor.js.map +1 -0
  396. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js +275 -0
  397. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RaggedTensorToTensor_impl.js.map +1 -0
  398. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js +33 -0
  399. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range.js.map +1 -0
  400. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js +32 -0
  401. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Range_impl.js.map +1 -0
  402. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js +32 -0
  403. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Real.js.map +1 -0
  404. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js +31 -0
  405. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RealDiv.js.map +1 -0
  406. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js +29 -0
  407. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reciprocal.js.map +1 -0
  408. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js +29 -0
  409. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu.js.map +1 -0
  410. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js +29 -0
  411. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Relu6.js.map +1 -0
  412. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js +39 -0
  413. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reshape.js.map +1 -0
  414. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js +59 -0
  415. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinear.js.map +1 -0
  416. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js +56 -0
  417. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeBilinearGrad.js.map +1 -0
  418. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js +62 -0
  419. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
  420. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js +69 -0
  421. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
  422. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js +45 -0
  423. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Reverse.js.map +1 -0
  424. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js +53 -0
  425. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/RotateWithOffset.js.map +1 -0
  426. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js +32 -0
  427. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Round.js.map +1 -0
  428. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js +31 -0
  429. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Rsqrt.js.map +1 -0
  430. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js +34 -0
  431. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ScatterNd.js.map +1 -0
  432. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js +43 -0
  433. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Scatter_impl.js.map +1 -0
  434. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js +33 -0
  435. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted.js.map +1 -0
  436. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js +43 -0
  437. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SearchSorted_impl.js.map +1 -0
  438. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js +42 -0
  439. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Select.js.map +1 -0
  440. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js +30 -0
  441. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Selu.js.map +1 -0
  442. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js +31 -0
  443. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sigmoid.js.map +1 -0
  444. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js +29 -0
  445. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sign.js.map +1 -0
  446. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js +29 -0
  447. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sin.js.map +1 -0
  448. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js +29 -0
  449. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sinh.js.map +1 -0
  450. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js +55 -0
  451. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Slice.js.map +1 -0
  452. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js +48 -0
  453. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softmax.js.map +1 -0
  454. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js +33 -0
  455. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Softplus.js.map +1 -0
  456. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js +48 -0
  457. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SpaceToBatchND.js.map +1 -0
  458. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js +51 -0
  459. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows.js.map +1 -0
  460. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js +89 -0
  461. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseFillEmptyRows_impl.js.map +1 -0
  462. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js +45 -0
  463. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape.js.map +1 -0
  464. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js +70 -0
  465. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseReshape_impl.js.map +1 -0
  466. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js +44 -0
  467. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentMean.js.map +1 -0
  468. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js +63 -0
  469. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentReduction_impl.js.map +1 -0
  470. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js +44 -0
  471. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseSegmentSum.js.map +1 -0
  472. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js +60 -0
  473. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SparseToDense.js.map +1 -0
  474. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js +40 -0
  475. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SplitV.js.map +1 -0
  476. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js +31 -0
  477. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sqrt.js.map +1 -0
  478. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js +37 -0
  479. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Square.js.map +1 -0
  480. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js +34 -0
  481. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/SquaredDifference.js.map +1 -0
  482. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js +33 -0
  483. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StaticRegexReplace.js.map +1 -0
  484. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js +32 -0
  485. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Step.js.map +1 -0
  486. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js +51 -0
  487. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice.js.map +1 -0
  488. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js +32 -0
  489. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StridedSlice_impl.js.map +1 -0
  490. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js +36 -0
  491. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams.js.map +1 -0
  492. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js +116 -0
  493. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringNGrams_impl.js.map +1 -0
  494. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js +44 -0
  495. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit.js.map +1 -0
  496. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js +64 -0
  497. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringSplit_impl.js.map +1 -0
  498. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js +38 -0
  499. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast.js.map +1 -0
  500. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js +29 -0
  501. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/StringToHashBucketFast_impl.js.map +1 -0
  502. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js +32 -0
  503. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sub.js.map +1 -0
  504. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js +61 -0
  505. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Sum.js.map +1 -0
  506. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js +29 -0
  507. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tan.js.map +1 -0
  508. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js +29 -0
  509. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tanh.js.map +1 -0
  510. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js +34 -0
  511. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TensorScatterUpdate.js.map +1 -0
  512. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js +36 -0
  513. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile.js.map +1 -0
  514. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js +36 -0
  515. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Tile_impl.js.map +1 -0
  516. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js +39 -0
  517. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK.js.map +1 -0
  518. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js +60 -0
  519. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/TopK_impl.js.map +1 -0
  520. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js +127 -0
  521. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transform.js.map +1 -0
  522. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js +39 -0
  523. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose.js.map +1 -0
  524. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js +33 -0
  525. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Transpose_impl.js.map +1 -0
  526. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js +39 -0
  527. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique.js.map +1 -0
  528. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js +65 -0
  529. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unique_impl.js.map +1 -0
  530. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js +48 -0
  531. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/Unpack.js.map +1 -0
  532. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js +52 -0
  533. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/UnsortedSegmentSum.js.map +1 -0
  534. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js +42 -0
  535. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/ZerosLike.js.map +1 -0
  536. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js +40 -0
  537. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/kernels/_FusedMatMul.js.map +1 -0
  538. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js +367 -0
  539. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/register_all_kernels.js.map +1 -0
  540. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js +120 -0
  541. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/shared.js.map +1 -0
  542. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js +41 -0
  543. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_impl.js.map +1 -0
  544. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js +72 -0
  545. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/binary_utils.js.map +1 -0
  546. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js +108 -0
  547. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fft_utils.js.map +1 -0
  548. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js +44 -0
  549. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/fused_utils.js.map +1 -0
  550. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js +166 -0
  551. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/pool_utils.js.map +1 -0
  552. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js +30 -0
  553. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_impl.js.map +1 -0
  554. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js +45 -0
  555. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/unary_utils.js.map +1 -0
  556. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js +31 -0
  557. package/dist/node_modules/@tensorflow/tfjs-backend-cpu/dist/utils/zeros_impl.js.map +1 -0
  558. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js +39 -0
  559. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_gpu.js.map +1 -0
  560. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js +39 -0
  561. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/addn_packed_gpu.js.map +1 -0
  562. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js +49 -0
  563. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_gpu.js.map +1 -0
  564. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js +103 -0
  565. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/argminmax_packed_gpu.js.map +1 -0
  566. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js +133 -0
  567. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/avg_pool_backprop_gpu.js.map +1 -0
  568. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js +583 -0
  569. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.js.map +1 -0
  570. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js +30 -0
  571. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/base.js.map +1 -0
  572. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js +41 -0
  573. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_gpu.js.map +1 -0
  574. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js +44 -0
  575. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/batchnorm_packed_gpu.js.map +1 -0
  576. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js +45 -0
  577. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_complex_gpu.js.map +1 -0
  578. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js +43 -0
  579. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_gpu.js.map +1 -0
  580. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js +95 -0
  581. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/binaryop_packed_gpu.js.map +1 -0
  582. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js +64 -0
  583. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.js.map +1 -0
  584. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js +39 -0
  585. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_gpu.js.map +1 -0
  586. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js +39 -0
  587. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/clip_packed_gpu.js.map +1 -0
  588. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js +38 -0
  589. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/complex_abs_gpu.js.map +1 -0
  590. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js +52 -0
  591. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_gpu.js.map +1 -0
  592. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js +84 -0
  593. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/concat_packed_gpu.js.map +1 -0
  594. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js +240 -0
  595. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu.js.map +1 -0
  596. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js +115 -0
  597. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_gpu_depthwise.js.map +1 -0
  598. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js +104 -0
  599. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_backprop_packed_gpu.js.map +1 -0
  600. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js +260 -0
  601. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu.js.map +1 -0
  602. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js +89 -0
  603. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_gpu_depthwise.js.map +1 -0
  604. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js +253 -0
  605. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu.js.map +1 -0
  606. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js +246 -0
  607. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/conv_packed_gpu_depthwise.js.map +1 -0
  608. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js +106 -0
  609. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/crop_and_resize_gpu.js.map +1 -0
  610. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js +53 -0
  611. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/cum_gpu.js.map +1 -0
  612. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js +51 -0
  613. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_gpu.js.map +1 -0
  614. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js +51 -0
  615. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/decode_matrix_packed_gpu.js.map +1 -0
  616. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js +59 -0
  617. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/depth_to_space_gpu.js.map +1 -0
  618. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js +31 -0
  619. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/diag_gpu.js.map +1 -0
  620. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js +65 -0
  621. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/dilation_gpu.js.map +1 -0
  622. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js +37 -0
  623. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_gpu.js.map +1 -0
  624. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js +38 -0
  625. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_float_packed_gpu.js.map +1 -0
  626. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js +67 -0
  627. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_gpu.js.map +1 -0
  628. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js +82 -0
  629. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/encode_matrix_packed_gpu.js.map +1 -0
  630. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js +69 -0
  631. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fft_gpu.js.map +1 -0
  632. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js +30 -0
  633. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/fill_gpu.js.map +1 -0
  634. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js +74 -0
  635. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flags_webgl.js.map +1 -0
  636. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js +41 -0
  637. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/flip_left_right_gpu.js.map +1 -0
  638. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js +41 -0
  639. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_gpu.js.map +1 -0
  640. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js +30 -0
  641. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gather_nd_gpu.js.map +1 -0
  642. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js +83 -0
  643. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/glsl_version.js.map +1 -0
  644. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js +295 -0
  645. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_context.js.map +1 -0
  646. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js +230 -0
  647. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_math.js.map +1 -0
  648. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js +139 -0
  649. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/gpgpu_util.js.map +1 -0
  650. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js +88 -0
  651. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/im2col_packed_gpu.js.map +1 -0
  652. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js +62 -0
  653. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/arg_min_max.js.map +1 -0
  654. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js +26 -0
  655. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/int.js.map +1 -0
  656. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js +101 -0
  657. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/kernel_funcs_utils.js.map +1 -0
  658. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js +46 -0
  659. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reduce.js.map +1 -0
  660. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js +36 -0
  661. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/reshape.js.map +1 -0
  662. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js +70 -0
  663. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernel_utils/shared.js.map +1 -0
  664. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js +42 -0
  665. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Abs.js.map +1 -0
  666. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js +35 -0
  667. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acos.js.map +1 -0
  668. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js +32 -0
  669. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Acosh.js.map +1 -0
  670. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js +35 -0
  671. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Add.js.map +1 -0
  672. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js +44 -0
  673. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AddN.js.map +1 -0
  674. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js +48 -0
  675. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/All.js.map +1 -0
  676. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js +48 -0
  677. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Any.js.map +1 -0
  678. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js +42 -0
  679. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMax.js.map +1 -0
  680. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js +42 -0
  681. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ArgMin.js.map +1 -0
  682. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js +35 -0
  683. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asin.js.map +1 -0
  684. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js +30 -0
  685. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Asinh.js.map +1 -0
  686. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js +32 -0
  687. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan.js.map +1 -0
  688. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js +40 -0
  689. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atan2.js.map +1 -0
  690. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js +32 -0
  691. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Atanh.js.map +1 -0
  692. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js +44 -0
  693. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool.js.map +1 -0
  694. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js +34 -0
  695. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3D.js.map +1 -0
  696. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js +34 -0
  697. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPool3DGrad.js.map +1 -0
  698. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js +37 -0
  699. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/AvgPoolGrad.js.map +1 -0
  700. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js +33 -0
  701. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul.js.map +1 -0
  702. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js +71 -0
  703. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchMatMul_impl.js.map +1 -0
  704. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js +44 -0
  705. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchNorm.js.map +1 -0
  706. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js +46 -0
  707. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BatchToSpaceND.js.map +1 -0
  708. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js +33 -0
  709. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Bincount.js.map +1 -0
  710. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js +52 -0
  711. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BitwiseAnd.js.map +1 -0
  712. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js +33 -0
  713. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/BroadcastArgs.js.map +1 -0
  714. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js +64 -0
  715. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cast.js.map +1 -0
  716. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js +30 -0
  717. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Ceil.js.map +1 -0
  718. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js +38 -0
  719. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ClipByValue.js.map +1 -0
  720. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js +33 -0
  721. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Complex.js.map +1 -0
  722. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js +43 -0
  723. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ComplexAbs.js.map +1 -0
  724. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js +41 -0
  725. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat.js.map +1 -0
  726. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js +85 -0
  727. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Concat_impl.js.map +1 -0
  728. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js +56 -0
  729. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D.js.map +1 -0
  730. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js +34 -0
  731. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropFilter.js.map +1 -0
  732. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js +44 -0
  733. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2DBackpropInput.js.map +1 -0
  734. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js +155 -0
  735. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv2D_impl.js.map +1 -0
  736. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js +34 -0
  737. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3D.js.map +1 -0
  738. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js +34 -0
  739. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropFilterV2.js.map +1 -0
  740. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js +34 -0
  741. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Conv3DBackpropInputV2.js.map +1 -0
  742. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js +37 -0
  743. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cos.js.map +1 -0
  744. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js +32 -0
  745. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cosh.js.map +1 -0
  746. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js +32 -0
  747. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/CropAndResize.js.map +1 -0
  748. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js +48 -0
  749. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cum_impl.js.map +1 -0
  750. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js +34 -0
  751. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumprod.js.map +1 -0
  752. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js +34 -0
  753. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Cumsum.js.map +1 -0
  754. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js +40 -0
  755. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DenseBincount.js.map +1 -0
  756. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js +33 -0
  757. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthToSpace.js.map +1 -0
  758. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js +57 -0
  759. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNative.js.map +1 -0
  760. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js +43 -0
  761. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropFilter.js.map +1 -0
  762. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js +43 -0
  763. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/DepthwiseConv2dNativeBackpropInput.js.map +1 -0
  764. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js +35 -0
  765. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Diag.js.map +1 -0
  766. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js +39 -0
  767. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Dilation2D.js.map +1 -0
  768. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js +63 -0
  769. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Einsum.js.map +1 -0
  770. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js +37 -0
  771. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Elu.js.map +1 -0
  772. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js +37 -0
  773. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/EluGrad.js.map +1 -0
  774. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js +37 -0
  775. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Equal.js.map +1 -0
  776. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js +45 -0
  777. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Erf.js.map +1 -0
  778. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js +47 -0
  779. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Exp.js.map +1 -0
  780. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js +35 -0
  781. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ExpandDims.js.map +1 -0
  782. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js +30 -0
  783. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Expm1.js.map +1 -0
  784. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js +33 -0
  785. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT.js.map +1 -0
  786. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js +42 -0
  787. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FFT_impl.js.map +1 -0
  788. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js +41 -0
  789. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Fill.js.map +1 -0
  790. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js +31 -0
  791. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FlipLeftRight.js.map +1 -0
  792. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js +30 -0
  793. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Floor.js.map +1 -0
  794. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js +60 -0
  795. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FloorDiv.js.map +1 -0
  796. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js +48 -0
  797. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels.js.map +1 -0
  798. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js +50 -0
  799. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_gpu.js.map +1 -0
  800. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js +62 -0
  801. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FromPixels_utils/from_pixels_packed_gpu.js.map +1 -0
  802. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js +94 -0
  803. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedConv2D.js.map +1 -0
  804. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js +63 -0
  805. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/FusedDepthwiseConv2D.js.map +1 -0
  806. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js +46 -0
  807. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherNd.js.map +1 -0
  808. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js +75 -0
  809. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GatherV2.js.map +1 -0
  810. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js +37 -0
  811. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Greater.js.map +1 -0
  812. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js +37 -0
  813. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/GreaterEqual.js.map +1 -0
  814. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js +33 -0
  815. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IFFT.js.map +1 -0
  816. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js +32 -0
  817. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Identity.js.map +1 -0
  818. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js +33 -0
  819. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Imag.js.map +1 -0
  820. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js +29 -0
  821. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsFinite.js.map +1 -0
  822. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js +29 -0
  823. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsInf.js.map +1 -0
  824. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js +29 -0
  825. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/IsNaN.js.map +1 -0
  826. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js +34 -0
  827. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRN.js.map +1 -0
  828. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js +32 -0
  829. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LRNGrad.js.map +1 -0
  830. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js +42 -0
  831. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LeakyRelu.js.map +1 -0
  832. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js +37 -0
  833. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Less.js.map +1 -0
  834. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js +39 -0
  835. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LessEqual.js.map +1 -0
  836. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js +33 -0
  837. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LinSpace.js.map +1 -0
  838. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js +40 -0
  839. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log.js.map +1 -0
  840. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js +31 -0
  841. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Log1p.js.map +1 -0
  842. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js +37 -0
  843. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalAnd.js.map +1 -0
  844. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js +29 -0
  845. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalNot.js.map +1 -0
  846. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js +34 -0
  847. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/LogicalOr.js.map +1 -0
  848. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js +65 -0
  849. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max.js.map +1 -0
  850. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js +44 -0
  851. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool.js.map +1 -0
  852. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js +34 -0
  853. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3D.js.map +1 -0
  854. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js +40 -0
  855. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPool3DGrad.js.map +1 -0
  856. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js +38 -0
  857. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolGrad.js.map +1 -0
  858. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js +37 -0
  859. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax.js.map +1 -0
  860. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js +28 -0
  861. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MaxPoolWithArgmax_impl.js.map +1 -0
  862. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js +28 -0
  863. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Max_impl.js.map +1 -0
  864. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js +45 -0
  865. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Maximum.js.map +1 -0
  866. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js +58 -0
  867. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean.js.map +1 -0
  868. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js +28 -0
  869. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mean_impl.js.map +1 -0
  870. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js +48 -0
  871. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Min.js.map +1 -0
  872. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js +45 -0
  873. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Minimum.js.map +1 -0
  874. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js +34 -0
  875. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/MirrorPad.js.map +1 -0
  876. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js +39 -0
  877. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Mod.js.map +1 -0
  878. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js +34 -0
  879. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multinomial.js.map +1 -0
  880. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js +70 -0
  881. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Multiply.js.map +1 -0
  882. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js +54 -0
  883. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Neg.js.map +1 -0
  884. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js +36 -0
  885. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV3.js.map +1 -0
  886. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js +39 -0
  887. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV4.js.map +1 -0
  888. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js +39 -0
  889. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NonMaxSuppressionV5.js.map +1 -0
  890. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js +30 -0
  891. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/NotEqual.js.map +1 -0
  892. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js +36 -0
  893. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OneHot.js.map +1 -0
  894. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js +43 -0
  895. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/OnesLike.js.map +1 -0
  896. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js +45 -0
  897. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pack.js.map +1 -0
  898. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js +47 -0
  899. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/PadV2.js.map +1 -0
  900. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js +57 -0
  901. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Pow.js.map +1 -0
  902. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js +41 -0
  903. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prelu.js.map +1 -0
  904. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js +56 -0
  905. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Prod.js.map +1 -0
  906. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js +33 -0
  907. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedGather.js.map +1 -0
  908. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js +33 -0
  909. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedRange.js.map +1 -0
  910. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js +33 -0
  911. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RaggedTensorToTensor.js.map +1 -0
  912. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js +32 -0
  913. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Range.js.map +1 -0
  914. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js +33 -0
  915. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Real.js.map +1 -0
  916. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js +51 -0
  917. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RealDiv.js.map +1 -0
  918. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js +29 -0
  919. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reciprocal.js.map +1 -0
  920. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js +42 -0
  921. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu.js.map +1 -0
  922. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js +42 -0
  923. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Relu6.js.map +1 -0
  924. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js +37 -0
  925. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reshape.js.map +1 -0
  926. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js +35 -0
  927. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinear.js.map +1 -0
  928. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js +33 -0
  929. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeBilinearGrad.js.map +1 -0
  930. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js +35 -0
  931. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighbor.js.map +1 -0
  932. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js +33 -0
  933. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ResizeNearestNeighborGrad.js.map +1 -0
  934. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js +40 -0
  935. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Reverse.js.map +1 -0
  936. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js +32 -0
  937. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/RotateWithOffset.js.map +1 -0
  938. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js +44 -0
  939. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Round.js.map +1 -0
  940. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js +30 -0
  941. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Rsqrt.js.map +1 -0
  942. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js +43 -0
  943. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ScatterNd.js.map +1 -0
  944. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js +33 -0
  945. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SearchSorted.js.map +1 -0
  946. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js +34 -0
  947. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Select.js.map +1 -0
  948. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js +36 -0
  949. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Selu.js.map +1 -0
  950. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js +46 -0
  951. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sigmoid.js.map +1 -0
  952. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js +32 -0
  953. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sign.js.map +1 -0
  954. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js +37 -0
  955. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sin.js.map +1 -0
  956. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js +32 -0
  957. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sinh.js.map +1 -0
  958. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js +61 -0
  959. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Slice.js.map +1 -0
  960. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js +44 -0
  961. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softmax.js.map +1 -0
  962. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js +49 -0
  963. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Softplus.js.map +1 -0
  964. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js +50 -0
  965. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SpaceToBatchND.js.map +1 -0
  966. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js +51 -0
  967. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseFillEmptyRows.js.map +1 -0
  968. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js +43 -0
  969. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseReshape.js.map +1 -0
  970. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js +42 -0
  971. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentMean.js.map +1 -0
  972. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js +42 -0
  973. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseSegmentSum.js.map +1 -0
  974. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js +42 -0
  975. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SparseToDense.js.map +1 -0
  976. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js +40 -0
  977. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SplitV.js.map +1 -0
  978. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js +30 -0
  979. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sqrt.js.map +1 -0
  980. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js +29 -0
  981. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Square.js.map +1 -0
  982. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js +29 -0
  983. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/SquaredDifference.js.map +1 -0
  984. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js +37 -0
  985. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StaticRegexReplace.js.map +1 -0
  986. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js +35 -0
  987. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Step.js.map +1 -0
  988. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js +54 -0
  989. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StridedSlice.js.map +1 -0
  990. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js +36 -0
  991. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringNGrams.js.map +1 -0
  992. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js +44 -0
  993. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringSplit.js.map +1 -0
  994. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js +38 -0
  995. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/StringToHashBucketFast.js.map +1 -0
  996. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js +35 -0
  997. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sub.js.map +1 -0
  998. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js +33 -0
  999. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum.js.map +1 -0
  1000. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js +39 -0
  1001. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Sum_impl.js.map +1 -0
  1002. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js +29 -0
  1003. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tan.js.map +1 -0
  1004. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js +32 -0
  1005. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tanh.js.map +1 -0
  1006. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js +38 -0
  1007. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TensorScatterUpdate.js.map +1 -0
  1008. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js +41 -0
  1009. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Tile.js.map +1 -0
  1010. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js +93 -0
  1011. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/TopK.js.map +1 -0
  1012. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js +38 -0
  1013. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transform.js.map +1 -0
  1014. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js +44 -0
  1015. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose.js.map +1 -0
  1016. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js +28 -0
  1017. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Transpose_impl.js.map +1 -0
  1018. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js +39 -0
  1019. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unique.js.map +1 -0
  1020. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js +48 -0
  1021. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/Unpack.js.map +1 -0
  1022. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js +67 -0
  1023. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/UnsortedSegmentSum.js.map +1 -0
  1024. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js +47 -0
  1025. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/ZerosLike.js.map +1 -0
  1026. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js +43 -0
  1027. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/kernels/_FusedMatMul.js.map +1 -0
  1028. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js +49 -0
  1029. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_gpu.js.map +1 -0
  1030. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js +80 -0
  1031. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_grad_gpu.js.map +1 -0
  1032. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js +92 -0
  1033. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/lrn_packed_gpu.js.map +1 -0
  1034. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js +145 -0
  1035. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/max_pool_backprop_gpu.js.map +1 -0
  1036. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js +90 -0
  1037. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mean_gpu.js.map +1 -0
  1038. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js +64 -0
  1039. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_gpu.js.map +1 -0
  1040. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js +96 -0
  1041. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mirror_pad_packed_gpu.js.map +1 -0
  1042. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js +72 -0
  1043. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/mulmat_packed_gpu.js.map +1 -0
  1044. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js +45 -0
  1045. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/multinomial_gpu.js.map +1 -0
  1046. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js +32 -0
  1047. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/onehot_gpu.js.map +1 -0
  1048. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js +89 -0
  1049. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pack_gpu.js.map +1 -0
  1050. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js +36 -0
  1051. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/packing_util.js.map +1 -0
  1052. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js +60 -0
  1053. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_gpu.js.map +1 -0
  1054. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js +64 -0
  1055. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pad_packed_gpu.js.map +1 -0
  1056. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js +365 -0
  1057. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/pool_gpu.js.map +1 -0
  1058. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js +128 -0
  1059. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reduce_gpu.js.map +1 -0
  1060. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js +363 -0
  1061. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/register_all_kernels.js.map +1 -0
  1062. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js +69 -0
  1063. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reshape_packed_gpu.js.map +1 -0
  1064. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js +114 -0
  1065. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_backprop_gpu.js.map +1 -0
  1066. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js +69 -0
  1067. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_gpu.js.map +1 -0
  1068. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js +113 -0
  1069. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_bilinear_packed_gpu.js.map +1 -0
  1070. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js +103 -0
  1071. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_backprop_gpu.js.map +1 -0
  1072. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js +58 -0
  1073. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_gpu.js.map +1 -0
  1074. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js +77 -0
  1075. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/resize_nearest_neighbor_packed_gpu.js.map +1 -0
  1076. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js +45 -0
  1077. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_gpu.js.map +1 -0
  1078. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js +80 -0
  1079. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/reverse_packed_gpu.js.map +1 -0
  1080. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js +48 -0
  1081. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/rotate_gpu.js.map +1 -0
  1082. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js +57 -0
  1083. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_gpu.js.map +1 -0
  1084. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js +74 -0
  1085. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/scatter_packed_gpu.js.map +1 -0
  1086. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js +54 -0
  1087. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/search_sorted_gpu.js.map +1 -0
  1088. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js +138 -0
  1089. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/segment_gpu.js.map +1 -0
  1090. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js +49 -0
  1091. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/select_gpu.js.map +1 -0
  1092. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js +1266 -0
  1093. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler.js.map +1 -0
  1094. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js +110 -0
  1095. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/shader_compiler_util.js.map +1 -0
  1096. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js +50 -0
  1097. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_gpu.js.map +1 -0
  1098. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js +58 -0
  1099. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/slice_packed_gpu.js.map +1 -0
  1100. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js +43 -0
  1101. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/strided_slice_gpu.js.map +1 -0
  1102. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js +79 -0
  1103. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tex_util.js.map +1 -0
  1104. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js +147 -0
  1105. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/texture_manager.js.map +1 -0
  1106. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js +48 -0
  1107. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/tile_gpu.js.map +1 -0
  1108. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js +106 -0
  1109. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/top_k_gpu.js.map +1 -0
  1110. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js +157 -0
  1111. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transform_gpu.js.map +1 -0
  1112. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js +46 -0
  1113. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_gpu.js.map +1 -0
  1114. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js +54 -0
  1115. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/transpose_packed_gpu.js.map +1 -0
  1116. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js +50 -0
  1117. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_gpu.js.map +1 -0
  1118. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js +72 -0
  1119. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unaryop_packed_gpu.js.map +1 -0
  1120. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js +37 -0
  1121. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/unpack_gpu.js.map +1 -0
  1122. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js +351 -0
  1123. package/dist/node_modules/@tensorflow/tfjs-backend-webgl/dist/webgl_util.js.map +1 -0
  1124. package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js +32 -0
  1125. package/dist/node_modules/@tensorflow/tfjs-converter/dist/data/compiled_api.js.map +1 -0
  1126. package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js +23 -0
  1127. package/dist/node_modules/@tensorflow/tfjs-converter/dist/flags.js.map +1 -0
  1128. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js +99 -0
  1129. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend.js.map +1 -0
  1130. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js +139 -0
  1131. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/backend_util.js.map +1 -0
  1132. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js +72 -0
  1133. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/complex_util.js.map +1 -0
  1134. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js +105 -0
  1135. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/einsum_util.js.map +1 -0
  1136. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js +101 -0
  1137. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_impl.js.map +1 -0
  1138. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js +40 -0
  1139. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/non_max_suppression_util.js.map +1 -0
  1140. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js +32 -0
  1141. package/dist/node_modules/@tensorflow/tfjs-core/dist/backends/where_impl.js.map +1 -0
  1142. package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js +34 -0
  1143. package/dist/node_modules/@tensorflow/tfjs-core/dist/base_side_effects.js.map +1 -0
  1144. package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js +24 -0
  1145. package/dist/node_modules/@tensorflow/tfjs-core/dist/browser_util.js.map +1 -0
  1146. package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js +43 -0
  1147. package/dist/node_modules/@tensorflow/tfjs-core/dist/device_util.js.map +1 -0
  1148. package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js +595 -0
  1149. package/dist/node_modules/@tensorflow/tfjs-core/dist/engine.js.map +1 -0
  1150. package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js +111 -0
  1151. package/dist/node_modules/@tensorflow/tfjs-core/dist/environment.js.map +1 -0
  1152. package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js +36 -0
  1153. package/dist/node_modules/@tensorflow/tfjs-core/dist/flags.js.map +1 -0
  1154. package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js +52 -0
  1155. package/dist/node_modules/@tensorflow/tfjs-core/dist/global_util.js.map +1 -0
  1156. package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js +62 -0
  1157. package/dist/node_modules/@tensorflow/tfjs-core/dist/globals.js.map +1 -0
  1158. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js +32 -0
  1159. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Abs_grad.js.map +1 -0
  1160. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js +41 -0
  1161. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acos_grad.js.map +1 -0
  1162. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js +39 -0
  1163. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Acosh_grad.js.map +1 -0
  1164. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js +31 -0
  1165. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AddN_grad.js.map +1 -0
  1166. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js +40 -0
  1167. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Add_grad.js.map +1 -0
  1168. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js +30 -0
  1169. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMax_grad.js.map +1 -0
  1170. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js +30 -0
  1171. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ArgMin_grad.js.map +1 -0
  1172. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js +35 -0
  1173. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asin_grad.js.map +1 -0
  1174. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js +40 -0
  1175. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Asinh_grad.js.map +1 -0
  1176. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js +47 -0
  1177. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan2_grad.js.map +1 -0
  1178. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js +33 -0
  1179. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atan_grad.js.map +1 -0
  1180. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js +34 -0
  1181. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Atanh_grad.js.map +1 -0
  1182. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js +32 -0
  1183. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool3D_grad.js.map +1 -0
  1184. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js +30 -0
  1185. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/AvgPool_grad.js.map +1 -0
  1186. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js +42 -0
  1187. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchMatMul_grad.js.map +1 -0
  1188. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js +29 -0
  1189. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BatchToSpaceND_grad.js.map +1 -0
  1190. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js +42 -0
  1191. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/BroadcastTo_grad.js.map +1 -0
  1192. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js +25 -0
  1193. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cast_grad.js.map +1 -0
  1194. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js +26 -0
  1195. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Ceil_grad.js.map +1 -0
  1196. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js +36 -0
  1197. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ClipByValue_grad.js.map +1 -0
  1198. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js +27 -0
  1199. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ComplexAbs_grad.js.map +1 -0
  1200. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js +31 -0
  1201. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Concat_grad.js.map +1 -0
  1202. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js +34 -0
  1203. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2DBackpropInput_grad.js.map +1 -0
  1204. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js +36 -0
  1205. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv2D_grad.js.map +1 -0
  1206. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js +38 -0
  1207. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Conv3D_grad.js.map +1 -0
  1208. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js +33 -0
  1209. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cos_grad.js.map +1 -0
  1210. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js +32 -0
  1211. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cosh_grad.js.map +1 -0
  1212. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js +38 -0
  1213. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Cumsum_grad.js.map +1 -0
  1214. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js +38 -0
  1215. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/DepthwiseConv2dNative_grad.js.map +1 -0
  1216. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js +33 -0
  1217. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Dilation2D_grad.js.map +1 -0
  1218. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js +30 -0
  1219. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Elu_grad.js.map +1 -0
  1220. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js +33 -0
  1221. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Erf_grad.js.map +1 -0
  1222. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js +30 -0
  1223. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Exp_grad.js.map +1 -0
  1224. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js +30 -0
  1225. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ExpandDims_grad.js.map +1 -0
  1226. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js +31 -0
  1227. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Expm1_grad.js.map +1 -0
  1228. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js +46 -0
  1229. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FloorDiv_grad.js.map +1 -0
  1230. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js +26 -0
  1231. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Floor_grad.js.map +1 -0
  1232. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js +63 -0
  1233. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/FusedBatchNorm_grad.js.map +1 -0
  1234. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js +61 -0
  1235. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GatherV2_grad.js.map +1 -0
  1236. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js +30 -0
  1237. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/GreaterEqual_grad.js.map +1 -0
  1238. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js +26 -0
  1239. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Identity_grad.js.map +1 -0
  1240. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js +26 -0
  1241. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsFinite_grad.js.map +1 -0
  1242. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js +26 -0
  1243. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsInf_grad.js.map +1 -0
  1244. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js +26 -0
  1245. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/IsNan_grad.js.map +1 -0
  1246. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js +33 -0
  1247. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LRN_grad.js.map +1 -0
  1248. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js +32 -0
  1249. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LeakyRelu_grad.js.map +1 -0
  1250. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js +31 -0
  1251. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log1p_grad.js.map +1 -0
  1252. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js +39 -0
  1253. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/LogSoftmax_grad.js.map +1 -0
  1254. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js +31 -0
  1255. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Log_grad.js.map +1 -0
  1256. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js +33 -0
  1257. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool3D_grad.js.map +1 -0
  1258. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js +33 -0
  1259. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MaxPool_grad.js.map +1 -0
  1260. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js +34 -0
  1261. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Max_grad.js.map +1 -0
  1262. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js +33 -0
  1263. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Maximum_grad.js.map +1 -0
  1264. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js +42 -0
  1265. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mean_grad.js.map +1 -0
  1266. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js +34 -0
  1267. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Min_grad.js.map +1 -0
  1268. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js +33 -0
  1269. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Minimum_grad.js.map +1 -0
  1270. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js +30 -0
  1271. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/MirrorPad_grad.js.map +1 -0
  1272. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js +42 -0
  1273. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Mod_grad.js.map +1 -0
  1274. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js +40 -0
  1275. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Multiply_grad.js.map +1 -0
  1276. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js +26 -0
  1277. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Neg_grad.js.map +1 -0
  1278. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js +30 -0
  1279. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OneHot_grad.js.map +1 -0
  1280. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js +26 -0
  1281. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/OnesLike_grad.js.map +1 -0
  1282. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js +30 -0
  1283. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pack_grad.js.map +1 -0
  1284. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js +30 -0
  1285. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/PadV2_grad.js.map +1 -0
  1286. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js +52 -0
  1287. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Pow_grad.js.map +1 -0
  1288. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js +43 -0
  1289. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prelu_grad.js.map +1 -0
  1290. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js +55 -0
  1291. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Prod_grad.js.map +1 -0
  1292. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js +46 -0
  1293. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/RealDiv_grad.js.map +1 -0
  1294. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js +32 -0
  1295. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reciprocal_grad.js.map +1 -0
  1296. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js +33 -0
  1297. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu6_grad.js.map +1 -0
  1298. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js +32 -0
  1299. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Relu_grad.js.map +1 -0
  1300. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js +30 -0
  1301. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reshape_grad.js.map +1 -0
  1302. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js +33 -0
  1303. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeBilinear_grad.js.map +1 -0
  1304. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js +33 -0
  1305. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ResizeNearestNeighbor_grad.js.map +1 -0
  1306. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js +30 -0
  1307. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Reverse_grad.js.map +1 -0
  1308. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js +26 -0
  1309. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Round_grad.js.map +1 -0
  1310. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js +33 -0
  1311. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Rsqrt_grad.js.map +1 -0
  1312. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js +39 -0
  1313. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Select_grad.js.map +1 -0
  1314. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js +41 -0
  1315. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Selu_grad.js.map +1 -0
  1316. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js +32 -0
  1317. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sigmoid_grad.js.map +1 -0
  1318. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js +26 -0
  1319. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sign_grad.js.map +1 -0
  1320. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js +32 -0
  1321. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sin_grad.js.map +1 -0
  1322. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js +32 -0
  1323. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sinh_grad.js.map +1 -0
  1324. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js +33 -0
  1325. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Slice_grad.js.map +1 -0
  1326. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js +34 -0
  1327. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softmax_grad.js.map +1 -0
  1328. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js +31 -0
  1329. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Softplus_grad.js.map +1 -0
  1330. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js +29 -0
  1331. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SpaceToBatchND_grad.js.map +1 -0
  1332. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js +29 -0
  1333. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SplitV_grad.js.map +1 -0
  1334. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js +33 -0
  1335. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sqrt_grad.js.map +1 -0
  1336. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js +31 -0
  1337. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Square_grad.js.map +1 -0
  1338. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js +32 -0
  1339. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/SquaredDifference_grad.js.map +1 -0
  1340. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js +26 -0
  1341. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Step_grad.js.map +1 -0
  1342. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js +41 -0
  1343. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sub_grad.js.map +1 -0
  1344. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js +37 -0
  1345. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Sum_grad.js.map +1 -0
  1346. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js +32 -0
  1347. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tan_grad.js.map +1 -0
  1348. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js +33 -0
  1349. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tanh_grad.js.map +1 -0
  1350. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js +63 -0
  1351. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Tile_grad.js.map +1 -0
  1352. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js +30 -0
  1353. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Transpose_grad.js.map +1 -0
  1354. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js +29 -0
  1355. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/Unpack_grad.js.map +1 -0
  1356. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js +48 -0
  1357. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/UnsortedSegmentSum_grad.js.map +1 -0
  1358. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js +26 -0
  1359. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/ZerosLike_grad.js.map +1 -0
  1360. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js +30 -0
  1361. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients/min_max_grad_util.js.map +1 -0
  1362. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js +44 -0
  1363. package/dist/node_modules/@tensorflow/tfjs-core/dist/gradients.js.map +1 -0
  1364. package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js +100 -0
  1365. package/dist/node_modules/@tensorflow/tfjs-core/dist/hash_util.js.map +1 -0
  1366. package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js +20 -0
  1367. package/dist/node_modules/@tensorflow/tfjs-core/dist/index.js.map +1 -0
  1368. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js +74 -0
  1369. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/composite_array_buffer.js.map +1 -0
  1370. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js +131 -0
  1371. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/http.js.map +1 -0
  1372. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js +169 -0
  1373. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/indexed_db.js.map +1 -0
  1374. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js +281 -0
  1375. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/io_utils.js.map +1 -0
  1376. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js +156 -0
  1377. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/local_storage.js.map +1 -0
  1378. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js +50 -0
  1379. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/model_management.js.map +1 -0
  1380. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js +36 -0
  1381. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/progress.js.map +1 -0
  1382. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js +78 -0
  1383. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/router_registry.js.map +1 -0
  1384. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js +29 -0
  1385. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/types.js.map +1 -0
  1386. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js +48 -0
  1387. package/dist/node_modules/@tensorflow/tfjs-core/dist/io/weights_loader.js.map +1 -0
  1388. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js +179 -0
  1389. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_names.js.map +1 -0
  1390. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js +57 -0
  1391. package/dist/node_modules/@tensorflow/tfjs-core/dist/kernel_registry.js.map +1 -0
  1392. package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js +28 -0
  1393. package/dist/node_modules/@tensorflow/tfjs-core/dist/log.js.map +1 -0
  1394. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js +35 -0
  1395. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/abs.js.map +1 -0
  1396. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js +29 -0
  1397. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acos.js.map +1 -0
  1398. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js +29 -0
  1399. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/acosh.js.map +1 -0
  1400. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js +32 -0
  1401. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/add.js.map +1 -0
  1402. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js +29 -0
  1403. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/all.js.map +1 -0
  1404. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js +29 -0
  1405. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/any.js.map +1 -0
  1406. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js +29 -0
  1407. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_max.js.map +1 -0
  1408. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js +29 -0
  1409. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/arg_min.js.map +1 -0
  1410. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js +70 -0
  1411. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/array_ops_util.js.map +1 -0
  1412. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js +29 -0
  1413. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asin.js.map +1 -0
  1414. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js +29 -0
  1415. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/asinh.js.map +1 -0
  1416. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js +29 -0
  1417. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan.js.map +1 -0
  1418. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js +32 -0
  1419. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atan2.js.map +1 -0
  1420. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js +29 -0
  1421. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/atanh.js.map +1 -0
  1422. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js +38 -0
  1423. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool.js.map +1 -0
  1424. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js +37 -0
  1425. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d.js.map +1 -0
  1426. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js +41 -0
  1427. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_3d_grad.js.map +1 -0
  1428. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js +35 -0
  1429. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/avg_pool_grad.js.map +1 -0
  1430. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js +72 -0
  1431. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/axis_util.js.map +1 -0
  1432. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js +32 -0
  1433. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batch_to_space_nd.js.map +1 -0
  1434. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js +44 -0
  1435. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm.js.map +1 -0
  1436. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js +16 -0
  1437. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm2d.js.map +1 -0
  1438. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js +16 -0
  1439. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm3d.js.map +1 -0
  1440. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js +16 -0
  1441. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm4d.js.map +1 -0
  1442. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js +9 -0
  1443. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/batchnorm_util.js.map +1 -0
  1444. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js +32 -0
  1445. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/bincount.js.map +1 -0
  1446. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js +50 -0
  1447. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_to.js.map +1 -0
  1448. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js +56 -0
  1449. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/broadcast_util.js.map +1 -0
  1450. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js +25 -0
  1451. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/buffer.js.map +1 -0
  1452. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js +35 -0
  1453. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cast.js.map +1 -0
  1454. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js +29 -0
  1455. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ceil.js.map +1 -0
  1456. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js +34 -0
  1457. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clip_by_value.js.map +1 -0
  1458. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js +29 -0
  1459. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/clone.js.map +1 -0
  1460. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js +32 -0
  1461. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/complex.js.map +1 -0
  1462. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js +39 -0
  1463. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat.js.map +1 -0
  1464. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js +14 -0
  1465. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_1d.js.map +1 -0
  1466. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js +10 -0
  1467. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_2d.js.map +1 -0
  1468. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js +10 -0
  1469. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_3d.js.map +1 -0
  1470. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js +10 -0
  1471. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_4d.js.map +1 -0
  1472. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js +39 -0
  1473. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/concat_util.js.map +1 -0
  1474. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js +18 -0
  1475. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv1d.js.map +1 -0
  1476. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js +37 -0
  1477. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d.js.map +1 -0
  1478. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js +37 -0
  1479. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_filter.js.map +1 -0
  1480. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js +36 -0
  1481. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_backprop_input.js.map +1 -0
  1482. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js +12 -0
  1483. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv2d_transpose.js.map +1 -0
  1484. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js +35 -0
  1485. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d.js.map +1 -0
  1486. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js +34 -0
  1487. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_filter.js.map +1 -0
  1488. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js +35 -0
  1489. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_backprop_input.js.map +1 -0
  1490. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js +12 -0
  1491. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv3d_transpose.js.map +1 -0
  1492. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js +242 -0
  1493. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/conv_util.js.map +1 -0
  1494. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js +29 -0
  1495. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cos.js.map +1 -0
  1496. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js +29 -0
  1497. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cosh.js.map +1 -0
  1498. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js +29 -0
  1499. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumprod.js.map +1 -0
  1500. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js +29 -0
  1501. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/cumsum.js.map +1 -0
  1502. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js +32 -0
  1503. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dense_bincount.js.map +1 -0
  1504. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js +36 -0
  1505. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depth_to_space.js.map +1 -0
  1506. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js +37 -0
  1507. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d.js.map +1 -0
  1508. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js +33 -0
  1509. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_filter.js.map +1 -0
  1510. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js +34 -0
  1511. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/depthwise_conv2d_native_backprop_input.js.map +1 -0
  1512. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js +35 -0
  1513. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dilation2d.js.map +1 -0
  1514. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js +34 -0
  1515. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div.js.map +1 -0
  1516. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js +34 -0
  1517. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/div_no_nan.js.map +1 -0
  1518. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js +44 -0
  1519. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dot.js.map +1 -0
  1520. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js +38 -0
  1521. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout.js.map +1 -0
  1522. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js +34 -0
  1523. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/dropout_util.js.map +1 -0
  1524. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js +30 -0
  1525. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/einsum.js.map +1 -0
  1526. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js +29 -0
  1527. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/elu.js.map +1 -0
  1528. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js +33 -0
  1529. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/equal.js.map +1 -0
  1530. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js +33 -0
  1531. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf.js.map +1 -0
  1532. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js +26 -0
  1533. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/erf_util.js.map +1 -0
  1534. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js +26 -0
  1535. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/euclidean_norm.js.map +1 -0
  1536. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js +29 -0
  1537. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/exp.js.map +1 -0
  1538. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js +32 -0
  1539. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expand_dims.js.map +1 -0
  1540. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js +29 -0
  1541. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/expm1.js.map +1 -0
  1542. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js +48 -0
  1543. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/eye.js.map +1 -0
  1544. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js +28 -0
  1545. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fill.js.map +1 -0
  1546. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js +29 -0
  1547. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floor.js.map +1 -0
  1548. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js +32 -0
  1549. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/floorDiv.js.map +1 -0
  1550. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js +99 -0
  1551. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/conv2d.js.map +1 -0
  1552. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js +75 -0
  1553. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused/mat_mul.js.map +1 -0
  1554. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js +64 -0
  1555. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/fused_util.js.map +1 -0
  1556. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js +29 -0
  1557. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather.js.map +1 -0
  1558. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js +32 -0
  1559. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/gather_nd_util.js.map +1 -0
  1560. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js +33 -0
  1561. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater.js.map +1 -0
  1562. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js +33 -0
  1563. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/greater_equal.js.map +1 -0
  1564. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js +29 -0
  1565. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/imag.js.map +1 -0
  1566. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js +32 -0
  1567. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/crop_and_resize.js.map +1 -0
  1568. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js +32 -0
  1569. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/flip_left_right.js.map +1 -0
  1570. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js +31 -0
  1571. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/grayscale_to_rgb.js.map +1 -0
  1572. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js +32 -0
  1573. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression.js.map +1 -0
  1574. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js +31 -0
  1575. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_async.js.map +1 -0
  1576. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js +43 -0
  1577. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded.js.map +1 -0
  1578. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js +41 -0
  1579. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_padded_async.js.map +1 -0
  1580. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js +32 -0
  1581. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score.js.map +1 -0
  1582. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js +34 -0
  1583. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/non_max_suppression_with_score_async.js.map +1 -0
  1584. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js +35 -0
  1585. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_bilinear.js.map +1 -0
  1586. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js +35 -0
  1587. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/resize_nearest_neighbor.js.map +1 -0
  1588. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js +54 -0
  1589. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rgb_to_grayscale.js.map +1 -0
  1590. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js +32 -0
  1591. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/rotate_with_offset.js.map +1 -0
  1592. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js +72 -0
  1593. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/threshold.js.map +1 -0
  1594. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js +32 -0
  1595. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/image/transform.js.map +1 -0
  1596. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js +29 -0
  1597. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_finite.js.map +1 -0
  1598. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js +29 -0
  1599. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_inf.js.map +1 -0
  1600. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js +29 -0
  1601. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/is_nan.js.map +1 -0
  1602. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js +29 -0
  1603. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/leaky_relu.js.map +1 -0
  1604. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js +33 -0
  1605. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less.js.map +1 -0
  1606. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js +33 -0
  1607. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/less_equal.js.map +1 -0
  1608. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js +46 -0
  1609. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/band_part.js.map +1 -0
  1610. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js +55 -0
  1611. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/gram_schmidt.js.map +1 -0
  1612. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js +95 -0
  1613. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/linalg/qr.js.map +1 -0
  1614. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js +36 -0
  1615. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization.js.map +1 -0
  1616. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js +28 -0
  1617. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/local_response_normalization_backprop.js.map +1 -0
  1618. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js +29 -0
  1619. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log.js.map +1 -0
  1620. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js +29 -0
  1621. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log1p.js.map +1 -0
  1622. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js +32 -0
  1623. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sigmoid.js.map +1 -0
  1624. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js +43 -0
  1625. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_softmax.js.map +1 -0
  1626. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js +45 -0
  1627. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/log_sum_exp.js.map +1 -0
  1628. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js +32 -0
  1629. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_and.js.map +1 -0
  1630. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js +29 -0
  1631. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_not.js.map +1 -0
  1632. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js +32 -0
  1633. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_or.js.map +1 -0
  1634. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js +31 -0
  1635. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/logical_xor.js.map +1 -0
  1636. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js +32 -0
  1637. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mat_mul.js.map +1 -0
  1638. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js +29 -0
  1639. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max.js.map +1 -0
  1640. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js +35 -0
  1641. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool.js.map +1 -0
  1642. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js +35 -0
  1643. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d.js.map +1 -0
  1644. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js +47 -0
  1645. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_3d_grad.js.map +1 -0
  1646. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js +33 -0
  1647. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/max_pool_grad.js.map +1 -0
  1648. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js +34 -0
  1649. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/maximum.js.map +1 -0
  1650. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js +29 -0
  1651. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mean.js.map +1 -0
  1652. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js +29 -0
  1653. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/min.js.map +1 -0
  1654. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js +34 -0
  1655. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/minimum.js.map +1 -0
  1656. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js +38 -0
  1657. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mirror_pad.js.map +1 -0
  1658. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js +32 -0
  1659. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mod.js.map +1 -0
  1660. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js +38 -0
  1661. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/moments.js.map +1 -0
  1662. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js +32 -0
  1663. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/mul.js.map +1 -0
  1664. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js +29 -0
  1665. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/neg.js.map +1 -0
  1666. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js +26 -0
  1667. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/nonmax_util.js.map +1 -0
  1668. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js +73 -0
  1669. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/norm.js.map +1 -0
  1670. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js +33 -0
  1671. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/not_equal.js.map +1 -0
  1672. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js +31 -0
  1673. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/one_hot.js.map +1 -0
  1674. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js +32 -0
  1675. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones.js.map +1 -0
  1676. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js +29 -0
  1677. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ones_like.js.map +1 -0
  1678. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js +42 -0
  1679. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/operation.js.map +1 -0
  1680. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js +60 -0
  1681. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ops.js.map +1 -0
  1682. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js +32 -0
  1683. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pad.js.map +1 -0
  1684. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js +49 -0
  1685. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pool.js.map +1 -0
  1686. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js +32 -0
  1687. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/pow.js.map +1 -0
  1688. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js +29 -0
  1689. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prelu.js.map +1 -0
  1690. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js +23 -0
  1691. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/print.js.map +1 -0
  1692. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js +32 -0
  1693. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/prod.js.map +1 -0
  1694. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js +83 -0
  1695. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/ragged_to_dense_util.js.map +1 -0
  1696. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js +67 -0
  1697. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rand_util.js.map +1 -0
  1698. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js +33 -0
  1699. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_normal.js.map +1 -0
  1700. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js +32 -0
  1701. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/random_uniform.js.map +1 -0
  1702. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js +28 -0
  1703. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/range.js.map +1 -0
  1704. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js +29 -0
  1705. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/real.js.map +1 -0
  1706. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js +29 -0
  1707. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reciprocal.js.map +1 -0
  1708. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js +26 -0
  1709. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reduce_util.js.map +1 -0
  1710. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js +29 -0
  1711. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu.js.map +1 -0
  1712. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js +29 -0
  1713. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/relu6.js.map +1 -0
  1714. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js +29 -0
  1715. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reshape.js.map +1 -0
  1716. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js +29 -0
  1717. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/reverse.js.map +1 -0
  1718. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js +24 -0
  1719. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rotate_util.js.map +1 -0
  1720. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js +29 -0
  1721. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/round.js.map +1 -0
  1722. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js +29 -0
  1723. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/rsqrt.js.map +1 -0
  1724. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js +29 -0
  1725. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scalar.js.map +1 -0
  1726. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js +47 -0
  1727. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/scatter_nd_util.js.map +1 -0
  1728. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js +60 -0
  1729. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/segment_util.js.map +1 -0
  1730. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js +29 -0
  1731. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu.js.map +1 -0
  1732. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js +22 -0
  1733. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/selu_util.js.map +1 -0
  1734. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js +22 -0
  1735. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/separable_conv2d.js.map +1 -0
  1736. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js +29 -0
  1737. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sigmoid.js.map +1 -0
  1738. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js +29 -0
  1739. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sign.js.map +1 -0
  1740. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js +29 -0
  1741. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sin.js.map +1 -0
  1742. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js +29 -0
  1743. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sinh.js.map +1 -0
  1744. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js +32 -0
  1745. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice.js.map +1 -0
  1746. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js +29 -0
  1747. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice1d.js.map +1 -0
  1748. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js +29 -0
  1749. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice2d.js.map +1 -0
  1750. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js +29 -0
  1751. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice3d.js.map +1 -0
  1752. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js +29 -0
  1753. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice4d.js.map +1 -0
  1754. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js +268 -0
  1755. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/slice_util.js.map +1 -0
  1756. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js +32 -0
  1757. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softmax.js.map +1 -0
  1758. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js +29 -0
  1759. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/softplus.js.map +1 -0
  1760. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js +32 -0
  1761. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/space_to_batch_nd.js.map +1 -0
  1762. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js +32 -0
  1763. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_fill_empty_rows_util.js.map +1 -0
  1764. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js +43 -0
  1765. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_reshape_util.js.map +1 -0
  1766. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js +35 -0
  1767. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sparse/sparse_segment_reduction_util.js.map +1 -0
  1768. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js +30 -0
  1769. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/fft.js.map +1 -0
  1770. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js +30 -0
  1771. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/ifft.js.map +1 -0
  1772. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js +48 -0
  1773. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/irfft.js.map +1 -0
  1774. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js +49 -0
  1775. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/spectral/rfft.js.map +1 -0
  1776. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js +29 -0
  1777. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split.js.map +1 -0
  1778. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js +21 -0
  1779. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/split_util.js.map +1 -0
  1780. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js +29 -0
  1781. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sqrt.js.map +1 -0
  1782. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js +28 -0
  1783. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/square.js.map +1 -0
  1784. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js +33 -0
  1785. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squared_difference.js.map +1 -0
  1786. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js +29 -0
  1787. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/squeeze.js.map +1 -0
  1788. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js +32 -0
  1789. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/stack.js.map +1 -0
  1790. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js +29 -0
  1791. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/step.js.map +1 -0
  1792. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js +38 -0
  1793. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/strided_slice.js.map +1 -0
  1794. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js +32 -0
  1795. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sub.js.map +1 -0
  1796. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js +32 -0
  1797. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/sum.js.map +1 -0
  1798. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js +29 -0
  1799. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tan.js.map +1 -0
  1800. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js +29 -0
  1801. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tanh.js.map +1 -0
  1802. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js +26 -0
  1803. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor.js.map +1 -0
  1804. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js +30 -0
  1805. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor1d.js.map +1 -0
  1806. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js +33 -0
  1807. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor2d.js.map +1 -0
  1808. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js +47 -0
  1809. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tensor_ops_util.js.map +1 -0
  1810. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js +32 -0
  1811. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/tile.js.map +1 -0
  1812. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js +37 -0
  1813. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/topk.js.map +1 -0
  1814. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js +43 -0
  1815. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/transpose.js.map +1 -0
  1816. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js +33 -0
  1817. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/truncated_normal.js.map +1 -0
  1818. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js +32 -0
  1819. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unique.js.map +1 -0
  1820. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js +32 -0
  1821. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unsorted_segment_sum.js.map +1 -0
  1822. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js +32 -0
  1823. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/unstack.js.map +1 -0
  1824. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js +24 -0
  1825. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/variable.js.map +1 -0
  1826. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js +35 -0
  1827. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/where.js.map +1 -0
  1828. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js +31 -0
  1829. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros.js.map +1 -0
  1830. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js +29 -0
  1831. package/dist/node_modules/@tensorflow/tfjs-core/dist/ops/zeros_like.js.map +1 -0
  1832. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js +89 -0
  1833. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adadelta_optimizer.js.map +1 -0
  1834. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js +78 -0
  1835. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adagrad_optimizer.js.map +1 -0
  1836. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js +98 -0
  1837. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adam_optimizer.js.map +1 -0
  1838. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js +87 -0
  1839. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/adamax_optimizer.js.map +1 -0
  1840. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js +82 -0
  1841. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/momentum_optimizer.js.map +1 -0
  1842. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js +106 -0
  1843. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer.js.map +1 -0
  1844. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js +175 -0
  1845. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/optimizer_constructors.js.map +1 -0
  1846. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js +41 -0
  1847. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/register_optimizers.js.map +1 -0
  1848. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js +107 -0
  1849. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/rmsprop_optimizer.js.map +1 -0
  1850. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js +70 -0
  1851. package/dist/node_modules/@tensorflow/tfjs-core/dist/optimizers/sgd_optimizer.js.map +1 -0
  1852. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js +23 -0
  1853. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/is_typed_array_browser.js.map +1 -0
  1854. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js +78 -0
  1855. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_browser.js.map +1 -0
  1856. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js +51 -0
  1857. package/dist/node_modules/@tensorflow/tfjs-core/dist/platforms/platform_node.js.map +1 -0
  1858. package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js +92 -0
  1859. package/dist/node_modules/@tensorflow/tfjs-core/dist/profiler.js.map +1 -0
  1860. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js +22 -0
  1861. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/abs.js.map +1 -0
  1862. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js +22 -0
  1863. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acos.js.map +1 -0
  1864. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js +22 -0
  1865. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/acosh.js.map +1 -0
  1866. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js +22 -0
  1867. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/add.js.map +1 -0
  1868. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js +22 -0
  1869. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/all.js.map +1 -0
  1870. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js +22 -0
  1871. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/any.js.map +1 -0
  1872. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js +22 -0
  1873. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_max.js.map +1 -0
  1874. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js +22 -0
  1875. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/arg_min.js.map +1 -0
  1876. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js +22 -0
  1877. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as1d.js.map +1 -0
  1878. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js +22 -0
  1879. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as2d.js.map +1 -0
  1880. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js +22 -0
  1881. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as3d.js.map +1 -0
  1882. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js +22 -0
  1883. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as4d.js.map +1 -0
  1884. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js +22 -0
  1885. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as5d.js.map +1 -0
  1886. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js +23 -0
  1887. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_scalar.js.map +1 -0
  1888. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js +22 -0
  1889. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/as_type.js.map +1 -0
  1890. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js +22 -0
  1891. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asin.js.map +1 -0
  1892. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js +22 -0
  1893. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/asinh.js.map +1 -0
  1894. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js +22 -0
  1895. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan.js.map +1 -0
  1896. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js +22 -0
  1897. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atan2.js.map +1 -0
  1898. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js +22 -0
  1899. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/atanh.js.map +1 -0
  1900. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js +6 -0
  1901. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/avg_pool.js.map +1 -0
  1902. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js +22 -0
  1903. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batch_to_space_nd.js.map +1 -0
  1904. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js +22 -0
  1905. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/batchnorm.js.map +1 -0
  1906. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js +22 -0
  1907. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/broadcast_to.js.map +1 -0
  1908. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js +22 -0
  1909. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cast.js.map +1 -0
  1910. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js +22 -0
  1911. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ceil.js.map +1 -0
  1912. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js +22 -0
  1913. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/clip_by_value.js.map +1 -0
  1914. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js +22 -0
  1915. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/concat.js.map +1 -0
  1916. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js +22 -0
  1917. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv1d.js.map +1 -0
  1918. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js +22 -0
  1919. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d.js.map +1 -0
  1920. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js +22 -0
  1921. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/conv2d_transpose.js.map +1 -0
  1922. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js +22 -0
  1923. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cos.js.map +1 -0
  1924. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js +22 -0
  1925. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cosh.js.map +1 -0
  1926. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js +22 -0
  1927. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumprod.js.map +1 -0
  1928. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js +22 -0
  1929. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/cumsum.js.map +1 -0
  1930. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js +22 -0
  1931. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depth_to_space.js.map +1 -0
  1932. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js +22 -0
  1933. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/depthwise_conv2d.js.map +1 -0
  1934. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js +22 -0
  1935. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dilation2d.js.map +1 -0
  1936. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js +22 -0
  1937. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div.js.map +1 -0
  1938. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js +22 -0
  1939. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/div_no_nan.js.map +1 -0
  1940. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js +22 -0
  1941. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/dot.js.map +1 -0
  1942. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js +22 -0
  1943. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/elu.js.map +1 -0
  1944. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js +22 -0
  1945. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/equal.js.map +1 -0
  1946. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js +22 -0
  1947. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/erf.js.map +1 -0
  1948. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js +22 -0
  1949. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/euclidean_norm.js.map +1 -0
  1950. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js +22 -0
  1951. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/exp.js.map +1 -0
  1952. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js +22 -0
  1953. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expand_dims.js.map +1 -0
  1954. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js +22 -0
  1955. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/expm1.js.map +1 -0
  1956. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js +22 -0
  1957. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/fft.js.map +1 -0
  1958. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js +22 -0
  1959. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/flatten.js.map +1 -0
  1960. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js +22 -0
  1961. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floor.js.map +1 -0
  1962. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js +22 -0
  1963. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/floorDiv.js.map +1 -0
  1964. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js +22 -0
  1965. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/gather.js.map +1 -0
  1966. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js +22 -0
  1967. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater.js.map +1 -0
  1968. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js +22 -0
  1969. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/greater_equal.js.map +1 -0
  1970. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js +22 -0
  1971. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ifft.js.map +1 -0
  1972. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js +22 -0
  1973. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/irfft.js.map +1 -0
  1974. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js +22 -0
  1975. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_finite.js.map +1 -0
  1976. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js +22 -0
  1977. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_inf.js.map +1 -0
  1978. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js +22 -0
  1979. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/is_nan.js.map +1 -0
  1980. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js +22 -0
  1981. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/leaky_relu.js.map +1 -0
  1982. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js +22 -0
  1983. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less.js.map +1 -0
  1984. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js +22 -0
  1985. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/less_equal.js.map +1 -0
  1986. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js +22 -0
  1987. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/local_response_normalization.js.map +1 -0
  1988. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js +22 -0
  1989. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log.js.map +1 -0
  1990. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js +22 -0
  1991. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log1p.js.map +1 -0
  1992. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js +22 -0
  1993. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sigmoid.js.map +1 -0
  1994. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js +22 -0
  1995. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_softmax.js.map +1 -0
  1996. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js +22 -0
  1997. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/log_sum_exp.js.map +1 -0
  1998. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js +22 -0
  1999. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_and.js.map +1 -0
  2000. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js +22 -0
  2001. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_not.js.map +1 -0
  2002. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js +22 -0
  2003. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_or.js.map +1 -0
  2004. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js +22 -0
  2005. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/logical_xor.js.map +1 -0
  2006. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js +22 -0
  2007. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mat_mul.js.map +1 -0
  2008. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js +22 -0
  2009. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max.js.map +1 -0
  2010. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js +6 -0
  2011. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/max_pool.js.map +1 -0
  2012. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js +22 -0
  2013. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/maximum.js.map +1 -0
  2014. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js +22 -0
  2015. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mean.js.map +1 -0
  2016. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js +22 -0
  2017. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/min.js.map +1 -0
  2018. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js +22 -0
  2019. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/minimum.js.map +1 -0
  2020. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js +22 -0
  2021. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mirror_pad.js.map +1 -0
  2022. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js +22 -0
  2023. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mod.js.map +1 -0
  2024. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js +22 -0
  2025. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/mul.js.map +1 -0
  2026. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js +22 -0
  2027. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/neg.js.map +1 -0
  2028. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js +22 -0
  2029. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/norm.js.map +1 -0
  2030. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js +22 -0
  2031. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/not_equal.js.map +1 -0
  2032. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js +22 -0
  2033. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/one_hot.js.map +1 -0
  2034. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js +22 -0
  2035. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/ones_like.js.map +1 -0
  2036. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js +22 -0
  2037. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pad.js.map +1 -0
  2038. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js +6 -0
  2039. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pool.js.map +1 -0
  2040. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js +22 -0
  2041. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/pow.js.map +1 -0
  2042. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js +22 -0
  2043. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prelu.js.map +1 -0
  2044. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js +22 -0
  2045. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/prod.js.map +1 -0
  2046. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js +22 -0
  2047. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reciprocal.js.map +1 -0
  2048. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js +22 -0
  2049. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu.js.map +1 -0
  2050. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js +22 -0
  2051. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/relu6.js.map +1 -0
  2052. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js +22 -0
  2053. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape.js.map +1 -0
  2054. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js +22 -0
  2055. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reshape_as.js.map +1 -0
  2056. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js +22 -0
  2057. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_bilinear.js.map +1 -0
  2058. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js +22 -0
  2059. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/resize_nearest_neighbor.js.map +1 -0
  2060. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js +22 -0
  2061. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/reverse.js.map +1 -0
  2062. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js +22 -0
  2063. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rfft.js.map +1 -0
  2064. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js +22 -0
  2065. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/round.js.map +1 -0
  2066. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js +22 -0
  2067. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/rsqrt.js.map +1 -0
  2068. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js +22 -0
  2069. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/selu.js.map +1 -0
  2070. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js +22 -0
  2071. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/separable_conv2d.js.map +1 -0
  2072. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js +22 -0
  2073. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sigmoid.js.map +1 -0
  2074. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js +22 -0
  2075. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sign.js.map +1 -0
  2076. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js +22 -0
  2077. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sin.js.map +1 -0
  2078. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js +22 -0
  2079. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sinh.js.map +1 -0
  2080. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js +22 -0
  2081. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/slice.js.map +1 -0
  2082. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js +22 -0
  2083. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softmax.js.map +1 -0
  2084. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js +22 -0
  2085. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/softplus.js.map +1 -0
  2086. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js +22 -0
  2087. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/space_to_batch_nd.js.map +1 -0
  2088. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js +22 -0
  2089. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/split.js.map +1 -0
  2090. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js +22 -0
  2091. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sqrt.js.map +1 -0
  2092. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js +22 -0
  2093. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/square.js.map +1 -0
  2094. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js +22 -0
  2095. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squared_difference.js.map +1 -0
  2096. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js +22 -0
  2097. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/squeeze.js.map +1 -0
  2098. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js +24 -0
  2099. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/stack.js.map +1 -0
  2100. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js +22 -0
  2101. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/step.js.map +1 -0
  2102. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js +22 -0
  2103. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/strided_slice.js.map +1 -0
  2104. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js +22 -0
  2105. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sub.js.map +1 -0
  2106. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js +22 -0
  2107. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/sum.js.map +1 -0
  2108. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js +22 -0
  2109. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tan.js.map +1 -0
  2110. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js +22 -0
  2111. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tanh.js.map +1 -0
  2112. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js +22 -0
  2113. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/tile.js.map +1 -0
  2114. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js +22 -0
  2115. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_bool.js.map +1 -0
  2116. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js +22 -0
  2117. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_float.js.map +1 -0
  2118. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js +22 -0
  2119. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/to_int.js.map +1 -0
  2120. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js +22 -0
  2121. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/topk.js.map +1 -0
  2122. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js +22 -0
  2123. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/transpose.js.map +1 -0
  2124. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js +22 -0
  2125. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unique.js.map +1 -0
  2126. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js +22 -0
  2127. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unsorted_segment_sum.js.map +1 -0
  2128. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js +22 -0
  2129. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/unstack.js.map +1 -0
  2130. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js +22 -0
  2131. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/where.js.map +1 -0
  2132. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js +22 -0
  2133. package/dist/node_modules/@tensorflow/tfjs-core/dist/public/chained_ops/zeros_like.js.map +1 -0
  2134. package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js +228 -0
  2135. package/dist/node_modules/@tensorflow/tfjs-core/dist/register_all_gradients.js.map +1 -0
  2136. package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js +74 -0
  2137. package/dist/node_modules/@tensorflow/tfjs-core/dist/serialization.js.map +1 -0
  2138. package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js +94 -0
  2139. package/dist/node_modules/@tensorflow/tfjs-core/dist/tape.js.map +1 -0
  2140. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js +320 -0
  2141. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor.js.map +1 -0
  2142. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js +123 -0
  2143. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_format.js.map +1 -0
  2144. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js +51 -0
  2145. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util.js.map +1 -0
  2146. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js +80 -0
  2147. package/dist/node_modules/@tensorflow/tfjs-core/dist/tensor_util_env.js.map +1 -0
  2148. package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js +22 -0
  2149. package/dist/node_modules/@tensorflow/tfjs-core/dist/train.js.map +1 -0
  2150. package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js +67 -0
  2151. package/dist/node_modules/@tensorflow/tfjs-core/dist/types.js.map +1 -0
  2152. package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js +120 -0
  2153. package/dist/node_modules/@tensorflow/tfjs-core/dist/util.js.map +1 -0
  2154. package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js +340 -0
  2155. package/dist/node_modules/@tensorflow/tfjs-core/dist/util_base.js.map +1 -0
  2156. package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js +27 -0
  2157. package/dist/node_modules/@tensorflow/tfjs-data/dist/iterators/lazy_iterator.js.map +1 -0
  2158. package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js +244 -0
  2159. package/dist/node_modules/@tensorflow/tfjs-layers/dist/activations.js.map +1 -0
  2160. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js +23 -0
  2161. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/common.js.map +1 -0
  2162. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js +23 -0
  2163. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/random_seed.js.map +1 -0
  2164. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js +22 -0
  2165. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/state.js.map +1 -0
  2166. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js +292 -0
  2167. package/dist/node_modules/@tensorflow/tfjs-layers/dist/backend/tfjs_backend.js.map +1 -0
  2168. package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js +314 -0
  2169. package/dist/node_modules/@tensorflow/tfjs-layers/dist/base_callbacks.js.map +1 -0
  2170. package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js +68 -0
  2171. package/dist/node_modules/@tensorflow/tfjs-layers/dist/common.js.map +1 -0
  2172. package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js +118 -0
  2173. package/dist/node_modules/@tensorflow/tfjs-layers/dist/constraints.js.map +1 -0
  2174. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js +27 -0
  2175. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/base_random_layer.js.map +1 -0
  2176. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js +640 -0
  2177. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/container.js.map +1 -0
  2178. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js +239 -0
  2179. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/executor.js.map +1 -0
  2180. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js +81 -0
  2181. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/input_layer.js.map +1 -0
  2182. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js +780 -0
  2183. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/topology.js.map +1 -0
  2184. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js +1184 -0
  2185. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training.js.map +1 -0
  2186. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js +192 -0
  2187. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_dataset.js.map +1 -0
  2188. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js +84 -0
  2189. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_tensors.js.map +1 -0
  2190. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js +70 -0
  2191. package/dist/node_modules/@tensorflow/tfjs-layers/dist/engine/training_utils.js.map +1 -0
  2192. package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js +42 -0
  2193. package/dist/node_modules/@tensorflow/tfjs-layers/dist/errors.js.map +1 -0
  2194. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js +22 -0
  2195. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports.js.map +1 -0
  2196. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js +62 -0
  2197. package/dist/node_modules/@tensorflow/tfjs-layers/dist/exports_layers.js.map +1 -0
  2198. package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js +25 -0
  2199. package/dist/node_modules/@tensorflow/tfjs-layers/dist/flags_layers.js.map +1 -0
  2200. package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js +386 -0
  2201. package/dist/node_modules/@tensorflow/tfjs-layers/dist/initializers.js.map +1 -0
  2202. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js +18 -0
  2203. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/common.js.map +1 -0
  2204. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js +15 -0
  2205. package/dist/node_modules/@tensorflow/tfjs-layers/dist/keras_format/initializer_config.js.map +1 -0
  2206. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js +184 -0
  2207. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/advanced_activations.js.map +1 -0
  2208. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js +452 -0
  2209. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional.js.map +1 -0
  2210. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js +77 -0
  2211. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_depthwise.js.map +1 -0
  2212. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js +197 -0
  2213. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/convolutional_recurrent.js.map +1 -0
  2214. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js +328 -0
  2215. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/core.js.map +1 -0
  2216. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js +87 -0
  2217. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/embeddings.js.map +1 -0
  2218. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js +439 -0
  2219. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/merge.js.map +1 -0
  2220. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js +102 -0
  2221. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/noise.js.map +1 -0
  2222. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js +186 -0
  2223. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/normalization.js.map +1 -0
  2224. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js +75 -0
  2225. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/padding.js.map +1 -0
  2226. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js +308 -0
  2227. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/pooling.js.map +1 -0
  2228. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js +58 -0
  2229. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/category_encoding.js.map +1 -0
  2230. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js +70 -0
  2231. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/center_crop.js.map +1 -0
  2232. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js +38 -0
  2233. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_preprocessing.js.map +1 -0
  2234. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js +59 -0
  2235. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/image_resizing.js.map +1 -0
  2236. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js +35 -0
  2237. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/preprocessing_utils.js.map +1 -0
  2238. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js +81 -0
  2239. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/preprocessing/random_width.js.map +1 -0
  2240. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js +682 -0
  2241. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/recurrent.js.map +1 -0
  2242. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js +19 -0
  2243. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/serialization.js.map +1 -0
  2244. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js +243 -0
  2245. package/dist/node_modules/@tensorflow/tfjs-layers/dist/layers/wrappers.js.map +1 -0
  2246. package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js +41 -0
  2247. package/dist/node_modules/@tensorflow/tfjs-layers/dist/logs.js.map +1 -0
  2248. package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js +184 -0
  2249. package/dist/node_modules/@tensorflow/tfjs-layers/dist/losses.js.map +1 -0
  2250. package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js +116 -0
  2251. package/dist/node_modules/@tensorflow/tfjs-layers/dist/metrics.js.map +1 -0
  2252. package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js +558 -0
  2253. package/dist/node_modules/@tensorflow/tfjs-layers/dist/models.js.map +1 -0
  2254. package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js +30 -0
  2255. package/dist/node_modules/@tensorflow/tfjs-layers/dist/optimizers.js.map +1 -0
  2256. package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js +76 -0
  2257. package/dist/node_modules/@tensorflow/tfjs-layers/dist/regularizers.js.map +1 -0
  2258. package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js +46 -0
  2259. package/dist/node_modules/@tensorflow/tfjs-layers/dist/user_defined_metadata.js.map +1 -0
  2260. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js +48 -0
  2261. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/conv_utils.js.map +1 -0
  2262. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js +58 -0
  2263. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/executor_utils.js.map +1 -0
  2264. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js +180 -0
  2265. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/generic_utils.js.map +1 -0
  2266. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js +118 -0
  2267. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/layer_utils.js.map +1 -0
  2268. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js +56 -0
  2269. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/math_utils.js.map +1 -0
  2270. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js +69 -0
  2271. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/serialization_utils.js.map +1 -0
  2272. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js +41 -0
  2273. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/types_utils.js.map +1 -0
  2274. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js +19 -0
  2275. package/dist/node_modules/@tensorflow/tfjs-layers/dist/utils/variable_utils.js.map +1 -0
  2276. package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js +87 -0
  2277. package/dist/node_modules/@tensorflow/tfjs-layers/dist/variables.js.map +1 -0
  2278. package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js +6 -0
  2279. package/dist/node_modules/@tensorflow/tfjs-layers/dist/version.js.map +1 -0
  2280. package/dist/node_modules/long/src/long.js +675 -0
  2281. package/dist/node_modules/long/src/long.js.map +1 -0
  2282. package/dist/node_modules/seedrandom/index.js +19 -0
  2283. package/dist/node_modules/seedrandom/index.js.map +1 -0
  2284. package/dist/node_modules/seedrandom/lib/alea.js +48 -0
  2285. package/dist/node_modules/seedrandom/lib/alea.js.map +1 -0
  2286. package/dist/node_modules/seedrandom/lib/tychei.js +41 -0
  2287. package/dist/node_modules/seedrandom/lib/tychei.js.map +1 -0
  2288. package/dist/node_modules/seedrandom/lib/xor128.js +41 -0
  2289. package/dist/node_modules/seedrandom/lib/xor128.js.map +1 -0
  2290. package/dist/node_modules/seedrandom/lib/xor4096.js +50 -0
  2291. package/dist/node_modules/seedrandom/lib/xor4096.js.map +1 -0
  2292. package/dist/node_modules/seedrandom/lib/xorshift7.js +53 -0
  2293. package/dist/node_modules/seedrandom/lib/xorshift7.js.map +1 -0
  2294. package/dist/node_modules/seedrandom/lib/xorwow.js +41 -0
  2295. package/dist/node_modules/seedrandom/lib/xorwow.js.map +1 -0
  2296. package/dist/node_modules/seedrandom/seedrandom.js +99 -0
  2297. package/dist/node_modules/seedrandom/seedrandom.js.map +1 -0
  2298. package/package.json +4 -1
  2299. package/dist/features/trial-session/comps/learning-plan/index.js +0 -353
  2300. package/dist/features/trial-session/comps/learning-plan/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sources":["../../../../../node_modules/@tensorflow/tfjs-core/dist/engine.js"],"sourcesContent":["/**\n * @license\n * Copyright 2018 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport { KernelBackend } from './backends/backend';\nimport { Environment, setEnvironmentGlobal } from './environment';\nimport { getGlobalNamespace } from './global_util';\nimport { Add, Cast, Identity } from './kernel_names';\nimport { getGradient, getKernel, getKernelsForBackend } from './kernel_registry';\nimport * as log from './log';\nimport { Profiler } from './profiler';\nimport { backpropagateGradients, getFilteredNodesXToY } from './tape';\nimport { setTensorTracker, Tensor, Variable } from './tensor';\nimport { getTensorsInContainer } from './tensor_util';\nimport * as util from './util';\nimport { bytesFromStringArray, makeOnesTypedArray, now, sizeFromShape } from './util';\nfunction isRegisteredKernelInvocation(kernelInvocation) {\n return kernelInvocation.kernelName != null;\n}\nclass EngineState {\n constructor() {\n // Public since optimizers will use it.\n this.registeredVariables = {};\n this.nextTapeNodeId = 0;\n this.numBytes = 0;\n this.numTensors = 0;\n this.numStringTensors = 0;\n this.numDataBuffers = 0;\n // Number of nested tf.grad() statements when computing higher-order\n // gradients. E.g. `1` for first-order gradients and `2` for second-order\n // gradients. Used to track if the tape should be removed after a backprop.\n this.gradientDepth = 0;\n // Number of nested kernel calls. When kernel depth is greater than 1, we turn\n // off the tape.\n this.kernelDepth = 0;\n this.scopeStack = [];\n /**\n * Keeps track of the number of data moves during a kernel execution. We\n * maintain a stack since kernels can call other kernels, recursively.\n */\n this.numDataMovesStack = [];\n this.nextScopeId = 0;\n this.tensorInfo = new WeakMap();\n this.profiling = false;\n this.activeProfile = {\n newBytes: 0,\n newTensors: 0,\n peakBytes: 0,\n kernels: [],\n result: null,\n get kernelNames() {\n return Array.from(new Set(this.kernels.map(k => k.name)));\n }\n };\n }\n dispose() {\n for (const variableName in this.registeredVariables) {\n this.registeredVariables[variableName].dispose();\n }\n }\n}\nclass Engine {\n constructor(ENV) {\n this.ENV = ENV;\n this.registry = {};\n this.registryFactory = {};\n this.pendingBackendInitId = 0;\n this.state = new EngineState();\n }\n async ready() {\n if (this.pendingBackendInit != null) {\n return this.pendingBackendInit.then(() => { });\n }\n if (this.backendInstance != null) {\n return;\n }\n const sortedBackends = this.getSortedBackends();\n for (let i = 0; i < sortedBackends.length; i++) {\n const backendName = sortedBackends[i];\n const success = await this.initializeBackend(backendName).success;\n if (success) {\n await this.setBackend(backendName);\n return;\n }\n }\n throw new Error(`Could not initialize any backends, all backend initializations ` +\n `failed.`);\n }\n get backend() {\n if (this.pendingBackendInit != null) {\n throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make ` +\n `sure to await tf.ready() or await tf.setBackend() before calling ` +\n `other methods`);\n }\n if (this.backendInstance == null) {\n const { name, asyncInit } = this.initializeBackendsAndReturnBest();\n if (asyncInit) {\n throw new Error(`The highest priority backend '${name}' has not yet been ` +\n `initialized. Make sure to await tf.ready() or ` +\n `await tf.setBackend() before calling other methods`);\n }\n this.setBackend(name);\n }\n return this.backendInstance;\n }\n backendNames() {\n return Object.keys(this.registryFactory);\n }\n findBackend(backendName) {\n if (!(backendName in this.registry)) {\n // If the backend hasn't been initialized but we have a registry entry for\n // it, initialize it and return it.\n if (backendName in this.registryFactory) {\n const { asyncInit } = this.initializeBackend(backendName);\n if (asyncInit) {\n // Backend is not ready yet.\n return null;\n }\n }\n else {\n return null;\n }\n }\n return this.registry[backendName];\n }\n findBackendFactory(backendName) {\n if (!(backendName in this.registryFactory)) {\n return null;\n }\n return this.registryFactory[backendName].factory;\n }\n registerBackend(backendName, factory, priority = 1) {\n if (backendName in this.registryFactory) {\n log.warn(`${backendName} backend was already registered. ` +\n `Reusing existing backend factory.`);\n return false;\n }\n this.registryFactory[backendName] = { factory, priority };\n return true;\n }\n async setBackend(backendName) {\n if (this.registryFactory[backendName] == null) {\n throw new Error(`Backend name '${backendName}' not found in registry`);\n }\n this.backendName = backendName;\n if (this.registry[backendName] == null) {\n this.backendInstance = null;\n const { success, asyncInit } = this.initializeBackend(backendName);\n const result = asyncInit ? await success : success;\n if (!result) {\n return false;\n }\n }\n this.backendInstance = this.registry[backendName];\n this.setupRegisteredKernels();\n // Reset the profiler.\n this.profiler = new Profiler(this.backendInstance);\n return true;\n }\n setupRegisteredKernels() {\n const kernels = getKernelsForBackend(this.backendName);\n kernels.forEach(kernel => {\n if (kernel.setupFunc != null) {\n kernel.setupFunc(this.backendInstance);\n }\n });\n }\n disposeRegisteredKernels(backendName) {\n const kernels = getKernelsForBackend(backendName);\n kernels.forEach(kernel => {\n if (kernel.disposeFunc != null) {\n kernel.disposeFunc(this.registry[backendName]);\n }\n });\n }\n /**\n * Initializes a backend by looking up the backend name in the factory\n * registry and calling the factory method. Returns a boolean representing\n * whether the initialization of the backend succeeded. Throws an error if\n * there is no backend in the factory registry.\n */\n initializeBackend(backendName) {\n const registryFactoryEntry = this.registryFactory[backendName];\n if (registryFactoryEntry == null) {\n throw new Error(`Cannot initialize backend ${backendName}, no registration found.`);\n }\n try {\n const backend = registryFactoryEntry.factory();\n /* Test if the factory returns a promise.\n Done in a more liberal way than\n previous 'Promise.resolve(backend)===backend'\n as we needed to account for custom Promise\n implementations (e.g. Angular) */\n if (backend && !(backend instanceof KernelBackend) &&\n typeof backend.then === 'function') {\n const promiseId = ++this.pendingBackendInitId;\n const success = backend\n .then(backendInstance => {\n // Outdated promise. Another backend was set in the meantime.\n if (promiseId < this.pendingBackendInitId) {\n return false;\n }\n this.registry[backendName] = backendInstance;\n this.pendingBackendInit = null;\n return true;\n })\n .catch(err => {\n // Outdated promise. Another backend was set in the meantime.\n if (promiseId < this.pendingBackendInitId) {\n return false;\n }\n this.pendingBackendInit = null;\n log.warn(`Initialization of backend ${backendName} failed`);\n log.warn(err.stack || err.message);\n return false;\n });\n this.pendingBackendInit = success;\n return { success, asyncInit: true };\n }\n else {\n this.registry[backendName] = backend;\n return { success: true, asyncInit: false };\n }\n }\n catch (err) {\n log.warn(`Initialization of backend ${backendName} failed`);\n log.warn(err.stack || err.message);\n return { success: false, asyncInit: false };\n }\n }\n removeBackend(backendName) {\n if (!(backendName in this.registryFactory)) {\n throw new Error(`${backendName} backend not found in registry`);\n }\n if (this.backendName === backendName && this.pendingBackendInit != null) {\n // There is a pending promise of the backend we want to remove. Make it\n // obsolete.\n this.pendingBackendInitId++;\n }\n if (backendName in this.registry) {\n this.disposeRegisteredKernels(backendName);\n this.registry[backendName].dispose();\n delete this.registry[backendName];\n }\n delete this.registryFactory[backendName];\n // Unset the backend if it is active.\n if (this.backendName === backendName) {\n this.pendingBackendInit = null;\n this.backendName = null;\n this.backendInstance = null;\n }\n }\n getSortedBackends() {\n if (Object.keys(this.registryFactory).length === 0) {\n throw new Error('No backend found in registry.');\n }\n return Object.keys(this.registryFactory).sort((a, b) => {\n // Highest priority comes first.\n return this.registryFactory[b].priority -\n this.registryFactory[a].priority;\n });\n }\n initializeBackendsAndReturnBest() {\n const sortedBackends = this.getSortedBackends();\n for (let i = 0; i < sortedBackends.length; i++) {\n const backendName = sortedBackends[i];\n const { success, asyncInit } = this.initializeBackend(backendName);\n if (asyncInit || success) {\n return { name: backendName, asyncInit };\n }\n }\n throw new Error(`Could not initialize any backends, all backend initializations ` +\n `failed.`);\n }\n moveData(backend, dataId) {\n const info = this.state.tensorInfo.get(dataId);\n const srcBackend = info.backend;\n const values = this.readSync(dataId);\n const refCount = srcBackend.refCount(dataId);\n // Delete the tensor from the old backend and move it to the new\n // backend.\n srcBackend.disposeData(dataId, true);\n info.backend = backend;\n backend.move(dataId, values, info.shape, info.dtype, refCount);\n if (this.shouldCheckForMemLeaks()) {\n // Track the number of moves during a kernel execution to correctly\n // detect memory leaks.\n this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1]++;\n }\n }\n tidy(nameOrFn, fn) {\n let name = null;\n if (fn == null) {\n // Called with only 1 argument.\n if (typeof nameOrFn !== 'function') {\n throw new Error('Please provide a function to tidy()');\n }\n fn = nameOrFn;\n }\n else {\n // Called with 2 arguments.\n if (typeof nameOrFn !== 'string' && !(nameOrFn instanceof String)) {\n throw new Error('When calling with two arguments, the first argument ' +\n 'to tidy() must be a string');\n }\n if (typeof fn !== 'function') {\n throw new Error('When calling with two arguments, the 2nd argument ' +\n 'to tidy() must be a function');\n }\n name = nameOrFn;\n // TODO(nsthorat,smilkov): Do operation logging and performance\n // profiling.\n }\n let result;\n return this.scopedRun(() => this.startScope(name), () => this.endScope(result), () => {\n result = fn();\n if (result instanceof Promise) {\n console.error('Cannot return a Promise inside of tidy.');\n }\n return result;\n });\n }\n scopedRun(start, end, f) {\n start();\n try {\n const res = f();\n end();\n return res;\n }\n catch (ex) {\n end();\n throw ex;\n }\n }\n nextTensorId() {\n return Engine.nextTensorId++;\n }\n nextVariableId() {\n return Engine.nextVariableId++;\n }\n /**\n * This method is called instead of the public-facing tensor.clone() when\n * saving a tensor for backwards pass. It makes sure to add the clone\n * operation to the tape regardless of being called inside a kernel\n * execution.\n */\n clone(x) {\n const y = ENGINE.runKernel(Identity, { x });\n const inputs = { x };\n const grad = (dy) => ({\n x: () => {\n const dtype = 'float32';\n const gradInputs = { x: dy };\n const attrs = { dtype };\n return ENGINE.runKernel(Cast, gradInputs, \n // tslint:disable-next-line: no-unnecessary-type-assertion\n attrs);\n }\n });\n const saved = [];\n this.addTapeNode(this.state.activeScope.name, inputs, [y], grad, saved, {});\n return y;\n }\n /**\n * Execute a kernel with the given name and return the output tensor.\n *\n * @param kernelName The name of the kernel to execute.\n * @param inputs A map of input names to tensors.\n * @param attrs A map of attribute names to their values. An attribute is a\n * primitive (non-tensor) input to the kernel.\n * @param inputsToSave A list of tensors, inputs to save for the backprop\n * computation.\n * @param outputsToSave A list of booleans, specifying which output to save\n * for the backprop computation. These are booleans since the output\n * tensors are not visible to the user.\n */\n runKernel(kernelName, inputs, attrs) {\n if (this.backendName == null) {\n // backend has not been initialized yet (backend initialization is lazy\n // can be deferred until an op/ kernel is run).\n // The below getter has side effects that will try to initialize the\n // backend and set properties like this.backendName\n // tslint:disable-next-line: no-unused-expression\n this.backend;\n }\n const hasKernel = getKernel(kernelName, this.backendName) != null;\n if (!hasKernel) {\n throw new Error(`Kernel '${kernelName}' not registered for backend '${this.backendName}'`);\n }\n return this.runKernelFunc({ kernelName, inputs, attrs });\n }\n shouldCheckForMemLeaks() {\n return this.ENV.getBool('IS_TEST');\n }\n checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos) {\n const numDataIdsAfter = this.backend.numDataIds();\n // Count the number of data ids associated with the result of the kernel.\n let numOutputDataIds = 0;\n outInfos.forEach(info => {\n // Complex numbers allocate 3 data ids, one for 'real', one for\n // 'imaginary', and one for the container that holds the former two.\n numOutputDataIds += (info.dtype === 'complex64' ? 3 : 1);\n });\n // Account for the number of moves during kernel execution. A \"data move\"\n // can happen in the middle of a kernel execution, placing a new (key,value)\n // pair in the data storage. Since data moves have net zero effect (we\n // always remove the data from the old backend), we have to cancel them out\n // when detecting memory leaks.\n const numMoves = this.state.numDataMovesStack[this.state.numDataMovesStack.length - 1];\n const dataIdsLeaked = numDataIdsAfter - numDataIdsBefore - numOutputDataIds - numMoves;\n if (dataIdsLeaked > 0) {\n throw new Error(`Backend '${this.backendName}' has an internal memory leak ` +\n `(${dataIdsLeaked} data ids) after running '${kernelName}'`);\n }\n }\n /**\n * Internal helper method to execute a kernel Func\n *\n * Use `runKernel` to execute kernels from outside of engine.\n */\n runKernelFunc(kernelParams) {\n let outputs;\n let saved = [];\n const isTapeOn = this.isTapeOn();\n const startingBytecount = this.state.numBytes;\n const startingNumTensors = this.state.numTensors;\n if (this.shouldCheckForMemLeaks()) {\n this.state.numDataMovesStack.push(0);\n }\n let kernelFunc;\n if (this.backendName == null) {\n // backend has not been initialized yet (backend initialization is lazy\n // can be deferred until an op/ kernel is run).\n // The below getter has side effects that will try to initialize the\n // backend and set properties like this.backendName\n // tslint:disable-next-line: no-unused-expression\n this.backend;\n }\n let out;\n const kernelOrScopeName = isRegisteredKernelInvocation(kernelParams) ?\n kernelParams.kernelName :\n this.state.activeScope != null ? this.state.activeScope.name : '';\n // Create the kernelFunc from either a registered kernel OR passed in\n // forward/backward functions (used by custom grad). In this context a\n // kernelFunc wraps a kernel implementation with some bookkeeping.\n if (isRegisteredKernelInvocation(kernelParams)) {\n const { kernelName, inputs, attrs } = kernelParams;\n if (this.backendName == null) {\n // backend has not been initialized yet (backend initialization is lazy\n // can be deferred until an op/ kernel is run).\n // The below getter has side effects that will try to initialize the\n // backend and set properties like this.backendName\n // tslint:disable-next-line: no-unused-expression\n this.backend;\n }\n const kernel = getKernel(kernelName, this.backendName);\n util.assert(kernel != null, () => `Cannot find registered kernel '${kernelName}' for backend '${this.backendName}'`);\n kernelFunc = () => {\n const numDataIdsBefore = this.backend.numDataIds();\n out = kernel.kernelFunc({ inputs, attrs, backend: this.backend });\n const outInfos = Array.isArray(out) ? out : [out];\n if (this.shouldCheckForMemLeaks()) {\n this.checkKernelForMemLeak(kernelName, numDataIdsBefore, outInfos);\n }\n const outTensors = outInfos.map((outInfo) => {\n // todo (yassogba) remove this option (Tensor) when node backend\n // methods have been modularized and they all return tensorInfo.\n // TensorInfos do not have a rank attribute.\n if (outInfo.rank != null) {\n return outInfo;\n }\n return this.makeTensorFromTensorInfo(outInfo);\n });\n // Save any required inputs and outputs.\n // Do not save unless we are recording to the tape. Otherwise it would\n // cause a mem leak since there would be no backprop for these tensors\n // (which would otherwise dispose them).\n if (isTapeOn) {\n const tensorsToSave = this.getTensorsForGradient(kernelName, inputs, outTensors);\n saved = this.saveTensorsForBackwardMode(tensorsToSave);\n }\n return outTensors;\n };\n }\n else {\n const { forwardFunc } = kernelParams;\n // Running a customGrad op.\n const saveFunc = (tensors) => {\n // Do not save unless we are recording to the tape. Otherwise it would\n // cause a mem leak since we would never run backprop, which disposes\n // the kept tensors.\n if (!isTapeOn) {\n return;\n }\n saved = tensors.map(tensor => this.keep(this.clone(tensor)));\n };\n kernelFunc = () => {\n const numDataIdsBefore = this.backend.numDataIds();\n out = this.tidy(() => forwardFunc(this.backend, saveFunc));\n const outs = (Array.isArray(out) ? out : [out]);\n if (this.shouldCheckForMemLeaks()) {\n // Scope name is used to print a more helpful error message if needed.\n this.checkKernelForMemLeak(kernelOrScopeName, numDataIdsBefore, outs);\n }\n return outs;\n };\n }\n //\n // Run the kernelFunc. Optionally profiling it.\n //\n const { inputs, attrs } = kernelParams;\n const backwardsFunc = isRegisteredKernelInvocation(kernelParams) ?\n null :\n kernelParams.backwardsFunc;\n let kernelProfile;\n this.scopedRun(\n // Stop recording to a tape when running a kernel.\n () => this.state.kernelDepth++, () => this.state.kernelDepth--, () => {\n if (!this.ENV.getBool('DEBUG') && !this.state.profiling) {\n outputs = kernelFunc();\n }\n else {\n kernelProfile = this.profiler.profileKernel(kernelOrScopeName, inputs, () => kernelFunc());\n if (this.ENV.getBool('DEBUG')) {\n this.profiler.logKernelProfile(kernelProfile);\n }\n outputs = kernelProfile.outputs;\n }\n });\n if (isTapeOn) {\n this.addTapeNode(kernelOrScopeName, inputs, outputs, backwardsFunc, saved, attrs);\n }\n if (this.state.profiling) {\n this.state.activeProfile.kernels.push({\n name: kernelOrScopeName,\n bytesAdded: this.state.numBytes - startingBytecount,\n totalBytesSnapshot: this.state.numBytes,\n tensorsAdded: this.state.numTensors - startingNumTensors,\n totalTensorsSnapshot: this.state.numTensors,\n inputShapes: Object.keys(inputs).map(key => inputs[key] != null ? inputs[key].shape : null),\n outputShapes: outputs.map(item => item.shape),\n kernelTimeMs: kernelProfile.timeMs,\n extraInfo: kernelProfile.extraInfo\n });\n }\n return (Array.isArray(out) ? outputs : outputs[0]);\n }\n /**\n * Saves tensors used in forward mode for use in backward mode.\n *\n * @param tensors the list of tensors to save.\n */\n saveTensorsForBackwardMode(tensors) {\n const saved = tensors.map(tensor => this.keep(this.clone(tensor)));\n return saved;\n }\n /**\n * Returns a list of tensors to save for a given gradient calculation.\n *\n * @param kernelName name of kernel to look up gradient for.\n * @param inputs a map of input tensors.\n * @param outputs an array of output tensors from forward mode of kernel.\n */\n getTensorsForGradient(kernelName, inputs, outputs) {\n const gradConfig = getGradient(kernelName);\n if (gradConfig != null) {\n const inputsToSave = gradConfig.inputsToSave || [];\n const outputsToSave = gradConfig.outputsToSave || [];\n // If saveAllInputs is true, all inputs will be saved. Otherwise, inputs\n // specified in inputsToSave will be saved.\n let inputTensorsToSave;\n if (gradConfig.saveAllInputs) {\n util.assert(Array.isArray(inputs), () => 'saveAllInputs is true, expected inputs to be an array.');\n inputTensorsToSave = Object.keys(inputs).map((key) => inputs[key]);\n }\n else {\n inputTensorsToSave = inputsToSave.map((inputName) => inputs[inputName]);\n }\n const outputTensorsToSave = outputs.filter((_, i) => outputsToSave[i]);\n return inputTensorsToSave.concat(outputTensorsToSave);\n }\n // We return an empty list rather than throw an error because the kernel we\n // are looking up may not actually be relevant to backproping through the\n // overall function\n //\n // See 'does not error if irrelevant (pruned) ops are missing grads' test\n // in gradients_test.ts for an example.\n return [];\n }\n /**\n * Internal method used by public APIs for tensor creation. Makes a new\n * tensor with the provided shape, dtype and values. It always\n * creates a new data id and writes the values to the underlying backend.\n */\n makeTensor(values, shape, dtype, backend) {\n if (values == null) {\n throw new Error('Values passed to engine.makeTensor() are null');\n }\n dtype = dtype || 'float32';\n backend = backend || this.backend;\n let backendVals = values;\n if (dtype === 'string' && util.isString(values[0])) {\n backendVals = values.map(d => util.encodeString(d));\n }\n const dataId = backend.write(backendVals, shape, dtype);\n const t = new Tensor(shape, dtype, dataId, this.nextTensorId());\n this.trackTensor(t, backend);\n // Count bytes for string tensors.\n if (dtype === 'string') {\n const info = this.state.tensorInfo.get(dataId);\n const newBytes = bytesFromStringArray(backendVals);\n this.state.numBytes += newBytes - info.bytes;\n info.bytes = newBytes;\n }\n return t;\n }\n /**\n * Internal method used by backends. Makes a new tensor\n * that is a wrapper around an existing data id. It doesn't create\n * a new data id, only increments the ref count used in memory tracking.\n * @deprecated\n */\n makeTensorFromDataId(dataId, shape, dtype, backend) {\n dtype = dtype || 'float32';\n const tensorInfo = { dataId, shape, dtype };\n return this.makeTensorFromTensorInfo(tensorInfo, backend);\n }\n /**\n * Internal method used by backends. Makes a new tensor that is a wrapper\n * around an existing data id in TensorInfo. It doesn't create a new data id,\n * only increments the ref count used in memory tracking.\n */\n makeTensorFromTensorInfo(tensorInfo, backend) {\n const { dataId, shape, dtype } = tensorInfo;\n const t = new Tensor(shape, dtype, dataId, this.nextTensorId());\n this.trackTensor(t, backend);\n return t;\n }\n makeVariable(initialValue, trainable = true, name, dtype) {\n name = name || this.nextVariableId().toString();\n if (dtype != null && dtype !== initialValue.dtype) {\n initialValue = initialValue.cast(dtype);\n }\n const v = new Variable(initialValue, trainable, name, this.nextTensorId());\n if (this.state.registeredVariables[v.name] != null) {\n throw new Error(`Variable with name ${v.name} was already registered`);\n }\n this.state.registeredVariables[v.name] = v;\n this.incRef(v, this.backend);\n return v;\n }\n trackTensor(a, backend) {\n this.state.numTensors++;\n if (a.dtype === 'string') {\n this.state.numStringTensors++;\n }\n // Bytes for complex numbers are counted by their components. Bytes for\n // string tensors are counted when writing values.\n let bytes = 0;\n if (a.dtype !== 'complex64' && a.dtype !== 'string') {\n bytes = a.size * util.bytesPerElement(a.dtype);\n }\n this.state.numBytes += bytes;\n if (!this.state.tensorInfo.has(a.dataId)) {\n this.state.numDataBuffers++;\n this.state.tensorInfo.set(a.dataId, {\n backend: backend || this.backend,\n dtype: a.dtype,\n shape: a.shape,\n bytes\n });\n }\n if (!(a instanceof Variable)) {\n this.track(a);\n }\n }\n // Track the tensor by dataId and increase the refCount for the dataId in the\n // backend.\n // TODO(pyu10055): This is currently used by makeVariable method, to increase\n // refCount on the backend for the dataId. It can potentially be replaced with\n // Identity op indead of calling backend directly.\n incRef(a, backend) {\n this.trackTensor(a, backend);\n this.backend.incRef(a.dataId);\n }\n removeDataId(dataId, backend) {\n if (this.state.tensorInfo.has(dataId) &&\n this.state.tensorInfo.get(dataId).backend === backend) {\n this.state.tensorInfo.delete(dataId);\n this.state.numDataBuffers--;\n }\n }\n disposeTensor(a) {\n if (!this.state.tensorInfo.has(a.dataId)) {\n return;\n }\n const info = this.state.tensorInfo.get(a.dataId);\n this.state.numTensors--;\n if (a.dtype === 'string') {\n this.state.numStringTensors--;\n this.state.numBytes -= info.bytes;\n }\n // Don't count bytes for complex numbers as they are counted by their\n // components.\n if (a.dtype !== 'complex64' && a.dtype !== 'string') {\n const bytes = a.size * util.bytesPerElement(a.dtype);\n this.state.numBytes -= bytes;\n }\n // Remove the reference to dataId if backend dispose the data successfully\n if (info.backend.disposeData(a.dataId)) {\n this.removeDataId(a.dataId, info.backend);\n }\n // TODO(nsthorat): Construct an error and save the stack trace for\n // debugging when in debug mode. Creating a stack trace is too expensive\n // to do unconditionally.\n }\n disposeVariables() {\n for (const varName in this.state.registeredVariables) {\n const v = this.state.registeredVariables[varName];\n this.disposeVariable(v);\n }\n }\n disposeVariable(v) {\n this.disposeTensor(v);\n if (this.state.registeredVariables[v.name] != null) {\n delete this.state.registeredVariables[v.name];\n }\n }\n memory() {\n const info = this.backend.memory();\n info.numTensors = this.state.numTensors;\n info.numDataBuffers = this.state.numDataBuffers;\n info.numBytes = this.state.numBytes;\n if (this.state.numStringTensors > 0) {\n info.unreliable = true;\n if (info.reasons == null) {\n info.reasons = [];\n }\n info.reasons.push('Memory usage by string tensors is approximate ' +\n '(2 bytes per character)');\n }\n return info;\n }\n async profile(query) {\n this.state.profiling = true;\n const startBytes = this.state.numBytes;\n const startNumTensors = this.state.numTensors;\n this.state.activeProfile.kernels = [];\n this.state.activeProfile.result = await query();\n this.state.profiling = false;\n this.state.activeProfile.peakBytes = Math.max(...this.state.activeProfile.kernels.map(d => d.totalBytesSnapshot));\n this.state.activeProfile.newBytes = this.state.numBytes - startBytes;\n this.state.activeProfile.newTensors =\n this.state.numTensors - startNumTensors;\n for (const kernel of this.state.activeProfile.kernels) {\n kernel.kernelTimeMs = await kernel.kernelTimeMs;\n kernel.extraInfo = await kernel.extraInfo;\n }\n return this.state.activeProfile;\n }\n isTapeOn() {\n return this.state.gradientDepth > 0 && this.state.kernelDepth === 0;\n }\n addTapeNode(kernelName, inputs, outputs, gradientsFunc, saved, attrs) {\n const tapeNode = { id: this.state.nextTapeNodeId++, kernelName, inputs, outputs, saved };\n const gradConfig = getGradient(kernelName);\n if (gradConfig != null) {\n gradientsFunc = gradConfig.gradFunc;\n }\n if (gradientsFunc != null) {\n tapeNode.gradient = (dys) => {\n // TODO(smilkov): To optimize back-prop, pass dys that are not used in\n // the backprop graph to the user as null instead of zeros\n dys = dys.map((dy, i) => {\n if (dy == null) {\n const output = outputs[i];\n const vals = util.makeZerosTypedArray(output.size, output.dtype);\n return this.makeTensor(vals, output.shape, output.dtype);\n }\n return dy;\n });\n // Grad functions of ops with single outputs expect a dy, while ops\n // with multiple outputs expect dys (array of dy).\n return gradientsFunc(dys.length > 1 ? dys : dys[0], saved, attrs);\n };\n }\n this.state.activeTape.push(tapeNode);\n }\n keep(result) {\n result.kept = true;\n return result;\n }\n startTape() {\n if (this.state.gradientDepth === 0) {\n this.state.activeTape = [];\n }\n this.state.gradientDepth++;\n }\n endTape() {\n this.state.gradientDepth--;\n }\n /**\n * Start a scope. Use this with endScope() to achieve the same functionality\n * as scope() without the need for a function closure.\n */\n startScope(name) {\n const scopeInfo = {\n track: [],\n name: 'unnamed scope',\n id: this.state.nextScopeId++\n };\n if (name) {\n scopeInfo.name = name;\n }\n this.state.scopeStack.push(scopeInfo);\n this.state.activeScope = scopeInfo;\n }\n /**\n * End a scope. Use this with startScope() to achieve the same functionality\n * as scope() without the need for a function closure.\n */\n endScope(result) {\n const tensorsToTrackInParent = getTensorsInContainer(result);\n const tensorsToTrackInParentSet = new Set(tensorsToTrackInParent.map(t => t.id));\n // Dispose the arrays tracked in this scope.\n for (let i = 0; i < this.state.activeScope.track.length; i++) {\n const tensor = this.state.activeScope.track[i];\n if (!tensor.kept && !tensorsToTrackInParentSet.has(tensor.id)) {\n tensor.dispose();\n }\n }\n const oldScope = this.state.scopeStack.pop();\n this.state.activeScope = this.state.scopeStack.length === 0 ?\n null :\n this.state.scopeStack[this.state.scopeStack.length - 1];\n // Track the current result in the parent scope.\n tensorsToTrackInParent.forEach(tensor => {\n // Only track the tensor if was allocated in the inner scope and is not\n // globally kept.\n if (!tensor.kept && tensor.scopeId === oldScope.id) {\n this.track(tensor);\n }\n });\n }\n /**\n * Returns gradients of `f` with respect to each of the `xs`. The gradients\n * returned are of the same length as `xs`, but some might be null if `f`\n * was not a function of that `x`. It also takes optional dy to multiply the\n * gradient, which defaults to `1`.\n */\n gradients(f, xs, dy, allowNoGradients = false) {\n util.assert(xs.length > 0, () => 'gradients() received an empty list of xs.');\n if (dy != null && dy.dtype !== 'float32') {\n throw new Error(`dy must have 'float32' dtype, but has '${dy.dtype}'`);\n }\n const y = this.scopedRun(() => this.startTape(), () => this.endTape(), () => this.tidy('forward', f));\n util.assert(y instanceof Tensor, () => 'The result y returned by f() must be a tensor.');\n // Filter out the nodes that don't connect x => y.\n const filteredTape = getFilteredNodesXToY(this.state.activeTape, xs, y);\n if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) {\n throw new Error('Cannot compute gradient of y=f(x) with respect to x. Make sure ' +\n 'that the f you passed encloses all operations that lead from x ' +\n 'to y.');\n }\n return this.tidy('backward', () => {\n const accumulatedGradientMap = {};\n accumulatedGradientMap[y.id] = (dy == null) ? ones(y.shape) : dy;\n // Backprop gradients through the filtered nodes.\n backpropagateGradients(accumulatedGradientMap, filteredTape, \n // Pass the tidy function to avoid circular dep with `tape.ts`.\n f => this.tidy(f), \n // Pass an add function to avoide a circular dep with `tape.ts`.\n add);\n const grads = xs.map(x => accumulatedGradientMap[x.id]);\n if (this.state.gradientDepth === 0) {\n // This means that we are not computing higher-order gradients\n // and can clean up the tape.\n this.state.activeTape.forEach(node => {\n for (const tensor of node.saved) {\n tensor.dispose();\n }\n });\n this.state.activeTape = null;\n }\n return { value: y, grads };\n });\n }\n customGrad(f) {\n util.assert(util.isFunction(f), () => 'The f passed in customGrad(f) must be a function.');\n return (...inputs) => {\n util.assert(inputs.every(t => t instanceof Tensor), () => 'The args passed in customGrad(f)(x1, x2,...) must all be ' +\n 'tensors');\n let res;\n const inputMap = {};\n inputs.forEach((input, i) => {\n inputMap[i] = input;\n });\n const forwardFunc = (_, save) => {\n res = f(...[...inputs, save]);\n util.assert(res.value instanceof Tensor, () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.value` is a tensor');\n util.assert(util.isFunction(res.gradFunc), () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function.');\n return res.value;\n };\n const backwardsFunc = (dy, saved) => {\n const gradRes = res.gradFunc(dy, saved);\n const grads = Array.isArray(gradRes) ? gradRes : [gradRes];\n util.assert(grads.length === inputs.length, () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function that returns ' +\n 'the same number of tensors as inputs passed to f(...).');\n util.assert(grads.every(t => t instanceof Tensor), () => 'The function f passed in customGrad(f) must return an ' +\n 'object where `obj.gradFunc` is a function that returns ' +\n 'a list of only tensors.');\n const gradMap = {};\n grads.forEach((grad, i) => {\n gradMap[i] = () => grad;\n });\n return gradMap;\n };\n return this.runKernelFunc({\n forwardFunc,\n backwardsFunc,\n inputs: inputMap,\n });\n };\n }\n readSync(dataId) {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.readSync(dataId);\n }\n read(dataId) {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.read(dataId);\n }\n readToGPU(dataId, options) {\n // Route the read to the correct backend.\n const info = this.state.tensorInfo.get(dataId);\n return info.backend.readToGPU(dataId, options);\n }\n async time(query) {\n const start = now();\n const timingInfo = await this.backend.time(query);\n timingInfo.wallMs = now() - start;\n return timingInfo;\n }\n /**\n * Tracks a Tensor in the current scope to be automatically cleaned up\n * when the current scope ends, and returns the value.\n *\n * @param result The Tensor to track in the current scope.\n */\n track(result) {\n if (this.state.activeScope != null) {\n result.scopeId = this.state.activeScope.id;\n this.state.activeScope.track.push(result);\n }\n return result;\n }\n get registeredVariables() {\n return this.state.registeredVariables;\n }\n /**\n * Resets the engine state. Removes all backends but does not remove\n * registered backend factories.\n */\n reset() {\n // Make any pending promise obsolete.\n this.pendingBackendInitId++;\n this.state.dispose();\n this.ENV.reset();\n this.state = new EngineState();\n for (const backendName in this.registry) {\n this.disposeRegisteredKernels(backendName);\n this.registry[backendName].dispose();\n delete this.registry[backendName];\n }\n this.backendName = null;\n this.backendInstance = null;\n this.pendingBackendInit = null;\n }\n}\nEngine.nextTensorId = 0;\nEngine.nextVariableId = 0;\nexport { Engine };\nfunction ones(shape) {\n const values = makeOnesTypedArray(sizeFromShape(shape), 'float32');\n return ENGINE.makeTensor(values, shape, 'float32');\n}\nexport function getOrMakeEngine() {\n const ns = getGlobalNamespace();\n if (ns._tfengine == null) {\n const environment = new Environment(ns);\n ns._tfengine = new Engine(environment);\n }\n setEnvironmentGlobal(ns._tfengine.ENV);\n // Tell the current tensor interface that the global engine is responsible\n // for tracking.\n setTensorTracker(() => ns._tfengine);\n return ns._tfengine;\n}\nexport const ENGINE = getOrMakeEngine();\n/**\n * A implementation of the add op for use within engine and tape.\n *\n * This allows us to avoid a circular dependency between add.ts and engine.\n * It is exported to be available in tape tests.\n */\nexport function add(a, b) {\n // We duplicate Add here to avoid a circular dependency with add.ts.\n const inputs = { a, b };\n return ENGINE.runKernel(Add, inputs);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGZqcy1jb3JlL3NyYy9lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUErQixhQUFhLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsV0FBVyxFQUFFLG9CQUFvQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUV6RyxPQUFPLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQWdCLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQVcsTUFBTSxRQUFRLENBQUM7QUFDOUUsT0FBTyxFQUE0QixnQkFBZ0IsRUFBRSxNQUFNLEVBQWlCLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUd0RyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxLQUFLLElBQUksTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUMsTUFBTSxRQUFRLENBQUM7QUF1RXBGLFNBQVMsNEJBQTRCLENBRWpDLGdCQUNnQztJQUVsQyxPQUFRLGdCQUFrRCxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7QUFDaEYsQ0FBQztBQUVELE1BQU0sV0FBVztJQUFqQjtRQUNFLHVDQUF1QztRQUN2Qyx3QkFBbUIs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SztTQXRVdkIsTUFBTTtBQTRsQ25CLFNBQVMsSUFBSSxDQUFDLEtBQWU7SUFDM0IsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ25FLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEVBQUUsR0FBRyxrQkFBa0IsRUFBb0MsQ0FBQztJQUNsRSxJQUFJLEVBQUUsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDeEM7SUFDRCxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZDLDBFQUEwRTtJQUMxRSxnQkFBZ0I7SUFDaEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUN0QixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLGVBQWUsRUFBRSxDQUFDO0FBRXhDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUN0QyxvRUFBb0U7SUFDcEUsTUFBTSxNQUFNLEdBQUcsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7SUFDdEIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFtQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDE4IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuaW1wb3J0IHtCYWNrZW5kVGltaW5nSW5mbywgRGF0YU1vdmVyLCBLZXJuZWxCYWNrZW5kfSBmcm9tICcuL2JhY2tlbmRzL2JhY2tlbmQnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgc2V0RW52aXJvbm1lbnRHbG9iYWx9IGZyb20gJy4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtnZXRHbG9iYWxOYW1lc3BhY2V9IGZyb20gJy4vZ2xvYmFsX3V0aWwnO1xuaW1wb3J0IHtBZGQsIENhc3QsIElkZW50aXR5fSBmcm9tICcuL2tlcm5lbF9uYW1lcyc7XG5pbXBvcnQgeyBnZXRHcmFkaWVudCwgZ2V0S2VybmVsLCBnZXRLZXJuZWxzRm9yQmFja2VuZCwgR3JhZEZ1bmMsIE5hbWVkQXR0ck1hcCB9IGZyb20gJy4va2VybmVsX3JlZ2lzdHJ5JztcbmltcG9ydCB7IFRlbnNvckluZm8gfSBmcm9tICcuL3RlbnNvcl9pbmZvJztcbmltcG9ydCAqIGFzIGxvZyBmcm9tICcuL2xvZyc7XG5pbXBvcnQge0tlcm5lbFByb2ZpbGUsIFByb2ZpbGVyfSBmcm9tICcuL3Byb2ZpbGVyJztcbmltcG9ydCB7YmFja3Byb3BhZ2F0ZUdyYWRpZW50cywgZ2V0RmlsdGVyZWROb2Rlc1hUb1ksIFRhcGVOb2RlfSBmcm9tICcuL3RhcGUnO1xuaW1wb3J0IHtEYXRhVG9HUFVPcHRpb25zLCBHUFVEYXRhLCBzZXRUZW5zb3JUcmFja2VyLCBUZW5zb3IsIFRlbnNvclRyYWNrZXIsIFZhcmlhYmxlfSBmcm9tICcuL3RlbnNvcic7XG5pbXBvcnQge0RhdGFJZH0gZnJvbSAnLi90ZW5zb3JfaW5mbyc7XG5pbXBvcnQge0dyYWRTYXZlRnVuYywgTmFtZWRUZW5zb3JNYXAsIE5hbWVkVmFyaWFibGVNYXAsIFRlbnNvckNvbnRhaW5lcn0gZnJvbSAnLi90ZW5zb3JfdHlwZXMnO1xuaW1wb3J0IHtnZXRUZW5zb3JzSW5Db250YWluZXJ9IGZyb20gJy4vdGVuc29yX3V0aWwnO1xuaW1wb3J0IHtCYWNrZW5kVmFsdWVzLCBEYXRhVHlwZSwgRGF0YVZhbHVlc30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge2J5dGVzRnJvbVN0cmluZ0FycmF5LCBtYWtlT25lc1R5cGVkQXJyYXksIG5vdywgc2l6ZUZyb21TaGFwZX0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgY29tcHV0ZXMgYW4gb3V0cHV0LiBUaGUgc2F2ZSBmdW5jdGlvbiBpcyBmb3Igc2F2aW5nIHRlbnNvcnNcbiAqIGNvbXB1dGVkIGluIHRoZSBmb3J3YXJkIHBhc3MsIHRoYXQgd2UgbmVlZCBpbiB0aGUgYmFja3dhcmQgcGFzcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9yd2FyZEZ1bmM8VD4gPSAoYmFja2VuZDogS2VybmVsQmFja2VuZCwgc2F2ZT86IEdyYWRTYXZlRnVuYykgPT4gVDtcblxuLyoqXG4gKiBAZG9jYWxpYXMgKGE6IFRlbnNvciwgYjogVGVuc29yLC4uLiwgc2F2ZT86IEZ1bmN0aW9uKSA9PiB7XG4gKiAgIHZhbHVlOiBUZW5zb3IsXG4gKiAgIGdyYWRGdW5jOiAoZHk6IFRlbnNvciwgc2F2ZWQ/OiBOYW1lZFRlbnNvck1hcCkgPT4gVGVuc29yIHwgVGVuc29yW11cbiAqIH1cbiAqL1xuZXhwb3J0IHR5cGUgQ3VzdG9tR3JhZGllbnRGdW5jPFQgZXh0ZW5kcyBUZW5zb3I+ID1cbiAgICAoLi4uaW5wdXRzOiBBcnJheTxUZW5zb3J8R3JhZFNhdmVGdW5jPikgPT4ge1xuICAgICAgdmFsdWU6IFQ7XG4gICAgICBncmFkRnVuYzogKGR5OiBULCBzYXZlZDogVGVuc29yW10pID0+IFRlbnNvciB8IFRlbnNvcltdO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIE1lbW9yeUluZm8gPSB7XG4gIG51bVRlbnNvcnM6IG51bWJlcjsgbnVtRGF0YUJ1ZmZlcnM6IG51bWJlcjsgbnVtQnl0ZXM6IG51bWJlcjtcbiAgdW5yZWxpYWJsZT86IGJvb2xlYW47IHJlYXNvbnM6IHN0cmluZ1tdO1xufTtcblxudHlwZSBLZXJuZWxJbmZvID0ge1xuICBuYW1lOiBzdHJpbmc7IGJ5dGVzQWRkZWQ6IG51bWJlcjsgdG90YWxCeXRlc1NuYXBzaG90OiBudW1iZXI7XG4gIHRlbnNvcnNBZGRlZDogbnVtYmVyO1xuICB0b3RhbFRlbnNvcnNTbmFwc2hvdDogbnVtYmVyO1xuICBpbnB1dFNoYXBlczogbnVtYmVyW11bXTtcbiAgb3V0cHV0U2hhcGVzOiBudW1iZXJbXVtdO1xuICBrZXJuZWxUaW1lTXM6IG51bWJlciB8IHtlcnJvcjogc3RyaW5nfSB8IFByb21pc2U8bnVtYmVyfHtlcnJvcjogc3RyaW5nfT47XG4gIGV4dHJhSW5mbzogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xufTtcblxuZXhwb3J0IHR5cGUgUHJvZmlsZUluZm8gPSB7XG4gIG5ld0J5dGVzOiBudW1iZXI7IG5ld1RlbnNvcnM6IG51bWJlcjsgcGVha0J5dGVzOiBudW1iZXI7XG4gIGtlcm5lbHM6IEtlcm5lbEluZm9bXTtcbiAgcmVzdWx0OiBUZW5zb3JDb250YWluZXI7XG4gIGtlcm5lbE5hbWVzOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGltaW5nSW5mbyBleHRlbmRzIEJhY2tlbmRUaW1pbmdJbmZvIHtcbiAgd2FsbE1zOiBudW1iZXI7XG59XG5cbi8qKiBAZG9jYWxpYXMgRnVuY3Rpb24gKi9cbmV4cG9ydCB0eXBlIFNjb3BlRm48VCBleHRlbmRzIFRlbnNvckNvbnRhaW5lcj4gPSAoKSA9PiBUO1xuXG5pbnRlcmZhY2UgU2NvcGVTdGF0ZSB7XG4gIHRyYWNrOiBUZW5zb3JbXTtcbiAgbmFtZTogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVnaXN0ZXJlZEtlcm5lbEludm9jYXRpb248SSBleHRlbmRzIE5hbWVkVGVuc29yTWFwPiB7XG4gIGtlcm5lbE5hbWU6IHN0cmluZztcbiAgaW5wdXRzOiBJO1xuICBhdHRycz86IE5hbWVkQXR0ck1hcDtcbn1cblxuaW50ZXJmYWNlIEN1c3RvbUdyYWRLZXJuZWxJbnZvY2F0aW9uPFQgZXh0ZW5kcyBUZW5zb3J8VGVuc29yW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkgZXh0ZW5kcyBOYW1lZFRlbnNvck1hcD4ge1xuICBmb3J3YXJkRnVuYzogRm9yd2FyZEZ1bmM8VD47XG4gIGJhY2t3YXJkc0Z1bmM6IChkeTogVCwgc2F2ZWQ6IFRlbnNvcltdKSA9PiB7XG4gICAgW1AgaW4ga2V5b2YgSV06ICgpID0+IElbUF1cbiAgfTtcbiAgaW5wdXRzOiBJO1xuICBhdHRycz86IE5hbWVkQXR0ck1hcDtcbn1cblxuZnVuY3Rpb24gaXNSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxUIGV4dGVuZHMgVGVuc29yfFRlbnNvcltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSSBleHRlbmRzIE5hbWVkVGVuc29yTWFwPihcbiAgICBrZXJuZWxJbnZvY2F0aW9uOiBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPnxcbiAgICBDdXN0b21HcmFkS2VybmVsSW52b2NhdGlvbjxULCBJPik6XG4gICAga2VybmVsSW52b2NhdGlvbiBpcyBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPiB7XG4gIHJldHVybiAoa2VybmVsSW52b2NhdGlvbiBhcyBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPikua2VybmVsTmFtZSAhPSBudWxsO1xufVxuXG5jbGFzcyBFbmdpbmVTdGF0ZSB7XG4gIC8vIFB1YmxpYyBzaW5jZSBvcHRpbWl6ZXJzIHdpbGwgdXNlIGl0LlxuICByZWdpc3RlcmVkVmFyaWFibGVzOiBOYW1lZFZhcmlhYmxlTWFwID0ge307XG5cbiAgbmV4dFRhcGVOb2RlSWQgPSAwO1xuICBudW1CeXRlcyA9IDA7XG4gIG51bVRlbnNvcnMgPSAwO1xuICBudW1TdHJpbmdUZW5zb3JzID0gMDtcbiAgbnVtRGF0YUJ1ZmZlcnMgPSAwO1xuXG4gIGFjdGl2ZVRhcGU6IFRhcGVOb2RlW107XG4gIC8vIE51bWJlciBvZiBuZXN0ZWQgdGYuZ3JhZCgpIHN0YXRlbWVudHMgd2hlbiBjb21wdXRpbmcgaGlnaGVyLW9yZGVyXG4gIC8vIGdyYWRpZW50cy4gRS5nLiBgMWAgZm9yIGZpcnN0LW9yZGVyIGdyYWRpZW50cyBhbmQgYDJgIGZvciBzZWNvbmQtb3JkZXJcbiAgLy8gZ3JhZGllbnRzLiBVc2VkIHRvIHRyYWNrIGlmIHRoZSB0YXBlIHNob3VsZCBiZSByZW1vdmVkIGFmdGVyIGEgYmFja3Byb3AuXG4gIGdyYWRpZW50RGVwdGggPSAwO1xuICAvLyBOdW1iZXIgb2YgbmVzdGVkIGtlcm5lbCBjYWxscy4gV2hlbiBrZXJuZWwgZGVwdGggaXMgZ3JlYXRlciB0aGFuIDEsIHdlIHR1cm5cbiAgLy8gb2ZmIHRoZSB0YXBlLlxuICBrZXJuZWxEZXB0aCA9IDA7XG5cbiAgLy8gS2VlcCBUZW5zb3JzIHRoYXQgcGFyYWxsZWwgdGhlIHRhcGVzLlxuICBhY3RpdmVTY29wZTogU2NvcGVTdGF0ZTtcbiAgc2NvcGVTdGFjazogU2NvcGVTdGF0ZVtdID0gW107XG4gIC8qKlxuICAgKiBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGRhdGEgbW92ZXMgZHVyaW5nIGEga2VybmVsIGV4ZWN1dGlvbi4gV2VcbiAgICogbWFpbnRhaW4gYSBzdGFjayBzaW5jZSBrZXJuZWxzIGNhbiBjYWxsIG90aGVyIGtlcm5lbHMsIHJlY3Vyc2l2ZWx5LlxuICAgKi9cbiAgbnVtRGF0YU1vdmVzU3RhY2s6IG51bWJlcltdID0gW107XG4gIG5leHRTY29wZUlkID0gMDtcblxuICB0ZW5zb3JJbmZvID0gbmV3IFdlYWtNYXA8RGF0YUlkLCB7XG4gICAgYmFja2VuZDogS2VybmVsQmFja2VuZCxcbiAgICBieXRlczogbnVtYmVyLFxuICAgIGR0eXBlOiBEYXRhVHlwZSxcbiAgICBzaGFwZTogbnVtYmVyW11cbiAgfT4oKTtcblxuICBwcm9maWxpbmcgPSBmYWxzZTtcbiAgYWN0aXZlUHJvZmlsZTogUHJvZmlsZUluZm8gPSB7XG4gICAgbmV3Qnl0ZXM6IDAsXG4gICAgbmV3VGVuc29yczogMCxcbiAgICBwZWFrQnl0ZXM6IDAsXG4gICAga2VybmVsczogW10sXG4gICAgcmVzdWx0OiBudWxsLFxuICAgIGdldCBrZXJuZWxOYW1lcygpOlxuICAgICAgICBzdHJpbmdbXSB7XG4gICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldCh0aGlzLmtlcm5lbHMubWFwKGsgPT4gay5uYW1lKSkpO1xuICAgICAgICB9XG4gIH07XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBmb3IgKGNvbnN0IHZhcmlhYmxlTmFtZSBpbiB0aGlzLnJlZ2lzdGVyZWRWYXJpYWJsZXMpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJlZFZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdLmRpc3Bvc2UoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVuZ2luZSBpbXBsZW1lbnRzIFRlbnNvclRyYWNrZXIsIERhdGFNb3ZlciB7XG4gIHN0YXRlOiBFbmdpbmVTdGF0ZTtcbiAgYmFja2VuZE5hbWU6IHN0cmluZztcbiAgcmVnaXN0cnk6IHtbaWQ6IHN0cmluZ106IEtlcm5lbEJhY2tlbmR9ID0ge307XG4gIHJlZ2lzdHJ5RmFjdG9yeToge1xuICAgIFtpZDogc3RyaW5nXToge1xuICAgICAgZmFjdG9yeTogKCkgPT4gS2VybmVsQmFja2VuZCB8IFByb21pc2U8S2VybmVsQmFja2VuZD4sXG4gICAgICBwcmlvcml0eTogbnVtYmVyXG4gICAgfVxuICB9ID0ge307XG5cbiAgcHJpdmF0ZSBwcm9maWxlcjogUHJvZmlsZXI7XG4gIHByaXZhdGUgYmFja2VuZEluc3RhbmNlOiBLZXJuZWxCYWNrZW5kO1xuICBwcml2YXRlIHBlbmRpbmdCYWNrZW5kSW5pdDogUHJvbWlzZTxib29sZWFuPjtcbiAgcHJpdmF0ZSBwZW5kaW5nQmFja2VuZEluaXRJZCA9IDA7XG5cbiAgY29uc3RydWN0b3IocHVibGljIEVOVjogRW52aXJvbm1lbnQpIHtcbiAgICB0aGlzLnN0YXRlID0gbmV3IEVuZ2luZVN0YXRlKCk7XG4gIH1cblxuICBhc3luYyByZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5wZW5kaW5nQmFja2VuZEluaXQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0JhY2tlbmRJbml0LnRoZW4oKCkgPT4ge30pO1xuICAgIH1cbiAgICBpZiAodGhpcy5iYWNrZW5kSW5zdGFuY2UgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzb3J0ZWRCYWNrZW5kcyA9IHRoaXMuZ2V0U29ydGVkQmFja2VuZHMoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkQmFja2VuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGJhY2tlbmROYW1lID0gc29ydGVkQmFja2VuZHNbaV07XG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgdGhpcy5pbml0aWFsaXplQmFja2VuZChiYWNrZW5kTmFtZSkuc3VjY2VzcztcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0QmFja2VuZChiYWNrZW5kTmFtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhbnkgYmFja2VuZHMsIGFsbCBiYWNrZW5kIGluaXRpYWxpemF0aW9ucyBgICtcbiAgICAgICAgYGZhaWxlZC5gKTtcbiAgfVxuXG4gIGdldCBiYWNrZW5kKCk6IEtlcm5lbEJhY2tlbmQge1xuICAgIGlmICh0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdCAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEJhY2tlbmQgJyR7dGhpcy5iYWNrZW5kTmFtZX0nIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuIE1ha2UgYCArXG4gICAgICAgICAgYHN1cmUgdG8gYXdhaXQgdGYucmVhZHkoKSBvciBhd2FpdCB0Zi5zZXRCYWNrZW5kKCkgYmVmb3JlIGNhbGxpbmcgYCArXG4gICAgICAgICAgYG90aGVyIG1ldGhvZHNgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYmFja2VuZEluc3RhbmNlID09IG51bGwpIHtcbiAgICAgIGNvbnN0IHtuYW1lLCBhc3luY0luaXR9ID0gdGhpcy5pbml0aWFsaXplQmFja2VuZHNBbmRSZXR1cm5CZXN0KCk7XG4gICAgICBpZiAoYXN5bmNJbml0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBUaGUgaGlnaGVzdCBwcmlvcml0eSBiYWNrZW5kICcke25hbWV9JyBoYXMgbm90IHlldCBiZWVuIGAgK1xuICAgICAgICAgICAgYGluaXRpYWxpemVkLiBNYWtlIHN1cmUgdG8gYXdhaXQgdGYucmVhZHkoKSBvciBgICtcbiAgICAgICAgICAgIGBhd2FpdCB0Zi5zZXRCYWNrZW5kKCkgYmVmb3JlIGNhbGxpbmcgb3RoZXIgbWV0aG9kc2ApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRCYWNrZW5kKG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kSW5zdGFuY2U7XG4gIH1cblxuICBiYWNrZW5kTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJlZ2lzdHJ5RmFjdG9yeSk7XG4gIH1cblxuICBmaW5kQmFja2VuZChiYWNrZW5kTmFtZTogc3RyaW5nKTogS2VybmVsQmFja2VuZCB7XG4gICAgaWYgKCEoYmFja2VuZE5hbWUgaW4gdGhpcy5yZWdpc3RyeSkpIHtcbiAgICAgIC8vIElmIHRoZSBiYWNrZW5kIGhhc24ndCBiZWVuIGluaXRpYWxpemVkIGJ1dCB3ZSBoYXZlIGEgcmVnaXN0cnkgZW50cnkgZm9yXG4gICAgICAvLyBpdCwgaW5pdGlhbGl6ZSBpdCBhbmQgcmV0dXJuIGl0LlxuICAgICAgaWYgKGJhY2tlbmROYW1lIGluIHRoaXMucmVnaXN0cnlGYWN0b3J5KSB7XG4gICAgICAgIGNvbnN0IHthc3luY0luaXR9ID0gdGhpcy5pbml0aWFsaXplQmFja2VuZChiYWNrZW5kTmFtZSk7XG4gICAgICAgIGlmIChhc3luY0luaXQpIHtcbiAgICAgICAgICAvLyBCYWNrZW5kIGlzIG5vdCByZWFkeSB5ZXQuXG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV07XG4gIH1cblxuICBmaW5kQmFja2VuZEZhY3RvcnkoYmFja2VuZE5hbWU6IHN0cmluZyk6XG4gICAgICAoKSA9PiBLZXJuZWxCYWNrZW5kIHwgUHJvbWlzZTxLZXJuZWxCYWNrZW5kPiB7XG4gICAgaWYgKCEoYmFja2VuZE5hbWUgaW4gdGhpcy5yZWdpc3RyeUZhY3RvcnkpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXS5mYWN0b3J5O1xuICB9XG5cbiAgcmVnaXN0ZXJCYWNrZW5kKFxuICAgICAgYmFja2VuZE5hbWU6IHN0cmluZyxcbiAgICAgIGZhY3Rvcnk6ICgpID0+IEtlcm5lbEJhY2tlbmQgfCBQcm9taXNlPEtlcm5lbEJhY2tlbmQ+LFxuICAgICAgcHJpb3JpdHkgPSAxKTogYm9vbGVhbiB7XG4gICAgaWYgKGJhY2tlbmROYW1lIGluIHRoaXMucmVnaXN0cnlGYWN0b3J5KSB7XG4gICAgICBsb2cud2FybihcbiAgICAgICAgICBgJHtiYWNrZW5kTmFtZX0gYmFja2VuZCB3YXMgYWxyZWFkeSByZWdpc3RlcmVkLiBgICtcbiAgICAgICAgICBgUmV1c2luZyBleGlzdGluZyBiYWNrZW5kIGZhY3RvcnkuYCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXSA9IHtmYWN0b3J5LCBwcmlvcml0eX07XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBzZXRCYWNrZW5kKGJhY2tlbmROYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5yZWdpc3RyeUZhY3RvcnlbYmFja2VuZE5hbWVdID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQmFja2VuZCBuYW1lICcke2JhY2tlbmROYW1lfScgbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCk7XG4gICAgfVxuICAgIHRoaXMuYmFja2VuZE5hbWUgPSBiYWNrZW5kTmFtZTtcbiAgICBpZiAodGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV0gPT0gbnVsbCkge1xuICAgICAgdGhpcy5iYWNrZW5kSW5zdGFuY2UgPSBudWxsO1xuICAgICAgY29uc3Qge3N1Y2Nlc3MsIGFzeW5jSW5pdH0gPSB0aGlzLmluaXRpYWxpemVCYWNrZW5kKGJhY2tlbmROYW1lKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFzeW5jSW5pdCA/IGF3YWl0IHN1Y2Nlc3MgOiBzdWNjZXNzO1xuICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmJhY2tlbmRJbnN0YW5jZSA9IHRoaXMucmVnaXN0cnlbYmFja2VuZE5hbWVdO1xuICAgIHRoaXMuc2V0dXBSZWdpc3RlcmVkS2VybmVscygpO1xuICAgIC8vIFJlc2V0IHRoZSBwcm9maWxlci5cbiAgICB0aGlzLnByb2ZpbGVyID0gbmV3IFByb2ZpbGVyKHRoaXMuYmFja2VuZEluc3RhbmNlKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlZ2lzdGVyZWRLZXJuZWxzKCk6IHZvaWQge1xuICAgIGNvbnN0IGtlcm5lbHMgPSBnZXRLZXJuZWxzRm9yQmFja2VuZCh0aGlzLmJhY2tlbmROYW1lKTtcbiAgICBrZXJuZWxzLmZvckVhY2goa2VybmVsID0+IHtcbiAgICAgIGlmIChrZXJuZWwuc2V0dXBGdW5jICE9IG51bGwpIHtcbiAgICAgICAga2VybmVsLnNldHVwRnVuYyh0aGlzLmJhY2tlbmRJbnN0YW5jZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3Bvc2VSZWdpc3RlcmVkS2VybmVscyhiYWNrZW5kTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2VybmVscyA9IGdldEtlcm5lbHNGb3JCYWNrZW5kKGJhY2tlbmROYW1lKTtcbiAgICBrZXJuZWxzLmZvckVhY2goa2VybmVsID0+IHtcbiAgICAgIGlmIChrZXJuZWwuZGlzcG9zZUZ1bmMgIT0gbnVsbCkge1xuICAgICAgICBrZXJuZWwuZGlzcG9zZUZ1bmModGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIGEgYmFja2VuZCBieSBsb29raW5nIHVwIHRoZSBiYWNrZW5kIG5hbWUgaW4gdGhlIGZhY3RvcnlcbiAgICogcmVnaXN0cnkgYW5kIGNhbGxpbmcgdGhlIGZhY3RvcnkgbWV0aG9kLiBSZXR1cm5zIGEgYm9vbGVhbiByZXByZXNlbnRpbmdcbiAgICogd2hldGhlciB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGJhY2tlbmQgc3VjY2VlZGVkLiBUaHJvd3MgYW4gZXJyb3IgaWZcbiAgICogdGhlcmUgaXMgbm8gYmFja2VuZCBpbiB0aGUgZmFjdG9yeSByZWdpc3RyeS5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJhY2tlbmQoYmFja2VuZE5hbWU6IHN0cmluZyk6XG4gICAgICB7c3VjY2VzczogYm9vbGVhbnxQcm9taXNlPGJvb2xlYW4+LCBhc3luY0luaXQ6IGJvb2xlYW59IHtcbiAgICBjb25zdCByZWdpc3RyeUZhY3RvcnlFbnRyeSA9IHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXTtcbiAgICBpZiAocmVnaXN0cnlGYWN0b3J5RW50cnkgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW5ub3QgaW5pdGlhbGl6ZSBiYWNrZW5kICR7YmFja2VuZE5hbWV9LCBubyByZWdpc3RyYXRpb24gZm91bmQuYCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhY2tlbmQgPSByZWdpc3RyeUZhY3RvcnlFbnRyeS5mYWN0b3J5KCk7XG4gICAgICAvKiBUZXN0IGlmIHRoZSBmYWN0b3J5IHJldHVybnMgYSBwcm9taXNlLlxuICAgICAgRG9uZSBpbiBhIG1vcmUgbGliZXJhbCB3YXkgdGhhblxuICAgICAgcHJldmlvdXMgJ1Byb21pc2UucmVzb2x2ZShiYWNrZW5kKT09PWJhY2tlbmQnXG4gICAgICBhcyB3ZSBuZWVkZWQgdG8gYWNjb3VudCBmb3IgY3VzdG9tIFByb21pc2VcbiAgICAgIGltcGxlbWVudGF0aW9ucyAoZS5nLiBBbmd1bGFyKSAqL1xuICAgICAgaWYgKGJhY2tlbmQgJiYgIShiYWNrZW5kIGluc3RhbmNlb2YgS2VybmVsQmFja2VuZCkgJiZcbiAgICAgICAgICB0eXBlb2YgYmFja2VuZC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VJZCA9ICsrdGhpcy5wZW5kaW5nQmFja2VuZEluaXRJZDtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9XG4gICAgICAgICAgICBiYWNrZW5kXG4gICAgICAgICAgICAgICAgLnRoZW4oYmFja2VuZEluc3RhbmNlID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIE91dGRhdGVkIHByb21pc2UuIEFub3RoZXIgYmFja2VuZCB3YXMgc2V0IGluIHRoZSBtZWFudGltZS5cbiAgICAgICAgICAgICAgICAgIGlmIChwcm9taXNlSWQgPCB0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0cnlbYmFja2VuZE5hbWVdID0gYmFja2VuZEluc3RhbmNlO1xuICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIE91dGRhdGVkIHByb21pc2UuIEFub3RoZXIgYmFja2VuZCB3YXMgc2V0IGluIHRoZSBtZWFudGltZS5cbiAgICAgICAgICAgICAgICAgIGlmIChwcm9taXNlSWQgPCB0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdElkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMucGVuZGluZ0JhY2tlbmRJbml0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIGxvZy53YXJuKGBJbml0aWFsaXphdGlvbiBvZiBiYWNrZW5kICR7YmFja2VuZE5hbWV9IGZhaWxlZGApO1xuICAgICAgICAgICAgICAgICAgbG9nLndhcm4oZXJyLnN0YWNrIHx8IGVyci5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgPSBzdWNjZXNzO1xuICAgICAgICByZXR1cm4ge3N1Y2Nlc3MsIGFzeW5jSW5pdDogdHJ1ZX07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZ2lzdHJ5W2JhY2tlbmROYW1lXSA9IGJhY2tlbmQgYXMgS2VybmVsQmFja2VuZDtcbiAgICAgICAgcmV0dXJuIHtzdWNjZXNzOiB0cnVlLCBhc3luY0luaXQ6IGZhbHNlfTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKGBJbml0aWFsaXphdGlvbiBvZiBiYWNrZW5kICR7YmFja2VuZE5hbWV9IGZhaWxlZGApO1xuICAgICAgbG9nLndhcm4oZXJyLnN0YWNrIHx8IGVyci5tZXNzYWdlKTtcbiAgICAgIHJldHVybiB7c3VjY2VzczogZmFsc2UsIGFzeW5jSW5pdDogZmFsc2V9O1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUJhY2tlbmQoYmFja2VuZE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghKGJhY2tlbmROYW1lIGluIHRoaXMucmVnaXN0cnlGYWN0b3J5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2JhY2tlbmROYW1lfSBiYWNrZW5kIG5vdCBmb3VuZCBpbiByZWdpc3RyeWApO1xuICAgIH1cbiAgICBpZiAodGhpcy5iYWNrZW5kTmFtZSA9PT0gYmFja2VuZE5hbWUgJiYgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgIT0gbnVsbCkge1xuICAgICAgLy8gVGhlcmUgaXMgYSBwZW5kaW5nIHByb21pc2Ugb2YgdGhlIGJhY2tlbmQgd2Ugd2FudCB0byByZW1vdmUuIE1ha2UgaXRcbiAgICAgIC8vIG9ic29sZXRlLlxuICAgICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXRJZCsrO1xuICAgIH1cblxuICAgIGlmIChiYWNrZW5kTmFtZSBpbiB0aGlzLnJlZ2lzdHJ5KSB7XG4gICAgICB0aGlzLmRpc3Bvc2VSZWdpc3RlcmVkS2VybmVscyhiYWNrZW5kTmFtZSk7XG4gICAgICB0aGlzLnJlZ2lzdHJ5W2JhY2tlbmROYW1lXS5kaXNwb3NlKCk7XG4gICAgICBkZWxldGUgdGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV07XG4gICAgfVxuXG4gICAgZGVsZXRlIHRoaXMucmVnaXN0cnlGYWN0b3J5W2JhY2tlbmROYW1lXTtcblxuICAgIC8vIFVuc2V0IHRoZSBiYWNrZW5kIGlmIGl0IGlzIGFjdGl2ZS5cbiAgICBpZiAodGhpcy5iYWNrZW5kTmFtZSA9PT0gYmFja2VuZE5hbWUpIHtcbiAgICAgIHRoaXMucGVuZGluZ0JhY2tlbmRJbml0ID0gbnVsbDtcbiAgICAgIHRoaXMuYmFja2VuZE5hbWUgPSBudWxsO1xuICAgICAgdGhpcy5iYWNrZW5kSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U29ydGVkQmFja2VuZHMoKTogc3RyaW5nW10ge1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLnJlZ2lzdHJ5RmFjdG9yeSkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGJhY2tlbmQgZm91bmQgaW4gcmVnaXN0cnkuJyk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnJlZ2lzdHJ5RmFjdG9yeSkuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIEhpZ2hlc3QgcHJpb3JpdHkgY29tZXMgZmlyc3QuXG4gICAgICByZXR1cm4gdGhpcy5yZWdpc3RyeUZhY3RvcnlbYl0ucHJpb3JpdHkgLVxuICAgICAgICAgIHRoaXMucmVnaXN0cnlGYWN0b3J5W2FdLnByaW9yaXR5O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQmFja2VuZHNBbmRSZXR1cm5CZXN0KCk6XG4gICAgICB7bmFtZTogc3RyaW5nLCBhc3luY0luaXQ6IGJvb2xlYW59IHtcbiAgICBjb25zdCBzb3J0ZWRCYWNrZW5kcyA9IHRoaXMuZ2V0U29ydGVkQmFja2VuZHMoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkQmFja2VuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGJhY2tlbmROYW1lID0gc29ydGVkQmFja2VuZHNbaV07XG4gICAgICBjb25zdCB7c3VjY2VzcywgYXN5bmNJbml0fSA9IHRoaXMuaW5pdGlhbGl6ZUJhY2tlbmQoYmFja2VuZE5hbWUpO1xuICAgICAgaWYgKGFzeW5jSW5pdCB8fCBzdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB7bmFtZTogYmFja2VuZE5hbWUsIGFzeW5jSW5pdH07XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBpbml0aWFsaXplIGFueSBiYWNrZW5kcywgYWxsIGJhY2tlbmQgaW5pdGlhbGl6YXRpb25zIGAgK1xuICAgICAgICBgZmFpbGVkLmApO1xuICB9XG5cbiAgbW92ZURhdGEoYmFja2VuZDogS2VybmVsQmFja2VuZCwgZGF0YUlkOiBEYXRhSWQpIHtcbiAgICBjb25zdCBpbmZvID0gdGhpcy5zdGF0ZS50ZW5zb3JJbmZvLmdldChkYXRhSWQpO1xuICAgIGNvbnN0IHNyY0JhY2tlbmQgPSBpbmZvLmJhY2tlbmQ7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5yZWFkU3luYyhkYXRhSWQpO1xuICAgIGNvbnN0IHJlZkNvdW50ID0gc3JjQmFja2VuZC5yZWZDb3VudChkYXRhSWQpO1xuICAgIC8vIERlbGV0ZSB0aGUgdGVuc29yIGZyb20gdGhlIG9sZCBiYWNrZW5kIGFuZCBtb3ZlIGl0IHRvIHRoZSBuZXdcbiAgICAvLyBiYWNrZW5kLlxuICAgIHNyY0JhY2tlbmQuZGlzcG9zZURhdGEoZGF0YUlkLCB0cnVlKTtcbiAgICBpbmZvLmJhY2tlbmQgPSBiYWNrZW5kO1xuICAgIGJhY2tlbmQubW92ZShkYXRhSWQsIHZhbHVlcywgaW5mby5zaGFwZSwgaW5mby5kdHlwZSwgcmVmQ291bnQpO1xuICAgIGlmICh0aGlzLnNob3VsZENoZWNrRm9yTWVtTGVha3MoKSkge1xuICAgICAgLy8gVHJhY2sgdGhlIG51bWJlciBvZiBtb3ZlcyBkdXJpbmcgYSBrZXJuZWwgZXhlY3V0aW9uIHRvIGNvcnJlY3RseVxuICAgICAgLy8gZGV0ZWN0IG1lbW9yeSBsZWFrcy5cbiAgICAgIHRoaXMuc3RhdGUubnVtRGF0YU1vdmVzU3RhY2tbdGhpcy5zdGF0ZS5udW1EYXRhTW92ZXNTdGFjay5sZW5ndGggLSAxXSsrO1xuICAgIH1cbiAgfVxuXG4gIHRpZHk8VCBleHRlbmRzIFRlbnNvckNvbnRhaW5lcj4obmFtZU9yRm46IHN0cmluZ3xTY29wZUZuPFQ+LCBmbj86IFNjb3BlRm48VD4pOlxuICAgICAgVCB7XG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IG51bGw7XG4gICAgaWYgKGZuID09IG51bGwpIHtcbiAgICAgIC8vIENhbGxlZCB3aXRoIG9ubHkgMSBhcmd1bWVudC5cbiAgICAgIGlmICh0eXBlb2YgbmFtZU9yRm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIHRpZHkoKScpO1xuICAgICAgfVxuICAgICAgZm4gPSBuYW1lT3JGbjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FsbGVkIHdpdGggMiBhcmd1bWVudHMuXG4gICAgICBpZiAodHlwZW9mIG5hbWVPckZuICE9PSAnc3RyaW5nJyAmJiAhKG5hbWVPckZuIGluc3RhbmNlb2YgU3RyaW5nKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnV2hlbiBjYWxsaW5nIHdpdGggdHdvIGFyZ3VtZW50cywgdGhlIGZpcnN0IGFyZ3VtZW50ICcgK1xuICAgICAgICAgICAgJ3RvIHRpZHkoKSBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdXaGVuIGNhbGxpbmcgd2l0aCB0d28gYXJndW1lbnRzLCB0aGUgMm5kIGFyZ3VtZW50ICcgK1xuICAgICAgICAgICAgJ3RvIHRpZHkoKSBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIG5hbWUgPSBuYW1lT3JGbiBhcyBzdHJpbmc7XG4gICAgICAvLyBUT0RPKG5zdGhvcmF0LHNtaWxrb3YpOiBEbyBvcGVyYXRpb24gbG9nZ2luZyBhbmQgcGVyZm9ybWFuY2VcbiAgICAgIC8vIHByb2ZpbGluZy5cbiAgICB9XG4gICAgbGV0IHJlc3VsdDogVDtcbiAgICByZXR1cm4gdGhpcy5zY29wZWRSdW4oXG4gICAgICAgICgpID0+IHRoaXMuc3RhcnRTY29wZShuYW1lKSwgKCkgPT4gdGhpcy5lbmRTY29wZShyZXN1bHQpLCAoKSA9PiB7XG4gICAgICAgICAgcmVzdWx0ID0gZm4oKTtcbiAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHJldHVybiBhIFByb21pc2UgaW5zaWRlIG9mIHRpZHkuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzY29wZWRSdW48VD4oc3RhcnQ6ICgpID0+IHZvaWQsIGVuZDogKCkgPT4gdm9pZCwgZjogKCkgPT4gVCk6IFQge1xuICAgIHN0YXJ0KCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGYoKTtcbiAgICAgIGVuZCgpO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgZW5kKCk7XG4gICAgICB0aHJvdyBleDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBuZXh0VGVuc29ySWQgPSAwO1xuICBwcml2YXRlIG5leHRUZW5zb3JJZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBFbmdpbmUubmV4dFRlbnNvcklkKys7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBuZXh0VmFyaWFibGVJZCA9IDA7XG4gIHByaXZhdGUgbmV4dFZhcmlhYmxlSWQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRW5naW5lLm5leHRWYXJpYWJsZUlkKys7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGluc3RlYWQgb2YgdGhlIHB1YmxpYy1mYWNpbmcgdGVuc29yLmNsb25lKCkgd2hlblxuICAgKiBzYXZpbmcgYSB0ZW5zb3IgZm9yIGJhY2t3YXJkcyBwYXNzLiBJdCBtYWtlcyBzdXJlIHRvIGFkZCB0aGUgY2xvbmVcbiAgICogb3BlcmF0aW9uIHRvIHRoZSB0YXBlIHJlZ2FyZGxlc3Mgb2YgYmVpbmcgY2FsbGVkIGluc2lkZSBhIGtlcm5lbFxuICAgKiBleGVjdXRpb24uXG4gICAqL1xuICBwcml2YXRlIGNsb25lKHg6IFRlbnNvcik6IFRlbnNvciB7XG4gICAgY29uc3QgeTogVGVuc29yID0gRU5HSU5FLnJ1bktlcm5lbChJZGVudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt4fSBhcyB1bmtub3duIGFzIE5hbWVkVGVuc29yTWFwKTtcbiAgICBjb25zdCBpbnB1dHMgPSB7eH07XG4gICAgY29uc3QgZ3JhZCA9IChkeTogVGVuc29yKSA9PiAoe1xuICAgICAgeDogKCkgPT4ge1xuICAgICAgICBjb25zdCBkdHlwZSA9ICdmbG9hdDMyJztcbiAgICAgICAgY29uc3QgZ3JhZElucHV0cyA9IHt4OiBkeX07XG4gICAgICAgIGNvbnN0IGF0dHJzID0ge2R0eXBlfTtcblxuICAgICAgICByZXR1cm4gRU5HSU5FLnJ1bktlcm5lbChcbiAgICAgICAgICAgICAgICAgICBDYXN0LCBncmFkSW5wdXRzIGFzIHVua25vd24gYXMgTmFtZWRUZW5zb3JNYXAsXG4gICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11bm5lY2Vzc2FyeS10eXBlLWFzc2VydGlvblxuICAgICAgICAgICAgICAgICAgIGF0dHJzIGFzIHVua25vd24gYXMgTmFtZWRBdHRyTWFwKSBhcyBUZW5zb3I7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2F2ZWQ6IFRlbnNvcltdID0gW107XG4gICAgdGhpcy5hZGRUYXBlTm9kZSh0aGlzLnN0YXRlLmFjdGl2ZVNjb3BlLm5hbWUsIGlucHV0cywgW3ldLCBncmFkLCBzYXZlZCwge30pO1xuICAgIHJldHVybiB5O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBrZXJuZWwgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgcmV0dXJuIHRoZSBvdXRwdXQgdGVuc29yLlxuICAgKlxuICAgKiBAcGFyYW0ga2VybmVsTmFtZSBUaGUgbmFtZSBvZiB0aGUga2VybmVsIHRvIGV4ZWN1dGUuXG4gICAqIEBwYXJhbSBpbnB1dHMgQSBtYXAgb2YgaW5wdXQgbmFtZXMgdG8gdGVuc29ycy5cbiAgICogQHBhcmFtIGF0dHJzIEEgbWFwIG9mIGF0dHJpYnV0ZSBuYW1lcyB0byB0aGVpciB2YWx1ZXMuIEFuIGF0dHJpYnV0ZSBpcyBhXG4gICAqICAgICBwcmltaXRpdmUgKG5vbi10ZW5zb3IpIGlucHV0IHRvIHRoZSBrZXJuZWwuXG4gICAqIEBwYXJhbSBpbnB1dHNUb1NhdmUgQSBsaXN0IG9mIHRlbnNvcnMsIGlucHV0cyB0byBzYXZlIGZvciB0aGUgYmFja3Byb3BcbiAgICogICAgIGNvbXB1dGF0aW9uLlxuICAgKiBAcGFyYW0gb3V0cHV0c1RvU2F2ZSBBIGxpc3Qgb2YgYm9vbGVhbnMsIHNwZWNpZnlpbmcgd2hpY2ggb3V0cHV0IHRvIHNhdmVcbiAgICogICAgIGZvciB0aGUgYmFja3Byb3AgY29tcHV0YXRpb24uIFRoZXNlIGFyZSBib29sZWFucyBzaW5jZSB0aGUgb3V0cHV0XG4gICAqIHRlbnNvcnMgYXJlIG5vdCB2aXNpYmxlIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcnVuS2VybmVsPFQgZXh0ZW5kcyBUZW5zb3J8VGVuc29yW10+KFxuICAgICAga2VybmVsTmFtZTogc3RyaW5nLCBpbnB1dHM6IE5hbWVkVGVuc29yTWFwLCBhdHRycz86IE5hbWVkQXR0ck1hcCk6IFQge1xuICAgIGlmICh0aGlzLmJhY2tlbmROYW1lID09IG51bGwpIHtcbiAgICAgIC8vIGJhY2tlbmQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldCAoYmFja2VuZCBpbml0aWFsaXphdGlvbiBpcyBsYXp5XG4gICAgICAvLyBjYW4gYmUgZGVmZXJyZWQgdW50aWwgYW4gb3AvIGtlcm5lbCBpcyBydW4pLlxuICAgICAgLy8gVGhlIGJlbG93IGdldHRlciBoYXMgc2lkZSBlZmZlY3RzIHRoYXQgd2lsbCB0cnkgdG8gaW5pdGlhbGl6ZSB0aGVcbiAgICAgIC8vIGJhY2tlbmQgYW5kIHNldCBwcm9wZXJ0aWVzIGxpa2UgdGhpcy5iYWNrZW5kTmFtZVxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby11bnVzZWQtZXhwcmVzc2lvblxuICAgICAgdGhpcy5iYWNrZW5kO1xuICAgIH1cbiAgICBjb25zdCBoYXNLZXJuZWwgPSBnZXRLZXJuZWwoa2VybmVsTmFtZSwgdGhpcy5iYWNrZW5kTmFtZSkgIT0gbnVsbDtcbiAgICBpZiAoIWhhc0tlcm5lbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXJuZWwgJyR7a2VybmVsTmFtZX0nIG5vdCByZWdpc3RlcmVkIGZvciBiYWNrZW5kICcke1xuICAgICAgICAgIHRoaXMuYmFja2VuZE5hbWV9J2ApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ydW5LZXJuZWxGdW5jKHtrZXJuZWxOYW1lLCBpbnB1dHMsIGF0dHJzfSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZENoZWNrRm9yTWVtTGVha3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuRU5WLmdldEJvb2woJ0lTX1RFU1QnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tLZXJuZWxGb3JNZW1MZWFrKFxuICAgICAga2VybmVsTmFtZTogc3RyaW5nLCBudW1EYXRhSWRzQmVmb3JlOiBudW1iZXIsXG4gICAgICBvdXRJbmZvczogVGVuc29ySW5mb1tdKTogdm9pZCB7XG4gICAgY29uc3QgbnVtRGF0YUlkc0FmdGVyID0gdGhpcy5iYWNrZW5kLm51bURhdGFJZHMoKTtcblxuICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgZGF0YSBpZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGtlcm5lbC5cbiAgICBsZXQgbnVtT3V0cHV0RGF0YUlkcyA9IDA7XG4gICAgb3V0SW5mb3MuZm9yRWFjaChpbmZvID0+IHtcbiAgICAgIC8vIENvbXBsZXggbnVtYmVycyBhbGxvY2F0ZSAzIGRhdGEgaWRzLCBvbmUgZm9yICdyZWFsJywgb25lIGZvclxuICAgICAgLy8gJ2ltYWdpbmFyeScsIGFuZCBvbmUgZm9yIHRoZSBjb250YWluZXIgdGhhdCBob2xkcyB0aGUgZm9ybWVyIHR3by5cbiAgICAgIG51bU91dHB1dERhdGFJZHMgKz0gKGluZm8uZHR5cGUgPT09ICdjb21wbGV4NjQnID8gMyA6IDEpO1xuICAgIH0pO1xuXG4gICAgLy8gQWNjb3VudCBmb3IgdGhlIG51bWJlciBvZiBtb3ZlcyBkdXJpbmcga2VybmVsIGV4ZWN1dGlvbi4gQSBcImRhdGEgbW92ZVwiXG4gICAgLy8gY2FuIGhhcHBlbiBpbiB0aGUgbWlkZGxlIG9mIGEga2VybmVsIGV4ZWN1dGlvbiwgcGxhY2luZyBhIG5ldyAoa2V5LHZhbHVlKVxuICAgIC8vIHBhaXIgaW4gdGhlIGRhdGEgc3RvcmFnZS4gU2luY2UgZGF0YSBtb3ZlcyBoYXZlIG5ldCB6ZXJvIGVmZmVjdCAod2VcbiAgICAvLyBhbHdheXMgcmVtb3ZlIHRoZSBkYXRhIGZyb20gdGhlIG9sZCBiYWNrZW5kKSwgd2UgaGF2ZSB0byBjYW5jZWwgdGhlbSBvdXRcbiAgICAvLyB3aGVuIGRldGVjdGluZyBtZW1vcnkgbGVha3MuXG4gICAgY29uc3QgbnVtTW92ZXMgPVxuICAgICAgICB0aGlzLnN0YXRlLm51bURhdGFNb3Zlc1N0YWNrW3RoaXMuc3RhdGUubnVtRGF0YU1vdmVzU3RhY2subGVuZ3RoIC0gMV07XG4gICAgY29uc3QgZGF0YUlkc0xlYWtlZCA9XG4gICAgICAgIG51bURhdGFJZHNBZnRlciAtIG51bURhdGFJZHNCZWZvcmUgLSBudW1PdXRwdXREYXRhSWRzIC0gbnVtTW92ZXM7XG4gICAgaWYgKGRhdGFJZHNMZWFrZWQgPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEJhY2tlbmQgJyR7dGhpcy5iYWNrZW5kTmFtZX0nIGhhcyBhbiBpbnRlcm5hbCBtZW1vcnkgbGVhayBgICtcbiAgICAgICAgICBgKCR7ZGF0YUlkc0xlYWtlZH0gZGF0YSBpZHMpIGFmdGVyIHJ1bm5pbmcgJyR7a2VybmVsTmFtZX0nYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIGhlbHBlciBtZXRob2QgdG8gZXhlY3V0ZSBhIGtlcm5lbCBGdW5jXG4gICAqXG4gICAqIFVzZSBgcnVuS2VybmVsYCB0byBleGVjdXRlIGtlcm5lbHMgZnJvbSBvdXRzaWRlIG9mIGVuZ2luZS5cbiAgICovXG4gIHByaXZhdGUgcnVuS2VybmVsRnVuYzxUIGV4dGVuZHMgVGVuc29yfFRlbnNvcltdLCBJIGV4dGVuZHMgTmFtZWRUZW5zb3JNYXA+KFxuICAgICAga2VybmVsUGFyYW1zOiBSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbjxJPnxcbiAgICAgIEN1c3RvbUdyYWRLZXJuZWxJbnZvY2F0aW9uPFQsIEk+KTogVCB7XG4gICAgbGV0IG91dHB1dHM6IFRlbnNvcltdO1xuICAgIGxldCBzYXZlZDogVGVuc29yW10gPSBbXTtcbiAgICBjb25zdCBpc1RhcGVPbiA9IHRoaXMuaXNUYXBlT24oKTtcblxuICAgIGNvbnN0IHN0YXJ0aW5nQnl0ZWNvdW50ID0gdGhpcy5zdGF0ZS5udW1CeXRlcztcbiAgICBjb25zdCBzdGFydGluZ051bVRlbnNvcnMgPSB0aGlzLnN0YXRlLm51bVRlbnNvcnM7XG5cbiAgICBpZiAodGhpcy5zaG91bGRDaGVja0Zvck1lbUxlYWtzKCkpIHtcbiAgICAgIHRoaXMuc3RhdGUubnVtRGF0YU1vdmVzU3RhY2sucHVzaCgwKTtcbiAgICB9XG5cbiAgICBsZXQga2VybmVsRnVuYzogKCkgPT4gVGVuc29yW107XG4gICAgaWYgKHRoaXMuYmFja2VuZE5hbWUgPT0gbnVsbCkge1xuICAgICAgLy8gYmFja2VuZCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0IChiYWNrZW5kIGluaXRpYWxpemF0aW9uIGlzIGxhenlcbiAgICAgIC8vIGNhbiBiZSBkZWZlcnJlZCB1bnRpbCBhbiBvcC8ga2VybmVsIGlzIHJ1bikuXG4gICAgICAvLyBUaGUgYmVsb3cgZ2V0dGVyIGhhcyBzaWRlIGVmZmVjdHMgdGhhdCB3aWxsIHRyeSB0byBpbml0aWFsaXplIHRoZVxuICAgICAgLy8gYmFja2VuZCBhbmQgc2V0IHByb3BlcnRpZXMgbGlrZSB0aGlzLmJhY2tlbmROYW1lXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVudXNlZC1leHByZXNzaW9uXG4gICAgICB0aGlzLmJhY2tlbmQ7XG4gICAgfVxuXG4gICAgbGV0IG91dDogVGVuc29ySW5mb3xUZW5zb3JJbmZvW107XG5cbiAgICBjb25zdCBrZXJuZWxPclNjb3BlTmFtZSA9IGlzUmVnaXN0ZXJlZEtlcm5lbEludm9jYXRpb24oa2VybmVsUGFyYW1zKSA/XG4gICAgICAgIGtlcm5lbFBhcmFtcy5rZXJuZWxOYW1lIDpcbiAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZSAhPSBudWxsID8gdGhpcy5zdGF0ZS5hY3RpdmVTY29wZS5uYW1lIDogJyc7XG5cbiAgICAvLyBDcmVhdGUgdGhlIGtlcm5lbEZ1bmMgZnJvbSBlaXRoZXIgYSByZWdpc3RlcmVkIGtlcm5lbCBPUiBwYXNzZWQgaW5cbiAgICAvLyBmb3J3YXJkL2JhY2t3YXJkIGZ1bmN0aW9ucyAodXNlZCBieSBjdXN0b20gZ3JhZCkuIEluIHRoaXMgY29udGV4dCBhXG4gICAgLy8ga2VybmVsRnVuYyB3cmFwcyBhIGtlcm5lbCBpbXBsZW1lbnRhdGlvbiB3aXRoIHNvbWUgYm9va2tlZXBpbmcuXG5cbiAgICBpZiAoaXNSZWdpc3RlcmVkS2VybmVsSW52b2NhdGlvbihrZXJuZWxQYXJhbXMpKSB7XG4gICAgICBjb25zdCB7a2VybmVsTmFtZSwgaW5wdXRzLCBhdHRyc30gPSBrZXJuZWxQYXJhbXM7XG4gICAgICBpZiAodGhpcy5iYWNrZW5kTmFtZSA9PSBudWxsKSB7XG4gICAgICAgIC8vIGJhY2tlbmQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldCAoYmFja2VuZCBpbml0aWFsaXphdGlvbiBpcyBsYXp5XG4gICAgICAgIC8vIGNhbiBiZSBkZWZlcnJlZCB1bnRpbCBhbiBvcC8ga2VybmVsIGlzIHJ1bikuXG4gICAgICAgIC8vIFRoZSBiZWxvdyBnZXR0ZXIgaGFzIHNpZGUgZWZmZWN0cyB0aGF0IHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgdGhlXG4gICAgICAgIC8vIGJhY2tlbmQgYW5kIHNldCBwcm9wZXJ0aWVzIGxpa2UgdGhpcy5iYWNrZW5kTmFtZVxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXVudXNlZC1leHByZXNzaW9uXG4gICAgICAgIHRoaXMuYmFja2VuZDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtlcm5lbCA9IGdldEtlcm5lbChrZXJuZWxOYW1lLCB0aGlzLmJhY2tlbmROYW1lKTtcbiAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgIGtlcm5lbCAhPSBudWxsLFxuICAgICAgICAgICgpID0+IGBDYW5ub3QgZmluZCByZWdpc3RlcmVkIGtlcm5lbCAnJHtrZXJuZWxOYW1lfScgZm9yIGJhY2tlbmQgJyR7XG4gICAgICAgICAgICAgIHRoaXMuYmFja2VuZE5hbWV9J2ApO1xuXG4gICAgICBrZXJuZWxGdW5jID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBudW1EYXRhSWRzQmVmb3JlID0gdGhpcy5iYWNrZW5kLm51bURhdGFJZHMoKTtcbiAgICAgICAgb3V0ID0ga2VybmVsLmtlcm5lbEZ1bmMoe2lucHV0cywgYXR0cnMsIGJhY2tlbmQ6IHRoaXMuYmFja2VuZH0pO1xuICAgICAgICBjb25zdCBvdXRJbmZvcyA9IEFycmF5LmlzQXJyYXkob3V0KSA/IG91dCA6IFtvdXRdO1xuICAgICAgICBpZiAodGhpcy5zaG91bGRDaGVja0Zvck1lbUxlYWtzKCkpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrS2VybmVsRm9yTWVtTGVhayhrZXJuZWxOYW1lLCBudW1EYXRhSWRzQmVmb3JlLCBvdXRJbmZvcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvdXRUZW5zb3JzID0gb3V0SW5mb3MubWFwKChvdXRJbmZvOiBUZW5zb3JJbmZvfFRlbnNvcikgPT4ge1xuICAgICAgICAgIC8vIHRvZG8gKHlhc3NvZ2JhKSByZW1vdmUgdGhpcyBvcHRpb24gKFRlbnNvcikgd2hlbiBub2RlIGJhY2tlbmRcbiAgICAgICAgICAvLyBtZXRob2RzIGhhdmUgYmVlbiBtb2R1bGFyaXplZCBhbmQgdGhleSBhbGwgcmV0dXJuIHRlbnNvckluZm8uXG4gICAgICAgICAgLy8gVGVuc29ySW5mb3MgZG8gbm90IGhhdmUgYSByYW5rIGF0dHJpYnV0ZS5cbiAgICAgICAgICBpZiAoKG91dEluZm8gYXMgVGVuc29yKS5yYW5rICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvdXRJbmZvIGFzIFRlbnNvcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVRlbnNvckZyb21UZW5zb3JJbmZvKG91dEluZm8pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTYXZlIGFueSByZXF1aXJlZCBpbnB1dHMgYW5kIG91dHB1dHMuXG5cbiAgICAgICAgLy8gRG8gbm90IHNhdmUgdW5sZXNzIHdlIGFyZSByZWNvcmRpbmcgdG8gdGhlIHRhcGUuIE90aGVyd2lzZSBpdCB3b3VsZFxuICAgICAgICAvLyBjYXVzZSBhIG1lbSBsZWFrIHNpbmNlIHRoZXJlIHdvdWxkIGJlIG5vIGJhY2twcm9wIGZvciB0aGVzZSB0ZW5zb3JzXG4gICAgICAgIC8vICh3aGljaCB3b3VsZCBvdGhlcndpc2UgZGlzcG9zZSB0aGVtKS5cbiAgICAgICAgaWYgKGlzVGFwZU9uKSB7XG4gICAgICAgICAgY29uc3QgdGVuc29yc1RvU2F2ZSA9XG4gICAgICAgICAgICAgIHRoaXMuZ2V0VGVuc29yc0ZvckdyYWRpZW50KGtlcm5lbE5hbWUsIGlucHV0cywgb3V0VGVuc29ycyk7XG4gICAgICAgICAgc2F2ZWQgPSB0aGlzLnNhdmVUZW5zb3JzRm9yQmFja3dhcmRNb2RlKHRlbnNvcnNUb1NhdmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRUZW5zb3JzO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge2ZvcndhcmRGdW5jfSA9IGtlcm5lbFBhcmFtcztcbiAgICAgIC8vIFJ1bm5pbmcgYSBjdXN0b21HcmFkIG9wLlxuICAgICAgY29uc3Qgc2F2ZUZ1bmM6IEdyYWRTYXZlRnVuYyA9ICh0ZW5zb3JzKSA9PiB7XG4gICAgICAgIC8vIERvIG5vdCBzYXZlIHVubGVzcyB3ZSBhcmUgcmVjb3JkaW5nIHRvIHRoZSB0YXBlLiBPdGhlcndpc2UgaXQgd291bGRcbiAgICAgICAgLy8gY2F1c2UgYSBtZW0gbGVhayBzaW5jZSB3ZSB3b3VsZCBuZXZlciBydW4gYmFja3Byb3AsIHdoaWNoIGRpc3Bvc2VzXG4gICAgICAgIC8vIHRoZSBrZXB0IHRlbnNvcnMuXG4gICAgICAgIGlmICghaXNUYXBlT24pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2F2ZWQgPSB0ZW5zb3JzLm1hcCh0ZW5zb3IgPT4gdGhpcy5rZWVwKHRoaXMuY2xvbmUodGVuc29yKSkpO1xuICAgICAgfTtcblxuICAgICAga2VybmVsRnVuYyA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgbnVtRGF0YUlkc0JlZm9yZSA9IHRoaXMuYmFja2VuZC5udW1EYXRhSWRzKCk7XG4gICAgICAgIG91dCA9IHRoaXMudGlkeSgoKSA9PiBmb3J3YXJkRnVuYyh0aGlzLmJhY2tlbmQsIHNhdmVGdW5jKSk7XG4gICAgICAgIGNvbnN0IG91dHMgPSAoQXJyYXkuaXNBcnJheShvdXQpID8gb3V0IDogW291dF0pIGFzIFRlbnNvcltdO1xuICAgICAgICBpZiAodGhpcy5zaG91bGRDaGVja0Zvck1lbUxlYWtzKCkpIHtcbiAgICAgICAgICAvLyBTY29wZSBuYW1lIGlzIHVzZWQgdG8gcHJpbnQgYSBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSBpZiBuZWVkZWQuXG4gICAgICAgICAgdGhpcy5jaGVja0tlcm5lbEZvck1lbUxlYWsoa2VybmVsT3JTY29wZU5hbWUsIG51bURhdGFJZHNCZWZvcmUsIG91dHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRzO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIFJ1biB0aGUga2VybmVsRnVuYy4gT3B0aW9uYWxseSBwcm9maWxpbmcgaXQuXG4gICAgLy9cbiAgICBjb25zdCB7aW5wdXRzLCBhdHRyc30gPSBrZXJuZWxQYXJhbXM7XG4gICAgY29uc3QgYmFja3dhcmRzRnVuYyA9IGlzUmVnaXN0ZXJlZEtlcm5lbEludm9jYXRpb24oa2VybmVsUGFyYW1zKSA/XG4gICAgICAgIG51bGwgOlxuICAgICAgICBrZXJuZWxQYXJhbXMuYmFja3dhcmRzRnVuYztcblxuICAgIGxldCBrZXJuZWxQcm9maWxlOiBLZXJuZWxQcm9maWxlO1xuICAgIHRoaXMuc2NvcGVkUnVuKFxuICAgICAgICAvLyBTdG9wIHJlY29yZGluZyB0byBhIHRhcGUgd2hlbiBydW5uaW5nIGEga2VybmVsLlxuICAgICAgICAoKSA9PiB0aGlzLnN0YXRlLmtlcm5lbERlcHRoKyssICgpID0+IHRoaXMuc3RhdGUua2VybmVsRGVwdGgtLSwgKCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5FTlYuZ2V0Qm9vbCgnREVCVUcnKSAmJiAhdGhpcy5zdGF0ZS5wcm9maWxpbmcpIHtcbiAgICAgICAgICAgIG91dHB1dHMgPSBrZXJuZWxGdW5jKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtlcm5lbFByb2ZpbGUgPSB0aGlzLnByb2ZpbGVyLnByb2ZpbGVLZXJuZWwoXG4gICAgICAgICAgICAgICAga2VybmVsT3JTY29wZU5hbWUsIGlucHV0cywgKCkgPT4ga2VybmVsRnVuYygpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLkVOVi5nZXRCb29sKCdERUJVRycpKSB7XG4gICAgICAgICAgICAgIHRoaXMucHJvZmlsZXIubG9nS2VybmVsUHJvZmlsZShrZXJuZWxQcm9maWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dHB1dHMgPSBrZXJuZWxQcm9maWxlLm91dHB1dHM7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIGlmIChpc1RhcGVPbikge1xuICAgICAgdGhpcy5hZGRUYXBlTm9kZShcbiAgICAgICAgICBrZXJuZWxPclNjb3BlTmFtZSwgaW5wdXRzLCBvdXRwdXRzLCBiYWNrd2FyZHNGdW5jLCBzYXZlZCwgYXR0cnMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlLnByb2ZpbGluZykge1xuICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlLmtlcm5lbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGtlcm5lbE9yU2NvcGVOYW1lLFxuICAgICAgICBieXRlc0FkZGVkOiB0aGlzLnN0YXRlLm51bUJ5dGVzIC0gc3RhcnRpbmdCeXRlY291bnQsXG4gICAgICAgIHRvdGFsQnl0ZXNTbmFwc2hvdDogdGhpcy5zdGF0ZS5udW1CeXRlcyxcbiAgICAgICAgdGVuc29yc0FkZGVkOiB0aGlzLnN0YXRlLm51bVRlbnNvcnMgLSBzdGFydGluZ051bVRlbnNvcnMsXG4gICAgICAgIHRvdGFsVGVuc29yc1NuYXBzaG90OiB0aGlzLnN0YXRlLm51bVRlbnNvcnMsXG4gICAgICAgIGlucHV0U2hhcGVzOiBPYmplY3Qua2V5cyhpbnB1dHMpLm1hcChcbiAgICAgICAgICAgIGtleSA9PiBpbnB1dHNba2V5XSAhPSBudWxsID8gaW5wdXRzW2tleV0uc2hhcGUgOiBudWxsKSxcbiAgICAgICAgb3V0cHV0U2hhcGVzOiBvdXRwdXRzLm1hcChpdGVtID0+IGl0ZW0uc2hhcGUpLFxuICAgICAgICBrZXJuZWxUaW1lTXM6IGtlcm5lbFByb2ZpbGUudGltZU1zLFxuICAgICAgICBleHRyYUluZm86IGtlcm5lbFByb2ZpbGUuZXh0cmFJbmZvXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIChBcnJheS5pc0FycmF5KG91dCkgPyBvdXRwdXRzIDogb3V0cHV0c1swXSkgYXMgVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyB0ZW5zb3JzIHVzZWQgaW4gZm9yd2FyZCBtb2RlIGZvciB1c2UgaW4gYmFja3dhcmQgbW9kZS5cbiAgICpcbiAgICogQHBhcmFtIHRlbnNvcnMgdGhlIGxpc3Qgb2YgdGVuc29ycyB0byBzYXZlLlxuICAgKi9cbiAgcHJpdmF0ZSBzYXZlVGVuc29yc0ZvckJhY2t3YXJkTW9kZSh0ZW5zb3JzOiBUZW5zb3JbXSk6IFRlbnNvcltdIHtcbiAgICBjb25zdCBzYXZlZCA9IHRlbnNvcnMubWFwKHRlbnNvciA9PiB0aGlzLmtlZXAodGhpcy5jbG9uZSh0ZW5zb3IpKSk7XG4gICAgcmV0dXJuIHNhdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIHRlbnNvcnMgdG8gc2F2ZSBmb3IgYSBnaXZlbiBncmFkaWVudCBjYWxjdWxhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGtlcm5lbE5hbWUgbmFtZSBvZiBrZXJuZWwgdG8gbG9vayB1cCBncmFkaWVudCBmb3IuXG4gICAqIEBwYXJhbSBpbnB1dHMgYSBtYXAgb2YgaW5wdXQgdGVuc29ycy5cbiAgICogQHBhcmFtIG91dHB1dHMgYW4gYXJyYXkgb2Ygb3V0cHV0IHRlbnNvcnMgZnJvbSBmb3J3YXJkIG1vZGUgb2Yga2VybmVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUZW5zb3JzRm9yR3JhZGllbnQoXG4gICAgICBrZXJuZWxOYW1lOiBzdHJpbmcsIGlucHV0czogTmFtZWRUZW5zb3JNYXAsXG4gICAgICBvdXRwdXRzOiBUZW5zb3JbXSk6IFRlbnNvcltdfG51bGwge1xuICAgIGNvbnN0IGdyYWRDb25maWcgPSBnZXRHcmFkaWVudChrZXJuZWxOYW1lKTtcbiAgICBpZiAoZ3JhZENvbmZpZyAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpbnB1dHNUb1NhdmU6IHN0cmluZ1tdID0gZ3JhZENvbmZpZy5pbnB1dHNUb1NhdmUgfHwgW107XG4gICAgICBjb25zdCBvdXRwdXRzVG9TYXZlOiBib29sZWFuW10gPSBncmFkQ29uZmlnLm91dHB1dHNUb1NhdmUgfHwgW107XG5cbiAgICAgIC8vIElmIHNhdmVBbGxJbnB1dHMgaXMgdHJ1ZSwgYWxsIGlucHV0cyB3aWxsIGJlIHNhdmVkLiBPdGhlcndpc2UsIGlucHV0c1xuICAgICAgLy8gc3BlY2lmaWVkIGluIGlucHV0c1RvU2F2ZSB3aWxsIGJlIHNhdmVkLlxuICAgICAgbGV0IGlucHV0VGVuc29yc1RvU2F2ZTogVGVuc29yW107XG4gICAgICBpZiAoZ3JhZENvbmZpZy5zYXZlQWxsSW5wdXRzKSB7XG4gICAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShpbnB1dHMpLFxuICAgICAgICAgICAgKCkgPT4gJ3NhdmVBbGxJbnB1dHMgaXMgdHJ1ZSwgZXhwZWN0ZWQgaW5wdXRzIHRvIGJlIGFuIGFycmF5LicpO1xuXG4gICAgICAgIGlucHV0VGVuc29yc1RvU2F2ZSA9IE9iamVjdC5rZXlzKGlucHV0cykubWFwKChrZXkpID0+IGlucHV0c1trZXldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlucHV0VGVuc29yc1RvU2F2ZSA9IGlucHV0c1RvU2F2ZS5tYXAoKGlucHV0TmFtZSkgPT4gaW5wdXRzW2lucHV0TmFtZV0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvdXRwdXRUZW5zb3JzVG9TYXZlOiBUZW5zb3JbXSA9XG4gICAgICAgICAgb3V0cHV0cy5maWx0ZXIoKF8sIGkpID0+IG91dHB1dHNUb1NhdmVbaV0pO1xuXG4gICAgICByZXR1cm4gaW5wdXRUZW5zb3JzVG9TYXZlLmNvbmNhdChvdXRwdXRUZW5zb3JzVG9TYXZlKTtcbiAgICB9XG4gICAgLy8gV2UgcmV0dXJuIGFuIGVtcHR5IGxpc3QgcmF0aGVyIHRoYW4gdGhyb3cgYW4gZXJyb3IgYmVjYXVzZSB0aGUga2VybmVsIHdlXG4gICAgLy8gYXJlIGxvb2tpbmcgdXAgbWF5IG5vdCBhY3R1YWxseSBiZSByZWxldmFudCB0byBiYWNrcHJvcGluZyB0aHJvdWdoIHRoZVxuICAgIC8vIG92ZXJhbGwgZnVuY3Rpb25cbiAgICAvL1xuICAgIC8vIFNlZSAnZG9lcyBub3QgZXJyb3IgaWYgaXJyZWxldmFudCAocHJ1bmVkKSBvcHMgYXJlIG1pc3NpbmcgZ3JhZHMnIHRlc3RcbiAgICAvLyBpbiBncmFkaWVudHNfdGVzdC50cyBmb3IgYW4gZXhhbXBsZS5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHVzZWQgYnkgcHVibGljIEFQSXMgZm9yIHRlbnNvciBjcmVhdGlvbi4gTWFrZXMgYSBuZXdcbiAgICogdGVuc29yIHdpdGggdGhlIHByb3ZpZGVkIHNoYXBlLCBkdHlwZSBhbmQgdmFsdWVzLiBJdCBhbHdheXNcbiAgICogY3JlYXRlcyBhIG5ldyBkYXRhIGlkIGFuZCB3cml0ZXMgdGhlIHZhbHVlcyB0byB0aGUgdW5kZXJseWluZyBiYWNrZW5kLlxuICAgKi9cbiAgbWFrZVRlbnNvcihcbiAgICAgIHZhbHVlczogRGF0YVZhbHVlcywgc2hhcGU6IG51bWJlcltdLCBkdHlwZTogRGF0YVR5cGUsXG4gICAgICBiYWNrZW5kPzogS2VybmVsQmFja2VuZCk6IFRlbnNvciB7XG4gICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlcyBwYXNzZWQgdG8gZW5naW5lLm1ha2VUZW5zb3IoKSBhcmUgbnVsbCcpO1xuICAgIH1cbiAgICBkdHlwZSA9IGR0eXBlIHx8ICdmbG9hdDMyJztcbiAgICBiYWNrZW5kID0gYmFja2VuZCB8fCB0aGlzLmJhY2tlbmQ7XG4gICAgbGV0IGJhY2tlbmRWYWxzID0gdmFsdWVzIGFzIEJhY2tlbmRWYWx1ZXM7XG4gICAgaWYgKGR0eXBlID09PSAnc3RyaW5nJyAmJiB1dGlsLmlzU3RyaW5nKHZhbHVlc1swXSkpIHtcbiAgICAgIGJhY2tlbmRWYWxzID0gKHZhbHVlcyBhcyBzdHJpbmdbXSkubWFwKGQgPT4gdXRpbC5lbmNvZGVTdHJpbmcoZCkpO1xuICAgIH1cbiAgICBjb25zdCBkYXRhSWQgPSBiYWNrZW5kLndyaXRlKGJhY2tlbmRWYWxzLCBzaGFwZSwgZHR5cGUpO1xuICAgIGNvbnN0IHQgPSBuZXcgVGVuc29yKHNoYXBlLCBkdHlwZSwgZGF0YUlkLCB0aGlzLm5leHRUZW5zb3JJZCgpKTtcbiAgICB0aGlzLnRyYWNrVGVuc29yKHQsIGJhY2tlbmQpO1xuXG4gICAgLy8gQ291bnQgYnl0ZXMgZm9yIHN0cmluZyB0ZW5zb3JzLlxuICAgIGlmIChkdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGRhdGFJZCk7XG4gICAgICBjb25zdCBuZXdCeXRlcyA9IGJ5dGVzRnJvbVN0cmluZ0FycmF5KGJhY2tlbmRWYWxzIGFzIFVpbnQ4QXJyYXlbXSk7XG4gICAgICB0aGlzLnN0YXRlLm51bUJ5dGVzICs9IG5ld0J5dGVzIC0gaW5mby5ieXRlcztcbiAgICAgIGluZm8uYnl0ZXMgPSBuZXdCeXRlcztcbiAgICB9XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHVzZWQgYnkgYmFja2VuZHMuIE1ha2VzIGEgbmV3IHRlbnNvclxuICAgKiB0aGF0IGlzIGEgd3JhcHBlciBhcm91bmQgYW4gZXhpc3RpbmcgZGF0YSBpZC4gSXQgZG9lc24ndCBjcmVhdGVcbiAgICogYSBuZXcgZGF0YSBpZCwgb25seSBpbmNyZW1lbnRzIHRoZSByZWYgY291bnQgdXNlZCBpbiBtZW1vcnkgdHJhY2tpbmcuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBtYWtlVGVuc29yRnJvbURhdGFJZChcbiAgICBkYXRhSWQ6IERhdGFJZCwgc2hhcGU6IG51bWJlcltdLCBkdHlwZTogRGF0YVR5cGUsXG4gICAgYmFja2VuZD86IEtlcm5lbEJhY2tlbmQpOiBUZW5zb3Ige1xuICAgIGR0eXBlID0gZHR5cGUgfHwgJ2Zsb2F0MzInO1xuICAgIGNvbnN0IHRlbnNvckluZm86IFRlbnNvckluZm8gPSB7ZGF0YUlkLCBzaGFwZSwgZHR5cGV9O1xuICAgIHJldHVybiB0aGlzLm1ha2VUZW5zb3JGcm9tVGVuc29ySW5mbyh0ZW5zb3JJbmZvLCBiYWNrZW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdXNlZCBieSBiYWNrZW5kcy4gTWFrZXMgYSBuZXcgdGVuc29yIHRoYXQgaXMgYSB3cmFwcGVyXG4gICAqIGFyb3VuZCBhbiBleGlzdGluZyBkYXRhIGlkIGluIFRlbnNvckluZm8uIEl0IGRvZXNuJ3QgY3JlYXRlIGEgbmV3IGRhdGEgaWQsXG4gICAqIG9ubHkgaW5jcmVtZW50cyB0aGUgcmVmIGNvdW50IHVzZWQgaW4gbWVtb3J5IHRyYWNraW5nLlxuICAgKi9cbiAgbWFrZVRlbnNvckZyb21UZW5zb3JJbmZvKHRlbnNvckluZm86IFRlbnNvckluZm8sIGJhY2tlbmQ/OiBLZXJuZWxCYWNrZW5kKTpcbiAgICAgIFRlbnNvciB7XG4gICAgY29uc3Qge2RhdGFJZCwgc2hhcGUsIGR0eXBlfSA9IHRlbnNvckluZm87XG4gICAgY29uc3QgdCA9IG5ldyBUZW5zb3Ioc2hhcGUsIGR0eXBlLCBkYXRhSWQsIHRoaXMubmV4dFRlbnNvcklkKCkpO1xuICAgIHRoaXMudHJhY2tUZW5zb3IodCwgYmFja2VuZCk7XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICBtYWtlVmFyaWFibGUoXG4gICAgICBpbml0aWFsVmFsdWU6IFRlbnNvciwgdHJhaW5hYmxlID0gdHJ1ZSwgbmFtZT86IHN0cmluZyxcbiAgICAgIGR0eXBlPzogRGF0YVR5cGUpOiBWYXJpYWJsZSB7XG4gICAgbmFtZSA9IG5hbWUgfHwgdGhpcy5uZXh0VmFyaWFibGVJZCgpLnRvU3RyaW5nKCk7XG4gICAgaWYgKGR0eXBlICE9IG51bGwgJiYgZHR5cGUgIT09IGluaXRpYWxWYWx1ZS5kdHlwZSkge1xuICAgICAgaW5pdGlhbFZhbHVlID0gaW5pdGlhbFZhbHVlLmNhc3QoZHR5cGUpO1xuICAgIH1cbiAgICBjb25zdCB2ID0gbmV3IFZhcmlhYmxlKGluaXRpYWxWYWx1ZSwgdHJhaW5hYmxlLCBuYW1lLCB0aGlzLm5leHRUZW5zb3JJZCgpKTtcbiAgICBpZiAodGhpcy5zdGF0ZS5yZWdpc3RlcmVkVmFyaWFibGVzW3YubmFtZV0gIT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYXJpYWJsZSB3aXRoIG5hbWUgJHt2Lm5hbWV9IHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5yZWdpc3RlcmVkVmFyaWFibGVzW3YubmFtZV0gPSB2O1xuICAgIHRoaXMuaW5jUmVmKHYsIHRoaXMuYmFja2VuZCk7XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICB0cmFja1RlbnNvcihhOiBUZW5zb3IsIGJhY2tlbmQ6IEtlcm5lbEJhY2tlbmQpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLm51bVRlbnNvcnMrKztcbiAgICBpZiAoYS5kdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc3RhdGUubnVtU3RyaW5nVGVuc29ycysrO1xuICAgIH1cbiAgICAvLyBCeXRlcyBmb3IgY29tcGxleCBudW1iZXJzIGFyZSBjb3VudGVkIGJ5IHRoZWlyIGNvbXBvbmVudHMuIEJ5dGVzIGZvclxuICAgIC8vIHN0cmluZyB0ZW5zb3JzIGFyZSBjb3VudGVkIHdoZW4gd3JpdGluZyB2YWx1ZXMuXG4gICAgbGV0IGJ5dGVzID0gMDtcbiAgICBpZiAoYS5kdHlwZSAhPT0gJ2NvbXBsZXg2NCcgJiYgYS5kdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGJ5dGVzID0gYS5zaXplICogdXRpbC5ieXRlc1BlckVsZW1lbnQoYS5kdHlwZSk7XG4gICAgfVxuICAgIHRoaXMuc3RhdGUubnVtQnl0ZXMgKz0gYnl0ZXM7XG5cbiAgICBpZiAoIXRoaXMuc3RhdGUudGVuc29ySW5mby5oYXMoYS5kYXRhSWQpKSB7XG4gICAgICB0aGlzLnN0YXRlLm51bURhdGFCdWZmZXJzKys7XG4gICAgICB0aGlzLnN0YXRlLnRlbnNvckluZm8uc2V0KGEuZGF0YUlkLCB7XG4gICAgICAgIGJhY2tlbmQ6IGJhY2tlbmQgfHwgdGhpcy5iYWNrZW5kLFxuICAgICAgICBkdHlwZTogYS5kdHlwZSxcbiAgICAgICAgc2hhcGU6IGEuc2hhcGUsXG4gICAgICAgIGJ5dGVzXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIShhIGluc3RhbmNlb2YgVmFyaWFibGUpKSB7XG4gICAgICB0aGlzLnRyYWNrKGEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRyYWNrIHRoZSB0ZW5zb3IgYnkgZGF0YUlkIGFuZCBpbmNyZWFzZSB0aGUgcmVmQ291bnQgZm9yIHRoZSBkYXRhSWQgaW4gdGhlXG4gIC8vIGJhY2tlbmQuXG4gIC8vIFRPRE8ocHl1MTAwNTUpOiBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGJ5IG1ha2VWYXJpYWJsZSBtZXRob2QsIHRvIGluY3JlYXNlXG4gIC8vIHJlZkNvdW50IG9uIHRoZSBiYWNrZW5kIGZvciB0aGUgZGF0YUlkLiBJdCBjYW4gcG90ZW50aWFsbHkgYmUgcmVwbGFjZWQgd2l0aFxuICAvLyBJZGVudGl0eSBvcCBpbmRlYWQgb2YgY2FsbGluZyBiYWNrZW5kIGRpcmVjdGx5LlxuICBpbmNSZWYoYTogVGVuc29yLCBiYWNrZW5kOiBLZXJuZWxCYWNrZW5kKTogdm9pZCB7XG4gICAgdGhpcy50cmFja1RlbnNvcihhLCBiYWNrZW5kKTtcbiAgICB0aGlzLmJhY2tlbmQuaW5jUmVmKGEuZGF0YUlkKTtcbiAgfVxuXG4gIHJlbW92ZURhdGFJZChkYXRhSWQ6IERhdGFJZCwgYmFja2VuZDogS2VybmVsQmFja2VuZCkge1xuICAgIGlmICh0aGlzLnN0YXRlLnRlbnNvckluZm8uaGFzKGRhdGFJZCkgJiZcbiAgICAgICAgdGhpcy5zdGF0ZS50ZW5zb3JJbmZvLmdldChkYXRhSWQpLmJhY2tlbmQgPT09IGJhY2tlbmQpIHtcbiAgICAgIHRoaXMuc3RhdGUudGVuc29ySW5mby5kZWxldGUoZGF0YUlkKTtcbiAgICAgIHRoaXMuc3RhdGUubnVtRGF0YUJ1ZmZlcnMtLTtcbiAgICB9XG4gIH1cbiAgZGlzcG9zZVRlbnNvcihhOiBUZW5zb3IpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUudGVuc29ySW5mby5oYXMoYS5kYXRhSWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGEuZGF0YUlkKTtcblxuICAgIHRoaXMuc3RhdGUubnVtVGVuc29ycy0tO1xuICAgIGlmIChhLmR0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zdGF0ZS5udW1TdHJpbmdUZW5zb3JzLS07XG4gICAgICB0aGlzLnN0YXRlLm51bUJ5dGVzIC09IGluZm8uYnl0ZXM7XG4gICAgfVxuICAgIC8vIERvbid0IGNvdW50IGJ5dGVzIGZvciBjb21wbGV4IG51bWJlcnMgYXMgdGhleSBhcmUgY291bnRlZCBieSB0aGVpclxuICAgIC8vIGNvbXBvbmVudHMuXG4gICAgaWYgKGEuZHR5cGUgIT09ICdjb21wbGV4NjQnICYmIGEuZHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBieXRlcyA9IGEuc2l6ZSAqIHV0aWwuYnl0ZXNQZXJFbGVtZW50KGEuZHR5cGUpO1xuICAgICAgdGhpcy5zdGF0ZS5udW1CeXRlcyAtPSBieXRlcztcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgdGhlIHJlZmVyZW5jZSB0byBkYXRhSWQgaWYgYmFja2VuZCBkaXNwb3NlIHRoZSBkYXRhIHN1Y2Nlc3NmdWxseVxuICAgIGlmIChpbmZvLmJhY2tlbmQuZGlzcG9zZURhdGEoYS5kYXRhSWQpKSB7XG4gICAgICB0aGlzLnJlbW92ZURhdGFJZChhLmRhdGFJZCwgaW5mby5iYWNrZW5kKTtcbiAgICB9XG5cbiAgICAvLyBUT0RPKG5zdGhvcmF0KTogQ29uc3RydWN0IGFuIGVycm9yIGFuZCBzYXZlIHRoZSBzdGFjayB0cmFjZSBmb3JcbiAgICAvLyBkZWJ1Z2dpbmcgd2hlbiBpbiBkZWJ1ZyBtb2RlLiBDcmVhdGluZyBhIHN0YWNrIHRyYWNlIGlzIHRvbyBleHBlbnNpdmVcbiAgICAvLyB0byBkbyB1bmNvbmRpdGlvbmFsbHkuXG4gIH1cblxuICBkaXNwb3NlVmFyaWFibGVzKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgdmFyTmFtZSBpbiB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXMpIHtcbiAgICAgIGNvbnN0IHYgPSB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXNbdmFyTmFtZV07XG4gICAgICB0aGlzLmRpc3Bvc2VWYXJpYWJsZSh2KTtcbiAgICB9XG4gIH1cblxuICBkaXNwb3NlVmFyaWFibGUodjogVmFyaWFibGUpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2VUZW5zb3Iodik7XG4gICAgaWYgKHRoaXMuc3RhdGUucmVnaXN0ZXJlZFZhcmlhYmxlc1t2Lm5hbWVdICE9IG51bGwpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXNbdi5uYW1lXTtcbiAgICB9XG4gIH1cblxuICBtZW1vcnkoKTogTWVtb3J5SW5mbyB7XG4gICAgY29uc3QgaW5mbyA9IHRoaXMuYmFja2VuZC5tZW1vcnkoKSBhcyBNZW1vcnlJbmZvO1xuICAgIGluZm8ubnVtVGVuc29ycyA9IHRoaXMuc3RhdGUubnVtVGVuc29ycztcbiAgICBpbmZvLm51bURhdGFCdWZmZXJzID0gdGhpcy5zdGF0ZS5udW1EYXRhQnVmZmVycztcbiAgICBpbmZvLm51bUJ5dGVzID0gdGhpcy5zdGF0ZS5udW1CeXRlcztcbiAgICBpZiAodGhpcy5zdGF0ZS5udW1TdHJpbmdUZW5zb3JzID4gMCkge1xuICAgICAgaW5mby51bnJlbGlhYmxlID0gdHJ1ZTtcbiAgICAgIGlmIChpbmZvLnJlYXNvbnMgPT0gbnVsbCkge1xuICAgICAgICBpbmZvLnJlYXNvbnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGluZm8ucmVhc29ucy5wdXNoKFxuICAgICAgICAgICdNZW1vcnkgdXNhZ2UgYnkgc3RyaW5nIHRlbnNvcnMgaXMgYXBwcm94aW1hdGUgJyArXG4gICAgICAgICAgJygyIGJ5dGVzIHBlciBjaGFyYWN0ZXIpJyk7XG4gICAgfVxuICAgIHJldHVybiBpbmZvO1xuICB9XG5cbiAgYXN5bmMgcHJvZmlsZShxdWVyeTogKCkgPT4gKFRlbnNvckNvbnRhaW5lciB8IFByb21pc2U8VGVuc29yQ29udGFpbmVyPikpOlxuICAgICAgUHJvbWlzZTxQcm9maWxlSW5mbz4ge1xuICAgIHRoaXMuc3RhdGUucHJvZmlsaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IHN0YXJ0Qnl0ZXMgPSB0aGlzLnN0YXRlLm51bUJ5dGVzO1xuICAgIGNvbnN0IHN0YXJ0TnVtVGVuc29ycyA9IHRoaXMuc3RhdGUubnVtVGVuc29ycztcblxuICAgIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5rZXJuZWxzID0gW107XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlLnJlc3VsdCA9IGF3YWl0IHF1ZXJ5KCk7XG5cbiAgICB0aGlzLnN0YXRlLnByb2ZpbGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlLnBlYWtCeXRlcyA9IE1hdGgubWF4KFxuICAgICAgICAuLi50aGlzLnN0YXRlLmFjdGl2ZVByb2ZpbGUua2VybmVscy5tYXAoZCA9PiBkLnRvdGFsQnl0ZXNTbmFwc2hvdCkpO1xuICAgIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5uZXdCeXRlcyA9IHRoaXMuc3RhdGUubnVtQnl0ZXMgLSBzdGFydEJ5dGVzO1xuICAgIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5uZXdUZW5zb3JzID1cbiAgICAgICAgdGhpcy5zdGF0ZS5udW1UZW5zb3JzIC0gc3RhcnROdW1UZW5zb3JzO1xuICAgIGZvciAoY29uc3Qga2VybmVsIG9mIHRoaXMuc3RhdGUuYWN0aXZlUHJvZmlsZS5rZXJuZWxzKSB7XG4gICAgICBrZXJuZWwua2VybmVsVGltZU1zID0gYXdhaXQga2VybmVsLmtlcm5lbFRpbWVNcztcbiAgICAgIGtlcm5lbC5leHRyYUluZm8gPSBhd2FpdCBrZXJuZWwuZXh0cmFJbmZvO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5hY3RpdmVQcm9maWxlO1xuICB9XG5cbiAgaXNUYXBlT24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZ3JhZGllbnREZXB0aCA+IDAgJiYgdGhpcy5zdGF0ZS5rZXJuZWxEZXB0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVGFwZU5vZGUoXG4gICAgICBrZXJuZWxOYW1lOiBzdHJpbmcsIGlucHV0czogTmFtZWRUZW5zb3JNYXAsIG91dHB1dHM6IFRlbnNvcltdLFxuICAgICAgZ3JhZGllbnRzRnVuYzogR3JhZEZ1bmMsIHNhdmVkOiBUZW5zb3JbXSwgYXR0cnM6IE5hbWVkQXR0ck1hcCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcGVOb2RlOiBUYXBlTm9kZSA9XG4gICAgICAgIHtpZDogdGhpcy5zdGF0ZS5uZXh0VGFwZU5vZGVJZCsrLCBrZXJuZWxOYW1lLCBpbnB1dHMsIG91dHB1dHMsIHNhdmVkfTtcblxuICAgIGNvbnN0IGdyYWRDb25maWcgPSBnZXRHcmFkaWVudChrZXJuZWxOYW1lKTtcbiAgICBpZiAoZ3JhZENvbmZpZyAhPSBudWxsKSB7XG4gICAgICBncmFkaWVudHNGdW5jID0gZ3JhZENvbmZpZy5ncmFkRnVuYztcbiAgICB9XG4gICAgaWYgKGdyYWRpZW50c0Z1bmMgIT0gbnVsbCkge1xuICAgICAgdGFwZU5vZGUuZ3JhZGllbnQgPSAoZHlzOiBUZW5zb3JbXSkgPT4ge1xuICAgICAgICAvLyBUT0RPKHNtaWxrb3YpOiBUbyBvcHRpbWl6ZSBiYWNrLXByb3AsIHBhc3MgZHlzIHRoYXQgYXJlIG5vdCB1c2VkIGluXG4gICAgICAgIC8vIHRoZSBiYWNrcHJvcCBncmFwaCB0byB0aGUgdXNlciBhcyBudWxsIGluc3RlYWQgb2YgemVyb3NcbiAgICAgICAgZHlzID0gZHlzLm1hcCgoZHksIGkpID0+IHtcbiAgICAgICAgICBpZiAoZHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHMgPSB1dGlsLm1ha2VaZXJvc1R5cGVkQXJyYXkob3V0cHV0LnNpemUsIG91dHB1dC5kdHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlVGVuc29yKHZhbHMsIG91dHB1dC5zaGFwZSwgb3V0cHV0LmR0eXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGR5O1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gR3JhZCBmdW5jdGlvbnMgb2Ygb3BzIHdpdGggc2luZ2xlIG91dHB1dHMgZXhwZWN0IGEgZHksIHdoaWxlIG9wc1xuICAgICAgICAvLyB3aXRoIG11bHRpcGxlIG91dHB1dHMgZXhwZWN0IGR5cyAoYXJyYXkgb2YgZHkpLlxuICAgICAgICByZXR1cm4gZ3JhZGllbnRzRnVuYyhkeXMubGVuZ3RoID4gMSA/IGR5cyA6IGR5c1swXSwgc2F2ZWQsIGF0dHJzKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuYWN0aXZlVGFwZS5wdXNoKHRhcGVOb2RlKTtcbiAgfVxuXG4gIGtlZXA8VCBleHRlbmRzIFRlbnNvcj4ocmVzdWx0OiBUKTogVCB7XG4gICAgcmVzdWx0LmtlcHQgPSB0cnVlO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0VGFwZSgpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoID09PSAwKSB7XG4gICAgICB0aGlzLnN0YXRlLmFjdGl2ZVRhcGUgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoKys7XG4gIH1cblxuICBwcml2YXRlIGVuZFRhcGUoKSB7XG4gICAgdGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoLS07XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgYSBzY29wZS4gVXNlIHRoaXMgd2l0aCBlbmRTY29wZSgpIHRvIGFjaGlldmUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eVxuICAgKiBhcyBzY29wZSgpIHdpdGhvdXQgdGhlIG5lZWQgZm9yIGEgZnVuY3Rpb24gY2xvc3VyZS5cbiAgICovXG4gIHN0YXJ0U2NvcGUobmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHNjb3BlSW5mbzogU2NvcGVTdGF0ZSA9IHtcbiAgICAgIHRyYWNrOiBbXSxcbiAgICAgIG5hbWU6ICd1bm5hbWVkIHNjb3BlJyxcbiAgICAgIGlkOiB0aGlzLnN0YXRlLm5leHRTY29wZUlkKytcbiAgICB9O1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBzY29wZUluZm8ubmFtZSA9IG5hbWU7XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuc2NvcGVTdGFjay5wdXNoKHNjb3BlSW5mbyk7XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZSA9IHNjb3BlSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmQgYSBzY29wZS4gVXNlIHRoaXMgd2l0aCBzdGFydFNjb3BlKCkgdG8gYWNoaWV2ZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5XG4gICAqIGFzIHNjb3BlKCkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYSBmdW5jdGlvbiBjbG9zdXJlLlxuICAgKi9cbiAgZW5kU2NvcGUocmVzdWx0PzogVGVuc29yQ29udGFpbmVyKSB7XG4gICAgY29uc3QgdGVuc29yc1RvVHJhY2tJblBhcmVudCA9IGdldFRlbnNvcnNJbkNvbnRhaW5lcihyZXN1bHQpO1xuICAgIGNvbnN0IHRlbnNvcnNUb1RyYWNrSW5QYXJlbnRTZXQgPVxuICAgICAgICBuZXcgU2V0KHRlbnNvcnNUb1RyYWNrSW5QYXJlbnQubWFwKHQgPT4gdC5pZCkpO1xuXG4gICAgLy8gRGlzcG9zZSB0aGUgYXJyYXlzIHRyYWNrZWQgaW4gdGhpcyBzY29wZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RhdGUuYWN0aXZlU2NvcGUudHJhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRlbnNvciA9IHRoaXMuc3RhdGUuYWN0aXZlU2NvcGUudHJhY2tbaV07XG4gICAgICBpZiAoIXRlbnNvci5rZXB0ICYmICF0ZW5zb3JzVG9UcmFja0luUGFyZW50U2V0Lmhhcyh0ZW5zb3IuaWQpKSB7XG4gICAgICAgIHRlbnNvci5kaXNwb3NlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkU2NvcGUgPSB0aGlzLnN0YXRlLnNjb3BlU3RhY2sucG9wKCk7XG4gICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZSA9IHRoaXMuc3RhdGUuc2NvcGVTdGFjay5sZW5ndGggPT09IDAgP1xuICAgICAgICBudWxsIDpcbiAgICAgICAgdGhpcy5zdGF0ZS5zY29wZVN0YWNrW3RoaXMuc3RhdGUuc2NvcGVTdGFjay5sZW5ndGggLSAxXTtcblxuICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50IHJlc3VsdCBpbiB0aGUgcGFyZW50IHNjb3BlLlxuICAgIHRlbnNvcnNUb1RyYWNrSW5QYXJlbnQuZm9yRWFjaCh0ZW5zb3IgPT4ge1xuICAgICAgLy8gT25seSB0cmFjayB0aGUgdGVuc29yIGlmIHdhcyBhbGxvY2F0ZWQgaW4gdGhlIGlubmVyIHNjb3BlIGFuZCBpcyBub3RcbiAgICAgIC8vIGdsb2JhbGx5IGtlcHQuXG4gICAgICBpZiAoIXRlbnNvci5rZXB0ICYmIHRlbnNvci5zY29wZUlkID09PSBvbGRTY29wZS5pZCkge1xuICAgICAgICB0aGlzLnRyYWNrKHRlbnNvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBncmFkaWVudHMgb2YgYGZgIHdpdGggcmVzcGVjdCB0byBlYWNoIG9mIHRoZSBgeHNgLiBUaGUgZ3JhZGllbnRzXG4gICAqIHJldHVybmVkIGFyZSBvZiB0aGUgc2FtZSBsZW5ndGggYXMgYHhzYCwgYnV0IHNvbWUgbWlnaHQgYmUgbnVsbCBpZiBgZmBcbiAgICogd2FzIG5vdCBhIGZ1bmN0aW9uIG9mIHRoYXQgYHhgLiBJdCBhbHNvIHRha2VzIG9wdGlvbmFsIGR5IHRvIG11bHRpcGx5IHRoZVxuICAgKiBncmFkaWVudCwgd2hpY2ggZGVmYXVsdHMgdG8gYDFgLlxuICAgKi9cbiAgZ3JhZGllbnRzPFQgZXh0ZW5kcyBUZW5zb3I+KFxuICAgICAgZjogKCkgPT4gVCwgeHM6IFRlbnNvcltdLCBkeT86IFQsXG4gICAgICBhbGxvd05vR3JhZGllbnRzID0gZmFsc2UpOiB7dmFsdWU6IFQsIGdyYWRzOiBUZW5zb3JbXX0ge1xuICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICB4cy5sZW5ndGggPiAwLCAoKSA9PiAnZ3JhZGllbnRzKCkgcmVjZWl2ZWQgYW4gZW1wdHkgbGlzdCBvZiB4cy4nKTtcbiAgICBpZiAoZHkgIT0gbnVsbCAmJiBkeS5kdHlwZSAhPT0gJ2Zsb2F0MzInKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGR5IG11c3QgaGF2ZSAnZmxvYXQzMicgZHR5cGUsIGJ1dCBoYXMgJyR7ZHkuZHR5cGV9J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IHkgPSB0aGlzLnNjb3BlZFJ1bihcbiAgICAgICAgKCkgPT4gdGhpcy5zdGFydFRhcGUoKSwgKCkgPT4gdGhpcy5lbmRUYXBlKCksXG4gICAgICAgICgpID0+IHRoaXMudGlkeSgnZm9yd2FyZCcsIGYpKTtcblxuICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICB5IGluc3RhbmNlb2YgVGVuc29yLFxuICAgICAgICAoKSA9PiAnVGhlIHJlc3VsdCB5IHJldHVybmVkIGJ5IGYoKSBtdXN0IGJlIGEgdGVuc29yLicpO1xuICAgIC8vIEZpbHRlciBvdXQgdGhlIG5vZGVzIHRoYXQgZG9uJ3QgY29ubmVjdCB4ID0+IHkuXG4gICAgY29uc3QgZmlsdGVyZWRUYXBlID0gZ2V0RmlsdGVyZWROb2Rlc1hUb1kodGhpcy5zdGF0ZS5hY3RpdmVUYXBlLCB4cywgeSk7XG4gICAgaWYgKCFhbGxvd05vR3JhZGllbnRzICYmIGZpbHRlcmVkVGFwZS5sZW5ndGggPT09IDAgJiYgeHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdDYW5ub3QgY29tcHV0ZSBncmFkaWVudCBvZiB5PWYoeCkgd2l0aCByZXNwZWN0IHRvIHguIE1ha2Ugc3VyZSAnICtcbiAgICAgICAgICAndGhhdCB0aGUgZiB5b3UgcGFzc2VkIGVuY2xvc2VzIGFsbCBvcGVyYXRpb25zIHRoYXQgbGVhZCBmcm9tIHggJyArXG4gICAgICAgICAgJ3RvIHkuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudGlkeSgnYmFja3dhcmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhY2N1bXVsYXRlZEdyYWRpZW50TWFwOiB7W3RlbnNvcklkOiBudW1iZXJdOiBUZW5zb3J9ID0ge307XG4gICAgICBhY2N1bXVsYXRlZEdyYWRpZW50TWFwW3kuaWRdID0gKGR5ID09IG51bGwpID8gb25lcyh5LnNoYXBlKSA6IGR5O1xuXG4gICAgICAvLyBCYWNrcHJvcCBncmFkaWVudHMgdGhyb3VnaCB0aGUgZmlsdGVyZWQgbm9kZXMuXG4gICAgICBiYWNrcHJvcGFnYXRlR3JhZGllbnRzKFxuICAgICAgICAgIGFjY3VtdWxhdGVkR3JhZGllbnRNYXAsIGZpbHRlcmVkVGFwZSxcbiAgICAgICAgICAvLyBQYXNzIHRoZSB0aWR5IGZ1bmN0aW9uIHRvIGF2b2lkIGNpcmN1bGFyIGRlcCB3aXRoIGB0YXBlLnRzYC5cbiAgICAgICAgICBmID0+IHRoaXMudGlkeShmIGFzIFNjb3BlRm48VGVuc29yPiksXG4gICAgICAgICAgLy8gUGFzcyBhbiBhZGQgZnVuY3Rpb24gdG8gYXZvaWRlIGEgY2lyY3VsYXIgZGVwIHdpdGggYHRhcGUudHNgLlxuICAgICAgICAgIGFkZCk7XG4gICAgICBjb25zdCBncmFkcyA9IHhzLm1hcCh4ID0+IGFjY3VtdWxhdGVkR3JhZGllbnRNYXBbeC5pZF0pO1xuXG4gICAgICBpZiAodGhpcy5zdGF0ZS5ncmFkaWVudERlcHRoID09PSAwKSB7XG4gICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBhcmUgbm90IGNvbXB1dGluZyBoaWdoZXItb3JkZXIgZ3JhZGllbnRzXG4gICAgICAgIC8vIGFuZCBjYW4gY2xlYW4gdXAgdGhlIHRhcGUuXG4gICAgICAgIHRoaXMuc3RhdGUuYWN0aXZlVGFwZS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgdGVuc29yIG9mIG5vZGUuc2F2ZWQpIHtcbiAgICAgICAgICAgIHRlbnNvci5kaXNwb3NlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVUYXBlID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7dmFsdWU6IHksIGdyYWRzfTtcbiAgICB9KTtcbiAgfVxuXG4gIGN1c3RvbUdyYWQ8VCBleHRlbmRzIFRlbnNvcj4oZjogQ3VzdG9tR3JhZGllbnRGdW5jPFQ+KTpcbiAgICAgICguLi5hcmdzOiBBcnJheTxUZW5zb3J8R3JhZFNhdmVGdW5jPikgPT4gVCB7XG4gICAgdXRpbC5hc3NlcnQoXG4gICAgICAgIHV0aWwuaXNGdW5jdGlvbihmKSxcbiAgICAgICAgKCkgPT4gJ1RoZSBmIHBhc3NlZCBpbiBjdXN0b21HcmFkKGYpIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbiAgICByZXR1cm4gKC4uLmlucHV0czogVGVuc29yW10pOiBUID0+IHtcbiAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgIGlucHV0cy5ldmVyeSh0ID0+IHQgaW5zdGFuY2VvZiBUZW5zb3IpLFxuICAgICAgICAgICgpID0+ICdUaGUgYXJncyBwYXNzZWQgaW4gY3VzdG9tR3JhZChmKSh4MSwgeDIsLi4uKSBtdXN0IGFsbCBiZSAnICtcbiAgICAgICAgICAgICAgJ3RlbnNvcnMnKTtcblxuICAgICAgbGV0IHJlczoge1xuICAgICAgICB2YWx1ZTogVCxcbiAgICAgICAgZ3JhZEZ1bmM6IChkeTogVCwgc2F2ZWQ6IFRlbnNvcltdKSA9PiBUZW5zb3IgfCBUZW5zb3JbXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBpbnB1dE1hcDogTmFtZWRUZW5zb3JNYXAgPSB7fTtcbiAgICAgIGlucHV0cy5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBpbnB1dE1hcFtpXSA9IGlucHV0O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGZvcndhcmRGdW5jOiBGb3J3YXJkRnVuYzxUPiA9IChfLCBzYXZlKSA9PiB7XG4gICAgICAgIHJlcyA9IGYoLi4uWy4uLmlucHV0cywgc2F2ZV0pO1xuICAgICAgICB1dGlsLmFzc2VydChcbiAgICAgICAgICAgIHJlcy52YWx1ZSBpbnN0YW5jZW9mIFRlbnNvcixcbiAgICAgICAgICAgICgpID0+ICdUaGUgZnVuY3Rpb24gZiBwYXNzZWQgaW4gY3VzdG9tR3JhZChmKSBtdXN0IHJldHVybiBhbiAnICtcbiAgICAgICAgICAgICAgICAnb2JqZWN0IHdoZXJlIGBvYmoudmFsdWVgIGlzIGEgdGVuc29yJyk7XG4gICAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgICAgdXRpbC5pc0Z1bmN0aW9uKHJlcy5ncmFkRnVuYyksXG4gICAgICAgICAgICAoKSA9PiAnVGhlIGZ1bmN0aW9uIGYgcGFzc2VkIGluIGN1c3RvbUdyYWQoZikgbXVzdCByZXR1cm4gYW4gJyArXG4gICAgICAgICAgICAgICAgJ29iamVjdCB3aGVyZSBgb2JqLmdyYWRGdW5jYCBpcyBhIGZ1bmN0aW9uLicpO1xuICAgICAgICByZXR1cm4gcmVzLnZhbHVlO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgYmFja3dhcmRzRnVuYyA9IChkeTogVCwgc2F2ZWQ6IFRlbnNvcltdKSA9PiB7XG4gICAgICAgIGNvbnN0IGdyYWRSZXMgPSByZXMuZ3JhZEZ1bmMoZHksIHNhdmVkKTtcbiAgICAgICAgY29uc3QgZ3JhZHM6IFRlbnNvcltdID0gQXJyYXkuaXNBcnJheShncmFkUmVzKSA/IGdyYWRSZXMgOiBbZ3JhZFJlc107XG4gICAgICAgIHV0aWwuYXNzZXJ0KFxuICAgICAgICAgICAgZ3JhZHMubGVuZ3RoID09PSBpbnB1dHMubGVuZ3RoLFxuICAgICAgICAgICAgKCkgPT4gJ1RoZSBmdW5jdGlvbiBmIHBhc3NlZCBpbiBjdXN0b21HcmFkKGYpIG11c3QgcmV0dXJuIGFuICcgK1xuICAgICAgICAgICAgICAgICdvYmplY3Qgd2hlcmUgYG9iai5ncmFkRnVuY2AgaXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgJyArXG4gICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG51bWJlciBvZiB0ZW5zb3JzIGFzIGlucHV0cyBwYXNzZWQgdG8gZiguLi4pLicpO1xuICAgICAgICB1dGlsLmFzc2VydChcbiAgICAgICAgICAgIGdyYWRzLmV2ZXJ5KHQgPT4gdCBpbnN0YW5jZW9mIFRlbnNvciksXG4gICAgICAgICAgICAoKSA9PiAnVGhlIGZ1bmN0aW9uIGYgcGFzc2VkIGluIGN1c3RvbUdyYWQoZikgbXVzdCByZXR1cm4gYW4gJyArXG4gICAgICAgICAgICAgICAgJ29iamVjdCB3aGVyZSBgb2JqLmdyYWRGdW5jYCBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyAnICtcbiAgICAgICAgICAgICAgICAnYSBsaXN0IG9mIG9ubHkgdGVuc29ycy4nKTtcbiAgICAgICAgY29uc3QgZ3JhZE1hcDoge1trZXk6IHN0cmluZ106ICgpID0+IFRlbnNvcn0gPSB7fTtcbiAgICAgICAgZ3JhZHMuZm9yRWFjaCgoZ3JhZCwgaSkgPT4ge1xuICAgICAgICAgIGdyYWRNYXBbaV0gPSAoKSA9PiBncmFkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdyYWRNYXA7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gdGhpcy5ydW5LZXJuZWxGdW5jKHtcbiAgICAgICAgZm9yd2FyZEZ1bmMsXG4gICAgICAgIGJhY2t3YXJkc0Z1bmMsXG4gICAgICAgIGlucHV0czogaW5wdXRNYXAsXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgcmVhZFN5bmMoZGF0YUlkOiBEYXRhSWQpOiBCYWNrZW5kVmFsdWVzIHtcbiAgICAvLyBSb3V0ZSB0aGUgcmVhZCB0byB0aGUgY29ycmVjdCBiYWNrZW5kLlxuICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGRhdGFJZCk7XG4gICAgcmV0dXJuIGluZm8uYmFja2VuZC5yZWFkU3luYyhkYXRhSWQpO1xuICB9XG4gIHJlYWQoZGF0YUlkOiBEYXRhSWQpOiBQcm9taXNlPEJhY2tlbmRWYWx1ZXM+IHtcbiAgICAvLyBSb3V0ZSB0aGUgcmVhZCB0byB0aGUgY29ycmVjdCBiYWNrZW5kLlxuICAgIGNvbnN0IGluZm8gPSB0aGlzLnN0YXRlLnRlbnNvckluZm8uZ2V0KGRhdGFJZCk7XG4gICAgcmV0dXJuIGluZm8uYmFja2VuZC5yZWFkKGRhdGFJZCk7XG4gIH1cblxuICByZWFkVG9HUFUoZGF0YUlkOiBEYXRhSWQsIG9wdGlvbnM/OiBEYXRhVG9HUFVPcHRpb25zKTogR1BVRGF0YSB7XG4gICAgLy8gUm91dGUgdGhlIHJlYWQgdG8gdGhlIGNvcnJlY3QgYmFja2VuZC5cbiAgICBjb25zdCBpbmZvID0gdGhpcy5zdGF0ZS50ZW5zb3JJbmZvLmdldChkYXRhSWQpO1xuICAgIHJldHVybiBpbmZvLmJhY2tlbmQucmVhZFRvR1BVKGRhdGFJZCwgb3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyB0aW1lKHF1ZXJ5OiAoKSA9PiB2b2lkKTogUHJvbWlzZTxUaW1pbmdJbmZvPiB7XG4gICAgY29uc3Qgc3RhcnQgPSBub3coKTtcbiAgICBjb25zdCB0aW1pbmdJbmZvID0gYXdhaXQgdGhpcy5iYWNrZW5kLnRpbWUocXVlcnkpIGFzIFRpbWluZ0luZm87XG4gICAgdGltaW5nSW5mby53YWxsTXMgPSBub3coKSAtIHN0YXJ0O1xuICAgIHJldHVybiB0aW1pbmdJbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrcyBhIFRlbnNvciBpbiB0aGUgY3VycmVudCBzY29wZSB0byBiZSBhdXRvbWF0aWNhbGx5IGNsZWFuZWQgdXBcbiAgICogd2hlbiB0aGUgY3VycmVudCBzY29wZSBlbmRzLCBhbmQgcmV0dXJucyB0aGUgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSByZXN1bHQgVGhlIFRlbnNvciB0byB0cmFjayBpbiB0aGUgY3VycmVudCBzY29wZS5cbiAgICovXG4gIHByaXZhdGUgdHJhY2s8VCBleHRlbmRzIFRlbnNvcj4ocmVzdWx0OiBUKTogVCB7XG4gICAgaWYgKHRoaXMuc3RhdGUuYWN0aXZlU2NvcGUgIT0gbnVsbCkge1xuICAgICAgcmVzdWx0LnNjb3BlSWQgPSB0aGlzLnN0YXRlLmFjdGl2ZVNjb3BlLmlkO1xuICAgICAgdGhpcy5zdGF0ZS5hY3RpdmVTY29wZS50cmFjay5wdXNoKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldCByZWdpc3RlcmVkVmFyaWFibGVzKCk6IE5hbWVkVmFyaWFibGVNYXAge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnJlZ2lzdGVyZWRWYXJpYWJsZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbmdpbmUgc3RhdGUuIFJlbW92ZXMgYWxsIGJhY2tlbmRzIGJ1dCBkb2VzIG5vdCByZW1vdmVcbiAgICogcmVnaXN0ZXJlZCBiYWNrZW5kIGZhY3Rvcmllcy5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIC8vIE1ha2UgYW55IHBlbmRpbmcgcHJvbWlzZSBvYnNvbGV0ZS5cbiAgICB0aGlzLnBlbmRpbmdCYWNrZW5kSW5pdElkKys7XG5cbiAgICB0aGlzLnN0YXRlLmRpc3Bvc2UoKTtcbiAgICB0aGlzLkVOVi5yZXNldCgpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgRW5naW5lU3RhdGUoKTtcblxuICAgIGZvciAoY29uc3QgYmFja2VuZE5hbWUgaW4gdGhpcy5yZWdpc3RyeSkge1xuICAgICAgdGhpcy5kaXNwb3NlUmVnaXN0ZXJlZEtlcm5lbHMoYmFja2VuZE5hbWUpO1xuICAgICAgdGhpcy5yZWdpc3RyeVtiYWNrZW5kTmFtZV0uZGlzcG9zZSgpO1xuICAgICAgZGVsZXRlIHRoaXMucmVnaXN0cnlbYmFja2VuZE5hbWVdO1xuICAgIH1cbiAgICB0aGlzLmJhY2tlbmROYW1lID0gbnVsbDtcbiAgICB0aGlzLmJhY2tlbmRJbnN0YW5jZSA9IG51bGw7XG4gICAgdGhpcy5wZW5kaW5nQmFja2VuZEluaXQgPSBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uZXMoc2hhcGU6IG51bWJlcltdKTogVGVuc29yIHtcbiAgY29uc3QgdmFsdWVzID0gbWFrZU9uZXNUeXBlZEFycmF5KHNpemVGcm9tU2hhcGUoc2hhcGUpLCAnZmxvYXQzMicpO1xuICByZXR1cm4gRU5HSU5FLm1ha2VUZW5zb3IodmFsdWVzLCBzaGFwZSwgJ2Zsb2F0MzInKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9yTWFrZUVuZ2luZSgpOiBFbmdpbmUge1xuICBjb25zdCBucyA9IGdldEdsb2JhbE5hbWVzcGFjZSgpIGFzIHVua25vd24gYXMge190ZmVuZ2luZTogRW5naW5lfTtcbiAgaWYgKG5zLl90ZmVuZ2luZSA9PSBudWxsKSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBuZXcgRW52aXJvbm1lbnQobnMpO1xuICAgIG5zLl90ZmVuZ2luZSA9IG5ldyBFbmdpbmUoZW52aXJvbm1lbnQpO1xuICB9XG4gIHNldEVudmlyb25tZW50R2xvYmFsKG5zLl90ZmVuZ2luZS5FTlYpO1xuXG4gIC8vIFRlbGwgdGhlIGN1cnJlbnQgdGVuc29yIGludGVyZmFjZSB0aGF0IHRoZSBnbG9iYWwgZW5naW5lIGlzIHJlc3BvbnNpYmxlXG4gIC8vIGZvciB0cmFja2luZy5cbiAgc2V0VGVuc29yVHJhY2tlcigoKSA9PiBucy5fdGZlbmdpbmUpO1xuICByZXR1cm4gbnMuX3RmZW5naW5lO1xufVxuXG5leHBvcnQgY29uc3QgRU5HSU5FID0gZ2V0T3JNYWtlRW5naW5lKCk7XG5cbi8qKlxuICogQSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWRkIG9wIGZvciB1c2Ugd2l0aGluIGVuZ2luZSBhbmQgdGFwZS5cbiAqXG4gKiBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCBhIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBhZGQudHMgYW5kIGVuZ2luZS5cbiAqIEl0IGlzIGV4cG9ydGVkIHRvIGJlIGF2YWlsYWJsZSBpbiB0YXBlIHRlc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkKGE6IFRlbnNvciwgYjogVGVuc29yKTogVGVuc29yIHtcbiAgLy8gV2UgZHVwbGljYXRlIEFkZCBoZXJlIHRvIGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSB3aXRoIGFkZC50cy5cbiAgY29uc3QgaW5wdXRzID0ge2EsIGJ9O1xuICByZXR1cm4gRU5HSU5FLnJ1bktlcm5lbChBZGQsIGlucHV0cyBhcyB1bmtub3duIGFzIE5hbWVkVGVuc29yTWFwKTtcbn1cbiJdfQ=="],"names":["isRegisteredKernelInvocation","kernelInvocation","EngineState","k","variableName","Engine","ENV","sortedBackends","i","backendName","name","asyncInit","factory","priority","log.warn","success","Profiler","getKernelsForBackend","kernel","registryFactoryEntry","backend","KernelBackend","promiseId","backendInstance","err","a","b","dataId","info","srcBackend","values","refCount","nameOrFn","fn","result","start","end","f","res","ex","x","y","ENGINE","Identity","inputs","grad","dy","dtype","gradInputs","attrs","Cast","saved","kernelName","getKernel","numDataIdsBefore","outInfos","numDataIdsAfter","numOutputDataIds","numMoves","dataIdsLeaked","kernelParams","outputs","isTapeOn","startingBytecount","startingNumTensors","kernelFunc","out","kernelOrScopeName","util.assert","outTensors","outInfo","tensorsToSave","forwardFunc","saveFunc","tensors","tensor","outs","backwardsFunc","kernelProfile","key","item","gradConfig","getGradient","inputsToSave","outputsToSave","inputTensorsToSave","inputName","outputTensorsToSave","_","shape","backendVals","util.isString","d","util.encodeString","t","Tensor","newBytes","bytesFromStringArray","tensorInfo","initialValue","trainable","v","Variable","bytes","util.bytesPerElement","varName","query","startBytes","startNumTensors","gradientsFunc","tapeNode","dys","output","vals","util.makeZerosTypedArray","scopeInfo","tensorsToTrackInParent","getTensorsInContainer","tensorsToTrackInParentSet","oldScope","xs","allowNoGradients","filteredTape","getFilteredNodesXToY","accumulatedGradientMap","ones","backpropagateGradients","add","grads","node","util.isFunction","inputMap","input","save","gradRes","gradMap","options","now","timingInfo","makeOnesTypedArray","sizeFromShape","getOrMakeEngine","ns","getGlobalNamespace","environment","Environment","setEnvironmentGlobal","setTensorTracker","Add"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,111 @@
1
+ import { isPromise as u } from "./util_base.js";
2
+ /**
3
+ * @license
4
+ * Copyright 2017 Google LLC. All Rights Reserved.
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ * =============================================================================
17
+ */
18
+ const l = "tfjsflags";
19
+ class p {
20
+ // tslint:disable-next-line: no-any
21
+ constructor(t) {
22
+ this.global = t, this.flags = {}, this.flagRegistry = {}, this.urlFlags = {}, this.getQueryParams = g, this.populateURLFlags();
23
+ }
24
+ setPlatform(t, s) {
25
+ this.platform != null && (n().getBool("IS_TEST") || n().getBool("PROD") || console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${t}.`)), this.platformName = t, this.platform = s;
26
+ }
27
+ registerFlag(t, s, r) {
28
+ if (this.flagRegistry[t] = { evaluationFn: s, setHook: r }, this.urlFlags[t] != null) {
29
+ const i = this.urlFlags[t];
30
+ n().getBool("IS_TEST") || n().getBool("PROD") || console.warn(`Setting feature override from URL ${t}: ${i}.`), this.set(t, i);
31
+ }
32
+ }
33
+ async getAsync(t) {
34
+ return t in this.flags ? this.flags[t] : (this.flags[t] = await this.evaluateFlag(t), this.flags[t]);
35
+ }
36
+ get(t) {
37
+ if (t in this.flags)
38
+ return this.flags[t];
39
+ const s = this.evaluateFlag(t);
40
+ if (u(s))
41
+ throw new Error(`Flag ${t} cannot be synchronously evaluated. Please use getAsync() instead.`);
42
+ return this.flags[t] = s, this.flags[t];
43
+ }
44
+ getNumber(t) {
45
+ return this.get(t);
46
+ }
47
+ getBool(t) {
48
+ return this.get(t);
49
+ }
50
+ getString(t) {
51
+ return this.get(t);
52
+ }
53
+ getFlags() {
54
+ return this.flags;
55
+ }
56
+ // For backwards compatibility.
57
+ get features() {
58
+ return this.flags;
59
+ }
60
+ set(t, s) {
61
+ if (this.flagRegistry[t] == null)
62
+ throw new Error(`Cannot set flag ${t} as it has not been registered.`);
63
+ this.flags[t] = s, this.flagRegistry[t].setHook != null && this.flagRegistry[t].setHook(s);
64
+ }
65
+ evaluateFlag(t) {
66
+ if (this.flagRegistry[t] == null)
67
+ throw new Error(`Cannot evaluate flag '${t}': no evaluation function found.`);
68
+ return this.flagRegistry[t].evaluationFn();
69
+ }
70
+ setFlags(t) {
71
+ this.flags = Object.assign({}, t);
72
+ }
73
+ reset() {
74
+ this.flags = {}, this.urlFlags = {}, this.populateURLFlags();
75
+ }
76
+ populateURLFlags() {
77
+ if (typeof this.global > "u" || typeof this.global.location > "u" || typeof this.global.location.search > "u")
78
+ return;
79
+ const t = this.getQueryParams(this.global.location.search);
80
+ l in t && t[l].split(",").forEach((r) => {
81
+ const [i, a] = r.split(":");
82
+ this.urlFlags[i] = f(i, a);
83
+ });
84
+ }
85
+ }
86
+ function g(e) {
87
+ const t = {};
88
+ return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (s, ...r) => (h(t, r[0], r[1]), r.join("="))), t;
89
+ }
90
+ function h(e, t, s) {
91
+ e[decodeURIComponent(t)] = decodeURIComponent(s || "");
92
+ }
93
+ function f(e, t) {
94
+ const s = t.toLowerCase();
95
+ return s === "true" || s === "false" ? s === "true" : `${+s}` === s ? +s : t;
96
+ }
97
+ function n() {
98
+ return o;
99
+ }
100
+ let o = null;
101
+ function y(e) {
102
+ o = e;
103
+ }
104
+ export {
105
+ o as ENV,
106
+ p as Environment,
107
+ n as env,
108
+ g as getQueryParams,
109
+ y as setEnvironmentGlobal
110
+ };
111
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sources":["../../../../../node_modules/@tensorflow/tfjs-core/dist/environment.js"],"sourcesContent":["/**\n * @license\n * Copyright 2017 Google LLC. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * =============================================================================\n */\nimport { isPromise } from './util_base';\n// Expects flags from URL in the format ?tfjsflags=FLAG1:1,FLAG2:true.\nconst TENSORFLOWJS_FLAGS_PREFIX = 'tfjsflags';\n/**\n * The environment contains evaluated flags as well as the registered platform.\n * This is always used as a global singleton and can be retrieved with\n * `tf.env()`.\n *\n * @doc {heading: 'Environment'}\n */\nexport class Environment {\n // tslint:disable-next-line: no-any\n constructor(global) {\n this.global = global;\n this.flags = {};\n this.flagRegistry = {};\n this.urlFlags = {};\n // Jasmine spies on this in 'environment_test.ts'\n this.getQueryParams = getQueryParams;\n this.populateURLFlags();\n }\n setPlatform(platformName, platform) {\n if (this.platform != null) {\n if (!(env().getBool('IS_TEST') || env().getBool('PROD'))) {\n console.warn(`Platform ${this.platformName} has already been set. ` +\n `Overwriting the platform with ${platformName}.`);\n }\n }\n this.platformName = platformName;\n this.platform = platform;\n }\n registerFlag(flagName, evaluationFn, setHook) {\n this.flagRegistry[flagName] = { evaluationFn, setHook };\n // Override the flag value from the URL. This has to happen here because\n // the environment is initialized before flags get registered.\n if (this.urlFlags[flagName] != null) {\n const flagValue = this.urlFlags[flagName];\n if (!(env().getBool('IS_TEST') || env().getBool('PROD'))) {\n console.warn(`Setting feature override from URL ${flagName}: ${flagValue}.`);\n }\n this.set(flagName, flagValue);\n }\n }\n async getAsync(flagName) {\n if (flagName in this.flags) {\n return this.flags[flagName];\n }\n this.flags[flagName] = await this.evaluateFlag(flagName);\n return this.flags[flagName];\n }\n get(flagName) {\n if (flagName in this.flags) {\n return this.flags[flagName];\n }\n const flagValue = this.evaluateFlag(flagName);\n if (isPromise(flagValue)) {\n throw new Error(`Flag ${flagName} cannot be synchronously evaluated. ` +\n `Please use getAsync() instead.`);\n }\n this.flags[flagName] = flagValue;\n return this.flags[flagName];\n }\n getNumber(flagName) {\n return this.get(flagName);\n }\n getBool(flagName) {\n return this.get(flagName);\n }\n getString(flagName) {\n return this.get(flagName);\n }\n getFlags() {\n return this.flags;\n }\n // For backwards compatibility.\n get features() {\n return this.flags;\n }\n set(flagName, value) {\n if (this.flagRegistry[flagName] == null) {\n throw new Error(`Cannot set flag ${flagName} as it has not been registered.`);\n }\n this.flags[flagName] = value;\n if (this.flagRegistry[flagName].setHook != null) {\n this.flagRegistry[flagName].setHook(value);\n }\n }\n evaluateFlag(flagName) {\n if (this.flagRegistry[flagName] == null) {\n throw new Error(`Cannot evaluate flag '${flagName}': no evaluation function found.`);\n }\n return this.flagRegistry[flagName].evaluationFn();\n }\n setFlags(flags) {\n this.flags = Object.assign({}, flags);\n }\n reset() {\n this.flags = {};\n this.urlFlags = {};\n this.populateURLFlags();\n }\n populateURLFlags() {\n if (typeof this.global === 'undefined' ||\n typeof this.global.location === 'undefined' ||\n typeof this.global.location.search === 'undefined') {\n return;\n }\n const urlParams = this.getQueryParams(this.global.location.search);\n if (TENSORFLOWJS_FLAGS_PREFIX in urlParams) {\n const keyValues = urlParams[TENSORFLOWJS_FLAGS_PREFIX].split(',');\n keyValues.forEach(keyValue => {\n const [key, value] = keyValue.split(':');\n this.urlFlags[key] = parseValue(key, value);\n });\n }\n }\n}\nexport function getQueryParams(queryString) {\n const params = {};\n queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, (s, ...t) => {\n decodeParam(params, t[0], t[1]);\n return t.join('=');\n });\n return params;\n}\nfunction decodeParam(params, name, value) {\n params[decodeURIComponent(name)] = decodeURIComponent(value || '');\n}\nfunction parseValue(flagName, value) {\n const lowerCaseValue = value.toLowerCase();\n if (lowerCaseValue === 'true' || lowerCaseValue === 'false') {\n return lowerCaseValue === 'true';\n }\n else if (`${+lowerCaseValue}` === lowerCaseValue) {\n return +lowerCaseValue;\n }\n else {\n return value;\n }\n}\n/**\n * Returns the current environment (a global singleton).\n *\n * The environment object contains the evaluated feature values as well as the\n * active platform.\n *\n * @doc {heading: 'Environment'}\n */\nexport function env() {\n return ENV;\n}\nexport let ENV = null;\nexport function setEnvironmentGlobal(environment) {\n ENV = environment;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZmpzLWNvcmUvc3JjL2Vudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUdILE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEMsc0VBQXNFO0FBQ3RFLE1BQU0seUJBQXlCLEdBQUcsV0FBVyxDQUFDO0FBWTlDOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBWXRCLG1DQUFtQztJQUNuQyxZQUFtQixNQUFXO1FBQVgsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQVp0QixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLGlCQUFZLEdBQTRDLEVBQUUsQ0FBQztRQUUzRCxhQUFRLEdBQVUsRUFBRSxDQUFDO1FBSzdCLGlEQUFpRDtRQUNqRCxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUk5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLFlBQW9CLEVBQUUsUUFBa0I7UUFDbEQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQ3hELE9BQU8sQ0FBQyxJQUFJLENBQ1IsWUFBWSxJQUFJLENBQUMsWUFBWSx5QkFBeUI7b0JBQ3RELGlDQUFpQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUNSLFFBQWdCLEVBQUUsWUFBOEIsRUFDaEQsT0FB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O0FBQ0gsTUFBTSxVQUFVLEdBQUc7SUFDakIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFnQixJQUFJLENBQUM7QUFDbkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFdBQXdCO0lBQzNELEdBQUcsR0FBRyxXQUFXLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDE3IEdvb2dsZSBMTEMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnLi9wbGF0Zm9ybXMvcGxhdGZvcm0nO1xuaW1wb3J0IHtpc1Byb21pc2V9IGZyb20gJy4vdXRpbF9iYXNlJztcblxuLy8gRXhwZWN0cyBmbGFncyBmcm9tIFVSTCBpbiB0aGUgZm9ybWF0ID90ZmpzZmxhZ3M9RkxBRzE6MSxGTEFHMjp0cnVlLlxuY29uc3QgVEVOU09SRkxPV0pTX0ZMQUdTX1BSRUZJWCA9ICd0ZmpzZmxhZ3MnO1xuXG50eXBlIEZsYWdWYWx1ZSA9IG51bWJlcnxib29sZWFufHN0cmluZztcbnR5cGUgRmxhZ0V2YWx1YXRpb25GbiA9ICgoKSA9PiBGbGFnVmFsdWUpfCgoKSA9PiBQcm9taXNlPEZsYWdWYWx1ZT4pO1xuZXhwb3J0IHR5cGUgRmxhZ3MgPSB7XG4gIFtmZWF0dXJlTmFtZTogc3RyaW5nXTogRmxhZ1ZhbHVlXG59O1xuZXhwb3J0IHR5cGUgRmxhZ1JlZ2lzdHJ5RW50cnkgPSB7XG4gIGV2YWx1YXRpb25GbjogRmxhZ0V2YWx1YXRpb25GbjtcbiAgc2V0SG9vaz86ICh2YWx1ZTogRmxhZ1ZhbHVlKSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBUaGUgZW52aXJvbm1lbnQgY29udGFpbnMgZXZhbHVhdGVkIGZsYWdzIGFzIHdlbGwgYXMgdGhlIHJlZ2lzdGVyZWQgcGxhdGZvcm0uXG4gKiBUaGlzIGlzIGFsd2F5cyB1c2VkIGFzIGEgZ2xvYmFsIHNpbmdsZXRvbiBhbmQgY2FuIGJlIHJldHJpZXZlZCB3aXRoXG4gKiBgdGYuZW52KClgLlxuICpcbiAqIEBkb2Mge2hlYWRpbmc6ICdFbnZpcm9ubWVudCd9XG4gKi9cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIHByaXZhdGUgZmxhZ3M6IEZsYWdzID0ge307XG4gIHByaXZhdGUgZmxhZ1JlZ2lzdHJ5OiB7W2ZsYWdOYW1lOiBzdHJpbmddOiBGbGFnUmVnaXN0cnlFbnRyeX0gPSB7fTtcblxuICBwcml2YXRlIHVybEZsYWdzOiBGbGFncyA9IHt9O1xuXG4gIHBsYXRmb3JtTmFtZTogc3RyaW5nO1xuICBwbGF0Zm9ybTogUGxhdGZvcm07XG5cbiAgLy8gSmFzbWluZSBzcGllcyBvbiB0aGlzIGluICdlbnZpcm9ubWVudF90ZXN0LnRzJ1xuICBnZXRRdWVyeVBhcmFtcyA9IGdldFF1ZXJ5UGFyYW1zO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBnbG9iYWw6IGFueSkge1xuICAgIHRoaXMucG9wdWxhdGVVUkxGbGFncygpO1xuICB9XG5cbiAgc2V0UGxhdGZvcm0ocGxhdGZvcm1OYW1lOiBzdHJpbmcsIHBsYXRmb3JtOiBQbGF0Zm9ybSkge1xuICAgIGlmICh0aGlzLnBsYXRmb3JtICE9IG51bGwpIHtcbiAgICAgIGlmICghKGVudigpLmdldEJvb2woJ0lTX1RFU1QnKSB8fCBlbnYoKS5nZXRCb29sKCdQUk9EJykpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBQbGF0Zm9ybSAke3RoaXMucGxhdGZvcm1OYW1lfSBoYXMgYWxyZWFkeSBiZWVuIHNldC4gYCArXG4gICAgICAgICAgICBgT3ZlcndyaXRpbmcgdGhlIHBsYXRmb3JtIHdpdGggJHtwbGF0Zm9ybU5hbWV9LmApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBsYXRmb3JtTmFtZSA9IHBsYXRmb3JtTmFtZTtcbiAgICB0aGlzLnBsYXRmb3JtID0gcGxhdGZvcm07XG4gIH1cblxuICByZWdpc3RlckZsYWcoXG4gICAgICBmbGFnTmFtZTogc3RyaW5nLCBldmFsdWF0aW9uRm46IEZsYWdFdmFsdWF0aW9uRm4sXG4gICAgICBzZXRIb29rPzogKHZhbHVlOiBGbGFnVmFsdWUpID0+IHZvaWQpIHtcbiAgICB0aGlzLmZsYWdSZWdpc3RyeVtmbGFnTmFtZV0gPSB7ZXZhbHVhdGlvbkZuLCBzZXRIb29rfTtcblxuICAgIC8vIE92ZXJyaWRlIHRoZSBmbGFnIHZhbHVlIGZyb20gdGhlIFVSTC4gVGhpcyBoYXMgdG8gaGFwcGVuIGhlcmUgYmVjYXVzZVxuICAgIC8vIHRoZSBlbnZpcm9ubWVudCBpcyBpbml0aWFsaXplZCBiZWZvcmUgZmxhZ3MgZ2V0IHJlZ2lzdGVyZWQuXG4gICAgaWYgKHRoaXMudXJsRmxhZ3NbZmxhZ05hbWVdICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGZsYWdWYWx1ZSA9IHRoaXMudXJsRmxhZ3NbZmxhZ05hbWVdO1xuICAgICAgaWYgKCEoZW52KCkuZ2V0Qm9vbCgnSVNfVEVTVCcpIHx8IGVudigpLmdldEJvb2woJ1BST0QnKSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFNldHRpbmcgZmVhdHVyZSBvdmVycmlkZSBmcm9tIFVSTCAke2ZsYWdOYW1lfTogJHtmbGFnVmFsdWV9LmApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXQoZmxhZ05hbWUsIGZsYWdWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0QXN5bmMoZmxhZ05hbWU6IHN0cmluZyk6IFByb21pc2U8RmxhZ1ZhbHVlPiB7XG4gICAgaWYgKGZsYWdOYW1lIGluIHRoaXMuZmxhZ3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmZsYWdzW2ZsYWdOYW1lXTtcbiAgICB9XG5cbiAgICB0aGlzLmZsYWdzW2ZsYWdOYW1lXSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVGbGFnKGZsYWdOYW1lKTtcbiAgICByZXR1cm4gdGhpcy5mbGFnc1tmbGFnTmFtZV07XG4gIH1cblxuICBnZXQoZmxhZ05hbWU6IHN0cmluZyk6IEZsYWdWYWx1ZSB7XG4gICAgaWYgKGZsYWdOYW1lIGluIHRoaXMuZmxhZ3MpIHtcbiAgICAgIHJldHVybiB0aGlzLmZsYWdzW2ZsYWdOYW1lXTtcbiAgICB9XG5cbiAgICBjb25zdCBmbGFnVmFsdWUgPSB0aGlzLmV2YWx1YXRlRmxhZyhmbGFnTmFtZSk7XG4gICAgaWYgKGlzUHJvbWlzZShmbGFnVmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEZsYWcgJHtmbGFnTmFtZX0gY2Fubm90IGJlIHN5bmNocm9ub3VzbHkgZXZhbHVhdGVkLiBgICtcbiAgICAgICAgICBgUGxlYXNlIHVzZSBnZXRBc3luYygpIGluc3RlYWQuYCk7XG4gICAgfVxuXG4gICAgdGhpcy5mbGFnc1tmbGFnTmFtZV0gPSBmbGFnVmFsdWU7XG4gICAgcmV0dXJuIHRoaXMuZmxhZ3NbZmxhZ05hbWVdO1xuICB9XG5cbiAgZ2V0TnVtYmVyKGZsYWdOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldChmbGFnTmFtZSkgYXMgbnVtYmVyO1xuICB9XG5cbiAgZ2V0Qm9vbChmbGFnTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KGZsYWdOYW1lKSBhcyBib29sZWFuO1xuICB9XG5cbiAgZ2V0U3RyaW5nKGZsYWdOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldChmbGFnTmFtZSkgYXMgc3RyaW5nO1xuICB9XG5cbiAgZ2V0RmxhZ3MoKTogRmxhZ3Mge1xuICAgIHJldHVybiB0aGlzLmZsYWdzO1xuICB9XG4gIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgZ2V0IGZlYXR1cmVzKCk6IEZsYWdzIHtcbiAgICByZXR1cm4gdGhpcy5mbGFncztcbiAgfVxuXG4gIHNldChmbGFnTmFtZTogc3RyaW5nLCB2YWx1ZTogRmxhZ1ZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmxhZ1JlZ2lzdHJ5W2ZsYWdOYW1lXSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCBzZXQgZmxhZyAke2ZsYWdOYW1lfSBhcyBpdCBoYXMgbm90IGJlZW4gcmVnaXN0ZXJlZC5gKTtcbiAgICB9XG4gICAgdGhpcy5mbGFnc1tmbGFnTmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5mbGFnUmVnaXN0cnlbZmxhZ05hbWVdLnNldEhvb2sgIT0gbnVsbCkge1xuICAgICAgdGhpcy5mbGFnUmVnaXN0cnlbZmxhZ05hbWVdLnNldEhvb2sodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVGbGFnKGZsYWdOYW1lOiBzdHJpbmcpOiBGbGFnVmFsdWV8UHJvbWlzZTxGbGFnVmFsdWU+IHtcbiAgICBpZiAodGhpcy5mbGFnUmVnaXN0cnlbZmxhZ05hbWVdID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2Fubm90IGV2YWx1YXRlIGZsYWcgJyR7ZmxhZ05hbWV9Jzogbm8gZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3VuZC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmxhZ1JlZ2lzdHJ5W2ZsYWdOYW1lXS5ldmFsdWF0aW9uRm4oKTtcbiAgfVxuXG4gIHNldEZsYWdzKGZsYWdzOiBGbGFncykge1xuICAgIHRoaXMuZmxhZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBmbGFncyk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmZsYWdzID0ge307XG4gICAgdGhpcy51cmxGbGFncyA9IHt9O1xuICAgIHRoaXMucG9wdWxhdGVVUkxGbGFncygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZVVSTEZsYWdzKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgdGhpcy5nbG9iYWwgPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAgIHR5cGVvZiB0aGlzLmdsb2JhbC5sb2NhdGlvbiA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgICAgdHlwZW9mIHRoaXMuZ2xvYmFsLmxvY2F0aW9uLnNlYXJjaCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cmxQYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKHRoaXMuZ2xvYmFsLmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgaWYgKFRFTlNPUkZMT1dKU19GTEFHU19QUkVGSVggaW4gdXJsUGFyYW1zKSB7XG4gICAgICBjb25zdCBrZXlWYWx1ZXMgPSB1cmxQYXJhbXNbVEVOU09SRkxPV0pTX0ZMQUdTX1BSRUZJWF0uc3BsaXQoJywnKTtcbiAgICAgIGtleVZhbHVlcy5mb3JFYWNoKGtleVZhbHVlID0+IHtcbiAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0ga2V5VmFsdWUuc3BsaXQoJzonKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgICB0aGlzLnVybEZsYWdzW2tleV0gPSBwYXJzZVZhbHVlKGtleSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeVBhcmFtcyhxdWVyeVN0cmluZzogc3RyaW5nKToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgcXVlcnlTdHJpbmcucmVwbGFjZSgvWz8mXShbXj0/Jl0rKSg/Oj0oW14mXSopKT8vZywgKHMsIC4uLnQpID0+IHtcbiAgICBkZWNvZGVQYXJhbShwYXJhbXMsIHRbMF0sIHRbMV0pO1xuICAgIHJldHVybiB0LmpvaW4oJz0nKTtcbiAgfSk7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGRlY29kZVBhcmFtKFxuICAgIHBhcmFtczoge1trZXk6IHN0cmluZ106IHN0cmluZ30sIG5hbWU6IHN0cmluZywgdmFsdWU/OiBzdHJpbmcpIHtcbiAgcGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudChuYW1lKV0gPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUgfHwgJycpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVZhbHVlKGZsYWdOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBGbGFnVmFsdWUge1xuICBjb25zdCBsb3dlckNhc2VWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChsb3dlckNhc2VWYWx1ZSA9PT0gJ3RydWUnIHx8IGxvd2VyQ2FzZVZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgcmV0dXJuIGxvd2VyQ2FzZVZhbHVlID09PSAndHJ1ZSc7XG4gIH0gZWxzZSBpZiAoYCR7KyBsb3dlckNhc2VWYWx1ZX1gID09PSBsb3dlckNhc2VWYWx1ZSkge1xuICAgIHJldHVybiArbG93ZXJDYXNlVmFsdWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgY3VycmVudCBlbnZpcm9ubWVudCAoYSBnbG9iYWwgc2luZ2xldG9uKS5cbiAqXG4gKiBUaGUgZW52aXJvbm1lbnQgb2JqZWN0IGNvbnRhaW5zIHRoZSBldmFsdWF0ZWQgZmVhdHVyZSB2YWx1ZXMgYXMgd2VsbCBhcyB0aGVcbiAqIGFjdGl2ZSBwbGF0Zm9ybS5cbiAqXG4gKiBAZG9jIHtoZWFkaW5nOiAnRW52aXJvbm1lbnQnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW52KCkge1xuICByZXR1cm4gRU5WO1xufVxuXG5leHBvcnQgbGV0IEVOVjogRW52aXJvbm1lbnQgPSBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIHNldEVudmlyb25tZW50R2xvYmFsKGVudmlyb25tZW50OiBFbnZpcm9ubWVudCkge1xuICBFTlYgPSBlbnZpcm9ubWVudDtcbn1cbiJdfQ=="],"names":["TENSORFLOWJS_FLAGS_PREFIX","Environment","global","getQueryParams","platformName","platform","env","flagName","evaluationFn","setHook","flagValue","isPromise","value","flags","urlParams","keyValue","key","parseValue","queryString","params","t","decodeParam","name","lowerCaseValue","ENV","setEnvironmentGlobal","environment"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,36 @@
1
+ import "./engine.js";
2
+ import { isBrowser as t } from "./device_util.js";
3
+ import { env as a } from "./environment.js";
4
+ /**
5
+ * @license
6
+ * Copyright 2019 Google LLC. All Rights Reserved.
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ * =============================================================================
19
+ */
20
+ const e = a();
21
+ e.registerFlag("DEBUG", () => !1, (r) => {
22
+ r && console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.");
23
+ });
24
+ e.registerFlag("IS_BROWSER", () => t());
25
+ e.registerFlag("IS_NODE", () => typeof process < "u" && typeof process.versions < "u" && typeof process.versions.node < "u");
26
+ e.registerFlag("IS_CHROME", () => typeof navigator < "u" && navigator != null && navigator.userAgent != null && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));
27
+ e.registerFlag("IS_SAFARI", () => typeof navigator < "u" && navigator != null && navigator.userAgent != null && /Safari/.test(navigator.userAgent) && /Apple/.test(navigator.vendor));
28
+ e.registerFlag("PROD", () => !1);
29
+ e.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY", () => e.getBool("DEBUG"));
30
+ e.registerFlag("DEPRECATION_WARNINGS_ENABLED", () => !0);
31
+ e.registerFlag("IS_TEST", () => !1);
32
+ e.registerFlag("CHECK_COMPUTATION_FOR_ERRORS", () => e.getBool("DEBUG"));
33
+ e.registerFlag("WRAP_TO_IMAGEBITMAP", () => !1);
34
+ e.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU", () => !1);
35
+ e.registerFlag("USE_SETTIMEOUTCUSTOM", () => !1);
36
+ //# sourceMappingURL=flags.js.map