@moneko/core 3.11.1-beta.6 → 3.11.1-beta.8

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 (75) hide show
  1. package/lib/cjs/index.cjs +1 -0
  2. package/lib/cjs/index.d.cts +6 -0
  3. package/lib/cjs/load-module-meta.cjs +1 -0
  4. package/lib/cjs/load-module-meta.d.cts +2 -0
  5. package/lib/dev/mock.d.mts +1 -1
  6. package/lib/index.d.mts +2 -0
  7. package/lib/{index.js → index.mjs} +1 -1
  8. package/lib/options/swcrc.mjs +1 -0
  9. package/lib/plugin/lightningcss-plugin.mjs +1 -0
  10. package/lib/polyfills/polyfills.d.mts +0 -1
  11. package/lib/polyfills/polyfills.mjs +1 -0
  12. package/lib/utils/has-pkg.mjs +1 -0
  13. package/lib/utils/index.d.mts +1 -1
  14. package/lib/vm/info.mjs +1 -0
  15. package/package.json +10 -9
  16. package/lib/options/swcrc.js +0 -1
  17. package/lib/plugin/lightningcss-plugin.js +0 -1
  18. package/lib/polyfills/polyfills.js +0 -1
  19. package/lib/utils/has-pkg.js +0 -1
  20. package/lib/vm/info.js +0 -1
  21. /package/lib/build/{common.js → common.mjs} +0 -0
  22. /package/lib/build/{server.js → server.mjs} +0 -0
  23. /package/lib/{build.js → build.mjs} +0 -0
  24. /package/lib/{common.js → common.mjs} +0 -0
  25. /package/lib/{config.js → config.mjs} +0 -0
  26. /package/lib/dev/{config.js → config.mjs} +0 -0
  27. /package/lib/dev/{mock.js → mock.mjs} +0 -0
  28. /package/lib/dev/{net.js → net.mjs} +0 -0
  29. /package/lib/dev/{proxy.js → proxy.mjs} +0 -0
  30. /package/lib/{dev.js → dev.mjs} +0 -0
  31. /package/lib/loader/{lightningcss.js → lightningcss.cjs} +0 -0
  32. /package/lib/loader/{mdx.js → mdx.cjs} +0 -0
  33. /package/lib/loader/{ts-doc.js → ts-doc.cjs} +0 -0
  34. /package/lib/{module.config.js → module.config.mjs} +0 -0
  35. /package/lib/options/{css-extract.js → css-extract.mjs} +0 -0
  36. /package/lib/options/{html-plugin-option.js → html-plugin-option.mjs} +0 -0
  37. /package/lib/options/{js-minify.js → js-minify.mjs} +0 -0
  38. /package/lib/options/{jsx-dom-expressions.js → jsx-dom-expressions.mjs} +0 -0
  39. /package/lib/options/{modify-vars.js → modify-vars.mjs} +0 -0
  40. /package/lib/options/{split-chunk.js → split-chunk.mjs} +0 -0
  41. /package/lib/{paths.js → paths.mjs} +0 -0
  42. /package/lib/plugin/{add-entry-attribute.js → add-entry-attribute.mjs} +0 -0
  43. /package/lib/plugin/{done.js → done.mjs} +0 -0
  44. /package/lib/plugin/{external-remotes.js → external-remotes.mjs} +0 -0
  45. /package/lib/plugin/{module-federation.js → module-federation.mjs} +0 -0
  46. /package/lib/plugin/{override-resolve.js → override-resolve.mjs} +0 -0
  47. /package/lib/plugin/{virtual-module.js → virtual-module.mjs} +0 -0
  48. /package/lib/{plugins.config.js → plugins.config.mjs} +0 -0
  49. /package/lib/polyfills/{replace-children.js → replace-children.mjs} +0 -0
  50. /package/lib/polyfills/{targets.js → targets.mjs} +0 -0
  51. /package/lib/{process-env.js → process-env.mjs} +0 -0
  52. /package/lib/{rule.js → rule.mjs} +0 -0
  53. /package/lib/utils/{compiler-listener.js → compiler-listener.mjs} +0 -0
  54. /package/lib/utils/{esm.js → esm.mjs} +0 -0
  55. /package/lib/utils/{index.js → index.mjs} +0 -0
  56. /package/lib/utils/{log.js → log.mjs} +0 -0
  57. /package/lib/utils/{match-path.js → match-path.mjs} +0 -0
  58. /package/lib/utils/{os-tmp-dir.js → os-tmp-dir.mjs} +0 -0
  59. /package/lib/utils/{progress.js → progress.mjs} +0 -0
  60. /package/lib/utils/{reactive-object.js → reactive-object.mjs} +0 -0
  61. /package/lib/utils/{read-conf.js → read-conf.mjs} +0 -0
  62. /package/lib/utils/{resolver-sync.js → resolver-sync.mjs} +0 -0
  63. /package/lib/utils/{run.js → run.mjs} +0 -0
  64. /package/lib/utils/{seo.js → seo.mjs} +0 -0
  65. /package/lib/utils/{sigint-exit.js → sigint-exit.mjs} +0 -0
  66. /package/lib/utils/{svg-to-data-uri.js → svg-to-data-uri.mjs} +0 -0
  67. /package/lib/utils/{tfc.js → tfc.mjs} +0 -0
  68. /package/lib/vm/{coverage.js → coverage.mjs} +0 -0
  69. /package/lib/vm/{docs.js → docs.mjs} +0 -0
  70. /package/lib/vm/{example.js → example.mjs} +0 -0
  71. /package/lib/vm/{generate-doc.js → generate-doc.mjs} +0 -0
  72. /package/lib/vm/{locales.js → locales.mjs} +0 -0
  73. /package/lib/vm/{modules.js → modules.mjs} +0 -0
  74. /package/lib/vm/{routes.js → routes.mjs} +0 -0
  75. /package/lib/vm/{utils.js → utils.mjs} +0 -0
