index.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594
  1. <<<<<<< HEAD
  2. /* build-hook-start *//*00001*/try { require('c:\\Users\\lsc\\.trae-cn\\extensions\\wallabyjs.console-ninja-1.0.540-universal\\out\\buildHook\\index.js').default({tool: 'webpack', checkSum: '2098b85f040e516375942aDBZVDRtWCgRWV1MHBFYHVABQBwMA', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/lsc/.trae-cn/extensions/wallabyjs.console-ninja-1.0.540-universal/out/buildHook/index.js').then(m => m.default.default({tool: 'webpack', checkSum: '2098b85f040e516375942aDBZVDRtWCgRWV1MHBFYHVABQBwMA', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */
  3. <<<<<<< HEAD=======>>>>>>> beta
  4. =======
  5. /* build-hook-start *//*00001*/try { require('c:\\Users\\lsc\\.trae-cn\\extensions\\wallabyjs.console-ninja-1.0.540-universal\\out\\buildHook\\index.js').default({tool: 'webpack', checkSum: '20f91d19d10db784c7f2c6UxcGUR8JXglUBgQCWQwHU1cBBVRS', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/lsc/.trae-cn/extensions/wallabyjs.console-ninja-1.0.540-universal/out/buildHook/index.js').then(m => m.default.default({tool: 'webpack', checkSum: '20f91d19d10db784c7f2c6UxcGUR8JXglUBgQCWQwHU1cBBVRS', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */
  6. >>>>>>> beta
  7. /*
  8. MIT License http://www.opensource.org/licenses/mit-license.php
  9. Author Tobias Koppers @sokra
  10. */
  11. "use strict";
  12. const util = require("util");
  13. const memoize = require("./util/memoize");
  14. /** @typedef {import("../declarations/WebpackOptions").Entry} Entry */
  15. /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} EntryNormalized */
  16. /** @typedef {import("../declarations/WebpackOptions").EntryObject} EntryObject */
  17. /** @typedef {import("../declarations/WebpackOptions").FileCacheOptions} FileCacheOptions */
  18. /** @typedef {import("../declarations/WebpackOptions").LibraryOptions} LibraryOptions */
  19. /** @typedef {import("../declarations/WebpackOptions").ModuleOptions} ModuleOptions */
  20. /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
  21. /** @typedef {import("../declarations/WebpackOptions").RuleSetCondition} RuleSetCondition */
  22. /** @typedef {import("../declarations/WebpackOptions").RuleSetConditionAbsolute} RuleSetConditionAbsolute */
  23. /** @typedef {import("../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
  24. /** @typedef {import("../declarations/WebpackOptions").RuleSetUse} RuleSetUse */
  25. /** @typedef {import("../declarations/WebpackOptions").RuleSetUseItem} RuleSetUseItem */
  26. /** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
  27. /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} Configuration */
  28. /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptionsNormalized */
  29. /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
  30. /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
  31. /** @typedef {import("./Compilation").Asset} Asset */
  32. /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
  33. /** @typedef {import("./Compilation").EntryOptions} EntryOptions */
  34. /** @typedef {import("./Compilation").PathData} PathData */
  35. /** @typedef {import("./Compiler").AssetEmittedInfo} AssetEmittedInfo */
  36. /** @typedef {import("./MultiStats")} MultiStats */
  37. /** @typedef {import("./Parser").ParserState} ParserState */
  38. /** @typedef {import("./ResolverFactory").ResolvePluginInstance} ResolvePluginInstance */
  39. /** @typedef {import("./ResolverFactory").Resolver} Resolver */
  40. /** @typedef {import("./Watching")} Watching */
  41. /** @typedef {import("./cli").Argument} Argument */
  42. /** @typedef {import("./cli").Problem} Problem */
  43. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsAsset} StatsAsset */
  44. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunk} StatsChunk */
  45. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunkGroup} StatsChunkGroup */
  46. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsChunkOrigin} StatsChunkOrigin */
  47. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsCompilation} StatsCompilation */
  48. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsError} StatsError */
  49. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsLogging} StatsLogging */
  50. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsLoggingEntry} StatsLoggingEntry */
  51. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModule} StatsModule */
  52. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleIssuer} StatsModuleIssuer */
  53. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleReason} StatsModuleReason */
  54. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleTraceDependency} StatsModuleTraceDependency */
  55. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModuleTraceItem} StatsModuleTraceItem */
  56. /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsProfile} StatsProfile */
  57. /**
  58. * @template {Function} T
  59. * @param {function(): T} factory factory function
  60. * @returns {T} function
  61. */
  62. const lazyFunction = factory => {
  63. const fac = memoize(factory);
  64. const f = /** @type {any} */ (
  65. (...args) => {
  66. return fac()(...args);
  67. }
  68. );
  69. return /** @type {T} */ (f);
  70. };
  71. /**
  72. * @template A
  73. * @template B
  74. * @param {A} obj input a
  75. * @param {B} exports input b
  76. * @returns {A & B} merged
  77. */
  78. const mergeExports = (obj, exports) => {
  79. const descriptors = Object.getOwnPropertyDescriptors(exports);
  80. for (const name of Object.keys(descriptors)) {
  81. const descriptor = descriptors[name];
  82. if (descriptor.get) {
  83. const fn = descriptor.get;
  84. Object.defineProperty(obj, name, {
  85. configurable: false,
  86. enumerable: true,
  87. get: memoize(fn)
  88. });
  89. } else if (typeof descriptor.value === "object") {
  90. Object.defineProperty(obj, name, {
  91. configurable: false,
  92. enumerable: true,
  93. writable: false,
  94. value: mergeExports({}, descriptor.value)
  95. });
  96. } else {
  97. throw new Error(
  98. "Exposed values must be either a getter or an nested object"
  99. );
  100. }
  101. }
  102. return /** @type {A & B} */ (Object.freeze(obj));
  103. };
  104. const fn = lazyFunction(() => require("./webpack"));
  105. module.exports = mergeExports(fn, {
  106. get webpack() {
  107. return require("./webpack");
  108. },
  109. get validate() {
  110. const webpackOptionsSchemaCheck = require("../schemas/WebpackOptions.check.js");
  111. const getRealValidate = memoize(() => {
  112. const validateSchema = require("./validateSchema");
  113. const webpackOptionsSchema = require("../schemas/WebpackOptions.json");
  114. return options => validateSchema(webpackOptionsSchema, options);
  115. });
  116. return options => {
  117. if (!webpackOptionsSchemaCheck(options)) getRealValidate()(options);
  118. };
  119. },
  120. get validateSchema() {
  121. const validateSchema = require("./validateSchema");
  122. return validateSchema;
  123. },
  124. get version() {
  125. return /** @type {string} */ (require("../package.json").version);
  126. },
  127. get cli() {
  128. return require("./cli");
  129. },
  130. get AutomaticPrefetchPlugin() {
  131. return require("./AutomaticPrefetchPlugin");
  132. },
  133. get AsyncDependenciesBlock() {
  134. return require("./AsyncDependenciesBlock");
  135. },
  136. get BannerPlugin() {
  137. return require("./BannerPlugin");
  138. },
  139. get Cache() {
  140. return require("./Cache");
  141. },
  142. get Chunk() {
  143. return require("./Chunk");
  144. },
  145. get ChunkGraph() {
  146. return require("./ChunkGraph");
  147. },
  148. get CleanPlugin() {
  149. return require("./CleanPlugin");
  150. },
  151. get Compilation() {
  152. return require("./Compilation");
  153. },
  154. get Compiler() {
  155. return require("./Compiler");
  156. },
  157. get ConcatenationScope() {
  158. return require("./ConcatenationScope");
  159. },
  160. get ContextExclusionPlugin() {
  161. return require("./ContextExclusionPlugin");
  162. },
  163. get ContextReplacementPlugin() {
  164. return require("./ContextReplacementPlugin");
  165. },
  166. get DefinePlugin() {
  167. return require("./DefinePlugin");
  168. },
  169. get DelegatedPlugin() {
  170. return require("./DelegatedPlugin");
  171. },
  172. get Dependency() {
  173. return require("./Dependency");
  174. },
  175. get DllPlugin() {
  176. return require("./DllPlugin");
  177. },
  178. get DllReferencePlugin() {
  179. return require("./DllReferencePlugin");
  180. },
  181. get DynamicEntryPlugin() {
  182. return require("./DynamicEntryPlugin");
  183. },
  184. get EntryOptionPlugin() {
  185. return require("./EntryOptionPlugin");
  186. },
  187. get EntryPlugin() {
  188. return require("./EntryPlugin");
  189. },
  190. get EnvironmentPlugin() {
  191. return require("./EnvironmentPlugin");
  192. },
  193. get EvalDevToolModulePlugin() {
  194. return require("./EvalDevToolModulePlugin");
  195. },
  196. get EvalSourceMapDevToolPlugin() {
  197. return require("./EvalSourceMapDevToolPlugin");
  198. },
  199. get ExternalModule() {
  200. return require("./ExternalModule");
  201. },
  202. get ExternalsPlugin() {
  203. return require("./ExternalsPlugin");
  204. },
  205. get Generator() {
  206. return require("./Generator");
  207. },
  208. get HotUpdateChunk() {
  209. return require("./HotUpdateChunk");
  210. },
  211. get HotModuleReplacementPlugin() {
  212. return require("./HotModuleReplacementPlugin");
  213. },
  214. get IgnorePlugin() {
  215. return require("./IgnorePlugin");
  216. },
  217. get JavascriptModulesPlugin() {
  218. return util.deprecate(
  219. () => require("./javascript/JavascriptModulesPlugin"),
  220. "webpack.JavascriptModulesPlugin has moved to webpack.javascript.JavascriptModulesPlugin",
  221. "DEP_WEBPACK_JAVASCRIPT_MODULES_PLUGIN"
  222. )();
  223. },
  224. get LibManifestPlugin() {
  225. return require("./LibManifestPlugin");
  226. },
  227. get LibraryTemplatePlugin() {
  228. return util.deprecate(
  229. () => require("./LibraryTemplatePlugin"),
  230. "webpack.LibraryTemplatePlugin is deprecated and has been replaced by compilation.outputOptions.library or compilation.addEntry + passing a library option",
  231. "DEP_WEBPACK_LIBRARY_TEMPLATE_PLUGIN"
  232. )();
  233. },
  234. get LoaderOptionsPlugin() {
  235. return require("./LoaderOptionsPlugin");
  236. },
  237. get LoaderTargetPlugin() {
  238. return require("./LoaderTargetPlugin");
  239. },
  240. get Module() {
  241. return require("./Module");
  242. },
  243. get ModuleFilenameHelpers() {
  244. return require("./ModuleFilenameHelpers");
  245. },
  246. get ModuleGraph() {
  247. return require("./ModuleGraph");
  248. },
  249. get ModuleGraphConnection() {
  250. return require("./ModuleGraphConnection");
  251. },
  252. get NoEmitOnErrorsPlugin() {
  253. return require("./NoEmitOnErrorsPlugin");
  254. },
  255. get NormalModule() {
  256. return require("./NormalModule");
  257. },
  258. get NormalModuleReplacementPlugin() {
  259. return require("./NormalModuleReplacementPlugin");
  260. },
  261. get MultiCompiler() {
  262. return require("./MultiCompiler");
  263. },
  264. get Parser() {
  265. return require("./Parser");
  266. },
  267. get PrefetchPlugin() {
  268. return require("./PrefetchPlugin");
  269. },
  270. get ProgressPlugin() {
  271. return require("./ProgressPlugin");
  272. },
  273. get ProvidePlugin() {
  274. return require("./ProvidePlugin");
  275. },
  276. get RuntimeGlobals() {
  277. return require("./RuntimeGlobals");
  278. },
  279. get RuntimeModule() {
  280. return require("./RuntimeModule");
  281. },
  282. get SingleEntryPlugin() {
  283. return util.deprecate(
  284. () => require("./EntryPlugin"),
  285. "SingleEntryPlugin was renamed to EntryPlugin",
  286. "DEP_WEBPACK_SINGLE_ENTRY_PLUGIN"
  287. )();
  288. },
  289. get SourceMapDevToolPlugin() {
  290. return require("./SourceMapDevToolPlugin");
  291. },
  292. get Stats() {
  293. return require("./Stats");
  294. },
  295. get Template() {
  296. return require("./Template");
  297. },
  298. get UsageState() {
  299. return require("./ExportsInfo").UsageState;
  300. },
  301. get WatchIgnorePlugin() {
  302. return require("./WatchIgnorePlugin");
  303. },
  304. get WebpackError() {
  305. return require("./WebpackError");
  306. },
  307. get WebpackOptionsApply() {
  308. return require("./WebpackOptionsApply");
  309. },
  310. get WebpackOptionsDefaulter() {
  311. return util.deprecate(
  312. () => require("./WebpackOptionsDefaulter"),
  313. "webpack.WebpackOptionsDefaulter is deprecated and has been replaced by webpack.config.getNormalizedWebpackOptions and webpack.config.applyWebpackOptionsDefaults",
  314. "DEP_WEBPACK_OPTIONS_DEFAULTER"
  315. )();
  316. },
  317. // TODO webpack 6 deprecate
  318. get WebpackOptionsValidationError() {
  319. return require("schema-utils").ValidationError;
  320. },
  321. get ValidationError() {
  322. return require("schema-utils").ValidationError;
  323. },
  324. cache: {
  325. get MemoryCachePlugin() {
  326. return require("./cache/MemoryCachePlugin");
  327. }
  328. },
  329. config: {
  330. get getNormalizedWebpackOptions() {
  331. return require("./config/normalization").getNormalizedWebpackOptions;
  332. },
  333. get applyWebpackOptionsDefaults() {
  334. return require("./config/defaults").applyWebpackOptionsDefaults;
  335. }
  336. },
  337. dependencies: {
  338. get ModuleDependency() {
  339. return require("./dependencies/ModuleDependency");
  340. },
  341. get HarmonyImportDependency() {
  342. return require("./dependencies/HarmonyImportDependency");
  343. },
  344. get ConstDependency() {
  345. return require("./dependencies/ConstDependency");
  346. },
  347. get NullDependency() {
  348. return require("./dependencies/NullDependency");
  349. }
  350. },
  351. ids: {
  352. get ChunkModuleIdRangePlugin() {
  353. return require("./ids/ChunkModuleIdRangePlugin");
  354. },
  355. get NaturalModuleIdsPlugin() {
  356. return require("./ids/NaturalModuleIdsPlugin");
  357. },
  358. get OccurrenceModuleIdsPlugin() {
  359. return require("./ids/OccurrenceModuleIdsPlugin");
  360. },
  361. get NamedModuleIdsPlugin() {
  362. return require("./ids/NamedModuleIdsPlugin");
  363. },
  364. get DeterministicChunkIdsPlugin() {
  365. return require("./ids/DeterministicChunkIdsPlugin");
  366. },
  367. get DeterministicModuleIdsPlugin() {
  368. return require("./ids/DeterministicModuleIdsPlugin");
  369. },
  370. get NamedChunkIdsPlugin() {
  371. return require("./ids/NamedChunkIdsPlugin");
  372. },
  373. get OccurrenceChunkIdsPlugin() {
  374. return require("./ids/OccurrenceChunkIdsPlugin");
  375. },
  376. get HashedModuleIdsPlugin() {
  377. return require("./ids/HashedModuleIdsPlugin");
  378. }
  379. },
  380. javascript: {
  381. get EnableChunkLoadingPlugin() {
  382. return require("./javascript/EnableChunkLoadingPlugin");
  383. },
  384. get JavascriptModulesPlugin() {
  385. return require("./javascript/JavascriptModulesPlugin");
  386. },
  387. get JavascriptParser() {
  388. return require("./javascript/JavascriptParser");
  389. }
  390. },
  391. optimize: {
  392. get AggressiveMergingPlugin() {
  393. return require("./optimize/AggressiveMergingPlugin");
  394. },
  395. get AggressiveSplittingPlugin() {
  396. return util.deprecate(
  397. () => require("./optimize/AggressiveSplittingPlugin"),
  398. "AggressiveSplittingPlugin is deprecated in favor of SplitChunksPlugin",
  399. "DEP_WEBPACK_AGGRESSIVE_SPLITTING_PLUGIN"
  400. )();
  401. },
  402. get InnerGraph() {
  403. return require("./optimize/InnerGraph");
  404. },
  405. get LimitChunkCountPlugin() {
  406. return require("./optimize/LimitChunkCountPlugin");
  407. },
  408. get MinChunkSizePlugin() {
  409. return require("./optimize/MinChunkSizePlugin");
  410. },
  411. get ModuleConcatenationPlugin() {
  412. return require("./optimize/ModuleConcatenationPlugin");
  413. },
  414. get RealContentHashPlugin() {
  415. return require("./optimize/RealContentHashPlugin");
  416. },
  417. get RuntimeChunkPlugin() {
  418. return require("./optimize/RuntimeChunkPlugin");
  419. },
  420. get SideEffectsFlagPlugin() {
  421. return require("./optimize/SideEffectsFlagPlugin");
  422. },
  423. get SplitChunksPlugin() {
  424. return require("./optimize/SplitChunksPlugin");
  425. }
  426. },
  427. runtime: {
  428. get GetChunkFilenameRuntimeModule() {
  429. return require("./runtime/GetChunkFilenameRuntimeModule");
  430. },
  431. get LoadScriptRuntimeModule() {
  432. return require("./runtime/LoadScriptRuntimeModule");
  433. }
  434. },
  435. prefetch: {
  436. get ChunkPrefetchPreloadPlugin() {
  437. return require("./prefetch/ChunkPrefetchPreloadPlugin");
  438. }
  439. },
  440. web: {
  441. get FetchCompileAsyncWasmPlugin() {
  442. return require("./web/FetchCompileAsyncWasmPlugin");
  443. },
  444. get FetchCompileWasmPlugin() {
  445. return require("./web/FetchCompileWasmPlugin");
  446. },
  447. get JsonpChunkLoadingRuntimeModule() {
  448. return require("./web/JsonpChunkLoadingRuntimeModule");
  449. },
  450. get JsonpTemplatePlugin() {
  451. return require("./web/JsonpTemplatePlugin");
  452. }
  453. },
  454. webworker: {
  455. get WebWorkerTemplatePlugin() {
  456. return require("./webworker/WebWorkerTemplatePlugin");
  457. }
  458. },
  459. node: {
  460. get NodeEnvironmentPlugin() {
  461. return require("./node/NodeEnvironmentPlugin");
  462. },
  463. get NodeSourcePlugin() {
  464. return require("./node/NodeSourcePlugin");
  465. },
  466. get NodeTargetPlugin() {
  467. return require("./node/NodeTargetPlugin");
  468. },
  469. get NodeTemplatePlugin() {
  470. return require("./node/NodeTemplatePlugin");
  471. },
  472. get ReadFileCompileWasmPlugin() {
  473. return require("./node/ReadFileCompileWasmPlugin");
  474. }
  475. },
  476. electron: {
  477. get ElectronTargetPlugin() {
  478. return require("./electron/ElectronTargetPlugin");
  479. }
  480. },
  481. wasm: {
  482. get AsyncWebAssemblyModulesPlugin() {
  483. return require("./wasm-async/AsyncWebAssemblyModulesPlugin");
  484. },
  485. get EnableWasmLoadingPlugin() {
  486. return require("./wasm/EnableWasmLoadingPlugin");
  487. }
  488. },
  489. library: {
  490. get AbstractLibraryPlugin() {
  491. return require("./library/AbstractLibraryPlugin");
  492. },
  493. get EnableLibraryPlugin() {
  494. return require("./library/EnableLibraryPlugin");
  495. }
  496. },
  497. container: {
  498. get ContainerPlugin() {
  499. return require("./container/ContainerPlugin");
  500. },
  501. get ContainerReferencePlugin() {
  502. return require("./container/ContainerReferencePlugin");
  503. },
  504. get ModuleFederationPlugin() {
  505. return require("./container/ModuleFederationPlugin");
  506. },
  507. get scope() {
  508. return require("./container/options").scope;
  509. }
  510. },
  511. sharing: {
  512. get ConsumeSharedPlugin() {
  513. return require("./sharing/ConsumeSharedPlugin");
  514. },
  515. get ProvideSharedPlugin() {
  516. return require("./sharing/ProvideSharedPlugin");
  517. },
  518. get SharePlugin() {
  519. return require("./sharing/SharePlugin");
  520. },
  521. get scope() {
  522. return require("./container/options").scope;
  523. }
  524. },
  525. debug: {
  526. get ProfilingPlugin() {
  527. return require("./debug/ProfilingPlugin");
  528. }
  529. },
  530. util: {
  531. get createHash() {
  532. return require("./util/createHash");
  533. },
  534. get comparators() {
  535. return require("./util/comparators");
  536. },
  537. get runtime() {
  538. return require("./util/runtime");
  539. },
  540. get serialization() {
  541. return require("./util/serialization");
  542. },
  543. get cleverMerge() {
  544. return require("./util/cleverMerge").cachedCleverMerge;
  545. },
  546. get LazySet() {
  547. return require("./util/LazySet");
  548. }
  549. },
  550. get sources() {
  551. return require("webpack-sources");
  552. },
  553. experiments: {
  554. schemes: {
  555. get HttpUriPlugin() {
  556. return require("./schemes/HttpUriPlugin");
  557. }
  558. },
  559. ids: {
  560. get SyncModuleIdsPlugin() {
  561. return require("./ids/SyncModuleIdsPlugin");
  562. }
  563. }
  564. }
  565. });