@@ -0,0 +1 @@
1
+ "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return o}});const t=(e=require("./load-module-meta.cjs"))&&e.__esModule?e:{default:e},r=(0,t.default)("core-js/package.json").version,o={coreJsVersion:r.substring(0,r.indexOf(".",2)),loadModuleMeta:t.default};
@@ -0,0 +1,6 @@
1
+ import loadModuleMeta from './load-module-meta.cjs';
2
+ declare const _default: {
3
+ coreJsVersion: any;
4
+ loadModuleMeta: typeof loadModuleMeta;
5
+ };
6
+ export default _default;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return e}});const e=function(e){return require(e)};
@@ -0,0 +1,2 @@
1
+ declare function loadModuleMeta(name: string): any;
2
+ export default loadModuleMeta;
@@ -20,7 +20,7 @@ type Any = any;
20
20
  * @param {T} data data
21
21
  * @returns {Promise} mockData
22
22
  */
23
- export declare const yApiSchemaMock: <T extends unknown>(option: YApiOptionBySchema, data?: T | undefined) => Promise<T>;
23
+ export declare const yApiSchemaMock: <T extends unknown>(option: YApiOptionBySchema, data?: T) => Promise<T>;
24
24
  export type YApiOption = {
25
25
  /** YApi host */
26
26
  host: string;
package/lib/index.d.mts CHANGED
@@ -13,4 +13,6 @@ export { default as jsxDomExpressions, type JsxDomExpressions, } from './options
13
13
  export { default as splitChunk, type OptimizationSplitChunksOptions, } from './options/split-chunk.mjs';
14
14
  export { default as Rule } from './rule.mjs';
15
15
  export type { VirtualModulePluginOption } from './plugin/virtual-module.mjs';
16
+ export declare const coreJsVersion: any;
17
+ export declare const loadModuleMeta: any;
16
18
  export type * from '../typings/global.js';
@@ -1 +1 @@
1
- export{default as paths,CUSTOMCONFIG,yarnArgv,routeDir}from"./paths.mjs";export{APPTYPE,FRAMEWORK,PACKAGENAME,PACKAGEVERSION,coreName,isDev,isLibrary,isMicro,mainDirectory}from"./process-env.mjs";export{realResolve,resolveNodeModulesPath,resolveProgramPath}from"./utils/index.mjs";export{default as log}from"./utils/log.mjs";export{default as hasPkg}from"./utils/has-pkg.mjs";export{default as osTmpDir}from"./utils/os-tmp-dir.mjs";export{yApiMock,yApiSchemaMock}from"./dev/mock.mjs";export{getIPv4,getPort}from"./dev/net.mjs";export{default as jsxDomExpressions}from"./options/jsx-dom-expressions.mjs";export{default as splitChunk}from"./options/split-chunk.mjs";export{default as Rule}from"./rule.mjs";
1
+ export{default as paths,CUSTOMCONFIG,yarnArgv,routeDir}from"./paths.mjs";export{APPTYPE,FRAMEWORK,PACKAGENAME,PACKAGEVERSION,coreName,isDev,isLibrary,isMicro,mainDirectory}from"./process-env.mjs";export{realResolve,resolveNodeModulesPath,resolveProgramPath}from"./utils/index.mjs";export{default as log}from"./utils/log.mjs";export{default as hasPkg}from"./utils/has-pkg.mjs";export{default as osTmpDir}from"./utils/os-tmp-dir.mjs";export{yApiMock,yApiSchemaMock}from"./dev/mock.mjs";export{getIPv4,getPort}from"./dev/net.mjs";export{default as jsxDomExpressions}from"./options/jsx-dom-expressions.mjs";export{default as splitChunk}from"./options/split-chunk.mjs";export{default as Rule}from"./rule.mjs";import o from"./cjs/index.cjs";let e=o.default;export const coreJsVersion=e.coreJsVersion;export const loadModuleMeta=e.loadModuleMeta;
@@ -0,0 +1 @@
1
+ import{merge as e}from"webpack-merge";import{CONFIG as r}from"../config.mjs";import o from"../paths.mjs";import{coreJsVersion as t}from"../index.mjs";import s from"../polyfills/polyfills.mjs";import{isDev as m,isReact as a,isSolid as p,jsxImportSource as i}from"../process-env.mjs";let l=function(e){for(let r=0,o=Object.keys(e),t=o.length;r<t;r++)e[o[r]].transform=`${o[r]}/${e[o[r]].transform}`,e[o[r]].style&&(e[o[r]].style=`${o[r]}/${e[o[r]].style}`);return e}(r.importOnDemand||{}),n={include:s(),mode:"entry",coreJs:t};export default(t=>e({module:{type:"es6",resolveFully:!0},jsc:{parser:{syntax:"typescript",tsx:!0,decorators:!0,dynamicImport:!0},loose:!0,target:r.polyfill?void 0:"es2017",externalHelpers:!1,transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:"automatic",throwIfNamespace:!0,refresh:a&&m,development:m,importSource:i},optimizer:{simplify:!1}},experimental:{emitAssertForImportAttributes:!0,cacheRoot:o.swcCachePath,plugins:[["@moneko/transform-imports",l],p&&["@moneko/jsx-dom-expressions",{...r.jsxDomExpressions,generate:t?"ssr":"dom",hydratable:t}]].filter(Boolean)}},env:r.polyfill?n:void 0,sourceMaps:!0,parseMap:!0},"function"==typeof r.swcrc?r.swcrc(m):r.swcrc||{}));
@@ -0,0 +1 @@
1
+ import{Buffer as s}from"buffer";import{transform as t}from"lightningcss";import i from"webpack";import{loadModuleMeta as n,paths as o}from"../index.mjs";let{sources:{RawSource:e,SourceMapSource:r},ModuleFilenameHelpers:{matchObject:a}}=i,m="lightning-css-minify",p=/\.css(?:\?.*)?$/i,{name:f,version:c}=n(`${o.programPath}/package.json`);export class LightningCssMinifyPlugin{constructor(s={}){let{implementation:i,...n}=s;if(i&&"function"!=typeof i.transform)throw TypeError(`[LightningCssMinifyPlugin]: implementation.transform must be an 'lightningcss' transform function. Received ${typeof i.transform}`);this.transform=i?.transform??t,this.options=n}apply(s){let t=JSON.stringify({name:f,version:c,options:this.options});s.hooks.compilation.tap(m,s=>{s.hooks.chunkHash.tap(m,(s,i)=>i.update(t)),s.hooks.processAssets.tapPromise({name:m,stage:s.constructor.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,additionalAssets:!0},async()=>await this.transformAssets(s)),s.hooks.statsPrinter.tap(m,s=>{s.hooks.print.for("asset.info.minimized").tap(m,(s,{green:t,formatFlag:i})=>s&&t&&i?t(i("minimized")):void 0)})})}async transformAssets(t){let{options:{devtool:i}}=t.compiler,{include:n,exclude:o,test:m,sourceMap:f=!!(i&&i.includes("source-map")),...c}=this.options,l=t.getAssets().filter(s=>!s.info.minimized&&(m||p).test(s.name)&&a({include:n,exclude:o},s.name));await Promise.all(l.map(async i=>{let n;let{source:o,map:a}=i.source.sourceAndMap(),m=o.toString(),p="string"==typeof o?s.from(o):o,l=this.transform({filename:i.name,code:p,minify:!0,sourceMap:f,...c}),g=l.code.toString();n=f?new r(g,i.name,JSON.parse(l.map.toString()),m,a,!0):new e(g),t.updateAsset(i.name,n,{...i.info,minimized:!0})}))}}
@@ -1,3 +1,2 @@
1
- export declare const coreJsVersion: any;
2
1
  declare function polyfills(): string[];
3
2
  export default polyfills;
@@ -0,0 +1 @@
1
+ import r from"core-js-compat";import{getBrowsersTargets as t}from"./targets.mjs";import{coreJsVersion as o}from"../index.mjs";export default function(){return r({targets:t(),version:o}).list}
@@ -0,0 +1 @@
1
+ import{loadModuleMeta as r}from"../index.mjs";export default function(t){try{return r(`${t}/package.json`),!0}catch(r){return!1}}
@@ -10,7 +10,7 @@ export declare function resolveProgramPath<T extends string>(src: T): ProgramPat
10
10
  * @param {string} src 路径
11
11
  * @returns {string} 位于项目根目录node_modules下的位置
12
12
  */
13
- export declare const resolveNodeModulesPath: <T extends string>(src: T) => `${`node_modules/${T extends string ? T : string}` extends infer T_1 ? T_1 extends `node_modules/${T extends string ? T : string}` ? T_1 extends string ? T_1 : string : never : never}`;
13
+ export declare const resolveNodeModulesPath: <T extends string>(src: T) => NodeModulesPath<T>;
14
14
  export declare function node_modules<T extends string>(name: T): `node_modules/${T}`;
15
15
  /** 获取模块真实入口位置
16
16
  * @param {string} url 路径
@@ -0,0 +1 @@
1
+ import{CONFIG as r}from"../config.mjs";import{APPTYPE as e,PACKAGENAME as o,PACKAGEVERSION as t,SSR as s}from"../process-env.mjs";import{toUpperCaseString as i}from"../utils/index.mjs";import{loadModuleMeta as p,paths as m}from"../index.mjs";let{description:n,author:a,repository:c,keywords:d}=p(`${m.programPath}/package.json`),f="string"==typeof a,l={name:o,projectName:i(o).replace(/-/g," "),ssr:s,version:t,base:r.basename,type:e,routerMode:r.routerMode,prefixCls:r.prefixCls,theme:r.theme,description:n,author:f?{name:a}:a,repository:f?{url:c}:c};export const description=n;export const keywords=Array.isArray(d)?d.toString():"";export default l;
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@moneko/core",
3
- "version": "3.11.1-beta.6",
3
+ "version": "3.11.1-beta.8",
4
4
  "description": "core",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",
7
7
  "scripts": {
8
8
  "build": "rm -rf ./lib && tsc && swc src -d lib --strip-leading-paths -D",
9
9
  "postbuild": "npm run cjs && npm run mjs",
10
- "cjs": "find ./lib/loader/ -type f -name \"*.js\" -execdir bash -c 'mv \"$1\" \"${1%.js}.cjs\"' _ {} \\;",
10
+ "postcjs": "find ./lib/loader/ -type f -name \"*.js\" -execdir bash -c 'mv \"$1\" \"${1%.js}.cjs\"' _ {} \\;",
11
+ "cjs": "find ./lib/cjs/ -type f -name \"*.js\" -execdir bash -c 'mv \"$1\" \"${1%.js}.cjs\"' _ {} \\;",
11
12
  "mjs": "find ./lib/ -type f -name \"*.js\" -execdir bash -c 'mv \"$1\" \"${1%.js}.mjs\"' _ {} \\;"
12
13
  },
13
14
  "keywords": [],
@@ -16,14 +17,14 @@
16
17
  "dependencies": {
17
18
  "@moneko/mdx": "0.1.26",
18
19
  "@moneko/transform-imports": "0.4.0",
19
- "@swc/core": "1.4.12",
20
+ "@swc/core": "1.4.14",
20
21
  "add-asset-html-webpack-plugin": "6.0.0",
21
22
  "browserslist": "4.23.0",
22
23
  "chalk": "5.3.0",
23
24
  "chokidar": "3.6.0",
24
25
  "core-js": "3.36.1",
25
26
  "core-js-compat": "3.36.1",
26
- "css-loader": "7.0.0",
27
+ "css-loader": "7.1.1",
27
28
  "enhanced-resolve": "5.16.0",
28
29
  "express": "4.19.2",
29
30
  "html-webpack-plugin": "5.6.0",
@@ -34,12 +35,12 @@
34
35
  "mini-css-extract-plugin": "2.8.1",
35
36
  "mock-json-schema": "1.1.1",
36
37
  "multer": "1.4.5-lts.1",
37
- "style-loader": "3.3.4",
38
+ "style-loader": "4.0.0",
38
39
  "swc-loader": "0.2.6",
39
40
  "terser-webpack-plugin": "5.3.10",
40
- "typescript": "5.3.3",
41
+ "typescript": "5.4.5",
41
42
  "webpack": "5.91.0",
42
- "webpack-bundle-analyzer": "4.10.1",
43
+ "webpack-bundle-analyzer": "4.10.2",
43
44
  "webpack-dev-middleware": "7.2.1",
44
45
  "webpack-hot-middleware": "2.26.1",
45
46
  "webpack-merge": "5.10.0",
@@ -51,8 +52,8 @@
51
52
  "@swc/cli": "0.3.12",
52
53
  "@types/express": "4.17.21",
53
54
  "@types/multer": "1.4.11",
54
- "sass": "1.74.1",
55
- "sass-loader": "14.1.1"
55
+ "sass": "1.75.0",
56
+ "sass-loader": "14.2.0"
56
57
  },
57
58
  "files": [
58
59
  "lib",
@@ -1 +0,0 @@
1
- import{merge as e}from"webpack-merge";import{CONFIG as r}from"../config.mjs";import o from"../paths.mjs";import t,{coreJsVersion as s}from"../polyfills/polyfills.mjs";import{isDev as m,isReact as a,isSolid as l,jsxImportSource as p}from"../process-env.mjs";let i=function(e){for(let r=0,o=Object.keys(e),t=o.length;r<t;r++)e[o[r]].transform=`${o[r]}/${e[o[r]].transform}`,e[o[r]].style&&(e[o[r]].style=`${o[r]}/${e[o[r]].style}`);return e}(r.importOnDemand||{}),c={include:t(),mode:"entry",coreJs:s};export default(t=>e({module:{type:"es6",resolveFully:!0},jsc:{parser:{syntax:"typescript",tsx:!0,decorators:!0,dynamicImport:!0},loose:!0,target:r.polyfill?void 0:"es2017",externalHelpers:!1,transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:"automatic",throwIfNamespace:!0,refresh:a&&m,development:m,importSource:p},optimizer:{simplify:!1}},experimental:{emitAssertForImportAttributes:!0,cacheRoot:o.swcCachePath,plugins:[["@moneko/transform-imports",i],l&&["@moneko/jsx-dom-expressions",{...r.jsxDomExpressions,generate:t?"ssr":"dom",hydratable:t}]].filter(Boolean)}},env:r.polyfill?c:void 0,sourceMaps:!0,parseMap:!0},"function"==typeof r.swcrc?r.swcrc(m):r.swcrc||{}));
@@ -1 +0,0 @@
1
- import{Buffer as s}from"buffer";import{loadFileSync as t}from"@moneko/mdx";import{transform as i}from"lightningcss";import o from"webpack";let{sources:{RawSource:n,SourceMapSource:e},ModuleFilenameHelpers:{matchObject:r}}=o,a="lightning-css-minify",m=/\.css(?:\?.*)?$/i,{name:p,version:f}=JSON.parse(t(`${process.cwd()}/package.json`)||"{}");export class LightningCssMinifyPlugin{constructor(s={}){let{implementation:t,...o}=s;if(t&&"function"!=typeof t.transform)throw TypeError(`[LightningCssMinifyPlugin]: implementation.transform must be an 'lightningcss' transform function. Received ${typeof t.transform}`);this.transform=t?.transform??i,this.options=o}apply(s){let t=JSON.stringify({name:p,version:f,options:this.options});s.hooks.compilation.tap(a,s=>{s.hooks.chunkHash.tap(a,(s,i)=>i.update(t)),s.hooks.processAssets.tapPromise({name:a,stage:s.constructor.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,additionalAssets:!0},async()=>await this.transformAssets(s)),s.hooks.statsPrinter.tap(a,s=>{s.hooks.print.for("asset.info.minimized").tap(a,(s,{green:t,formatFlag:i})=>s&&t&&i?t(i("minimized")):void 0)})})}async transformAssets(t){let{options:{devtool:i}}=t.compiler,{include:o,exclude:a,test:p,sourceMap:f=!!(i&&i.includes("source-map")),...c}=this.options,l=t.getAssets().filter(s=>!s.info.minimized&&(p||m).test(s.name)&&r({include:o,exclude:a},s.name));await Promise.all(l.map(async i=>{let o;let{source:r,map:a}=i.source.sourceAndMap(),m=r.toString(),p="string"==typeof r?s.from(r):r,l=this.transform({filename:i.name,code:p,minify:!0,sourceMap:f,...c}),g=l.code.toString();o=f?new e(g,i.name,JSON.parse(l.map.toString()),m,a,!0):new n(g),t.updateAsset(i.name,o,{...i.info,minimized:!0})}))}}
@@ -1 +0,0 @@
1
- import o from"core-js-compat";import{getBrowsersTargets as r}from"./targets.mjs";import{resolve as e}from"path";import{loadFileSync as t}from"@moneko/mdx";let{version:s}=JSON.parse(t(e("node_modules/core-js/package.json"))||"{}");export const coreJsVersion=s.substring(0,s.indexOf(".",2));export default function(){return o({targets:r(),version:coreJsVersion}).list}
@@ -1 +0,0 @@
1
- import{fileExists as o}from"@moneko/mdx";import{resolveNodeModulesPath as m}from"./index.mjs";export default function(r){return o(m(`${r}/package.json`))}
package/lib/vm/info.js DELETED
@@ -1 +0,0 @@
1
- import{loadFileSync as e}from"@moneko/mdx";import{CONFIG as r}from"../config.mjs";import{APPTYPE as o,PACKAGENAME as t,PACKAGEVERSION as s,SSR as i}from"../process-env.mjs";import{resolveProgramPath as p,toUpperCaseString as m}from"../utils/index.mjs";let{description:n,author:a,repository:c,keywords:d}=JSON.parse(e(p("package.json"))||"{}"),f="string"==typeof a,l={name:t,projectName:m(t).replace(/-/g," "),ssr:i,version:s,base:r.basename,type:o,routerMode:r.routerMode,prefixCls:r.prefixCls,theme:r.theme,description:n,author:f?{name:a}:a,repository:f?{url:c}:c};export const description=n;export const keywords=Array.isArray(d)?d.toString():"";export default l;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes