commit 81e00a53438e63d5857495194fa1c0017f2dbaf7 Author: LeJingS <157603342+LeJingS@users.noreply.github.com> Date: Mon Dec 2 11:10:51 2024 +0800 迁移 diff --git a/game.01/.gitignore b/game.01/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/game.01/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/game.01/.idea/misc.xml b/game.01/.idea/misc.xml new file mode 100644 index 0000000..5d49fc4 --- /dev/null +++ b/game.01/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/game.01/.idea/modules.xml b/game.01/.idea/modules.xml new file mode 100644 index 0000000..26d7b6a --- /dev/null +++ b/game.01/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/game.01/.idea/uiDesigner.xml b/game.01/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/game.01/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game.01/.idea/vcs.xml b/game.01/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/game.01/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/game.01/.idea/workspace.xml b/game.01/.idea/workspace.xml new file mode 100644 index 0000000..899b318 --- /dev/null +++ b/game.01/.idea/workspace.xml @@ -0,0 +1,701 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1732338068012 + + + + + + + + + + + + \ No newline at end of file diff --git a/game.01/game.iml b/game.01/game.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/game.01/game.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/game.01/image/about.png b/game.01/image/about.png new file mode 100644 index 0000000..1ad58ab Binary files /dev/null and b/game.01/image/about.png differ diff --git a/game.01/image/animal/animal1/1.jpg b/game.01/image/animal/animal1/1.jpg new file mode 100644 index 0000000..5affdb0 Binary files /dev/null and b/game.01/image/animal/animal1/1.jpg differ diff --git a/game.01/image/animal/animal1/10.jpg b/game.01/image/animal/animal1/10.jpg new file mode 100644 index 0000000..94a3e99 Binary files /dev/null and b/game.01/image/animal/animal1/10.jpg differ diff --git a/game.01/image/animal/animal1/11.jpg b/game.01/image/animal/animal1/11.jpg new file mode 100644 index 0000000..ba8dfce Binary files /dev/null and b/game.01/image/animal/animal1/11.jpg differ diff --git a/game.01/image/animal/animal1/12.jpg b/game.01/image/animal/animal1/12.jpg new file mode 100644 index 0000000..3665e47 Binary files /dev/null and b/game.01/image/animal/animal1/12.jpg differ diff --git a/game.01/image/animal/animal1/13.jpg b/game.01/image/animal/animal1/13.jpg new file mode 100644 index 0000000..cb2ce0e Binary files /dev/null and b/game.01/image/animal/animal1/13.jpg differ diff --git a/game.01/image/animal/animal1/14.jpg b/game.01/image/animal/animal1/14.jpg new file mode 100644 index 0000000..039773a Binary files /dev/null and b/game.01/image/animal/animal1/14.jpg differ diff --git a/game.01/image/animal/animal1/15.jpg b/game.01/image/animal/animal1/15.jpg new file mode 100644 index 0000000..a953acd Binary files /dev/null and b/game.01/image/animal/animal1/15.jpg differ diff --git a/game.01/image/animal/animal1/16.jpg b/game.01/image/animal/animal1/16.jpg new file mode 100644 index 0000000..6704e66 Binary files /dev/null and b/game.01/image/animal/animal1/16.jpg differ diff --git a/game.01/image/animal/animal1/2.jpg b/game.01/image/animal/animal1/2.jpg new file mode 100644 index 0000000..5a6eb83 Binary files /dev/null and b/game.01/image/animal/animal1/2.jpg differ diff --git a/game.01/image/animal/animal1/3.jpg b/game.01/image/animal/animal1/3.jpg new file mode 100644 index 0000000..8e5e076 Binary files /dev/null and b/game.01/image/animal/animal1/3.jpg differ diff --git a/game.01/image/animal/animal1/4.jpg b/game.01/image/animal/animal1/4.jpg new file mode 100644 index 0000000..995ea0c Binary files /dev/null and b/game.01/image/animal/animal1/4.jpg differ diff --git a/game.01/image/animal/animal1/5.jpg b/game.01/image/animal/animal1/5.jpg new file mode 100644 index 0000000..fc35fa2 Binary files /dev/null and b/game.01/image/animal/animal1/5.jpg differ diff --git a/game.01/image/animal/animal1/6.jpg b/game.01/image/animal/animal1/6.jpg new file mode 100644 index 0000000..58e6695 Binary files /dev/null and b/game.01/image/animal/animal1/6.jpg differ diff --git a/game.01/image/animal/animal1/7.jpg b/game.01/image/animal/animal1/7.jpg new file mode 100644 index 0000000..b78cddc Binary files /dev/null and b/game.01/image/animal/animal1/7.jpg differ diff --git a/game.01/image/animal/animal1/8.jpg b/game.01/image/animal/animal1/8.jpg new file mode 100644 index 0000000..8403175 Binary files /dev/null and b/game.01/image/animal/animal1/8.jpg differ diff --git a/game.01/image/animal/animal1/9.jpg b/game.01/image/animal/animal1/9.jpg new file mode 100644 index 0000000..bf40565 Binary files /dev/null and b/game.01/image/animal/animal1/9.jpg differ diff --git a/game.01/image/animal/animal1/all.jpg b/game.01/image/animal/animal1/all.jpg new file mode 100644 index 0000000..7d484f2 Binary files /dev/null and b/game.01/image/animal/animal1/all.jpg differ diff --git a/game.01/image/animal/animal2/1.jpg b/game.01/image/animal/animal2/1.jpg new file mode 100644 index 0000000..7db602d Binary files /dev/null and b/game.01/image/animal/animal2/1.jpg differ diff --git a/game.01/image/animal/animal2/10.jpg b/game.01/image/animal/animal2/10.jpg new file mode 100644 index 0000000..f82f26e Binary files /dev/null and b/game.01/image/animal/animal2/10.jpg differ diff --git a/game.01/image/animal/animal2/11.jpg b/game.01/image/animal/animal2/11.jpg new file mode 100644 index 0000000..e3e85f6 Binary files /dev/null and b/game.01/image/animal/animal2/11.jpg differ diff --git a/game.01/image/animal/animal2/12.jpg b/game.01/image/animal/animal2/12.jpg new file mode 100644 index 0000000..04d3c1c Binary files /dev/null and b/game.01/image/animal/animal2/12.jpg differ diff --git a/game.01/image/animal/animal2/13.jpg b/game.01/image/animal/animal2/13.jpg new file mode 100644 index 0000000..c84c01c Binary files /dev/null and b/game.01/image/animal/animal2/13.jpg differ diff --git a/game.01/image/animal/animal2/14.jpg b/game.01/image/animal/animal2/14.jpg new file mode 100644 index 0000000..d5bcda8 Binary files /dev/null and b/game.01/image/animal/animal2/14.jpg differ diff --git a/game.01/image/animal/animal2/15.jpg b/game.01/image/animal/animal2/15.jpg new file mode 100644 index 0000000..6e4666e Binary files /dev/null and b/game.01/image/animal/animal2/15.jpg differ diff --git a/game.01/image/animal/animal2/16.jpg b/game.01/image/animal/animal2/16.jpg new file mode 100644 index 0000000..77ba0e1 Binary files /dev/null and b/game.01/image/animal/animal2/16.jpg differ diff --git a/game.01/image/animal/animal2/2.jpg b/game.01/image/animal/animal2/2.jpg new file mode 100644 index 0000000..5cecd5b Binary files /dev/null and b/game.01/image/animal/animal2/2.jpg differ diff --git a/game.01/image/animal/animal2/3.jpg b/game.01/image/animal/animal2/3.jpg new file mode 100644 index 0000000..a50e0e5 Binary files /dev/null and b/game.01/image/animal/animal2/3.jpg differ diff --git a/game.01/image/animal/animal2/4.jpg b/game.01/image/animal/animal2/4.jpg new file mode 100644 index 0000000..f11f182 Binary files /dev/null and b/game.01/image/animal/animal2/4.jpg differ diff --git a/game.01/image/animal/animal2/5.jpg b/game.01/image/animal/animal2/5.jpg new file mode 100644 index 0000000..12eedc3 Binary files /dev/null and b/game.01/image/animal/animal2/5.jpg differ diff --git a/game.01/image/animal/animal2/6.jpg b/game.01/image/animal/animal2/6.jpg new file mode 100644 index 0000000..ddfe24a Binary files /dev/null and b/game.01/image/animal/animal2/6.jpg differ diff --git a/game.01/image/animal/animal2/7.jpg b/game.01/image/animal/animal2/7.jpg new file mode 100644 index 0000000..b949eb5 Binary files /dev/null and b/game.01/image/animal/animal2/7.jpg differ diff --git a/game.01/image/animal/animal2/8.jpg b/game.01/image/animal/animal2/8.jpg new file mode 100644 index 0000000..beaa735 Binary files /dev/null and b/game.01/image/animal/animal2/8.jpg differ diff --git a/game.01/image/animal/animal2/9.jpg b/game.01/image/animal/animal2/9.jpg new file mode 100644 index 0000000..67fad67 Binary files /dev/null and b/game.01/image/animal/animal2/9.jpg differ diff --git a/game.01/image/animal/animal2/all.jpg b/game.01/image/animal/animal2/all.jpg new file mode 100644 index 0000000..f1e33ce Binary files /dev/null and b/game.01/image/animal/animal2/all.jpg differ diff --git a/game.01/image/animal/animal3/1.jpg b/game.01/image/animal/animal3/1.jpg new file mode 100644 index 0000000..f7f5776 Binary files /dev/null and b/game.01/image/animal/animal3/1.jpg differ diff --git a/game.01/image/animal/animal3/10.jpg b/game.01/image/animal/animal3/10.jpg new file mode 100644 index 0000000..d882904 Binary files /dev/null and b/game.01/image/animal/animal3/10.jpg differ diff --git a/game.01/image/animal/animal3/11.jpg b/game.01/image/animal/animal3/11.jpg new file mode 100644 index 0000000..085b097 Binary files /dev/null and b/game.01/image/animal/animal3/11.jpg differ diff --git a/game.01/image/animal/animal3/12.jpg b/game.01/image/animal/animal3/12.jpg new file mode 100644 index 0000000..8ecf8c3 Binary files /dev/null and b/game.01/image/animal/animal3/12.jpg differ diff --git a/game.01/image/animal/animal3/13.jpg b/game.01/image/animal/animal3/13.jpg new file mode 100644 index 0000000..361ac40 Binary files /dev/null and b/game.01/image/animal/animal3/13.jpg differ diff --git a/game.01/image/animal/animal3/14.jpg b/game.01/image/animal/animal3/14.jpg new file mode 100644 index 0000000..365c8a2 Binary files /dev/null and b/game.01/image/animal/animal3/14.jpg differ diff --git a/game.01/image/animal/animal3/15.jpg b/game.01/image/animal/animal3/15.jpg new file mode 100644 index 0000000..161f6c2 Binary files /dev/null and b/game.01/image/animal/animal3/15.jpg differ diff --git a/game.01/image/animal/animal3/2.jpg b/game.01/image/animal/animal3/2.jpg new file mode 100644 index 0000000..f10cd77 Binary files /dev/null and b/game.01/image/animal/animal3/2.jpg differ diff --git a/game.01/image/animal/animal3/3.jpg b/game.01/image/animal/animal3/3.jpg new file mode 100644 index 0000000..705fa86 Binary files /dev/null and b/game.01/image/animal/animal3/3.jpg differ diff --git a/game.01/image/animal/animal3/4.jpg b/game.01/image/animal/animal3/4.jpg new file mode 100644 index 0000000..d735c51 Binary files /dev/null and b/game.01/image/animal/animal3/4.jpg differ diff --git a/game.01/image/animal/animal3/5.jpg b/game.01/image/animal/animal3/5.jpg new file mode 100644 index 0000000..6b9dcce Binary files /dev/null and b/game.01/image/animal/animal3/5.jpg differ diff --git a/game.01/image/animal/animal3/6.jpg b/game.01/image/animal/animal3/6.jpg new file mode 100644 index 0000000..ee301f5 Binary files /dev/null and b/game.01/image/animal/animal3/6.jpg differ diff --git a/game.01/image/animal/animal3/7.jpg b/game.01/image/animal/animal3/7.jpg new file mode 100644 index 0000000..8a0eb78 Binary files /dev/null and b/game.01/image/animal/animal3/7.jpg differ diff --git a/game.01/image/animal/animal3/8.jpg b/game.01/image/animal/animal3/8.jpg new file mode 100644 index 0000000..38fd3f2 Binary files /dev/null and b/game.01/image/animal/animal3/8.jpg differ diff --git a/game.01/image/animal/animal3/9.jpg b/game.01/image/animal/animal3/9.jpg new file mode 100644 index 0000000..3c354f3 Binary files /dev/null and b/game.01/image/animal/animal3/9.jpg differ diff --git a/game.01/image/animal/animal3/all.jpg b/game.01/image/animal/animal3/all.jpg new file mode 100644 index 0000000..7d9799c Binary files /dev/null and b/game.01/image/animal/animal3/all.jpg differ diff --git a/game.01/image/animal/animal4/1.jpg b/game.01/image/animal/animal4/1.jpg new file mode 100644 index 0000000..a8d4d9b Binary files /dev/null and b/game.01/image/animal/animal4/1.jpg differ diff --git a/game.01/image/animal/animal4/10.jpg b/game.01/image/animal/animal4/10.jpg new file mode 100644 index 0000000..409240a Binary files /dev/null and b/game.01/image/animal/animal4/10.jpg differ diff --git a/game.01/image/animal/animal4/11.jpg b/game.01/image/animal/animal4/11.jpg new file mode 100644 index 0000000..1f2a299 Binary files /dev/null and b/game.01/image/animal/animal4/11.jpg differ diff --git a/game.01/image/animal/animal4/12.jpg b/game.01/image/animal/animal4/12.jpg new file mode 100644 index 0000000..b666311 Binary files /dev/null and b/game.01/image/animal/animal4/12.jpg differ diff --git a/game.01/image/animal/animal4/13.jpg b/game.01/image/animal/animal4/13.jpg new file mode 100644 index 0000000..fec5d31 Binary files /dev/null and b/game.01/image/animal/animal4/13.jpg differ diff --git a/game.01/image/animal/animal4/14.jpg b/game.01/image/animal/animal4/14.jpg new file mode 100644 index 0000000..305f497 Binary files /dev/null and b/game.01/image/animal/animal4/14.jpg differ diff --git a/game.01/image/animal/animal4/15.jpg b/game.01/image/animal/animal4/15.jpg new file mode 100644 index 0000000..f77baf2 Binary files /dev/null and b/game.01/image/animal/animal4/15.jpg differ diff --git a/game.01/image/animal/animal4/16.jpg b/game.01/image/animal/animal4/16.jpg new file mode 100644 index 0000000..d01d0d2 Binary files /dev/null and b/game.01/image/animal/animal4/16.jpg differ diff --git a/game.01/image/animal/animal4/2.jpg b/game.01/image/animal/animal4/2.jpg new file mode 100644 index 0000000..633e2cc Binary files /dev/null and b/game.01/image/animal/animal4/2.jpg differ diff --git a/game.01/image/animal/animal4/3.jpg b/game.01/image/animal/animal4/3.jpg new file mode 100644 index 0000000..23d7319 Binary files /dev/null and b/game.01/image/animal/animal4/3.jpg differ diff --git a/game.01/image/animal/animal4/4.jpg b/game.01/image/animal/animal4/4.jpg new file mode 100644 index 0000000..9e3e3c6 Binary files /dev/null and b/game.01/image/animal/animal4/4.jpg differ diff --git a/game.01/image/animal/animal4/5.jpg b/game.01/image/animal/animal4/5.jpg new file mode 100644 index 0000000..5fa5cd8 Binary files /dev/null and b/game.01/image/animal/animal4/5.jpg differ diff --git a/game.01/image/animal/animal4/6.jpg b/game.01/image/animal/animal4/6.jpg new file mode 100644 index 0000000..77b8ef7 Binary files /dev/null and b/game.01/image/animal/animal4/6.jpg differ diff --git a/game.01/image/animal/animal4/7.jpg b/game.01/image/animal/animal4/7.jpg new file mode 100644 index 0000000..f385425 Binary files /dev/null and b/game.01/image/animal/animal4/7.jpg differ diff --git a/game.01/image/animal/animal4/8.jpg b/game.01/image/animal/animal4/8.jpg new file mode 100644 index 0000000..a8c0413 Binary files /dev/null and b/game.01/image/animal/animal4/8.jpg differ diff --git a/game.01/image/animal/animal4/9.jpg b/game.01/image/animal/animal4/9.jpg new file mode 100644 index 0000000..71d6ac9 Binary files /dev/null and b/game.01/image/animal/animal4/9.jpg differ diff --git a/game.01/image/animal/animal4/all.jpg b/game.01/image/animal/animal4/all.jpg new file mode 100644 index 0000000..7a2cce3 Binary files /dev/null and b/game.01/image/animal/animal4/all.jpg differ diff --git a/game.01/image/animal/animal5/1.jpg b/game.01/image/animal/animal5/1.jpg new file mode 100644 index 0000000..2e7f96b Binary files /dev/null and b/game.01/image/animal/animal5/1.jpg differ diff --git a/game.01/image/animal/animal5/10.jpg b/game.01/image/animal/animal5/10.jpg new file mode 100644 index 0000000..4df4d9a Binary files /dev/null and b/game.01/image/animal/animal5/10.jpg differ diff --git a/game.01/image/animal/animal5/11.jpg b/game.01/image/animal/animal5/11.jpg new file mode 100644 index 0000000..7afb5ef Binary files /dev/null and b/game.01/image/animal/animal5/11.jpg differ diff --git a/game.01/image/animal/animal5/12.jpg b/game.01/image/animal/animal5/12.jpg new file mode 100644 index 0000000..0317128 Binary files /dev/null and b/game.01/image/animal/animal5/12.jpg differ diff --git a/game.01/image/animal/animal5/13.jpg b/game.01/image/animal/animal5/13.jpg new file mode 100644 index 0000000..b042dfa Binary files /dev/null and b/game.01/image/animal/animal5/13.jpg differ diff --git a/game.01/image/animal/animal5/14.jpg b/game.01/image/animal/animal5/14.jpg new file mode 100644 index 0000000..ffbc357 Binary files /dev/null and b/game.01/image/animal/animal5/14.jpg differ diff --git a/game.01/image/animal/animal5/15.jpg b/game.01/image/animal/animal5/15.jpg new file mode 100644 index 0000000..41c9ccb Binary files /dev/null and b/game.01/image/animal/animal5/15.jpg differ diff --git a/game.01/image/animal/animal5/16.jpg b/game.01/image/animal/animal5/16.jpg new file mode 100644 index 0000000..994dabd Binary files /dev/null and b/game.01/image/animal/animal5/16.jpg differ diff --git a/game.01/image/animal/animal5/2.jpg b/game.01/image/animal/animal5/2.jpg new file mode 100644 index 0000000..2f860d2 Binary files /dev/null and b/game.01/image/animal/animal5/2.jpg differ diff --git a/game.01/image/animal/animal5/3.jpg b/game.01/image/animal/animal5/3.jpg new file mode 100644 index 0000000..87fcc9c Binary files /dev/null and b/game.01/image/animal/animal5/3.jpg differ diff --git a/game.01/image/animal/animal5/4.jpg b/game.01/image/animal/animal5/4.jpg new file mode 100644 index 0000000..d86eb1f Binary files /dev/null and b/game.01/image/animal/animal5/4.jpg differ diff --git a/game.01/image/animal/animal5/5.jpg b/game.01/image/animal/animal5/5.jpg new file mode 100644 index 0000000..281c0e2 Binary files /dev/null and b/game.01/image/animal/animal5/5.jpg differ diff --git a/game.01/image/animal/animal5/6.jpg b/game.01/image/animal/animal5/6.jpg new file mode 100644 index 0000000..349ec2d Binary files /dev/null and b/game.01/image/animal/animal5/6.jpg differ diff --git a/game.01/image/animal/animal5/7.jpg b/game.01/image/animal/animal5/7.jpg new file mode 100644 index 0000000..bebb511 Binary files /dev/null and b/game.01/image/animal/animal5/7.jpg differ diff --git a/game.01/image/animal/animal5/8.jpg b/game.01/image/animal/animal5/8.jpg new file mode 100644 index 0000000..1b8eb98 Binary files /dev/null and b/game.01/image/animal/animal5/8.jpg differ diff --git a/game.01/image/animal/animal5/9.jpg b/game.01/image/animal/animal5/9.jpg new file mode 100644 index 0000000..eead4dc Binary files /dev/null and b/game.01/image/animal/animal5/9.jpg differ diff --git a/game.01/image/animal/animal5/all.jpg b/game.01/image/animal/animal5/all.jpg new file mode 100644 index 0000000..923d25f Binary files /dev/null and b/game.01/image/animal/animal5/all.jpg differ diff --git a/game.01/image/animal/animal6/1.jpg b/game.01/image/animal/animal6/1.jpg new file mode 100644 index 0000000..3e6cac8 Binary files /dev/null and b/game.01/image/animal/animal6/1.jpg differ diff --git a/game.01/image/animal/animal6/10.jpg b/game.01/image/animal/animal6/10.jpg new file mode 100644 index 0000000..ece6815 Binary files /dev/null and b/game.01/image/animal/animal6/10.jpg differ diff --git a/game.01/image/animal/animal6/11.jpg b/game.01/image/animal/animal6/11.jpg new file mode 100644 index 0000000..4dc9c98 Binary files /dev/null and b/game.01/image/animal/animal6/11.jpg differ diff --git a/game.01/image/animal/animal6/12.jpg b/game.01/image/animal/animal6/12.jpg new file mode 100644 index 0000000..25273cd Binary files /dev/null and b/game.01/image/animal/animal6/12.jpg differ diff --git a/game.01/image/animal/animal6/13.jpg b/game.01/image/animal/animal6/13.jpg new file mode 100644 index 0000000..9793997 Binary files /dev/null and b/game.01/image/animal/animal6/13.jpg differ diff --git a/game.01/image/animal/animal6/14.jpg b/game.01/image/animal/animal6/14.jpg new file mode 100644 index 0000000..8602160 Binary files /dev/null and b/game.01/image/animal/animal6/14.jpg differ diff --git a/game.01/image/animal/animal6/15.jpg b/game.01/image/animal/animal6/15.jpg new file mode 100644 index 0000000..900a48e Binary files /dev/null and b/game.01/image/animal/animal6/15.jpg differ diff --git a/game.01/image/animal/animal6/16.jpg b/game.01/image/animal/animal6/16.jpg new file mode 100644 index 0000000..944eb89 Binary files /dev/null and b/game.01/image/animal/animal6/16.jpg differ diff --git a/game.01/image/animal/animal6/2.jpg b/game.01/image/animal/animal6/2.jpg new file mode 100644 index 0000000..2720017 Binary files /dev/null and b/game.01/image/animal/animal6/2.jpg differ diff --git a/game.01/image/animal/animal6/3.jpg b/game.01/image/animal/animal6/3.jpg new file mode 100644 index 0000000..d553bff Binary files /dev/null and b/game.01/image/animal/animal6/3.jpg differ diff --git a/game.01/image/animal/animal6/4.jpg b/game.01/image/animal/animal6/4.jpg new file mode 100644 index 0000000..2259836 Binary files /dev/null and b/game.01/image/animal/animal6/4.jpg differ diff --git a/game.01/image/animal/animal6/5.jpg b/game.01/image/animal/animal6/5.jpg new file mode 100644 index 0000000..ac3ac08 Binary files /dev/null and b/game.01/image/animal/animal6/5.jpg differ diff --git a/game.01/image/animal/animal6/6.jpg b/game.01/image/animal/animal6/6.jpg new file mode 100644 index 0000000..2a55231 Binary files /dev/null and b/game.01/image/animal/animal6/6.jpg differ diff --git a/game.01/image/animal/animal6/7.jpg b/game.01/image/animal/animal6/7.jpg new file mode 100644 index 0000000..81a5d6f Binary files /dev/null and b/game.01/image/animal/animal6/7.jpg differ diff --git a/game.01/image/animal/animal6/8.jpg b/game.01/image/animal/animal6/8.jpg new file mode 100644 index 0000000..f41d043 Binary files /dev/null and b/game.01/image/animal/animal6/8.jpg differ diff --git a/game.01/image/animal/animal6/9.jpg b/game.01/image/animal/animal6/9.jpg new file mode 100644 index 0000000..50604c4 Binary files /dev/null and b/game.01/image/animal/animal6/9.jpg differ diff --git a/game.01/image/animal/animal6/all.jpg b/game.01/image/animal/animal6/all.jpg new file mode 100644 index 0000000..3322099 Binary files /dev/null and b/game.01/image/animal/animal6/all.jpg differ diff --git a/game.01/image/animal/animal7/1.jpg b/game.01/image/animal/animal7/1.jpg new file mode 100644 index 0000000..2a6efac Binary files /dev/null and b/game.01/image/animal/animal7/1.jpg differ diff --git a/game.01/image/animal/animal7/10.jpg b/game.01/image/animal/animal7/10.jpg new file mode 100644 index 0000000..ec0fae5 Binary files /dev/null and b/game.01/image/animal/animal7/10.jpg differ diff --git a/game.01/image/animal/animal7/11.jpg b/game.01/image/animal/animal7/11.jpg new file mode 100644 index 0000000..d9c2469 Binary files /dev/null and b/game.01/image/animal/animal7/11.jpg differ diff --git a/game.01/image/animal/animal7/12.jpg b/game.01/image/animal/animal7/12.jpg new file mode 100644 index 0000000..212f3bf Binary files /dev/null and b/game.01/image/animal/animal7/12.jpg differ diff --git a/game.01/image/animal/animal7/13.jpg b/game.01/image/animal/animal7/13.jpg new file mode 100644 index 0000000..9f66700 Binary files /dev/null and b/game.01/image/animal/animal7/13.jpg differ diff --git a/game.01/image/animal/animal7/14.jpg b/game.01/image/animal/animal7/14.jpg new file mode 100644 index 0000000..b9c4d92 Binary files /dev/null and b/game.01/image/animal/animal7/14.jpg differ diff --git a/game.01/image/animal/animal7/15.jpg b/game.01/image/animal/animal7/15.jpg new file mode 100644 index 0000000..62d79ae Binary files /dev/null and b/game.01/image/animal/animal7/15.jpg differ diff --git a/game.01/image/animal/animal7/16.jpg b/game.01/image/animal/animal7/16.jpg new file mode 100644 index 0000000..dac5df6 Binary files /dev/null and b/game.01/image/animal/animal7/16.jpg differ diff --git a/game.01/image/animal/animal7/2.jpg b/game.01/image/animal/animal7/2.jpg new file mode 100644 index 0000000..3e1653c Binary files /dev/null and b/game.01/image/animal/animal7/2.jpg differ diff --git a/game.01/image/animal/animal7/3.jpg b/game.01/image/animal/animal7/3.jpg new file mode 100644 index 0000000..7c76b17 Binary files /dev/null and b/game.01/image/animal/animal7/3.jpg differ diff --git a/game.01/image/animal/animal7/4.jpg b/game.01/image/animal/animal7/4.jpg new file mode 100644 index 0000000..562267a Binary files /dev/null and b/game.01/image/animal/animal7/4.jpg differ diff --git a/game.01/image/animal/animal7/5.jpg b/game.01/image/animal/animal7/5.jpg new file mode 100644 index 0000000..9fe2a20 Binary files /dev/null and b/game.01/image/animal/animal7/5.jpg differ diff --git a/game.01/image/animal/animal7/6.jpg b/game.01/image/animal/animal7/6.jpg new file mode 100644 index 0000000..69efdf0 Binary files /dev/null and b/game.01/image/animal/animal7/6.jpg differ diff --git a/game.01/image/animal/animal7/7.jpg b/game.01/image/animal/animal7/7.jpg new file mode 100644 index 0000000..adf60ae Binary files /dev/null and b/game.01/image/animal/animal7/7.jpg differ diff --git a/game.01/image/animal/animal7/8.jpg b/game.01/image/animal/animal7/8.jpg new file mode 100644 index 0000000..20da528 Binary files /dev/null and b/game.01/image/animal/animal7/8.jpg differ diff --git a/game.01/image/animal/animal7/9.jpg b/game.01/image/animal/animal7/9.jpg new file mode 100644 index 0000000..53dac3d Binary files /dev/null and b/game.01/image/animal/animal7/9.jpg differ diff --git a/game.01/image/animal/animal7/all.jpg b/game.01/image/animal/animal7/all.jpg new file mode 100644 index 0000000..0fc7179 Binary files /dev/null and b/game.01/image/animal/animal7/all.jpg differ diff --git a/game.01/image/animal/animal8/1.jpg b/game.01/image/animal/animal8/1.jpg new file mode 100644 index 0000000..a5bcdc6 Binary files /dev/null and b/game.01/image/animal/animal8/1.jpg differ diff --git a/game.01/image/animal/animal8/10.jpg b/game.01/image/animal/animal8/10.jpg new file mode 100644 index 0000000..b3edf11 Binary files /dev/null and b/game.01/image/animal/animal8/10.jpg differ diff --git a/game.01/image/animal/animal8/11.jpg b/game.01/image/animal/animal8/11.jpg new file mode 100644 index 0000000..2176ce9 Binary files /dev/null and b/game.01/image/animal/animal8/11.jpg differ diff --git a/game.01/image/animal/animal8/12.jpg b/game.01/image/animal/animal8/12.jpg new file mode 100644 index 0000000..69d6110 Binary files /dev/null and b/game.01/image/animal/animal8/12.jpg differ diff --git a/game.01/image/animal/animal8/13.jpg b/game.01/image/animal/animal8/13.jpg new file mode 100644 index 0000000..39ae7a4 Binary files /dev/null and b/game.01/image/animal/animal8/13.jpg differ diff --git a/game.01/image/animal/animal8/14.jpg b/game.01/image/animal/animal8/14.jpg new file mode 100644 index 0000000..e2e76ec Binary files /dev/null and b/game.01/image/animal/animal8/14.jpg differ diff --git a/game.01/image/animal/animal8/15.jpg b/game.01/image/animal/animal8/15.jpg new file mode 100644 index 0000000..5062fcb Binary files /dev/null and b/game.01/image/animal/animal8/15.jpg differ diff --git a/game.01/image/animal/animal8/16.jpg b/game.01/image/animal/animal8/16.jpg new file mode 100644 index 0000000..b786121 Binary files /dev/null and b/game.01/image/animal/animal8/16.jpg differ diff --git a/game.01/image/animal/animal8/2.jpg b/game.01/image/animal/animal8/2.jpg new file mode 100644 index 0000000..a1843ed Binary files /dev/null and b/game.01/image/animal/animal8/2.jpg differ diff --git a/game.01/image/animal/animal8/3.jpg b/game.01/image/animal/animal8/3.jpg new file mode 100644 index 0000000..68744c7 Binary files /dev/null and b/game.01/image/animal/animal8/3.jpg differ diff --git a/game.01/image/animal/animal8/4.jpg b/game.01/image/animal/animal8/4.jpg new file mode 100644 index 0000000..737591d Binary files /dev/null and b/game.01/image/animal/animal8/4.jpg differ diff --git a/game.01/image/animal/animal8/5.jpg b/game.01/image/animal/animal8/5.jpg new file mode 100644 index 0000000..15dcfc1 Binary files /dev/null and b/game.01/image/animal/animal8/5.jpg differ diff --git a/game.01/image/animal/animal8/6.jpg b/game.01/image/animal/animal8/6.jpg new file mode 100644 index 0000000..bf2c93f Binary files /dev/null and b/game.01/image/animal/animal8/6.jpg differ diff --git a/game.01/image/animal/animal8/7.jpg b/game.01/image/animal/animal8/7.jpg new file mode 100644 index 0000000..b071aec Binary files /dev/null and b/game.01/image/animal/animal8/7.jpg differ diff --git a/game.01/image/animal/animal8/8.jpg b/game.01/image/animal/animal8/8.jpg new file mode 100644 index 0000000..c396144 Binary files /dev/null and b/game.01/image/animal/animal8/8.jpg differ diff --git a/game.01/image/animal/animal8/9.jpg b/game.01/image/animal/animal8/9.jpg new file mode 100644 index 0000000..a3d5870 Binary files /dev/null and b/game.01/image/animal/animal8/9.jpg differ diff --git a/game.01/image/animal/animal8/all.jpg b/game.01/image/animal/animal8/all.jpg new file mode 100644 index 0000000..4d857a7 Binary files /dev/null and b/game.01/image/animal/animal8/all.jpg differ diff --git a/game.01/image/background.png b/game.01/image/background.png new file mode 100644 index 0000000..0c68e99 Binary files /dev/null and b/game.01/image/background.png differ diff --git a/game.01/image/damie.jpg b/game.01/image/damie.jpg new file mode 100644 index 0000000..ff975b4 Binary files /dev/null and b/game.01/image/damie.jpg differ diff --git a/game.01/image/girl/girl1/1.jpg b/game.01/image/girl/girl1/1.jpg new file mode 100644 index 0000000..20531cd Binary files /dev/null and b/game.01/image/girl/girl1/1.jpg differ diff --git a/game.01/image/girl/girl1/10.jpg b/game.01/image/girl/girl1/10.jpg new file mode 100644 index 0000000..937ad56 Binary files /dev/null and b/game.01/image/girl/girl1/10.jpg differ diff --git a/game.01/image/girl/girl1/11.jpg b/game.01/image/girl/girl1/11.jpg new file mode 100644 index 0000000..d9ada9f Binary files /dev/null and b/game.01/image/girl/girl1/11.jpg differ diff --git a/game.01/image/girl/girl1/12.jpg b/game.01/image/girl/girl1/12.jpg new file mode 100644 index 0000000..f6cee88 Binary files /dev/null and b/game.01/image/girl/girl1/12.jpg differ diff --git a/game.01/image/girl/girl1/13.jpg b/game.01/image/girl/girl1/13.jpg new file mode 100644 index 0000000..33182cd Binary files /dev/null and b/game.01/image/girl/girl1/13.jpg differ diff --git a/game.01/image/girl/girl1/14.jpg b/game.01/image/girl/girl1/14.jpg new file mode 100644 index 0000000..4c69bc4 Binary files /dev/null and b/game.01/image/girl/girl1/14.jpg differ diff --git a/game.01/image/girl/girl1/15.jpg b/game.01/image/girl/girl1/15.jpg new file mode 100644 index 0000000..66014aa Binary files /dev/null and b/game.01/image/girl/girl1/15.jpg differ diff --git a/game.01/image/girl/girl1/16.jpg b/game.01/image/girl/girl1/16.jpg new file mode 100644 index 0000000..e76a22c Binary files /dev/null and b/game.01/image/girl/girl1/16.jpg differ diff --git a/game.01/image/girl/girl1/2.jpg b/game.01/image/girl/girl1/2.jpg new file mode 100644 index 0000000..ecab763 Binary files /dev/null and b/game.01/image/girl/girl1/2.jpg differ diff --git a/game.01/image/girl/girl1/3.jpg b/game.01/image/girl/girl1/3.jpg new file mode 100644 index 0000000..777d623 Binary files /dev/null and b/game.01/image/girl/girl1/3.jpg differ diff --git a/game.01/image/girl/girl1/4.jpg b/game.01/image/girl/girl1/4.jpg new file mode 100644 index 0000000..9cd8141 Binary files /dev/null and b/game.01/image/girl/girl1/4.jpg differ diff --git a/game.01/image/girl/girl1/5.jpg b/game.01/image/girl/girl1/5.jpg new file mode 100644 index 0000000..87eb348 Binary files /dev/null and b/game.01/image/girl/girl1/5.jpg differ diff --git a/game.01/image/girl/girl1/6.jpg b/game.01/image/girl/girl1/6.jpg new file mode 100644 index 0000000..57ee946 Binary files /dev/null and b/game.01/image/girl/girl1/6.jpg differ diff --git a/game.01/image/girl/girl1/7.jpg b/game.01/image/girl/girl1/7.jpg new file mode 100644 index 0000000..f0d6f9d Binary files /dev/null and b/game.01/image/girl/girl1/7.jpg differ diff --git a/game.01/image/girl/girl1/8.jpg b/game.01/image/girl/girl1/8.jpg new file mode 100644 index 0000000..4d786fc Binary files /dev/null and b/game.01/image/girl/girl1/8.jpg differ diff --git a/game.01/image/girl/girl1/9.jpg b/game.01/image/girl/girl1/9.jpg new file mode 100644 index 0000000..c94f602 Binary files /dev/null and b/game.01/image/girl/girl1/9.jpg differ diff --git a/game.01/image/girl/girl1/all.jpg b/game.01/image/girl/girl1/all.jpg new file mode 100644 index 0000000..95fff7e Binary files /dev/null and b/game.01/image/girl/girl1/all.jpg differ diff --git a/game.01/image/girl/girl10/1.jpg b/game.01/image/girl/girl10/1.jpg new file mode 100644 index 0000000..374ec29 Binary files /dev/null and b/game.01/image/girl/girl10/1.jpg differ diff --git a/game.01/image/girl/girl10/10.jpg b/game.01/image/girl/girl10/10.jpg new file mode 100644 index 0000000..48da89a Binary files /dev/null and b/game.01/image/girl/girl10/10.jpg differ diff --git a/game.01/image/girl/girl10/11.jpg b/game.01/image/girl/girl10/11.jpg new file mode 100644 index 0000000..0495188 Binary files /dev/null and b/game.01/image/girl/girl10/11.jpg differ diff --git a/game.01/image/girl/girl10/12.jpg b/game.01/image/girl/girl10/12.jpg new file mode 100644 index 0000000..67bf2d0 Binary files /dev/null and b/game.01/image/girl/girl10/12.jpg differ diff --git a/game.01/image/girl/girl10/13.jpg b/game.01/image/girl/girl10/13.jpg new file mode 100644 index 0000000..8b242a5 Binary files /dev/null and b/game.01/image/girl/girl10/13.jpg differ diff --git a/game.01/image/girl/girl10/14.jpg b/game.01/image/girl/girl10/14.jpg new file mode 100644 index 0000000..a919741 Binary files /dev/null and b/game.01/image/girl/girl10/14.jpg differ diff --git a/game.01/image/girl/girl10/15.jpg b/game.01/image/girl/girl10/15.jpg new file mode 100644 index 0000000..d139460 Binary files /dev/null and b/game.01/image/girl/girl10/15.jpg differ diff --git a/game.01/image/girl/girl10/16.jpg b/game.01/image/girl/girl10/16.jpg new file mode 100644 index 0000000..4a01801 Binary files /dev/null and b/game.01/image/girl/girl10/16.jpg differ diff --git a/game.01/image/girl/girl10/2.jpg b/game.01/image/girl/girl10/2.jpg new file mode 100644 index 0000000..35b91cc Binary files /dev/null and b/game.01/image/girl/girl10/2.jpg differ diff --git a/game.01/image/girl/girl10/3.jpg b/game.01/image/girl/girl10/3.jpg new file mode 100644 index 0000000..ef0b1ff Binary files /dev/null and b/game.01/image/girl/girl10/3.jpg differ diff --git a/game.01/image/girl/girl10/4.jpg b/game.01/image/girl/girl10/4.jpg new file mode 100644 index 0000000..65723d5 Binary files /dev/null and b/game.01/image/girl/girl10/4.jpg differ diff --git a/game.01/image/girl/girl10/5.jpg b/game.01/image/girl/girl10/5.jpg new file mode 100644 index 0000000..83c419d Binary files /dev/null and b/game.01/image/girl/girl10/5.jpg differ diff --git a/game.01/image/girl/girl10/6.jpg b/game.01/image/girl/girl10/6.jpg new file mode 100644 index 0000000..8a39e91 Binary files /dev/null and b/game.01/image/girl/girl10/6.jpg differ diff --git a/game.01/image/girl/girl10/7.jpg b/game.01/image/girl/girl10/7.jpg new file mode 100644 index 0000000..a05344e Binary files /dev/null and b/game.01/image/girl/girl10/7.jpg differ diff --git a/game.01/image/girl/girl10/8.jpg b/game.01/image/girl/girl10/8.jpg new file mode 100644 index 0000000..72aa11f Binary files /dev/null and b/game.01/image/girl/girl10/8.jpg differ diff --git a/game.01/image/girl/girl10/9.jpg b/game.01/image/girl/girl10/9.jpg new file mode 100644 index 0000000..3c884d2 Binary files /dev/null and b/game.01/image/girl/girl10/9.jpg differ diff --git a/game.01/image/girl/girl10/all.jpg b/game.01/image/girl/girl10/all.jpg new file mode 100644 index 0000000..1d480c8 Binary files /dev/null and b/game.01/image/girl/girl10/all.jpg differ diff --git a/game.01/image/girl/girl11/1.jpg b/game.01/image/girl/girl11/1.jpg new file mode 100644 index 0000000..406ca39 Binary files /dev/null and b/game.01/image/girl/girl11/1.jpg differ diff --git a/game.01/image/girl/girl11/10.jpg b/game.01/image/girl/girl11/10.jpg new file mode 100644 index 0000000..9fcd59e Binary files /dev/null and b/game.01/image/girl/girl11/10.jpg differ diff --git a/game.01/image/girl/girl11/11.jpg b/game.01/image/girl/girl11/11.jpg new file mode 100644 index 0000000..552b3b8 Binary files /dev/null and b/game.01/image/girl/girl11/11.jpg differ diff --git a/game.01/image/girl/girl11/12.jpg b/game.01/image/girl/girl11/12.jpg new file mode 100644 index 0000000..fcd07ff Binary files /dev/null and b/game.01/image/girl/girl11/12.jpg differ diff --git a/game.01/image/girl/girl11/13.jpg b/game.01/image/girl/girl11/13.jpg new file mode 100644 index 0000000..97f6c70 Binary files /dev/null and b/game.01/image/girl/girl11/13.jpg differ diff --git a/game.01/image/girl/girl11/14.jpg b/game.01/image/girl/girl11/14.jpg new file mode 100644 index 0000000..a7b2b60 Binary files /dev/null and b/game.01/image/girl/girl11/14.jpg differ diff --git a/game.01/image/girl/girl11/15.jpg b/game.01/image/girl/girl11/15.jpg new file mode 100644 index 0000000..791d2ca Binary files /dev/null and b/game.01/image/girl/girl11/15.jpg differ diff --git a/game.01/image/girl/girl11/16.jpg b/game.01/image/girl/girl11/16.jpg new file mode 100644 index 0000000..38d902e Binary files /dev/null and b/game.01/image/girl/girl11/16.jpg differ diff --git a/game.01/image/girl/girl11/2.jpg b/game.01/image/girl/girl11/2.jpg new file mode 100644 index 0000000..a55c95c Binary files /dev/null and b/game.01/image/girl/girl11/2.jpg differ diff --git a/game.01/image/girl/girl11/3.jpg b/game.01/image/girl/girl11/3.jpg new file mode 100644 index 0000000..b8d7bf9 Binary files /dev/null and b/game.01/image/girl/girl11/3.jpg differ diff --git a/game.01/image/girl/girl11/4.jpg b/game.01/image/girl/girl11/4.jpg new file mode 100644 index 0000000..b839718 Binary files /dev/null and b/game.01/image/girl/girl11/4.jpg differ diff --git a/game.01/image/girl/girl11/5.jpg b/game.01/image/girl/girl11/5.jpg new file mode 100644 index 0000000..cf8acc9 Binary files /dev/null and b/game.01/image/girl/girl11/5.jpg differ diff --git a/game.01/image/girl/girl11/6.jpg b/game.01/image/girl/girl11/6.jpg new file mode 100644 index 0000000..7855a87 Binary files /dev/null and b/game.01/image/girl/girl11/6.jpg differ diff --git a/game.01/image/girl/girl11/7.jpg b/game.01/image/girl/girl11/7.jpg new file mode 100644 index 0000000..65fb10d Binary files /dev/null and b/game.01/image/girl/girl11/7.jpg differ diff --git a/game.01/image/girl/girl11/8.jpg b/game.01/image/girl/girl11/8.jpg new file mode 100644 index 0000000..8ea5d41 Binary files /dev/null and b/game.01/image/girl/girl11/8.jpg differ diff --git a/game.01/image/girl/girl11/9.jpg b/game.01/image/girl/girl11/9.jpg new file mode 100644 index 0000000..45116cc Binary files /dev/null and b/game.01/image/girl/girl11/9.jpg differ diff --git a/game.01/image/girl/girl11/all.jpg b/game.01/image/girl/girl11/all.jpg new file mode 100644 index 0000000..b14e331 Binary files /dev/null and b/game.01/image/girl/girl11/all.jpg differ diff --git a/game.01/image/girl/girl12/1.jpg b/game.01/image/girl/girl12/1.jpg new file mode 100644 index 0000000..b8d160f Binary files /dev/null and b/game.01/image/girl/girl12/1.jpg differ diff --git a/game.01/image/girl/girl12/10.jpg b/game.01/image/girl/girl12/10.jpg new file mode 100644 index 0000000..67e1b77 Binary files /dev/null and b/game.01/image/girl/girl12/10.jpg differ diff --git a/game.01/image/girl/girl12/11.jpg b/game.01/image/girl/girl12/11.jpg new file mode 100644 index 0000000..03a49fb Binary files /dev/null and b/game.01/image/girl/girl12/11.jpg differ diff --git a/game.01/image/girl/girl12/12.jpg b/game.01/image/girl/girl12/12.jpg new file mode 100644 index 0000000..15f5873 Binary files /dev/null and b/game.01/image/girl/girl12/12.jpg differ diff --git a/game.01/image/girl/girl12/13.jpg b/game.01/image/girl/girl12/13.jpg new file mode 100644 index 0000000..4e6fd58 Binary files /dev/null and b/game.01/image/girl/girl12/13.jpg differ diff --git a/game.01/image/girl/girl12/14.jpg b/game.01/image/girl/girl12/14.jpg new file mode 100644 index 0000000..b1ba97a Binary files /dev/null and b/game.01/image/girl/girl12/14.jpg differ diff --git a/game.01/image/girl/girl12/15.jpg b/game.01/image/girl/girl12/15.jpg new file mode 100644 index 0000000..20e63de Binary files /dev/null and b/game.01/image/girl/girl12/15.jpg differ diff --git a/game.01/image/girl/girl12/16.jpg b/game.01/image/girl/girl12/16.jpg new file mode 100644 index 0000000..7618adb Binary files /dev/null and b/game.01/image/girl/girl12/16.jpg differ diff --git a/game.01/image/girl/girl12/2.jpg b/game.01/image/girl/girl12/2.jpg new file mode 100644 index 0000000..6b32580 Binary files /dev/null and b/game.01/image/girl/girl12/2.jpg differ diff --git a/game.01/image/girl/girl12/3.jpg b/game.01/image/girl/girl12/3.jpg new file mode 100644 index 0000000..72db2ba Binary files /dev/null and b/game.01/image/girl/girl12/3.jpg differ diff --git a/game.01/image/girl/girl12/4.jpg b/game.01/image/girl/girl12/4.jpg new file mode 100644 index 0000000..b45d074 Binary files /dev/null and b/game.01/image/girl/girl12/4.jpg differ diff --git a/game.01/image/girl/girl12/5.jpg b/game.01/image/girl/girl12/5.jpg new file mode 100644 index 0000000..0d04e98 Binary files /dev/null and b/game.01/image/girl/girl12/5.jpg differ diff --git a/game.01/image/girl/girl12/6.jpg b/game.01/image/girl/girl12/6.jpg new file mode 100644 index 0000000..b7be47d Binary files /dev/null and b/game.01/image/girl/girl12/6.jpg differ diff --git a/game.01/image/girl/girl12/7.jpg b/game.01/image/girl/girl12/7.jpg new file mode 100644 index 0000000..480809e Binary files /dev/null and b/game.01/image/girl/girl12/7.jpg differ diff --git a/game.01/image/girl/girl12/8.jpg b/game.01/image/girl/girl12/8.jpg new file mode 100644 index 0000000..ad5bd9c Binary files /dev/null and b/game.01/image/girl/girl12/8.jpg differ diff --git a/game.01/image/girl/girl12/9.jpg b/game.01/image/girl/girl12/9.jpg new file mode 100644 index 0000000..c3113cc Binary files /dev/null and b/game.01/image/girl/girl12/9.jpg differ diff --git a/game.01/image/girl/girl12/all.jpg b/game.01/image/girl/girl12/all.jpg new file mode 100644 index 0000000..b355847 Binary files /dev/null and b/game.01/image/girl/girl12/all.jpg differ diff --git a/game.01/image/girl/girl13/1.jpg b/game.01/image/girl/girl13/1.jpg new file mode 100644 index 0000000..80c72f0 Binary files /dev/null and b/game.01/image/girl/girl13/1.jpg differ diff --git a/game.01/image/girl/girl13/10.jpg b/game.01/image/girl/girl13/10.jpg new file mode 100644 index 0000000..94689af Binary files /dev/null and b/game.01/image/girl/girl13/10.jpg differ diff --git a/game.01/image/girl/girl13/11.jpg b/game.01/image/girl/girl13/11.jpg new file mode 100644 index 0000000..6b2629b Binary files /dev/null and b/game.01/image/girl/girl13/11.jpg differ diff --git a/game.01/image/girl/girl13/12.jpg b/game.01/image/girl/girl13/12.jpg new file mode 100644 index 0000000..1fdf8aa Binary files /dev/null and b/game.01/image/girl/girl13/12.jpg differ diff --git a/game.01/image/girl/girl13/13.jpg b/game.01/image/girl/girl13/13.jpg new file mode 100644 index 0000000..2efd3a0 Binary files /dev/null and b/game.01/image/girl/girl13/13.jpg differ diff --git a/game.01/image/girl/girl13/14.jpg b/game.01/image/girl/girl13/14.jpg new file mode 100644 index 0000000..9d3a073 Binary files /dev/null and b/game.01/image/girl/girl13/14.jpg differ diff --git a/game.01/image/girl/girl13/15.jpg b/game.01/image/girl/girl13/15.jpg new file mode 100644 index 0000000..d0499ef Binary files /dev/null and b/game.01/image/girl/girl13/15.jpg differ diff --git a/game.01/image/girl/girl13/16.jpg b/game.01/image/girl/girl13/16.jpg new file mode 100644 index 0000000..b49667e Binary files /dev/null and b/game.01/image/girl/girl13/16.jpg differ diff --git a/game.01/image/girl/girl13/2.jpg b/game.01/image/girl/girl13/2.jpg new file mode 100644 index 0000000..fbc942a Binary files /dev/null and b/game.01/image/girl/girl13/2.jpg differ diff --git a/game.01/image/girl/girl13/3.jpg b/game.01/image/girl/girl13/3.jpg new file mode 100644 index 0000000..1df39e8 Binary files /dev/null and b/game.01/image/girl/girl13/3.jpg differ diff --git a/game.01/image/girl/girl13/4.jpg b/game.01/image/girl/girl13/4.jpg new file mode 100644 index 0000000..ce7e8ac Binary files /dev/null and b/game.01/image/girl/girl13/4.jpg differ diff --git a/game.01/image/girl/girl13/5.jpg b/game.01/image/girl/girl13/5.jpg new file mode 100644 index 0000000..a98e695 Binary files /dev/null and b/game.01/image/girl/girl13/5.jpg differ diff --git a/game.01/image/girl/girl13/6.jpg b/game.01/image/girl/girl13/6.jpg new file mode 100644 index 0000000..02a6359 Binary files /dev/null and b/game.01/image/girl/girl13/6.jpg differ diff --git a/game.01/image/girl/girl13/7.jpg b/game.01/image/girl/girl13/7.jpg new file mode 100644 index 0000000..7285f90 Binary files /dev/null and b/game.01/image/girl/girl13/7.jpg differ diff --git a/game.01/image/girl/girl13/8.jpg b/game.01/image/girl/girl13/8.jpg new file mode 100644 index 0000000..9750b19 Binary files /dev/null and b/game.01/image/girl/girl13/8.jpg differ diff --git a/game.01/image/girl/girl13/9.jpg b/game.01/image/girl/girl13/9.jpg new file mode 100644 index 0000000..13a393f Binary files /dev/null and b/game.01/image/girl/girl13/9.jpg differ diff --git a/game.01/image/girl/girl13/all.jpg b/game.01/image/girl/girl13/all.jpg new file mode 100644 index 0000000..8d29991 Binary files /dev/null and b/game.01/image/girl/girl13/all.jpg differ diff --git a/game.01/image/girl/girl2/1.jpg b/game.01/image/girl/girl2/1.jpg new file mode 100644 index 0000000..eff031e Binary files /dev/null and b/game.01/image/girl/girl2/1.jpg differ diff --git a/game.01/image/girl/girl2/10.jpg b/game.01/image/girl/girl2/10.jpg new file mode 100644 index 0000000..4f7032e Binary files /dev/null and b/game.01/image/girl/girl2/10.jpg differ diff --git a/game.01/image/girl/girl2/11.jpg b/game.01/image/girl/girl2/11.jpg new file mode 100644 index 0000000..a63091c Binary files /dev/null and b/game.01/image/girl/girl2/11.jpg differ diff --git a/game.01/image/girl/girl2/12.jpg b/game.01/image/girl/girl2/12.jpg new file mode 100644 index 0000000..fe68456 Binary files /dev/null and b/game.01/image/girl/girl2/12.jpg differ diff --git a/game.01/image/girl/girl2/13.jpg b/game.01/image/girl/girl2/13.jpg new file mode 100644 index 0000000..3fa261f Binary files /dev/null and b/game.01/image/girl/girl2/13.jpg differ diff --git a/game.01/image/girl/girl2/14.jpg b/game.01/image/girl/girl2/14.jpg new file mode 100644 index 0000000..3962a47 Binary files /dev/null and b/game.01/image/girl/girl2/14.jpg differ diff --git a/game.01/image/girl/girl2/15.jpg b/game.01/image/girl/girl2/15.jpg new file mode 100644 index 0000000..3b2d203 Binary files /dev/null and b/game.01/image/girl/girl2/15.jpg differ diff --git a/game.01/image/girl/girl2/16.jpg b/game.01/image/girl/girl2/16.jpg new file mode 100644 index 0000000..0823716 Binary files /dev/null and b/game.01/image/girl/girl2/16.jpg differ diff --git a/game.01/image/girl/girl2/2.jpg b/game.01/image/girl/girl2/2.jpg new file mode 100644 index 0000000..aad9837 Binary files /dev/null and b/game.01/image/girl/girl2/2.jpg differ diff --git a/game.01/image/girl/girl2/3.jpg b/game.01/image/girl/girl2/3.jpg new file mode 100644 index 0000000..f5d21c1 Binary files /dev/null and b/game.01/image/girl/girl2/3.jpg differ diff --git a/game.01/image/girl/girl2/4.jpg b/game.01/image/girl/girl2/4.jpg new file mode 100644 index 0000000..31d01cd Binary files /dev/null and b/game.01/image/girl/girl2/4.jpg differ diff --git a/game.01/image/girl/girl2/5.jpg b/game.01/image/girl/girl2/5.jpg new file mode 100644 index 0000000..d162bc8 Binary files /dev/null and b/game.01/image/girl/girl2/5.jpg differ diff --git a/game.01/image/girl/girl2/6.jpg b/game.01/image/girl/girl2/6.jpg new file mode 100644 index 0000000..09a7731 Binary files /dev/null and b/game.01/image/girl/girl2/6.jpg differ diff --git a/game.01/image/girl/girl2/7.jpg b/game.01/image/girl/girl2/7.jpg new file mode 100644 index 0000000..c2c8007 Binary files /dev/null and b/game.01/image/girl/girl2/7.jpg differ diff --git a/game.01/image/girl/girl2/8.jpg b/game.01/image/girl/girl2/8.jpg new file mode 100644 index 0000000..0c5e8f1 Binary files /dev/null and b/game.01/image/girl/girl2/8.jpg differ diff --git a/game.01/image/girl/girl2/9.jpg b/game.01/image/girl/girl2/9.jpg new file mode 100644 index 0000000..501bfc1 Binary files /dev/null and b/game.01/image/girl/girl2/9.jpg differ diff --git a/game.01/image/girl/girl2/all.jpg b/game.01/image/girl/girl2/all.jpg new file mode 100644 index 0000000..34944d2 Binary files /dev/null and b/game.01/image/girl/girl2/all.jpg differ diff --git a/game.01/image/girl/girl3/1.jpg b/game.01/image/girl/girl3/1.jpg new file mode 100644 index 0000000..81b3710 Binary files /dev/null and b/game.01/image/girl/girl3/1.jpg differ diff --git a/game.01/image/girl/girl3/10.jpg b/game.01/image/girl/girl3/10.jpg new file mode 100644 index 0000000..0f31847 Binary files /dev/null and b/game.01/image/girl/girl3/10.jpg differ diff --git a/game.01/image/girl/girl3/11.jpg b/game.01/image/girl/girl3/11.jpg new file mode 100644 index 0000000..9fedd4b Binary files /dev/null and b/game.01/image/girl/girl3/11.jpg differ diff --git a/game.01/image/girl/girl3/12.jpg b/game.01/image/girl/girl3/12.jpg new file mode 100644 index 0000000..df1c169 Binary files /dev/null and b/game.01/image/girl/girl3/12.jpg differ diff --git a/game.01/image/girl/girl3/13.jpg b/game.01/image/girl/girl3/13.jpg new file mode 100644 index 0000000..1630a9b Binary files /dev/null and b/game.01/image/girl/girl3/13.jpg differ diff --git a/game.01/image/girl/girl3/14.jpg b/game.01/image/girl/girl3/14.jpg new file mode 100644 index 0000000..32305a5 Binary files /dev/null and b/game.01/image/girl/girl3/14.jpg differ diff --git a/game.01/image/girl/girl3/15.jpg b/game.01/image/girl/girl3/15.jpg new file mode 100644 index 0000000..cd9a50d Binary files /dev/null and b/game.01/image/girl/girl3/15.jpg differ diff --git a/game.01/image/girl/girl3/16.jpg b/game.01/image/girl/girl3/16.jpg new file mode 100644 index 0000000..b9d9443 Binary files /dev/null and b/game.01/image/girl/girl3/16.jpg differ diff --git a/game.01/image/girl/girl3/2.jpg b/game.01/image/girl/girl3/2.jpg new file mode 100644 index 0000000..135e4cd Binary files /dev/null and b/game.01/image/girl/girl3/2.jpg differ diff --git a/game.01/image/girl/girl3/3.jpg b/game.01/image/girl/girl3/3.jpg new file mode 100644 index 0000000..d020437 Binary files /dev/null and b/game.01/image/girl/girl3/3.jpg differ diff --git a/game.01/image/girl/girl3/4.jpg b/game.01/image/girl/girl3/4.jpg new file mode 100644 index 0000000..46e8f8c Binary files /dev/null and b/game.01/image/girl/girl3/4.jpg differ diff --git a/game.01/image/girl/girl3/5.jpg b/game.01/image/girl/girl3/5.jpg new file mode 100644 index 0000000..bca8747 Binary files /dev/null and b/game.01/image/girl/girl3/5.jpg differ diff --git a/game.01/image/girl/girl3/6.jpg b/game.01/image/girl/girl3/6.jpg new file mode 100644 index 0000000..6c9425e Binary files /dev/null and b/game.01/image/girl/girl3/6.jpg differ diff --git a/game.01/image/girl/girl3/7.jpg b/game.01/image/girl/girl3/7.jpg new file mode 100644 index 0000000..0923d7a Binary files /dev/null and b/game.01/image/girl/girl3/7.jpg differ diff --git a/game.01/image/girl/girl3/8.jpg b/game.01/image/girl/girl3/8.jpg new file mode 100644 index 0000000..4e17d50 Binary files /dev/null and b/game.01/image/girl/girl3/8.jpg differ diff --git a/game.01/image/girl/girl3/9.jpg b/game.01/image/girl/girl3/9.jpg new file mode 100644 index 0000000..8227147 Binary files /dev/null and b/game.01/image/girl/girl3/9.jpg differ diff --git a/game.01/image/girl/girl3/all.jpg b/game.01/image/girl/girl3/all.jpg new file mode 100644 index 0000000..786cfe6 Binary files /dev/null and b/game.01/image/girl/girl3/all.jpg differ diff --git a/game.01/image/girl/girl4/1.jpg b/game.01/image/girl/girl4/1.jpg new file mode 100644 index 0000000..0710d76 Binary files /dev/null and b/game.01/image/girl/girl4/1.jpg differ diff --git a/game.01/image/girl/girl4/10.jpg b/game.01/image/girl/girl4/10.jpg new file mode 100644 index 0000000..9de9a75 Binary files /dev/null and b/game.01/image/girl/girl4/10.jpg differ diff --git a/game.01/image/girl/girl4/11.jpg b/game.01/image/girl/girl4/11.jpg new file mode 100644 index 0000000..5d3db19 Binary files /dev/null and b/game.01/image/girl/girl4/11.jpg differ diff --git a/game.01/image/girl/girl4/12.jpg b/game.01/image/girl/girl4/12.jpg new file mode 100644 index 0000000..0c5490a Binary files /dev/null and b/game.01/image/girl/girl4/12.jpg differ diff --git a/game.01/image/girl/girl4/13.jpg b/game.01/image/girl/girl4/13.jpg new file mode 100644 index 0000000..9bfcf60 Binary files /dev/null and b/game.01/image/girl/girl4/13.jpg differ diff --git a/game.01/image/girl/girl4/14.jpg b/game.01/image/girl/girl4/14.jpg new file mode 100644 index 0000000..ce20eea Binary files /dev/null and b/game.01/image/girl/girl4/14.jpg differ diff --git a/game.01/image/girl/girl4/15.jpg b/game.01/image/girl/girl4/15.jpg new file mode 100644 index 0000000..9ab8430 Binary files /dev/null and b/game.01/image/girl/girl4/15.jpg differ diff --git a/game.01/image/girl/girl4/16.jpg b/game.01/image/girl/girl4/16.jpg new file mode 100644 index 0000000..86c8977 Binary files /dev/null and b/game.01/image/girl/girl4/16.jpg differ diff --git a/game.01/image/girl/girl4/2.jpg b/game.01/image/girl/girl4/2.jpg new file mode 100644 index 0000000..d4796b4 Binary files /dev/null and b/game.01/image/girl/girl4/2.jpg differ diff --git a/game.01/image/girl/girl4/3.jpg b/game.01/image/girl/girl4/3.jpg new file mode 100644 index 0000000..81845bd Binary files /dev/null and b/game.01/image/girl/girl4/3.jpg differ diff --git a/game.01/image/girl/girl4/4.jpg b/game.01/image/girl/girl4/4.jpg new file mode 100644 index 0000000..e7e6243 Binary files /dev/null and b/game.01/image/girl/girl4/4.jpg differ diff --git a/game.01/image/girl/girl4/5.jpg b/game.01/image/girl/girl4/5.jpg new file mode 100644 index 0000000..02e0a6b Binary files /dev/null and b/game.01/image/girl/girl4/5.jpg differ diff --git a/game.01/image/girl/girl4/6.jpg b/game.01/image/girl/girl4/6.jpg new file mode 100644 index 0000000..3512fb7 Binary files /dev/null and b/game.01/image/girl/girl4/6.jpg differ diff --git a/game.01/image/girl/girl4/7.jpg b/game.01/image/girl/girl4/7.jpg new file mode 100644 index 0000000..f5471f1 Binary files /dev/null and b/game.01/image/girl/girl4/7.jpg differ diff --git a/game.01/image/girl/girl4/8.jpg b/game.01/image/girl/girl4/8.jpg new file mode 100644 index 0000000..b1190cc Binary files /dev/null and b/game.01/image/girl/girl4/8.jpg differ diff --git a/game.01/image/girl/girl4/9.jpg b/game.01/image/girl/girl4/9.jpg new file mode 100644 index 0000000..409a93c Binary files /dev/null and b/game.01/image/girl/girl4/9.jpg differ diff --git a/game.01/image/girl/girl4/all.jpg b/game.01/image/girl/girl4/all.jpg new file mode 100644 index 0000000..68372e7 Binary files /dev/null and b/game.01/image/girl/girl4/all.jpg differ diff --git a/game.01/image/girl/girl5/1.jpg b/game.01/image/girl/girl5/1.jpg new file mode 100644 index 0000000..1a18057 Binary files /dev/null and b/game.01/image/girl/girl5/1.jpg differ diff --git a/game.01/image/girl/girl5/10.jpg b/game.01/image/girl/girl5/10.jpg new file mode 100644 index 0000000..d7ab0d6 Binary files /dev/null and b/game.01/image/girl/girl5/10.jpg differ diff --git a/game.01/image/girl/girl5/11.jpg b/game.01/image/girl/girl5/11.jpg new file mode 100644 index 0000000..bcc3f4b Binary files /dev/null and b/game.01/image/girl/girl5/11.jpg differ diff --git a/game.01/image/girl/girl5/12.jpg b/game.01/image/girl/girl5/12.jpg new file mode 100644 index 0000000..75c2064 Binary files /dev/null and b/game.01/image/girl/girl5/12.jpg differ diff --git a/game.01/image/girl/girl5/13.jpg b/game.01/image/girl/girl5/13.jpg new file mode 100644 index 0000000..2df2859 Binary files /dev/null and b/game.01/image/girl/girl5/13.jpg differ diff --git a/game.01/image/girl/girl5/14.jpg b/game.01/image/girl/girl5/14.jpg new file mode 100644 index 0000000..e3d5fc9 Binary files /dev/null and b/game.01/image/girl/girl5/14.jpg differ diff --git a/game.01/image/girl/girl5/15.jpg b/game.01/image/girl/girl5/15.jpg new file mode 100644 index 0000000..e360726 Binary files /dev/null and b/game.01/image/girl/girl5/15.jpg differ diff --git a/game.01/image/girl/girl5/16.jpg b/game.01/image/girl/girl5/16.jpg new file mode 100644 index 0000000..1a62637 Binary files /dev/null and b/game.01/image/girl/girl5/16.jpg differ diff --git a/game.01/image/girl/girl5/2.jpg b/game.01/image/girl/girl5/2.jpg new file mode 100644 index 0000000..ae6858a Binary files /dev/null and b/game.01/image/girl/girl5/2.jpg differ diff --git a/game.01/image/girl/girl5/3.jpg b/game.01/image/girl/girl5/3.jpg new file mode 100644 index 0000000..144be97 Binary files /dev/null and b/game.01/image/girl/girl5/3.jpg differ diff --git a/game.01/image/girl/girl5/4.jpg b/game.01/image/girl/girl5/4.jpg new file mode 100644 index 0000000..3b219f0 Binary files /dev/null and b/game.01/image/girl/girl5/4.jpg differ diff --git a/game.01/image/girl/girl5/5.jpg b/game.01/image/girl/girl5/5.jpg new file mode 100644 index 0000000..3a48b7b Binary files /dev/null and b/game.01/image/girl/girl5/5.jpg differ diff --git a/game.01/image/girl/girl5/6.jpg b/game.01/image/girl/girl5/6.jpg new file mode 100644 index 0000000..0857c65 Binary files /dev/null and b/game.01/image/girl/girl5/6.jpg differ diff --git a/game.01/image/girl/girl5/7.jpg b/game.01/image/girl/girl5/7.jpg new file mode 100644 index 0000000..bb93c12 Binary files /dev/null and b/game.01/image/girl/girl5/7.jpg differ diff --git a/game.01/image/girl/girl5/8.jpg b/game.01/image/girl/girl5/8.jpg new file mode 100644 index 0000000..159b4bc Binary files /dev/null and b/game.01/image/girl/girl5/8.jpg differ diff --git a/game.01/image/girl/girl5/9.jpg b/game.01/image/girl/girl5/9.jpg new file mode 100644 index 0000000..e2d357d Binary files /dev/null and b/game.01/image/girl/girl5/9.jpg differ diff --git a/game.01/image/girl/girl5/all.jpg b/game.01/image/girl/girl5/all.jpg new file mode 100644 index 0000000..1ab8bd1 Binary files /dev/null and b/game.01/image/girl/girl5/all.jpg differ diff --git a/game.01/image/girl/girl6/1.jpg b/game.01/image/girl/girl6/1.jpg new file mode 100644 index 0000000..dccf7a1 Binary files /dev/null and b/game.01/image/girl/girl6/1.jpg differ diff --git a/game.01/image/girl/girl6/10.jpg b/game.01/image/girl/girl6/10.jpg new file mode 100644 index 0000000..a478d7a Binary files /dev/null and b/game.01/image/girl/girl6/10.jpg differ diff --git a/game.01/image/girl/girl6/11.jpg b/game.01/image/girl/girl6/11.jpg new file mode 100644 index 0000000..39a96f9 Binary files /dev/null and b/game.01/image/girl/girl6/11.jpg differ diff --git a/game.01/image/girl/girl6/12.jpg b/game.01/image/girl/girl6/12.jpg new file mode 100644 index 0000000..fb92642 Binary files /dev/null and b/game.01/image/girl/girl6/12.jpg differ diff --git a/game.01/image/girl/girl6/13.jpg b/game.01/image/girl/girl6/13.jpg new file mode 100644 index 0000000..4052064 Binary files /dev/null and b/game.01/image/girl/girl6/13.jpg differ diff --git a/game.01/image/girl/girl6/14.jpg b/game.01/image/girl/girl6/14.jpg new file mode 100644 index 0000000..d5b68c6 Binary files /dev/null and b/game.01/image/girl/girl6/14.jpg differ diff --git a/game.01/image/girl/girl6/15.jpg b/game.01/image/girl/girl6/15.jpg new file mode 100644 index 0000000..412edee Binary files /dev/null and b/game.01/image/girl/girl6/15.jpg differ diff --git a/game.01/image/girl/girl6/16.jpg b/game.01/image/girl/girl6/16.jpg new file mode 100644 index 0000000..ff517fd Binary files /dev/null and b/game.01/image/girl/girl6/16.jpg differ diff --git a/game.01/image/girl/girl6/2.jpg b/game.01/image/girl/girl6/2.jpg new file mode 100644 index 0000000..cfcb70a Binary files /dev/null and b/game.01/image/girl/girl6/2.jpg differ diff --git a/game.01/image/girl/girl6/3.jpg b/game.01/image/girl/girl6/3.jpg new file mode 100644 index 0000000..30d14d4 Binary files /dev/null and b/game.01/image/girl/girl6/3.jpg differ diff --git a/game.01/image/girl/girl6/4.jpg b/game.01/image/girl/girl6/4.jpg new file mode 100644 index 0000000..3bb2358 Binary files /dev/null and b/game.01/image/girl/girl6/4.jpg differ diff --git a/game.01/image/girl/girl6/5.jpg b/game.01/image/girl/girl6/5.jpg new file mode 100644 index 0000000..509d6ae Binary files /dev/null and b/game.01/image/girl/girl6/5.jpg differ diff --git a/game.01/image/girl/girl6/6.jpg b/game.01/image/girl/girl6/6.jpg new file mode 100644 index 0000000..c94d11c Binary files /dev/null and b/game.01/image/girl/girl6/6.jpg differ diff --git a/game.01/image/girl/girl6/7.jpg b/game.01/image/girl/girl6/7.jpg new file mode 100644 index 0000000..927d79a Binary files /dev/null and b/game.01/image/girl/girl6/7.jpg differ diff --git a/game.01/image/girl/girl6/8.jpg b/game.01/image/girl/girl6/8.jpg new file mode 100644 index 0000000..51d9706 Binary files /dev/null and b/game.01/image/girl/girl6/8.jpg differ diff --git a/game.01/image/girl/girl6/9.jpg b/game.01/image/girl/girl6/9.jpg new file mode 100644 index 0000000..76ae73d Binary files /dev/null and b/game.01/image/girl/girl6/9.jpg differ diff --git a/game.01/image/girl/girl6/all.jpg b/game.01/image/girl/girl6/all.jpg new file mode 100644 index 0000000..83d85bc Binary files /dev/null and b/game.01/image/girl/girl6/all.jpg differ diff --git a/game.01/image/girl/girl7/1.jpg b/game.01/image/girl/girl7/1.jpg new file mode 100644 index 0000000..c219a2e Binary files /dev/null and b/game.01/image/girl/girl7/1.jpg differ diff --git a/game.01/image/girl/girl7/10.jpg b/game.01/image/girl/girl7/10.jpg new file mode 100644 index 0000000..5ecb267 Binary files /dev/null and b/game.01/image/girl/girl7/10.jpg differ diff --git a/game.01/image/girl/girl7/11.jpg b/game.01/image/girl/girl7/11.jpg new file mode 100644 index 0000000..c723885 Binary files /dev/null and b/game.01/image/girl/girl7/11.jpg differ diff --git a/game.01/image/girl/girl7/12.jpg b/game.01/image/girl/girl7/12.jpg new file mode 100644 index 0000000..aa9bf57 Binary files /dev/null and b/game.01/image/girl/girl7/12.jpg differ diff --git a/game.01/image/girl/girl7/13.jpg b/game.01/image/girl/girl7/13.jpg new file mode 100644 index 0000000..16b294f Binary files /dev/null and b/game.01/image/girl/girl7/13.jpg differ diff --git a/game.01/image/girl/girl7/14.jpg b/game.01/image/girl/girl7/14.jpg new file mode 100644 index 0000000..2ed8179 Binary files /dev/null and b/game.01/image/girl/girl7/14.jpg differ diff --git a/game.01/image/girl/girl7/15.jpg b/game.01/image/girl/girl7/15.jpg new file mode 100644 index 0000000..e1669a1 Binary files /dev/null and b/game.01/image/girl/girl7/15.jpg differ diff --git a/game.01/image/girl/girl7/16.jpg b/game.01/image/girl/girl7/16.jpg new file mode 100644 index 0000000..5b3c29e Binary files /dev/null and b/game.01/image/girl/girl7/16.jpg differ diff --git a/game.01/image/girl/girl7/2.jpg b/game.01/image/girl/girl7/2.jpg new file mode 100644 index 0000000..00ea82e Binary files /dev/null and b/game.01/image/girl/girl7/2.jpg differ diff --git a/game.01/image/girl/girl7/3.jpg b/game.01/image/girl/girl7/3.jpg new file mode 100644 index 0000000..350ea94 Binary files /dev/null and b/game.01/image/girl/girl7/3.jpg differ diff --git a/game.01/image/girl/girl7/4.jpg b/game.01/image/girl/girl7/4.jpg new file mode 100644 index 0000000..5590b68 Binary files /dev/null and b/game.01/image/girl/girl7/4.jpg differ diff --git a/game.01/image/girl/girl7/5.jpg b/game.01/image/girl/girl7/5.jpg new file mode 100644 index 0000000..45f9e6c Binary files /dev/null and b/game.01/image/girl/girl7/5.jpg differ diff --git a/game.01/image/girl/girl7/6.jpg b/game.01/image/girl/girl7/6.jpg new file mode 100644 index 0000000..7a1d5f3 Binary files /dev/null and b/game.01/image/girl/girl7/6.jpg differ diff --git a/game.01/image/girl/girl7/7.jpg b/game.01/image/girl/girl7/7.jpg new file mode 100644 index 0000000..b9d8d42 Binary files /dev/null and b/game.01/image/girl/girl7/7.jpg differ diff --git a/game.01/image/girl/girl7/8.jpg b/game.01/image/girl/girl7/8.jpg new file mode 100644 index 0000000..4eafa5f Binary files /dev/null and b/game.01/image/girl/girl7/8.jpg differ diff --git a/game.01/image/girl/girl7/9.jpg b/game.01/image/girl/girl7/9.jpg new file mode 100644 index 0000000..6eac821 Binary files /dev/null and b/game.01/image/girl/girl7/9.jpg differ diff --git a/game.01/image/girl/girl7/all.jpg b/game.01/image/girl/girl7/all.jpg new file mode 100644 index 0000000..c0ed6fe Binary files /dev/null and b/game.01/image/girl/girl7/all.jpg differ diff --git a/game.01/image/girl/girl8/1.jpg b/game.01/image/girl/girl8/1.jpg new file mode 100644 index 0000000..eb03bbf Binary files /dev/null and b/game.01/image/girl/girl8/1.jpg differ diff --git a/game.01/image/girl/girl8/10.jpg b/game.01/image/girl/girl8/10.jpg new file mode 100644 index 0000000..2f856d6 Binary files /dev/null and b/game.01/image/girl/girl8/10.jpg differ diff --git a/game.01/image/girl/girl8/11.jpg b/game.01/image/girl/girl8/11.jpg new file mode 100644 index 0000000..4d5227a Binary files /dev/null and b/game.01/image/girl/girl8/11.jpg differ diff --git a/game.01/image/girl/girl8/12.jpg b/game.01/image/girl/girl8/12.jpg new file mode 100644 index 0000000..02045d4 Binary files /dev/null and b/game.01/image/girl/girl8/12.jpg differ diff --git a/game.01/image/girl/girl8/13.jpg b/game.01/image/girl/girl8/13.jpg new file mode 100644 index 0000000..9c95282 Binary files /dev/null and b/game.01/image/girl/girl8/13.jpg differ diff --git a/game.01/image/girl/girl8/14.jpg b/game.01/image/girl/girl8/14.jpg new file mode 100644 index 0000000..875ffa9 Binary files /dev/null and b/game.01/image/girl/girl8/14.jpg differ diff --git a/game.01/image/girl/girl8/15.jpg b/game.01/image/girl/girl8/15.jpg new file mode 100644 index 0000000..370e6cf Binary files /dev/null and b/game.01/image/girl/girl8/15.jpg differ diff --git a/game.01/image/girl/girl8/16.jpg b/game.01/image/girl/girl8/16.jpg new file mode 100644 index 0000000..7462f2f Binary files /dev/null and b/game.01/image/girl/girl8/16.jpg differ diff --git a/game.01/image/girl/girl8/2.jpg b/game.01/image/girl/girl8/2.jpg new file mode 100644 index 0000000..83760e6 Binary files /dev/null and b/game.01/image/girl/girl8/2.jpg differ diff --git a/game.01/image/girl/girl8/3.jpg b/game.01/image/girl/girl8/3.jpg new file mode 100644 index 0000000..94ded4a Binary files /dev/null and b/game.01/image/girl/girl8/3.jpg differ diff --git a/game.01/image/girl/girl8/4.jpg b/game.01/image/girl/girl8/4.jpg new file mode 100644 index 0000000..85af428 Binary files /dev/null and b/game.01/image/girl/girl8/4.jpg differ diff --git a/game.01/image/girl/girl8/5.jpg b/game.01/image/girl/girl8/5.jpg new file mode 100644 index 0000000..1dffd13 Binary files /dev/null and b/game.01/image/girl/girl8/5.jpg differ diff --git a/game.01/image/girl/girl8/6.jpg b/game.01/image/girl/girl8/6.jpg new file mode 100644 index 0000000..142c2d9 Binary files /dev/null and b/game.01/image/girl/girl8/6.jpg differ diff --git a/game.01/image/girl/girl8/7.jpg b/game.01/image/girl/girl8/7.jpg new file mode 100644 index 0000000..87be1fe Binary files /dev/null and b/game.01/image/girl/girl8/7.jpg differ diff --git a/game.01/image/girl/girl8/8.jpg b/game.01/image/girl/girl8/8.jpg new file mode 100644 index 0000000..3fe227c Binary files /dev/null and b/game.01/image/girl/girl8/8.jpg differ diff --git a/game.01/image/girl/girl8/9.jpg b/game.01/image/girl/girl8/9.jpg new file mode 100644 index 0000000..cb9fa6c Binary files /dev/null and b/game.01/image/girl/girl8/9.jpg differ diff --git a/game.01/image/girl/girl8/all.jpg b/game.01/image/girl/girl8/all.jpg new file mode 100644 index 0000000..b8f2660 Binary files /dev/null and b/game.01/image/girl/girl8/all.jpg differ diff --git a/game.01/image/girl/girl9/1.jpg b/game.01/image/girl/girl9/1.jpg new file mode 100644 index 0000000..448ab03 Binary files /dev/null and b/game.01/image/girl/girl9/1.jpg differ diff --git a/game.01/image/girl/girl9/10.jpg b/game.01/image/girl/girl9/10.jpg new file mode 100644 index 0000000..9facc86 Binary files /dev/null and b/game.01/image/girl/girl9/10.jpg differ diff --git a/game.01/image/girl/girl9/11.jpg b/game.01/image/girl/girl9/11.jpg new file mode 100644 index 0000000..55cf115 Binary files /dev/null and b/game.01/image/girl/girl9/11.jpg differ diff --git a/game.01/image/girl/girl9/12.jpg b/game.01/image/girl/girl9/12.jpg new file mode 100644 index 0000000..471cfed Binary files /dev/null and b/game.01/image/girl/girl9/12.jpg differ diff --git a/game.01/image/girl/girl9/13.jpg b/game.01/image/girl/girl9/13.jpg new file mode 100644 index 0000000..c5d4406 Binary files /dev/null and b/game.01/image/girl/girl9/13.jpg differ diff --git a/game.01/image/girl/girl9/14.jpg b/game.01/image/girl/girl9/14.jpg new file mode 100644 index 0000000..c25abe6 Binary files /dev/null and b/game.01/image/girl/girl9/14.jpg differ diff --git a/game.01/image/girl/girl9/15.jpg b/game.01/image/girl/girl9/15.jpg new file mode 100644 index 0000000..4ad7e59 Binary files /dev/null and b/game.01/image/girl/girl9/15.jpg differ diff --git a/game.01/image/girl/girl9/16.jpg b/game.01/image/girl/girl9/16.jpg new file mode 100644 index 0000000..b1ca164 Binary files /dev/null and b/game.01/image/girl/girl9/16.jpg differ diff --git a/game.01/image/girl/girl9/2.jpg b/game.01/image/girl/girl9/2.jpg new file mode 100644 index 0000000..41a3065 Binary files /dev/null and b/game.01/image/girl/girl9/2.jpg differ diff --git a/game.01/image/girl/girl9/3.jpg b/game.01/image/girl/girl9/3.jpg new file mode 100644 index 0000000..2530618 Binary files /dev/null and b/game.01/image/girl/girl9/3.jpg differ diff --git a/game.01/image/girl/girl9/4.jpg b/game.01/image/girl/girl9/4.jpg new file mode 100644 index 0000000..ed18dfc Binary files /dev/null and b/game.01/image/girl/girl9/4.jpg differ diff --git a/game.01/image/girl/girl9/5.jpg b/game.01/image/girl/girl9/5.jpg new file mode 100644 index 0000000..7dc6e73 Binary files /dev/null and b/game.01/image/girl/girl9/5.jpg differ diff --git a/game.01/image/girl/girl9/6.jpg b/game.01/image/girl/girl9/6.jpg new file mode 100644 index 0000000..dca3ad0 Binary files /dev/null and b/game.01/image/girl/girl9/6.jpg differ diff --git a/game.01/image/girl/girl9/7.jpg b/game.01/image/girl/girl9/7.jpg new file mode 100644 index 0000000..5019214 Binary files /dev/null and b/game.01/image/girl/girl9/7.jpg differ diff --git a/game.01/image/girl/girl9/8.jpg b/game.01/image/girl/girl9/8.jpg new file mode 100644 index 0000000..14f90ff Binary files /dev/null and b/game.01/image/girl/girl9/8.jpg differ diff --git a/game.01/image/girl/girl9/9.jpg b/game.01/image/girl/girl9/9.jpg new file mode 100644 index 0000000..98edf80 Binary files /dev/null and b/game.01/image/girl/girl9/9.jpg differ diff --git a/game.01/image/girl/girl9/all.jpg b/game.01/image/girl/girl9/all.jpg new file mode 100644 index 0000000..17428c1 Binary files /dev/null and b/game.01/image/girl/girl9/all.jpg differ diff --git a/game.01/image/login/background.png b/game.01/image/login/background.png new file mode 100644 index 0000000..c86bb83 Binary files /dev/null and b/game.01/image/login/background.png differ diff --git a/game.01/image/login/密码.png b/game.01/image/login/密码.png new file mode 100644 index 0000000..fe6b434 Binary files /dev/null and b/game.01/image/login/密码.png differ diff --git a/game.01/image/login/显示密码.png b/game.01/image/login/显示密码.png new file mode 100644 index 0000000..74c8577 Binary files /dev/null and b/game.01/image/login/显示密码.png differ diff --git a/game.01/image/login/显示密码按下.png b/game.01/image/login/显示密码按下.png new file mode 100644 index 0000000..8edeb1d Binary files /dev/null and b/game.01/image/login/显示密码按下.png differ diff --git a/game.01/image/login/注册按下.png b/game.01/image/login/注册按下.png new file mode 100644 index 0000000..ae5217f Binary files /dev/null and b/game.01/image/login/注册按下.png differ diff --git a/game.01/image/login/注册按钮.png b/game.01/image/login/注册按钮.png new file mode 100644 index 0000000..00ebe77 Binary files /dev/null and b/game.01/image/login/注册按钮.png differ diff --git a/game.01/image/login/用户名.png b/game.01/image/login/用户名.png new file mode 100644 index 0000000..881a1b2 Binary files /dev/null and b/game.01/image/login/用户名.png differ diff --git a/game.01/image/login/登录按下.png b/game.01/image/login/登录按下.png new file mode 100644 index 0000000..0803405 Binary files /dev/null and b/game.01/image/login/登录按下.png differ diff --git a/game.01/image/login/登录按钮.png b/game.01/image/login/登录按钮.png new file mode 100644 index 0000000..3556ea2 Binary files /dev/null and b/game.01/image/login/登录按钮.png differ diff --git a/game.01/image/login/验证码.png b/game.01/image/login/验证码.png new file mode 100644 index 0000000..a6f5a5a Binary files /dev/null and b/game.01/image/login/验证码.png differ diff --git a/game.01/image/register/background.png b/game.01/image/register/background.png new file mode 100644 index 0000000..c86bb83 Binary files /dev/null and b/game.01/image/register/background.png differ diff --git a/game.01/image/register/再次输入密码.png b/game.01/image/register/再次输入密码.png new file mode 100644 index 0000000..a5fdc44 Binary files /dev/null and b/game.01/image/register/再次输入密码.png differ diff --git a/game.01/image/register/注册密码.png b/game.01/image/register/注册密码.png new file mode 100644 index 0000000..17f2b70 Binary files /dev/null and b/game.01/image/register/注册密码.png differ diff --git a/game.01/image/register/注册按下.png b/game.01/image/register/注册按下.png new file mode 100644 index 0000000..00f0acb Binary files /dev/null and b/game.01/image/register/注册按下.png differ diff --git a/game.01/image/register/注册按钮.png b/game.01/image/register/注册按钮.png new file mode 100644 index 0000000..00ebe77 Binary files /dev/null and b/game.01/image/register/注册按钮.png differ diff --git a/game.01/image/register/注册用户名.png b/game.01/image/register/注册用户名.png new file mode 100644 index 0000000..7147c5b Binary files /dev/null and b/game.01/image/register/注册用户名.png differ diff --git a/game.01/image/register/重置按下.png b/game.01/image/register/重置按下.png new file mode 100644 index 0000000..7e19429 Binary files /dev/null and b/game.01/image/register/重置按下.png differ diff --git a/game.01/image/register/重置按钮.png b/game.01/image/register/重置按钮.png new file mode 100644 index 0000000..6585d4b Binary files /dev/null and b/game.01/image/register/重置按钮.png differ diff --git a/game.01/image/sport/sport1/1.jpg b/game.01/image/sport/sport1/1.jpg new file mode 100644 index 0000000..9cbedb3 Binary files /dev/null and b/game.01/image/sport/sport1/1.jpg differ diff --git a/game.01/image/sport/sport1/10.jpg b/game.01/image/sport/sport1/10.jpg new file mode 100644 index 0000000..794d9ac Binary files /dev/null and b/game.01/image/sport/sport1/10.jpg differ diff --git a/game.01/image/sport/sport1/11.jpg b/game.01/image/sport/sport1/11.jpg new file mode 100644 index 0000000..0623cfa Binary files /dev/null and b/game.01/image/sport/sport1/11.jpg differ diff --git a/game.01/image/sport/sport1/12.jpg b/game.01/image/sport/sport1/12.jpg new file mode 100644 index 0000000..edcf0fc Binary files /dev/null and b/game.01/image/sport/sport1/12.jpg differ diff --git a/game.01/image/sport/sport1/13.jpg b/game.01/image/sport/sport1/13.jpg new file mode 100644 index 0000000..9b74651 Binary files /dev/null and b/game.01/image/sport/sport1/13.jpg differ diff --git a/game.01/image/sport/sport1/14.jpg b/game.01/image/sport/sport1/14.jpg new file mode 100644 index 0000000..a5b1cbd Binary files /dev/null and b/game.01/image/sport/sport1/14.jpg differ diff --git a/game.01/image/sport/sport1/15.jpg b/game.01/image/sport/sport1/15.jpg new file mode 100644 index 0000000..375e07f Binary files /dev/null and b/game.01/image/sport/sport1/15.jpg differ diff --git a/game.01/image/sport/sport1/16.jpg b/game.01/image/sport/sport1/16.jpg new file mode 100644 index 0000000..0d47345 Binary files /dev/null and b/game.01/image/sport/sport1/16.jpg differ diff --git a/game.01/image/sport/sport1/2.jpg b/game.01/image/sport/sport1/2.jpg new file mode 100644 index 0000000..c7526d7 Binary files /dev/null and b/game.01/image/sport/sport1/2.jpg differ diff --git a/game.01/image/sport/sport1/3.jpg b/game.01/image/sport/sport1/3.jpg new file mode 100644 index 0000000..1374aaa Binary files /dev/null and b/game.01/image/sport/sport1/3.jpg differ diff --git a/game.01/image/sport/sport1/4.jpg b/game.01/image/sport/sport1/4.jpg new file mode 100644 index 0000000..627f4e0 Binary files /dev/null and b/game.01/image/sport/sport1/4.jpg differ diff --git a/game.01/image/sport/sport1/5.jpg b/game.01/image/sport/sport1/5.jpg new file mode 100644 index 0000000..7cf23f8 Binary files /dev/null and b/game.01/image/sport/sport1/5.jpg differ diff --git a/game.01/image/sport/sport1/6.jpg b/game.01/image/sport/sport1/6.jpg new file mode 100644 index 0000000..7d940ea Binary files /dev/null and b/game.01/image/sport/sport1/6.jpg differ diff --git a/game.01/image/sport/sport1/7.jpg b/game.01/image/sport/sport1/7.jpg new file mode 100644 index 0000000..a48038b Binary files /dev/null and b/game.01/image/sport/sport1/7.jpg differ diff --git a/game.01/image/sport/sport1/8.jpg b/game.01/image/sport/sport1/8.jpg new file mode 100644 index 0000000..be4bece Binary files /dev/null and b/game.01/image/sport/sport1/8.jpg differ diff --git a/game.01/image/sport/sport1/9.jpg b/game.01/image/sport/sport1/9.jpg new file mode 100644 index 0000000..9852a42 Binary files /dev/null and b/game.01/image/sport/sport1/9.jpg differ diff --git a/game.01/image/sport/sport1/all.jpg b/game.01/image/sport/sport1/all.jpg new file mode 100644 index 0000000..04a979d Binary files /dev/null and b/game.01/image/sport/sport1/all.jpg differ diff --git a/game.01/image/sport/sport10/1.jpg b/game.01/image/sport/sport10/1.jpg new file mode 100644 index 0000000..bca5269 Binary files /dev/null and b/game.01/image/sport/sport10/1.jpg differ diff --git a/game.01/image/sport/sport10/10.jpg b/game.01/image/sport/sport10/10.jpg new file mode 100644 index 0000000..7872086 Binary files /dev/null and b/game.01/image/sport/sport10/10.jpg differ diff --git a/game.01/image/sport/sport10/11.jpg b/game.01/image/sport/sport10/11.jpg new file mode 100644 index 0000000..f58cae6 Binary files /dev/null and b/game.01/image/sport/sport10/11.jpg differ diff --git a/game.01/image/sport/sport10/12.jpg b/game.01/image/sport/sport10/12.jpg new file mode 100644 index 0000000..416db8e Binary files /dev/null and b/game.01/image/sport/sport10/12.jpg differ diff --git a/game.01/image/sport/sport10/13.jpg b/game.01/image/sport/sport10/13.jpg new file mode 100644 index 0000000..9ff8255 Binary files /dev/null and b/game.01/image/sport/sport10/13.jpg differ diff --git a/game.01/image/sport/sport10/14.jpg b/game.01/image/sport/sport10/14.jpg new file mode 100644 index 0000000..5d298e1 Binary files /dev/null and b/game.01/image/sport/sport10/14.jpg differ diff --git a/game.01/image/sport/sport10/15.jpg b/game.01/image/sport/sport10/15.jpg new file mode 100644 index 0000000..c10e502 Binary files /dev/null and b/game.01/image/sport/sport10/15.jpg differ diff --git a/game.01/image/sport/sport10/16.jpg b/game.01/image/sport/sport10/16.jpg new file mode 100644 index 0000000..9f1c927 Binary files /dev/null and b/game.01/image/sport/sport10/16.jpg differ diff --git a/game.01/image/sport/sport10/2.jpg b/game.01/image/sport/sport10/2.jpg new file mode 100644 index 0000000..69d5d83 Binary files /dev/null and b/game.01/image/sport/sport10/2.jpg differ diff --git a/game.01/image/sport/sport10/3.jpg b/game.01/image/sport/sport10/3.jpg new file mode 100644 index 0000000..681d469 Binary files /dev/null and b/game.01/image/sport/sport10/3.jpg differ diff --git a/game.01/image/sport/sport10/4.jpg b/game.01/image/sport/sport10/4.jpg new file mode 100644 index 0000000..8ede528 Binary files /dev/null and b/game.01/image/sport/sport10/4.jpg differ diff --git a/game.01/image/sport/sport10/5.jpg b/game.01/image/sport/sport10/5.jpg new file mode 100644 index 0000000..7bee84e Binary files /dev/null and b/game.01/image/sport/sport10/5.jpg differ diff --git a/game.01/image/sport/sport10/6.jpg b/game.01/image/sport/sport10/6.jpg new file mode 100644 index 0000000..06123b5 Binary files /dev/null and b/game.01/image/sport/sport10/6.jpg differ diff --git a/game.01/image/sport/sport10/7.jpg b/game.01/image/sport/sport10/7.jpg new file mode 100644 index 0000000..c1539f3 Binary files /dev/null and b/game.01/image/sport/sport10/7.jpg differ diff --git a/game.01/image/sport/sport10/8.jpg b/game.01/image/sport/sport10/8.jpg new file mode 100644 index 0000000..7ebda51 Binary files /dev/null and b/game.01/image/sport/sport10/8.jpg differ diff --git a/game.01/image/sport/sport10/9.jpg b/game.01/image/sport/sport10/9.jpg new file mode 100644 index 0000000..5d413c7 Binary files /dev/null and b/game.01/image/sport/sport10/9.jpg differ diff --git a/game.01/image/sport/sport10/all.jpg b/game.01/image/sport/sport10/all.jpg new file mode 100644 index 0000000..c2feb39 Binary files /dev/null and b/game.01/image/sport/sport10/all.jpg differ diff --git a/game.01/image/sport/sport2/1.jpg b/game.01/image/sport/sport2/1.jpg new file mode 100644 index 0000000..4d0624e Binary files /dev/null and b/game.01/image/sport/sport2/1.jpg differ diff --git a/game.01/image/sport/sport2/10.jpg b/game.01/image/sport/sport2/10.jpg new file mode 100644 index 0000000..e0ef4a0 Binary files /dev/null and b/game.01/image/sport/sport2/10.jpg differ diff --git a/game.01/image/sport/sport2/11.jpg b/game.01/image/sport/sport2/11.jpg new file mode 100644 index 0000000..867b278 Binary files /dev/null and b/game.01/image/sport/sport2/11.jpg differ diff --git a/game.01/image/sport/sport2/12.jpg b/game.01/image/sport/sport2/12.jpg new file mode 100644 index 0000000..7bad44b Binary files /dev/null and b/game.01/image/sport/sport2/12.jpg differ diff --git a/game.01/image/sport/sport2/13.jpg b/game.01/image/sport/sport2/13.jpg new file mode 100644 index 0000000..8ddec51 Binary files /dev/null and b/game.01/image/sport/sport2/13.jpg differ diff --git a/game.01/image/sport/sport2/14.jpg b/game.01/image/sport/sport2/14.jpg new file mode 100644 index 0000000..d7ba1b4 Binary files /dev/null and b/game.01/image/sport/sport2/14.jpg differ diff --git a/game.01/image/sport/sport2/15.jpg b/game.01/image/sport/sport2/15.jpg new file mode 100644 index 0000000..9111a5c Binary files /dev/null and b/game.01/image/sport/sport2/15.jpg differ diff --git a/game.01/image/sport/sport2/16.jpg b/game.01/image/sport/sport2/16.jpg new file mode 100644 index 0000000..a29db3e Binary files /dev/null and b/game.01/image/sport/sport2/16.jpg differ diff --git a/game.01/image/sport/sport2/2.jpg b/game.01/image/sport/sport2/2.jpg new file mode 100644 index 0000000..8b4a29c Binary files /dev/null and b/game.01/image/sport/sport2/2.jpg differ diff --git a/game.01/image/sport/sport2/3.jpg b/game.01/image/sport/sport2/3.jpg new file mode 100644 index 0000000..e3c6141 Binary files /dev/null and b/game.01/image/sport/sport2/3.jpg differ diff --git a/game.01/image/sport/sport2/4.jpg b/game.01/image/sport/sport2/4.jpg new file mode 100644 index 0000000..a773299 Binary files /dev/null and b/game.01/image/sport/sport2/4.jpg differ diff --git a/game.01/image/sport/sport2/5.jpg b/game.01/image/sport/sport2/5.jpg new file mode 100644 index 0000000..542d7d8 Binary files /dev/null and b/game.01/image/sport/sport2/5.jpg differ diff --git a/game.01/image/sport/sport2/6.jpg b/game.01/image/sport/sport2/6.jpg new file mode 100644 index 0000000..44218bb Binary files /dev/null and b/game.01/image/sport/sport2/6.jpg differ diff --git a/game.01/image/sport/sport2/7.jpg b/game.01/image/sport/sport2/7.jpg new file mode 100644 index 0000000..faa815f Binary files /dev/null and b/game.01/image/sport/sport2/7.jpg differ diff --git a/game.01/image/sport/sport2/8.jpg b/game.01/image/sport/sport2/8.jpg new file mode 100644 index 0000000..ed5c9df Binary files /dev/null and b/game.01/image/sport/sport2/8.jpg differ diff --git a/game.01/image/sport/sport2/9.jpg b/game.01/image/sport/sport2/9.jpg new file mode 100644 index 0000000..880fde1 Binary files /dev/null and b/game.01/image/sport/sport2/9.jpg differ diff --git a/game.01/image/sport/sport2/all.jpg b/game.01/image/sport/sport2/all.jpg new file mode 100644 index 0000000..eb6399d Binary files /dev/null and b/game.01/image/sport/sport2/all.jpg differ diff --git a/game.01/image/sport/sport3/1.jpg b/game.01/image/sport/sport3/1.jpg new file mode 100644 index 0000000..4ecede6 Binary files /dev/null and b/game.01/image/sport/sport3/1.jpg differ diff --git a/game.01/image/sport/sport3/10.jpg b/game.01/image/sport/sport3/10.jpg new file mode 100644 index 0000000..877b88a Binary files /dev/null and b/game.01/image/sport/sport3/10.jpg differ diff --git a/game.01/image/sport/sport3/11.jpg b/game.01/image/sport/sport3/11.jpg new file mode 100644 index 0000000..d98e5f5 Binary files /dev/null and b/game.01/image/sport/sport3/11.jpg differ diff --git a/game.01/image/sport/sport3/12.jpg b/game.01/image/sport/sport3/12.jpg new file mode 100644 index 0000000..bed6cef Binary files /dev/null and b/game.01/image/sport/sport3/12.jpg differ diff --git a/game.01/image/sport/sport3/13.jpg b/game.01/image/sport/sport3/13.jpg new file mode 100644 index 0000000..cd3864e Binary files /dev/null and b/game.01/image/sport/sport3/13.jpg differ diff --git a/game.01/image/sport/sport3/14.jpg b/game.01/image/sport/sport3/14.jpg new file mode 100644 index 0000000..793c859 Binary files /dev/null and b/game.01/image/sport/sport3/14.jpg differ diff --git a/game.01/image/sport/sport3/15.jpg b/game.01/image/sport/sport3/15.jpg new file mode 100644 index 0000000..41d5691 Binary files /dev/null and b/game.01/image/sport/sport3/15.jpg differ diff --git a/game.01/image/sport/sport3/16.jpg b/game.01/image/sport/sport3/16.jpg new file mode 100644 index 0000000..b786db6 Binary files /dev/null and b/game.01/image/sport/sport3/16.jpg differ diff --git a/game.01/image/sport/sport3/2.jpg b/game.01/image/sport/sport3/2.jpg new file mode 100644 index 0000000..f5e4b4d Binary files /dev/null and b/game.01/image/sport/sport3/2.jpg differ diff --git a/game.01/image/sport/sport3/3.jpg b/game.01/image/sport/sport3/3.jpg new file mode 100644 index 0000000..171537e Binary files /dev/null and b/game.01/image/sport/sport3/3.jpg differ diff --git a/game.01/image/sport/sport3/4.jpg b/game.01/image/sport/sport3/4.jpg new file mode 100644 index 0000000..7d32d83 Binary files /dev/null and b/game.01/image/sport/sport3/4.jpg differ diff --git a/game.01/image/sport/sport3/5.jpg b/game.01/image/sport/sport3/5.jpg new file mode 100644 index 0000000..6f0906e Binary files /dev/null and b/game.01/image/sport/sport3/5.jpg differ diff --git a/game.01/image/sport/sport3/6.jpg b/game.01/image/sport/sport3/6.jpg new file mode 100644 index 0000000..2760c07 Binary files /dev/null and b/game.01/image/sport/sport3/6.jpg differ diff --git a/game.01/image/sport/sport3/7.jpg b/game.01/image/sport/sport3/7.jpg new file mode 100644 index 0000000..d86f1ed Binary files /dev/null and b/game.01/image/sport/sport3/7.jpg differ diff --git a/game.01/image/sport/sport3/8.jpg b/game.01/image/sport/sport3/8.jpg new file mode 100644 index 0000000..8ff7bce Binary files /dev/null and b/game.01/image/sport/sport3/8.jpg differ diff --git a/game.01/image/sport/sport3/9.jpg b/game.01/image/sport/sport3/9.jpg new file mode 100644 index 0000000..c2890bf Binary files /dev/null and b/game.01/image/sport/sport3/9.jpg differ diff --git a/game.01/image/sport/sport3/all.jpg b/game.01/image/sport/sport3/all.jpg new file mode 100644 index 0000000..87bb4f2 Binary files /dev/null and b/game.01/image/sport/sport3/all.jpg differ diff --git a/game.01/image/sport/sport4/1.jpg b/game.01/image/sport/sport4/1.jpg new file mode 100644 index 0000000..0208a28 Binary files /dev/null and b/game.01/image/sport/sport4/1.jpg differ diff --git a/game.01/image/sport/sport4/10.jpg b/game.01/image/sport/sport4/10.jpg new file mode 100644 index 0000000..3e2f1b7 Binary files /dev/null and b/game.01/image/sport/sport4/10.jpg differ diff --git a/game.01/image/sport/sport4/11.jpg b/game.01/image/sport/sport4/11.jpg new file mode 100644 index 0000000..2dc963c Binary files /dev/null and b/game.01/image/sport/sport4/11.jpg differ diff --git a/game.01/image/sport/sport4/12.jpg b/game.01/image/sport/sport4/12.jpg new file mode 100644 index 0000000..7a75e95 Binary files /dev/null and b/game.01/image/sport/sport4/12.jpg differ diff --git a/game.01/image/sport/sport4/13.jpg b/game.01/image/sport/sport4/13.jpg new file mode 100644 index 0000000..f64d38a Binary files /dev/null and b/game.01/image/sport/sport4/13.jpg differ diff --git a/game.01/image/sport/sport4/14.jpg b/game.01/image/sport/sport4/14.jpg new file mode 100644 index 0000000..71529a8 Binary files /dev/null and b/game.01/image/sport/sport4/14.jpg differ diff --git a/game.01/image/sport/sport4/15.jpg b/game.01/image/sport/sport4/15.jpg new file mode 100644 index 0000000..afb1326 Binary files /dev/null and b/game.01/image/sport/sport4/15.jpg differ diff --git a/game.01/image/sport/sport4/16.jpg b/game.01/image/sport/sport4/16.jpg new file mode 100644 index 0000000..a418c12 Binary files /dev/null and b/game.01/image/sport/sport4/16.jpg differ diff --git a/game.01/image/sport/sport4/2.jpg b/game.01/image/sport/sport4/2.jpg new file mode 100644 index 0000000..dd51fc8 Binary files /dev/null and b/game.01/image/sport/sport4/2.jpg differ diff --git a/game.01/image/sport/sport4/3.jpg b/game.01/image/sport/sport4/3.jpg new file mode 100644 index 0000000..0bad76a Binary files /dev/null and b/game.01/image/sport/sport4/3.jpg differ diff --git a/game.01/image/sport/sport4/4.jpg b/game.01/image/sport/sport4/4.jpg new file mode 100644 index 0000000..1546f1d Binary files /dev/null and b/game.01/image/sport/sport4/4.jpg differ diff --git a/game.01/image/sport/sport4/5.jpg b/game.01/image/sport/sport4/5.jpg new file mode 100644 index 0000000..e8be447 Binary files /dev/null and b/game.01/image/sport/sport4/5.jpg differ diff --git a/game.01/image/sport/sport4/6.jpg b/game.01/image/sport/sport4/6.jpg new file mode 100644 index 0000000..2ec8540 Binary files /dev/null and b/game.01/image/sport/sport4/6.jpg differ diff --git a/game.01/image/sport/sport4/7.jpg b/game.01/image/sport/sport4/7.jpg new file mode 100644 index 0000000..cb5f31f Binary files /dev/null and b/game.01/image/sport/sport4/7.jpg differ diff --git a/game.01/image/sport/sport4/8.jpg b/game.01/image/sport/sport4/8.jpg new file mode 100644 index 0000000..c68f407 Binary files /dev/null and b/game.01/image/sport/sport4/8.jpg differ diff --git a/game.01/image/sport/sport4/9.jpg b/game.01/image/sport/sport4/9.jpg new file mode 100644 index 0000000..f229c35 Binary files /dev/null and b/game.01/image/sport/sport4/9.jpg differ diff --git a/game.01/image/sport/sport4/all.jpg b/game.01/image/sport/sport4/all.jpg new file mode 100644 index 0000000..5ed489e Binary files /dev/null and b/game.01/image/sport/sport4/all.jpg differ diff --git a/game.01/image/sport/sport5/1.jpg b/game.01/image/sport/sport5/1.jpg new file mode 100644 index 0000000..205fc28 Binary files /dev/null and b/game.01/image/sport/sport5/1.jpg differ diff --git a/game.01/image/sport/sport5/10.jpg b/game.01/image/sport/sport5/10.jpg new file mode 100644 index 0000000..4d34e06 Binary files /dev/null and b/game.01/image/sport/sport5/10.jpg differ diff --git a/game.01/image/sport/sport5/11.jpg b/game.01/image/sport/sport5/11.jpg new file mode 100644 index 0000000..66364a6 Binary files /dev/null and b/game.01/image/sport/sport5/11.jpg differ diff --git a/game.01/image/sport/sport5/12.jpg b/game.01/image/sport/sport5/12.jpg new file mode 100644 index 0000000..01710fc Binary files /dev/null and b/game.01/image/sport/sport5/12.jpg differ diff --git a/game.01/image/sport/sport5/13.jpg b/game.01/image/sport/sport5/13.jpg new file mode 100644 index 0000000..b5ad613 Binary files /dev/null and b/game.01/image/sport/sport5/13.jpg differ diff --git a/game.01/image/sport/sport5/14.jpg b/game.01/image/sport/sport5/14.jpg new file mode 100644 index 0000000..5c68544 Binary files /dev/null and b/game.01/image/sport/sport5/14.jpg differ diff --git a/game.01/image/sport/sport5/15.jpg b/game.01/image/sport/sport5/15.jpg new file mode 100644 index 0000000..449c65b Binary files /dev/null and b/game.01/image/sport/sport5/15.jpg differ diff --git a/game.01/image/sport/sport5/16.jpg b/game.01/image/sport/sport5/16.jpg new file mode 100644 index 0000000..81b783c Binary files /dev/null and b/game.01/image/sport/sport5/16.jpg differ diff --git a/game.01/image/sport/sport5/2.jpg b/game.01/image/sport/sport5/2.jpg new file mode 100644 index 0000000..9945ec6 Binary files /dev/null and b/game.01/image/sport/sport5/2.jpg differ diff --git a/game.01/image/sport/sport5/3.jpg b/game.01/image/sport/sport5/3.jpg new file mode 100644 index 0000000..0b7a432 Binary files /dev/null and b/game.01/image/sport/sport5/3.jpg differ diff --git a/game.01/image/sport/sport5/4.jpg b/game.01/image/sport/sport5/4.jpg new file mode 100644 index 0000000..397af0e Binary files /dev/null and b/game.01/image/sport/sport5/4.jpg differ diff --git a/game.01/image/sport/sport5/5.jpg b/game.01/image/sport/sport5/5.jpg new file mode 100644 index 0000000..2cb25ed Binary files /dev/null and b/game.01/image/sport/sport5/5.jpg differ diff --git a/game.01/image/sport/sport5/6.jpg b/game.01/image/sport/sport5/6.jpg new file mode 100644 index 0000000..bedb956 Binary files /dev/null and b/game.01/image/sport/sport5/6.jpg differ diff --git a/game.01/image/sport/sport5/7.jpg b/game.01/image/sport/sport5/7.jpg new file mode 100644 index 0000000..fe892e0 Binary files /dev/null and b/game.01/image/sport/sport5/7.jpg differ diff --git a/game.01/image/sport/sport5/8.jpg b/game.01/image/sport/sport5/8.jpg new file mode 100644 index 0000000..58cc3bd Binary files /dev/null and b/game.01/image/sport/sport5/8.jpg differ diff --git a/game.01/image/sport/sport5/9.jpg b/game.01/image/sport/sport5/9.jpg new file mode 100644 index 0000000..a9f23b2 Binary files /dev/null and b/game.01/image/sport/sport5/9.jpg differ diff --git a/game.01/image/sport/sport5/all.jpg b/game.01/image/sport/sport5/all.jpg new file mode 100644 index 0000000..d5988e6 Binary files /dev/null and b/game.01/image/sport/sport5/all.jpg differ diff --git a/game.01/image/sport/sport6/1.jpg b/game.01/image/sport/sport6/1.jpg new file mode 100644 index 0000000..8716c0e Binary files /dev/null and b/game.01/image/sport/sport6/1.jpg differ diff --git a/game.01/image/sport/sport6/10.jpg b/game.01/image/sport/sport6/10.jpg new file mode 100644 index 0000000..f7e9e48 Binary files /dev/null and b/game.01/image/sport/sport6/10.jpg differ diff --git a/game.01/image/sport/sport6/11.jpg b/game.01/image/sport/sport6/11.jpg new file mode 100644 index 0000000..6995ff9 Binary files /dev/null and b/game.01/image/sport/sport6/11.jpg differ diff --git a/game.01/image/sport/sport6/12.jpg b/game.01/image/sport/sport6/12.jpg new file mode 100644 index 0000000..e595a4f Binary files /dev/null and b/game.01/image/sport/sport6/12.jpg differ diff --git a/game.01/image/sport/sport6/13.jpg b/game.01/image/sport/sport6/13.jpg new file mode 100644 index 0000000..7b081a3 Binary files /dev/null and b/game.01/image/sport/sport6/13.jpg differ diff --git a/game.01/image/sport/sport6/14.jpg b/game.01/image/sport/sport6/14.jpg new file mode 100644 index 0000000..94e2cf0 Binary files /dev/null and b/game.01/image/sport/sport6/14.jpg differ diff --git a/game.01/image/sport/sport6/15.jpg b/game.01/image/sport/sport6/15.jpg new file mode 100644 index 0000000..2f14b03 Binary files /dev/null and b/game.01/image/sport/sport6/15.jpg differ diff --git a/game.01/image/sport/sport6/16.jpg b/game.01/image/sport/sport6/16.jpg new file mode 100644 index 0000000..2710fd3 Binary files /dev/null and b/game.01/image/sport/sport6/16.jpg differ diff --git a/game.01/image/sport/sport6/2.jpg b/game.01/image/sport/sport6/2.jpg new file mode 100644 index 0000000..f9d5291 Binary files /dev/null and b/game.01/image/sport/sport6/2.jpg differ diff --git a/game.01/image/sport/sport6/3.jpg b/game.01/image/sport/sport6/3.jpg new file mode 100644 index 0000000..40d597b Binary files /dev/null and b/game.01/image/sport/sport6/3.jpg differ diff --git a/game.01/image/sport/sport6/4.jpg b/game.01/image/sport/sport6/4.jpg new file mode 100644 index 0000000..0dd003c Binary files /dev/null and b/game.01/image/sport/sport6/4.jpg differ diff --git a/game.01/image/sport/sport6/5.jpg b/game.01/image/sport/sport6/5.jpg new file mode 100644 index 0000000..43f4943 Binary files /dev/null and b/game.01/image/sport/sport6/5.jpg differ diff --git a/game.01/image/sport/sport6/6.jpg b/game.01/image/sport/sport6/6.jpg new file mode 100644 index 0000000..dd13a9f Binary files /dev/null and b/game.01/image/sport/sport6/6.jpg differ diff --git a/game.01/image/sport/sport6/7.jpg b/game.01/image/sport/sport6/7.jpg new file mode 100644 index 0000000..8561bec Binary files /dev/null and b/game.01/image/sport/sport6/7.jpg differ diff --git a/game.01/image/sport/sport6/8.jpg b/game.01/image/sport/sport6/8.jpg new file mode 100644 index 0000000..9e95401 Binary files /dev/null and b/game.01/image/sport/sport6/8.jpg differ diff --git a/game.01/image/sport/sport6/9.jpg b/game.01/image/sport/sport6/9.jpg new file mode 100644 index 0000000..e5a53cf Binary files /dev/null and b/game.01/image/sport/sport6/9.jpg differ diff --git a/game.01/image/sport/sport6/all.jpg b/game.01/image/sport/sport6/all.jpg new file mode 100644 index 0000000..eab6b0a Binary files /dev/null and b/game.01/image/sport/sport6/all.jpg differ diff --git a/game.01/image/sport/sport7/1.jpg b/game.01/image/sport/sport7/1.jpg new file mode 100644 index 0000000..de44d28 Binary files /dev/null and b/game.01/image/sport/sport7/1.jpg differ diff --git a/game.01/image/sport/sport7/10.jpg b/game.01/image/sport/sport7/10.jpg new file mode 100644 index 0000000..d8fb65d Binary files /dev/null and b/game.01/image/sport/sport7/10.jpg differ diff --git a/game.01/image/sport/sport7/11.jpg b/game.01/image/sport/sport7/11.jpg new file mode 100644 index 0000000..ab46e10 Binary files /dev/null and b/game.01/image/sport/sport7/11.jpg differ diff --git a/game.01/image/sport/sport7/12.jpg b/game.01/image/sport/sport7/12.jpg new file mode 100644 index 0000000..d415af7 Binary files /dev/null and b/game.01/image/sport/sport7/12.jpg differ diff --git a/game.01/image/sport/sport7/13.jpg b/game.01/image/sport/sport7/13.jpg new file mode 100644 index 0000000..6a9f081 Binary files /dev/null and b/game.01/image/sport/sport7/13.jpg differ diff --git a/game.01/image/sport/sport7/14.jpg b/game.01/image/sport/sport7/14.jpg new file mode 100644 index 0000000..5a4dd4c Binary files /dev/null and b/game.01/image/sport/sport7/14.jpg differ diff --git a/game.01/image/sport/sport7/15.jpg b/game.01/image/sport/sport7/15.jpg new file mode 100644 index 0000000..520bc7f Binary files /dev/null and b/game.01/image/sport/sport7/15.jpg differ diff --git a/game.01/image/sport/sport7/16.jpg b/game.01/image/sport/sport7/16.jpg new file mode 100644 index 0000000..a17a175 Binary files /dev/null and b/game.01/image/sport/sport7/16.jpg differ diff --git a/game.01/image/sport/sport7/2.jpg b/game.01/image/sport/sport7/2.jpg new file mode 100644 index 0000000..5f3769d Binary files /dev/null and b/game.01/image/sport/sport7/2.jpg differ diff --git a/game.01/image/sport/sport7/3.jpg b/game.01/image/sport/sport7/3.jpg new file mode 100644 index 0000000..3b5a2d6 Binary files /dev/null and b/game.01/image/sport/sport7/3.jpg differ diff --git a/game.01/image/sport/sport7/4.jpg b/game.01/image/sport/sport7/4.jpg new file mode 100644 index 0000000..e132bc4 Binary files /dev/null and b/game.01/image/sport/sport7/4.jpg differ diff --git a/game.01/image/sport/sport7/5.jpg b/game.01/image/sport/sport7/5.jpg new file mode 100644 index 0000000..2d480ee Binary files /dev/null and b/game.01/image/sport/sport7/5.jpg differ diff --git a/game.01/image/sport/sport7/6.jpg b/game.01/image/sport/sport7/6.jpg new file mode 100644 index 0000000..173ce6d Binary files /dev/null and b/game.01/image/sport/sport7/6.jpg differ diff --git a/game.01/image/sport/sport7/7.jpg b/game.01/image/sport/sport7/7.jpg new file mode 100644 index 0000000..17b4b3e Binary files /dev/null and b/game.01/image/sport/sport7/7.jpg differ diff --git a/game.01/image/sport/sport7/8.jpg b/game.01/image/sport/sport7/8.jpg new file mode 100644 index 0000000..aeafa45 Binary files /dev/null and b/game.01/image/sport/sport7/8.jpg differ diff --git a/game.01/image/sport/sport7/9.jpg b/game.01/image/sport/sport7/9.jpg new file mode 100644 index 0000000..f4ba0eb Binary files /dev/null and b/game.01/image/sport/sport7/9.jpg differ diff --git a/game.01/image/sport/sport7/all.jpg b/game.01/image/sport/sport7/all.jpg new file mode 100644 index 0000000..708af5b Binary files /dev/null and b/game.01/image/sport/sport7/all.jpg differ diff --git a/game.01/image/sport/sport8/1.jpg b/game.01/image/sport/sport8/1.jpg new file mode 100644 index 0000000..835f31d Binary files /dev/null and b/game.01/image/sport/sport8/1.jpg differ diff --git a/game.01/image/sport/sport8/10.jpg b/game.01/image/sport/sport8/10.jpg new file mode 100644 index 0000000..6dd3097 Binary files /dev/null and b/game.01/image/sport/sport8/10.jpg differ diff --git a/game.01/image/sport/sport8/11.jpg b/game.01/image/sport/sport8/11.jpg new file mode 100644 index 0000000..551dde9 Binary files /dev/null and b/game.01/image/sport/sport8/11.jpg differ diff --git a/game.01/image/sport/sport8/12.jpg b/game.01/image/sport/sport8/12.jpg new file mode 100644 index 0000000..ade2ad9 Binary files /dev/null and b/game.01/image/sport/sport8/12.jpg differ diff --git a/game.01/image/sport/sport8/13.jpg b/game.01/image/sport/sport8/13.jpg new file mode 100644 index 0000000..d3b4114 Binary files /dev/null and b/game.01/image/sport/sport8/13.jpg differ diff --git a/game.01/image/sport/sport8/14.jpg b/game.01/image/sport/sport8/14.jpg new file mode 100644 index 0000000..f1880e1 Binary files /dev/null and b/game.01/image/sport/sport8/14.jpg differ diff --git a/game.01/image/sport/sport8/15.jpg b/game.01/image/sport/sport8/15.jpg new file mode 100644 index 0000000..4ca19cc Binary files /dev/null and b/game.01/image/sport/sport8/15.jpg differ diff --git a/game.01/image/sport/sport8/16.jpg b/game.01/image/sport/sport8/16.jpg new file mode 100644 index 0000000..207fef3 Binary files /dev/null and b/game.01/image/sport/sport8/16.jpg differ diff --git a/game.01/image/sport/sport8/2.jpg b/game.01/image/sport/sport8/2.jpg new file mode 100644 index 0000000..ec3f824 Binary files /dev/null and b/game.01/image/sport/sport8/2.jpg differ diff --git a/game.01/image/sport/sport8/3.jpg b/game.01/image/sport/sport8/3.jpg new file mode 100644 index 0000000..e6137c7 Binary files /dev/null and b/game.01/image/sport/sport8/3.jpg differ diff --git a/game.01/image/sport/sport8/4.jpg b/game.01/image/sport/sport8/4.jpg new file mode 100644 index 0000000..bb91160 Binary files /dev/null and b/game.01/image/sport/sport8/4.jpg differ diff --git a/game.01/image/sport/sport8/5.jpg b/game.01/image/sport/sport8/5.jpg new file mode 100644 index 0000000..48f55f9 Binary files /dev/null and b/game.01/image/sport/sport8/5.jpg differ diff --git a/game.01/image/sport/sport8/6.jpg b/game.01/image/sport/sport8/6.jpg new file mode 100644 index 0000000..ca31729 Binary files /dev/null and b/game.01/image/sport/sport8/6.jpg differ diff --git a/game.01/image/sport/sport8/7.jpg b/game.01/image/sport/sport8/7.jpg new file mode 100644 index 0000000..174277a Binary files /dev/null and b/game.01/image/sport/sport8/7.jpg differ diff --git a/game.01/image/sport/sport8/8.jpg b/game.01/image/sport/sport8/8.jpg new file mode 100644 index 0000000..49282c9 Binary files /dev/null and b/game.01/image/sport/sport8/8.jpg differ diff --git a/game.01/image/sport/sport8/9.jpg b/game.01/image/sport/sport8/9.jpg new file mode 100644 index 0000000..9ac7e03 Binary files /dev/null and b/game.01/image/sport/sport8/9.jpg differ diff --git a/game.01/image/sport/sport8/all.jpg b/game.01/image/sport/sport8/all.jpg new file mode 100644 index 0000000..8fb6c7d Binary files /dev/null and b/game.01/image/sport/sport8/all.jpg differ diff --git a/game.01/image/sport/sport9/1.jpg b/game.01/image/sport/sport9/1.jpg new file mode 100644 index 0000000..cb86010 Binary files /dev/null and b/game.01/image/sport/sport9/1.jpg differ diff --git a/game.01/image/sport/sport9/10.jpg b/game.01/image/sport/sport9/10.jpg new file mode 100644 index 0000000..ca18e28 Binary files /dev/null and b/game.01/image/sport/sport9/10.jpg differ diff --git a/game.01/image/sport/sport9/11.jpg b/game.01/image/sport/sport9/11.jpg new file mode 100644 index 0000000..9f899c8 Binary files /dev/null and b/game.01/image/sport/sport9/11.jpg differ diff --git a/game.01/image/sport/sport9/12.jpg b/game.01/image/sport/sport9/12.jpg new file mode 100644 index 0000000..d4eb7fd Binary files /dev/null and b/game.01/image/sport/sport9/12.jpg differ diff --git a/game.01/image/sport/sport9/13.jpg b/game.01/image/sport/sport9/13.jpg new file mode 100644 index 0000000..1964208 Binary files /dev/null and b/game.01/image/sport/sport9/13.jpg differ diff --git a/game.01/image/sport/sport9/14.jpg b/game.01/image/sport/sport9/14.jpg new file mode 100644 index 0000000..a336add Binary files /dev/null and b/game.01/image/sport/sport9/14.jpg differ diff --git a/game.01/image/sport/sport9/15.jpg b/game.01/image/sport/sport9/15.jpg new file mode 100644 index 0000000..08f3c00 Binary files /dev/null and b/game.01/image/sport/sport9/15.jpg differ diff --git a/game.01/image/sport/sport9/16.jpg b/game.01/image/sport/sport9/16.jpg new file mode 100644 index 0000000..a8aa8d9 Binary files /dev/null and b/game.01/image/sport/sport9/16.jpg differ diff --git a/game.01/image/sport/sport9/2.jpg b/game.01/image/sport/sport9/2.jpg new file mode 100644 index 0000000..2ac0ab3 Binary files /dev/null and b/game.01/image/sport/sport9/2.jpg differ diff --git a/game.01/image/sport/sport9/3.jpg b/game.01/image/sport/sport9/3.jpg new file mode 100644 index 0000000..f83882b Binary files /dev/null and b/game.01/image/sport/sport9/3.jpg differ diff --git a/game.01/image/sport/sport9/4.jpg b/game.01/image/sport/sport9/4.jpg new file mode 100644 index 0000000..26aa548 Binary files /dev/null and b/game.01/image/sport/sport9/4.jpg differ diff --git a/game.01/image/sport/sport9/5.jpg b/game.01/image/sport/sport9/5.jpg new file mode 100644 index 0000000..f8cf741 Binary files /dev/null and b/game.01/image/sport/sport9/5.jpg differ diff --git a/game.01/image/sport/sport9/6.jpg b/game.01/image/sport/sport9/6.jpg new file mode 100644 index 0000000..34fbb0c Binary files /dev/null and b/game.01/image/sport/sport9/6.jpg differ diff --git a/game.01/image/sport/sport9/7.jpg b/game.01/image/sport/sport9/7.jpg new file mode 100644 index 0000000..7bc32d1 Binary files /dev/null and b/game.01/image/sport/sport9/7.jpg differ diff --git a/game.01/image/sport/sport9/8.jpg b/game.01/image/sport/sport9/8.jpg new file mode 100644 index 0000000..09c61f0 Binary files /dev/null and b/game.01/image/sport/sport9/8.jpg differ diff --git a/game.01/image/sport/sport9/9.jpg b/game.01/image/sport/sport9/9.jpg new file mode 100644 index 0000000..87e51e3 Binary files /dev/null and b/game.01/image/sport/sport9/9.jpg differ diff --git a/game.01/image/sport/sport9/all.jpg b/game.01/image/sport/sport9/all.jpg new file mode 100644 index 0000000..18cbf10 Binary files /dev/null and b/game.01/image/sport/sport9/all.jpg differ diff --git a/game.01/image/win.png b/game.01/image/win.png new file mode 100644 index 0000000..444ea7b Binary files /dev/null and b/game.01/image/win.png differ diff --git a/game.01/src/top/lejings/test/Test.java b/game.01/src/top/lejings/test/Test.java new file mode 100644 index 0000000..fa13a09 --- /dev/null +++ b/game.01/src/top/lejings/test/Test.java @@ -0,0 +1,16 @@ +package top.lejings.test; + +public class Test { + public static void main(String[] args) { + //实现打乱一维数组的数据,0~15,并将其分为四组存放到二维数组中 + //1.打乱 + int[] tempArr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + //分配给二维数组 + int [][] data = new int[4][4]; + for(int i = 0; i < tempArr.length; i++) + { + data[i/4][i%4] = tempArr[i]; + } + + } +} diff --git a/game.01/src/top/lejings/test/event.java b/game.01/src/top/lejings/test/event.java new file mode 100644 index 0000000..ef80c4b --- /dev/null +++ b/game.01/src/top/lejings/test/event.java @@ -0,0 +1,8 @@ +package top.lejings.test; +/* +* 事件:事件源,事件,绑定监听 +* +* +* */ +public class event { +} diff --git a/game.01/src/top/lejings/ui/App.java b/game.01/src/top/lejings/ui/App.java new file mode 100644 index 0000000..63d96e3 --- /dev/null +++ b/game.01/src/top/lejings/ui/App.java @@ -0,0 +1,9 @@ +package top.lejings.ui; + +import javax.swing.*; + +public class App { + public static void main(String[] args) { + new GameJFrame(); + } +} diff --git a/game.01/src/top/lejings/ui/GameJFrame.java b/game.01/src/top/lejings/ui/GameJFrame.java new file mode 100644 index 0000000..ed19c1c --- /dev/null +++ b/game.01/src/top/lejings/ui/GameJFrame.java @@ -0,0 +1,110 @@ +package top.lejings.ui; +import javax.swing.*; +import java.util.Random; + +//主界面功能 +public class GameJFrame extends JFrame { + + int [][] data = new int[4][4]; + + public GameJFrame() { + //初始化界面 + initJFrame(); + //添加菜单 + initJMenuBar(); + //初始化数据(打乱) + initDate(); + //添加图片 + initImage(); + + //显示界面 + this.setVisible(true); + } + + private void initDate() { + int[] tempArr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + //分配给二维数组 + Random r=new Random(); + for(int i=0;i + + + + + \ No newline at end of file diff --git a/java.learn/java基础/java_learn/java_learn/.idea/modules.xml b/java.learn/java基础/java_learn/java_learn/.idea/modules.xml new file mode 100644 index 0000000..ea045fe --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java.learn/java基础/java_learn/java_learn/.idea/uiDesigner.xml b/java.learn/java基础/java_learn/java_learn/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java.learn/java基础/java_learn/java_learn/.idea/vcs.xml b/java.learn/java基础/java_learn/java_learn/.idea/vcs.xml new file mode 100644 index 0000000..77a3cc7 --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/java.learn/java基础/java_learn/java_learn/java_learn.iml b/java.learn/java基础/java_learn/java_learn/java_learn.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/java_learn.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java.learn/java基础/java_learn/java_learn/src/Main.java b/java.learn/java基础/java_learn/java_learn/src/Main.java new file mode 100644 index 0000000..e244216 --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/src/Main.java @@ -0,0 +1,26 @@ +import java.util.Arrays; + +//TIP 要运行代码,请按 或 +// 点击装订区域中的 图标。 +public class Main { + public static void main(String[] args) { + int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + int[] arr2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + //比较 + System.out.println(Arrays.equals(arr1,arr2)); + //输出 + System.out.println(Arrays.toString(arr1));//包含括号 + //填充 + Arrays.fill(arr1, 0); + + System.out.println(Arrays.toString(arr1)); + //排序 + int[] arr3 = {1, 123, 3, 123, 5, 2323, 7, 8, 9, 0}; + Arrays.sort(arr3); + System.out.println(Arrays.toString(arr3)); + //二分查找,前提必须有序 + int index = Arrays.binarySearch(arr3, 2323); + //返回下标,找不到返回负数 + + } +} \ No newline at end of file diff --git a/java.learn/java基础/java_learn/java_learn/src/com/thi/Boy.java b/java.learn/java基础/java_learn/java_learn/src/com/thi/Boy.java new file mode 100644 index 0000000..63ec591 --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/src/com/thi/Boy.java @@ -0,0 +1,39 @@ +package com.thi; + +public class Boy { + private int age; + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public Boy(int age, String name) { + this.age = age; + this.name = name; + } + public void marry(Girl girl) { + System.out.println("marry for" + girl.getName()); + } + + public void shout() { + if(this.age >= 22){ + System.out.println("可以"); + } + else{ + System.out.println("不可"); + } + } +} diff --git a/java.learn/java基础/java_learn/java_learn/src/com/thi/BoyGirlTest.java b/java.learn/java基础/java_learn/java_learn/src/com/thi/BoyGirlTest.java new file mode 100644 index 0000000..c6d5537 --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/src/com/thi/BoyGirlTest.java @@ -0,0 +1,10 @@ +package com.thi; + +public class BoyGirlTest { + public static void main(String[] args) { + Boy boy1 = new Boy(24, "joke"); + Girl girl1 = new Girl(21,"rou"); + girl1.marry(boy1); + boy1.shout(); + } +} diff --git a/java.learn/java基础/java_learn/java_learn/src/com/thi/Girl.java b/java.learn/java基础/java_learn/java_learn/src/com/thi/Girl.java new file mode 100644 index 0000000..91508ed --- /dev/null +++ b/java.learn/java基础/java_learn/java_learn/src/com/thi/Girl.java @@ -0,0 +1,37 @@ +package com.thi; + +public class Girl { + private int age; + private String name; + + public String getName() { + return name; + } + + + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public Girl(int age, String name) { + this.age = age; + this.name = name; + } + public void marry(Boy boy) { + System.out.println("I want to marry " + boy.getName() ); + + boy.marry(this); + } + public int compare(Girl girl) { + return this.age - girl.age; + } +} diff --git a/java.learn/java基础/基础语法.md b/java.learn/java基础/基础语法.md new file mode 100644 index 0000000..ae44e90 --- /dev/null +++ b/java.learn/java基础/基础语法.md @@ -0,0 +1,210 @@ +# 基础语法 + +### 注释 + +##### 单行 + +//······// + +##### 多行 + +/* ······· */ + +##### 文档注释(JAVA特有) + +文档注释可以被 javadoc 解析,生成一套以网页文件形式体现该程序的说明文档 + +/** ········ */ + +API文档: + + + +### 标准输出输入 + + + +```java +calss PersonalInfo{ + + public static void main(String[] args){ + + System.out.println("~~~"); + +} + +} +``` + + + +### 变量 + +##### 数据类型 + +数据类型 标识符 = 数值 ; + +###### 整型 + +byte 1字节 + +short 2字节 + +int 4字节 + +long 8字节 + + + +###### 浮点型 + +float 单精度 4字节 + +double 双精度 8字节 + + + +###### 字符类型和布尔类型 + +char 2字节 + + + +boolean a = true ; + +boolean b = false ; + +4字节 + + + +##### 变量的自动类型提升和强制转换 + +容量小与容量大的变量做运算时,结果自动转换为容量大的数据类型(容量不☞内存,☞范围) + +反之报错 (反之容易泄露) + + + +### String类 + +字符串 + +String str = ""; + +运算:双引号连接,单引号加法 + + + +### 运算符 + +| 算数运算符 | 赋值运算符 | 比较运算符 | +| :-------------: | :----------------------------------------: | :-------------: | +| +,-,*,/,%,++,-- | =,+=,-=,*=,/=,%=,>>=,<<=,>>>=,&=,\|=,^= 等 | <,<=,>,>=,==,!= | + + + +| 逻辑运算符 | 位运算符 | 条件运算符 | Lambda运算符 | +| :--------------: | :----------------: | :--------------: | :----------: | +| &,\|,^,!,&&,\|\| | &,\|,^,~,<<,>>,>>> | 条件?结果1:结果2 | -> | + + + + + + + +### 标准输入输出流 + +```java +//导包 +import java.util.Scanner; + +class Scannertest{ + public static void main(String[] args){ + System.out.println("输出"); + //定义 + Scanner scan = new Scanner(System.in); + //使用 + String name = scan.next(); + + } +} +``` + + + +##### 生成随机数 + +在指定范围内生成随机数 + +Math类中的random方法,返回一个[0.0,1.0)之间的数 + + + + + +### 数组 + +##### 一维数组 + +###### 初始化 + +```java +//声明 +double[] prices; +//赋值 +prices = new double[]{20.32,4.1,5.1} +``` + + + +```java +String [] foods = new String[4]; +``` + + + +##### 二维数组 + +###### 初始化 + +``` +String [] foods = new String[4][4]; +``` + +##### 数组常用方法 + +```java +import java.util.Arrays; + +public class Main { + public static void main(String[] args) { + int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + int[] arr2 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; + //比较 + System.out.println(Arrays.equals(arr1,arr2)); + //输出 + System.out.println(Arrays.toString(arr1));//包含括号 + //填充 + Arrays.fill(arr1, 0); + + System.out.println(Arrays.toString(arr1)); + //排序 + int[] arr3 = {1, 123, 3, 123, 5, 2323, 7, 8, 9, 0}; + Arrays.sort(arr3); + System.out.println(Arrays.toString(arr3)); + //二分查找,前提必须有序 + int index = Arrays.binarySearch(arr3, 2323); + //返回下标,找不到返回负数 + + } +} +``` + + + + + + + diff --git a/java.learn/java基础/面向对象.md b/java.learn/java基础/面向对象.md new file mode 100644 index 0000000..002c389 --- /dev/null +++ b/java.learn/java基础/面向对象.md @@ -0,0 +1,180 @@ +## 面向对象编程 Object + +### 类和对象概述: + +Class & Object + +类泛指一大类抽象事物,对象特指这类事物中单一个体 + +类:属性,方法 + + + +#### 设计类 + +```java +public class Phone{ + //属性 + String name; + double price; + //方法 + public void call(){ + System.out.println("打电话"); + } + +} +``` + + + +#### 创建对象 + +```java +Phone p1 = new Phone; +p1.name = "华为"; +p1.call(); +``` + + + +#### 方法: + +##### 方法的重载: + +同一类中允许存在同一名的不同方法,只要他们的参数列表不同 + + + +##### 可变个数形参的方法: + +eg: + +```java +public void print(int ... nums){ + System.out.println(""); +} +``` + + + +##### 方法的值传递机制 + + + +##### 递归 + + + + + +#### package和import的使用 + + + +##### package + +用于指定当前类存在在哪一个包 + + + +##### import + +导包 + + + + + + + +## 封装 + +隐藏数据。只暴露接口。私有化 + +特性:高内聚,低耦合 + +##### 实现 + + + +| 修饰符 | 本类内部 | 本包内 | 其他包的子类 | 其他包的非子类 | +| --------- | -------- | ------ | ------------ | -------------- | +| private | √ | × | × | × | +| 缺省 | √ | √ | × | × | +| protected | √ | √ | √ | × | +| public | √ | √ | √ | √ | + + + + + +### 类的构造器 + +作用1:搭配new关键字,创建类的对象 + +作用2:在创建对象时,给相关属性赋值 + +没有显示提供构造器时,会默认生成一个空参的构造器。权限和类的权限相同 + +一个类中可以有多个构造器,他们之间构成重载 + + + + + +### 属性赋值过程 + + + +1. 默认赋值 + + 即给出的默认值 + +2. 显式赋值 + + 在类中定义时赋值 + +3. 构造器赋值 + +4. 通过 对象.方法 赋值 + +5. 通过 对象.属性 赋值 + + + +先后顺序: + +1 - 2 - 3 - 4 / 5 + + + + + +### JavaBean + +指一个满足以下特征的类 + +1. 公共的 + +2. 有一个无参的公共的构造器 + +3. 有属性,又对应的set和get方法 + + + + + +### UML类图 + +看懂uml类图 + + + + + + + + + + + diff --git a/java.learn/java基础/面向对象进阶.md b/java.learn/java基础/面向对象进阶.md new file mode 100644 index 0000000..3626e0e --- /dev/null +++ b/java.learn/java基础/面向对象进阶.md @@ -0,0 +1,80 @@ +# 面向对象进阶 + +### this关键字 + +使用this修饰的变量,表示的是属性。没有的表示是形参 + +```java +package com.thi; + +public class per { + public static void main(String[] args) { + Person p1 = new Person(); + p1.setAge(20); + System.out.println(p1.age); + } +} + +class Person{ + String name; + int age; + + public void setAge(int age){ + this.age=age; + } +} +``` + + + +命名一致是为了见文知意,加上this防止错误。如无this则age=age;全部指属性,没有形参了 + + + +- this可以调用成员变量、方法、构造器 +- 理解为当前对象(方法中)或者当前正在创建的对象(构造器中) + + + + + + + +## 继承性 + + + +``` +class Student extends Person{ + +} +``` + + + +如此, Person中含有的属性和方法 Student 不定义也可以使用 + + + +java支持多层继承 + + + + + + + + + + + + + + + + + + + + + diff --git a/java.learn/java基础/高级用法.md b/java.learn/java基础/高级用法.md new file mode 100644 index 0000000..e69de29 diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/.gitignore b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/compiler.xml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/compiler.xml new file mode 100644 index 0000000..d83ccf0 --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/compiler.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/encodings.xml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/encodings.xml new file mode 100644 index 0000000..e7cd972 --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/jarRepositories.xml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/misc.xml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/misc.xml new file mode 100644 index 0000000..238f59c --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/modules.xml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/modules.xml new file mode 100644 index 0000000..5e9e13a --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/vcs.xml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/vcs.xml new file mode 100644 index 0000000..7f5a4f3 --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/01.iml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/01.iml new file mode 100644 index 0000000..9a5cfce --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/01.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/ceshi/01/untitled/pom.xml b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/untitled/pom.xml new file mode 100644 index 0000000..2e90ddd --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/ceshi/01/untitled/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + com.lejings + untitled + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/java.learn/全栈开发/java_web 开发/maven/maven.md b/java.learn/全栈开发/java_web 开发/maven/maven.md new file mode 100644 index 0000000..f9d9d43 --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/maven/maven.md @@ -0,0 +1,52 @@ +# MAVEN + +#### 作用: + +**依赖管理:**一键联网导入jar包 + +**统一项目结构:**不同编译器结构不同 + +`maven项目基本结构:` + +`src:` + +​ `main:(实际项目资源)` + +​ `java:(Java源代码目录)` + +​ `resources:(配置文件目录)` + +​ `test:(测试项目资源文件)` + +​ `java:` + +​ `resources:` + +​ `pom.xml(项目配置文件)` + +**标准化的项目构建:**(跨平台) + +通过maven提供的一系列命令,快速的完成项目的清理、编译、测试、打包、发布 + + + + + +### idea集成maven + +##### 配置maven环境 + +##### 创建maven项目 + +##### 导入maven项目 + + + + + + + + + + + diff --git a/java.learn/全栈开发/java_web 开发/tomcat/tomcat.md b/java.learn/全栈开发/java_web 开发/tomcat/tomcat.md new file mode 100644 index 0000000..d9d903f --- /dev/null +++ b/java.learn/全栈开发/java_web 开发/tomcat/tomcat.md @@ -0,0 +1,138 @@ +# Tomcat + + + +### 常见目录及其作用 + +#### bin + +start & stop + +#### conf + +配置文件目录 + +#### lib + +存放jar包 + +#### logs + +存放日志 + +#### temp + +存放tomcat的临时文件 + +#### webapps + +存放web项目地址 + +#### work + +和jsp相关,但是目前几乎不再用了,不需要关注 + +#### LICENSE + +许可证 + +#### NOTICE + +说明文件 + + + + + +### WEB项目的标准结构 + +app: + +- index.html + +- static + + - css + - js + - img + +- WEB-INF 不能被客户端直接访问到 + + - classes 字节码根路径 + + - lib 第三方jar包 + + - web.xml 项目的配置文件 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java.learn/全栈开发/前端/js.learn/js.md b/java.learn/全栈开发/前端/js.learn/js.md new file mode 100644 index 0000000..129f550 --- /dev/null +++ b/java.learn/全栈开发/前端/js.learn/js.md @@ -0,0 +1,351 @@ +## js引入方式 + +### 内部脚本 + +在任意html位置中放置 + + + +

DOM 操作练习

+ + + +

这是段落一。

+ +

这是段落二。

+ + + diff --git a/java/.gitignore b/java/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/java/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/java/.idea/.gitignore b/java/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/java/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/java/.idea/dataSources.xml b/java/.idea/dataSources.xml new file mode 100644 index 0000000..4230053 --- /dev/null +++ b/java/.idea/dataSources.xml @@ -0,0 +1,17 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306 + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/java/.idea/misc.xml b/java/.idea/misc.xml new file mode 100644 index 0000000..72f7ca7 --- /dev/null +++ b/java/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java/.idea/modules.xml b/java/.idea/modules.xml new file mode 100644 index 0000000..3007dae --- /dev/null +++ b/java/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/java/.idea/uiDesigner.xml b/java/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/java/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/java/.idea/vcs.xml b/java/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/java/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java/qodana.yaml b/java/qodana.yaml new file mode 100644 index 0000000..ec438dd --- /dev/null +++ b/java/qodana.yaml @@ -0,0 +1,31 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# +version: "1.0" + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +projectJDK: 23 #(Applied in CI/CD pipeline) + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +#Specify Qodana linter for analysis (Applied in CI/CD pipeline) +linter: jetbrains/qodana-jvm:latest diff --git a/java/src/Goods.java b/java/src/Goods.java new file mode 100644 index 0000000..59f3e5b --- /dev/null +++ b/java/src/Goods.java @@ -0,0 +1,85 @@ +public class Goods { + private int id; + private String name; + private double price; + public int count; + + public Goods() { + } + + public Goods(int id, String name, double price, int count) { + this.id = id; + this.name = name; + this.price = price; + this.count = count; + } + + public Goods(String number, String 华为手机, String number1, String number2) { + } + + /** + * 获取 + * @return id + */ + public int getId() { + return id; + } + + /** + * 设置 + * @param id + */ + public void setId(int id) { + this.id = id; + } + + /** + * 获取 + * @return name + */ + public String getName() { + return name; + } + + /** + * 设置 + * @param name + */ + public void setName(String name) { + this.name = name; + } + + /** + * 获取 + * @return price + */ + public double getPrice() { + return price; + } + + /** + * 设置 + * @param price + */ + public void setPrice(double price) { + this.price = price; + } + + /** + * 获取 + * @return count + */ + public int getCount() { + return count; + } + + /** + * 设置 + * @param count + */ + public void setCount(int count) { + this.count = count; + } + + +} diff --git a/java/src/GoodsTest.java b/java/src/GoodsTest.java new file mode 100644 index 0000000..7175271 --- /dev/null +++ b/java/src/GoodsTest.java @@ -0,0 +1,10 @@ +public class GoodsTest { + public static void main(String[] args) { + //1. + Goods[] arr = new Goods[3]; + + //2. + Goods g1 = new Goods(); + Goods g2 = new Goods("001","华为手机","5999","100"); + } +} diff --git a/java/src/JinGe.java b/java/src/JinGe.java new file mode 100644 index 0000000..bfbc648 --- /dev/null +++ b/java/src/JinGe.java @@ -0,0 +1,21 @@ +import java.util.Scanner; +public class JinGe { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int jin = sc.nextInt(); + int n = String.valueOf(jin).length(); + String j = String.valueOf(jin); + for(int i = n; i <= 7; i++) { + j = "0" + j ; + } + + char[] shu ={'零','壹','贰','叁','肆','伍','陆','柒'}; + System.out.print(shu[((int)j.charAt(1))-48]+"佰"); + System.out.print(shu[((int)j.charAt(2))-48]+"拾"); + System.out.print(shu[((int)j.charAt(3))-48]+"万"); + System.out.print(shu[((int)j.charAt(4))-48]+"仟"); + System.out.print(shu[((int)j.charAt(5))-48]+"佰"); + System.out.print(shu[((int)j.charAt(6))-48]+"拾"); + System.out.print(shu[((int)j.charAt(7))-48]+"元"); + } +} diff --git a/java/src/Main.java b/java/src/Main.java new file mode 100644 index 0000000..382421d --- /dev/null +++ b/java/src/Main.java @@ -0,0 +1,35 @@ +import java.util.Scanner; +//TIP To Run code, press or +// click the icon in the gutter. +public class Main { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int y = sc.nextInt(); + int tx = sc.nextInt(); + int jx = sc.nextInt(); + String zuo = sc.next(); + + if(y>=5&&y<=10) + { + if(zuo == "头等舱") + { + System.out.println(tx*0.9); + } + else + { + System.out.println(jx*0.85); + } + } + else + { + if(zuo == "头等舱") + { + System.out.println(tx*0.7); + } + else + { + System.out.println(jx*0.65); + } + } + } +} \ No newline at end of file diff --git a/java/src/StrBiJiao.java b/java/src/StrBiJiao.java new file mode 100644 index 0000000..d5090ac --- /dev/null +++ b/java/src/StrBiJiao.java @@ -0,0 +1,76 @@ +import java.util.Scanner; +import java.util.StringJoiner; + +import static javax.swing.UIManager.getString; + +public class StrBiJiao { + public static void main(String[] args) { + String a = "WWW"; + String b = "WWW"; + String c = "www"; + //不忽略大小写 + boolean result1 = a.equals(b); + boolean result2 = a.equals(c); + //忽略大小写 + boolean result3 = a.equalsIgnoreCase(c); + boolean result4 = a.equalsIgnoreCase(b); + System.out.println(result1+" "+result2+" "+result3+" "+result4); + + String n = "abcdefg"; + //返回字符串长度 + System.out.println(n.length()); + //根据索引返回字符串的字符 + for (int i = 0; i < n.length(); i++) { + System.out.println(n.charAt(i)); + //System.out.println(i); + } + //字符串拼接和反转 + + //StringBuilder 提高字符串操作的效率 + //创建对象 + StringBuilder sb = new StringBuilder("abc"); + //添加元素 + sb.append(1); + sb.append(true); + //反转 + sb.reverse(); + //获取长度 + int len = sb.length(); + + //把StringBuilder变回字符串 + String str = sb.toString(); + System.out.println(sb); + + + + //链式编程 + int len1 = getString().substring(1).replace("A","Q").length(); + + + + //StringJoiner,jdk8出现.创建容器时,可以指定间隔符号,开始符号,结束符号 + StringJoiner sj = new StringJoiner("间隔","开始","结束"); + sj.add("a"); + sj.add("b"); + sj.add("c"); + System.out.println(sj.toString()); + + + + + + + + + + } + + + + + + + private static String getString() { + return "WWW"; + } +} diff --git a/java/src/Test2.java b/java/src/Test2.java new file mode 100644 index 0000000..f8d7ca8 --- /dev/null +++ b/java/src/Test2.java @@ -0,0 +1,9 @@ + +public class Test2 { +public static void main(String[] args) { + + + +} + +} diff --git a/java/src/User.java b/java/src/User.java new file mode 100644 index 0000000..3507b23 --- /dev/null +++ b/java/src/User.java @@ -0,0 +1,62 @@ +public class User { + //属性,私有化成员变量 + private String username; + private String password; + private String email; + private String gender; + private int age; + + //空参,全参 构造器 + public User(){} + public User(String username, String password, String email, String gender, int age) { + this.username = username; + this.password = password; + this.email = email; + this.gender = gender; + this.age = age; + } + + + //get&&set + public void setUsername(String username) { + this.username = username; + } + + public String getUsername() { + return username; + } + //快捷键 alt+insert + //PTG插件 + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} diff --git a/java/src/shishi.java b/java/src/shishi.java new file mode 100644 index 0000000..1f08fa5 --- /dev/null +++ b/java/src/shishi.java @@ -0,0 +1,6 @@ +public class shishi { + public static void main(String[] args) { + String n ="0"; + System.out.println(((int)n.charAt(0))+""); + } +} diff --git a/java/src/top/lejings/API/a01.java b/java/src/top/lejings/API/a01.java new file mode 100644 index 0000000..9a532a4 --- /dev/null +++ b/java/src/top/lejings/API/a01.java @@ -0,0 +1,33 @@ +package top.lejings.API; +/* +* Math类 +* +* System类: +* 计算机的时间原点:1970年1月1日 00:00:00 +* China东八区时间原点 1970年1月1日 08:00:00 +* 常用方法: +* public static void exit(int status) 终止当前运行的Java虚拟机 +* public static long currentTimeMillis() 返回当前系统的时间毫秒值形式 +* public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) 拷贝数组 +* +* Runtime(不是静态方法,需要创建对象,并且只能通过 ) +* public static Runtime getRuntime() 当前系统运行环境对象 +* public void exit(int status) 和System一样 +* public int availableProcessors() 获取CPU的线程数 +* public long maxMemory() JVM能从系统获取的总内存大小 单位byte +* public long totalMemory() JVM已经从系统获取的总内存大小 单位byte +* public long freeMemory() JVM剩余内存大小 单位byte +* public Process exec(String command) 用Java代码运行cmd命令 +* +* +* +* */ + +public class a01 { + public static void main(String[] args) { + + + } + + +} diff --git a/java/src/top/lejings/API/a02.java b/java/src/top/lejings/API/a02.java new file mode 100644 index 0000000..7448af6 --- /dev/null +++ b/java/src/top/lejings/API/a02.java @@ -0,0 +1,20 @@ +package top.lejings.API; +/* +* Object && Objects +* 只有空参构造,没有成员变量 +* public String toString() 返回对象的字符串形式 +* public boolean equals(Object obj) 比较两个对象是否相等 +* protected Object clone(int a) 对象克隆 +* +* */ +public class a02 { + public static void main(String[] args) { + Object obj = new Object(); + String string = obj.toString(); + System.out.println(string);//java.lang.Object@10f87f48 + //打印出的是包名加类名+@+16进制地址值 + + + + } +} diff --git a/java/src/top/lejings/API/a03.java b/java/src/top/lejings/API/a03.java new file mode 100644 index 0000000..88159d7 --- /dev/null +++ b/java/src/top/lejings/API/a03.java @@ -0,0 +1,10 @@ +package top.lejings.API; +/* +* BigInteger && BIGDecimal +* +* +* +* +* */ +public class a03 { +} diff --git a/java/src/top/lejings/Inner/l1.java b/java/src/top/lejings/Inner/l1.java new file mode 100644 index 0000000..dde5917 --- /dev/null +++ b/java/src/top/lejings/Inner/l1.java @@ -0,0 +1,15 @@ +package top.lejings.Inner; +/* +* 类的五大属性: +* 属性,方法,构造方法,代码块,内部类 +* 例如: +*车类和发动机类 +* ArrayList的迭代器 +* 人和心脏 +* 一般内部类是外部类的一部分,并且内部类单独存在没有意义 +* 内部类可以任意访问外部类,包括私有 +* +* 外部类访问内部类必须要创建对象 +* */ +public class l1 { +} diff --git a/java/src/top/lejings/Inner/l2.java b/java/src/top/lejings/Inner/l2.java new file mode 100644 index 0000000..ab230eb --- /dev/null +++ b/java/src/top/lejings/Inner/l2.java @@ -0,0 +1,24 @@ +package top.lejings.Inner; +/* +* 1.成员内部类:写在成员位置的,属于外部类的成员。可以被修饰成员的修饰符修饰 +* 2.静态内部类:被静态修饰符修饰的成员内部类, 创建对象的方式: Outer.Inner oi = new.Inner(); +* 3.局部内部类:方法内的类 +* //重要的: +* 4.匿名内部类:本质上是隐藏了名字的内部类 +* 可以在成员位置,也可以在局部位置 +* 格式: +* 继承或实现关系 +* new 类名和接口名(){ +* 重写方法; +* }; +* 整体就是一个类的子类对象或者一个接口的实现类对象 +* +* 使用场景: +* 当方法的参数是接口或者类时,如果只实现一次,就可以匿名内部类简化代码 +* +* 前三种一般了解即可,一般只会看,不会写 +* +* +* */ +public class l2 { +} diff --git a/java/src/top/lejings/Polymorphism/Administrator.java b/java/src/top/lejings/Polymorphism/Administrator.java new file mode 100644 index 0000000..c174a30 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/Administrator.java @@ -0,0 +1,7 @@ +package top.lejings.Polymorphism; + +public class Administrator extends Person{ + public void show(){ + System.out.println("Administrator"+getName()+getAge()); + } +} diff --git a/java/src/top/lejings/Polymorphism/Person.java b/java/src/top/lejings/Polymorphism/Person.java new file mode 100644 index 0000000..b0111ed --- /dev/null +++ b/java/src/top/lejings/Polymorphism/Person.java @@ -0,0 +1,55 @@ +package top.lejings.Polymorphism; + +public class Person { + private String name; + private int age; + + + public void show(){ + System.out.println("Name : " + name+"age:"+age); + } + + public Person() { + } + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + /** + * 获取 + * @return name + */ + public String getName() { + return name; + } + + /** + * 设置 + * @param name + */ + public void setName(String name) { + this.name = name; + } + + /** + * 获取 + * @return age + */ + public int getAge() { + return age; + } + + /** + * 设置 + * @param age + */ + public void setAge(int age) { + this.age = age; + } + + public String toString() { + return "Person{name = " + name + ", age = " + age + "}"; + } +} diff --git a/java/src/top/lejings/Polymorphism/Student.java b/java/src/top/lejings/Polymorphism/Student.java new file mode 100644 index 0000000..228dcd0 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/Student.java @@ -0,0 +1,8 @@ +package top.lejings.Polymorphism; + +public class Student extends Person { + //重写show方法 + public void show(){ + System.out.println("NAME IS"+getName()+"AGE IS"+getAge()); + } +} diff --git a/java/src/top/lejings/Polymorphism/Test.java b/java/src/top/lejings/Polymorphism/Test.java new file mode 100644 index 0000000..f1b1388 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/Test.java @@ -0,0 +1,25 @@ +package top.lejings.Polymorphism; + +public class Test { + public static void main(String[] args) { + Student s = new Student(); + s.setName("zhang"); + s.setAge(18); + teacher t = new teacher(); + t.setName("shang"); + t.setAge(38); + Administrator a = new Administrator(); + a.setName("ang"); + a.setAge(58); + + register(s); + register(t); + register(a); + } + + //要求此方法注册既可以接受老师,也可以接受管理员、学生 + //把参数改为这三个类型的父类 + public static void register(Person p) { + p.show(); + } +} diff --git a/java/src/top/lejings/Polymorphism/baoDeng/Permissions.java b/java/src/top/lejings/Polymorphism/baoDeng/Permissions.java new file mode 100644 index 0000000..fc61bce --- /dev/null +++ b/java/src/top/lejings/Polymorphism/baoDeng/Permissions.java @@ -0,0 +1,19 @@ +package top.lejings.Polymorphism.baoDeng; +//权限修饰符 private 空 protected public +// 同一类 同一包 不同包的子类 不同包的无关类 + +/* +* 代码块: +* 指{}中的内容 +* 局部代码块: +* 方法中的{}中的内容 +* 构造代码块:以及构造方法 +* 将多个构造方法中共同的代码提出来,放在成员变量的位置的{}中,先于构造方法之前执行 +* 静态代码块: +* 需要static修饰的构造代码块,随着类的加载而加载,并且自动触发。只执行一次 +* +* +* */ + +public class Permissions { +} diff --git a/java/src/top/lejings/Polymorphism/baoDeng/abstract01.java b/java/src/top/lejings/Polymorphism/baoDeng/abstract01.java new file mode 100644 index 0000000..3ee4917 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/baoDeng/abstract01.java @@ -0,0 +1,19 @@ +package top.lejings.Polymorphism.baoDeng; +/* +* 抽象类和抽象方法: +* +*为了解决继承中方法重写问题 +*在父类中用abstract修饰方法 +*子类必须重写,否则报错 +*这个父类被称为抽象类,这个方法被称为抽象方法 +*这个方法不写方法体直接分号结束 +* +* 注意: +* 抽象类不能实例化 +* 抽象类不一定有抽象方法 +* 抽象类可以有构造方法 +* 抽象类的子类,要么重写所有抽象方法,要么子类也是一个抽象类 +* 抽象类的构造方法作用是创建子类时给属性赋值用的 +* */ +public class abstract01 { +} diff --git a/java/src/top/lejings/Polymorphism/baoDeng/bao.java b/java/src/top/lejings/Polymorphism/baoDeng/bao.java new file mode 100644 index 0000000..4632500 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/baoDeng/bao.java @@ -0,0 +1,13 @@ +package top.lejings.Polymorphism.baoDeng; +//即文件夹,用来管理不同的java类方便维护 +/* +* 命名规则,域名反写,加上功能。全部小写,简明之一 +*需要其他包的类 +*就需要导包 +* import 包名 +* 如果两个包中相同类名,则需要写全类名 +* 同一包中不用导包 +* */ +public class bao { + +} diff --git a/java/src/top/lejings/Polymorphism/baoDeng/final01.java b/java/src/top/lejings/Polymorphism/baoDeng/final01.java new file mode 100644 index 0000000..ee409f9 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/baoDeng/final01.java @@ -0,0 +1,12 @@ +package top.lejings.Polymorphism.baoDeng; +/* +* 被final修饰 +* 方法表示是最终方法,不能被重写 +* +* 类表示是最终类,不能被继承 +* +* 变量表示常量,只能被赋值一次 +* */ + +public class final01 { +} diff --git a/java/src/top/lejings/Polymorphism/pm01.java b/java/src/top/lejings/Polymorphism/pm01.java new file mode 100644 index 0000000..dafb043 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/pm01.java @@ -0,0 +1,37 @@ +package top.lejings.Polymorphism; +/* +* 多态: +* 一个对象的多个形态(多个类) +* 表现形式 : +* 父类类型 对象名称 = 子类对象 +*多态方式创建对象 +* 父类名 对象名 = new 子类名 +*特点: +* 调用成员变量:编译看左边,运行也看左边 +* 调用成员方法:编译看左边,运行看右边 +* +* 多态的弊端 +* 用多态定义的对象不能调用子类的特有功能 +* //解决方案: +*转换为子类类型 +*eg: +*Animal a = new Dog(); +* +*Dog d = (Dog)a; +*帮助判断对象类型: +* if(a instanceof Dog) +* { +* Dog d = (Dog)a; +* } +*else +* { +* } +* +* java新特性 +* 将上述判断合二为一 +* if(a instanceof Dog d) +* 如果是,将a强转为d +* */ +public class pm01 { + +} diff --git a/java/src/top/lejings/Polymorphism/teacher.java b/java/src/top/lejings/Polymorphism/teacher.java new file mode 100644 index 0000000..9cbfb86 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/teacher.java @@ -0,0 +1,8 @@ +package top.lejings.Polymorphism; + +public class teacher extends Person { + public void show(){ + System.out.println("I am teacher"+getAge()+getName()); + } + +} diff --git a/java/src/top/lejings/Polymorphism/work/Animal.java b/java/src/top/lejings/Polymorphism/work/Animal.java new file mode 100644 index 0000000..662fa1d --- /dev/null +++ b/java/src/top/lejings/Polymorphism/work/Animal.java @@ -0,0 +1,55 @@ +package top.lejings.Polymorphism.work; + +public class Animal { + private int age; + private String color; + + public Animal() { + } + + public Animal(int age, String color) { + this.age = age; + this.color = color; + } + + public void eat(String something){ + System.out.println("吃"+something); + } + + /** + * 获取 + * @return age + */ + public int getAge() { + return age; + } + + /** + * 设置 + * @param age + */ + public void setAge(int age) { + this.age = age; + } + + /** + * 获取 + * @return color + */ + public String getColor() { + return color; + } + + /** + * 设置 + * @param color + */ + public void setColor(String color) { + this.color = color; + } + + public String toString() { + return "Animal{age = " + age + ", color = " + color + "}"; + } +} + diff --git a/java/src/top/lejings/Polymorphism/work/Cat.java b/java/src/top/lejings/Polymorphism/work/Cat.java new file mode 100644 index 0000000..5b19d43 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/work/Cat.java @@ -0,0 +1,9 @@ +package top.lejings.Polymorphism.work; + +public class Cat extends Animal { + + public void catchMouse(){ + System.out.println("cat catch mouse"); + } + +} diff --git a/java/src/top/lejings/Polymorphism/work/Dog.java b/java/src/top/lejings/Polymorphism/work/Dog.java new file mode 100644 index 0000000..3acce86 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/work/Dog.java @@ -0,0 +1,7 @@ +package top.lejings.Polymorphism.work; + +public class Dog extends Animal{ + public void lookHome(){ + System.out.println("Dog looks home"); + } +} diff --git a/java/src/top/lejings/Polymorphism/work/Person.java b/java/src/top/lejings/Polymorphism/work/Person.java new file mode 100644 index 0000000..6f138b6 --- /dev/null +++ b/java/src/top/lejings/Polymorphism/work/Person.java @@ -0,0 +1,58 @@ +package top.lejings.Polymorphism.work; + +public class Person { + private String name; + private int age; + + public Person() { + } + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public void keepPet(Animal animal,String something){ + if(animal instanceof Cat){ + System.out.print("喂"+animal.getColor()+"的猫"); + } + else if(animal instanceof Dog){System.out.print("喂"+animal.getColor()+"的狗");} + animal.eat(something); + } + + /** + * 获取 + * @return name + */ + public String getName() { + return name; + } + + /** + * 设置 + * @param name + */ + public void setName(String name) { + this.name = name; + } + + /** + * 获取 + * @return age + */ + public int getAge() { + return age; + } + + /** + * 设置 + * @param age + */ + public void setAge(int age) { + this.age = age; + } + + public String toString() { + return "Person{name = " + name + ", age = " + age + "}"; + } +} diff --git a/java/src/top/lejings/Polymorphism/work/test.java b/java/src/top/lejings/Polymorphism/work/test.java new file mode 100644 index 0000000..da4f23e --- /dev/null +++ b/java/src/top/lejings/Polymorphism/work/test.java @@ -0,0 +1,12 @@ +package top.lejings.Polymorphism.work; + +public class test { + public static void main(String[] args) { + Person person = new Person("老王",30); + Animal dog = new Dog(); + dog.setAge(2); + dog.setColor("黑色"); + System.out.print(person.getName()); + person.keepPet(dog,"骨头"); + } +} diff --git a/java/src/top/lejings/inherit/in01.java b/java/src/top/lejings/inherit/in01.java new file mode 100644 index 0000000..88bd8cd --- /dev/null +++ b/java/src/top/lejings/inherit/in01.java @@ -0,0 +1,8 @@ +package top.lejings.inherit; +//继承 +//格式: +// public class 子类 extends 父类 {} +//创建子类对象是时,直接对父类进行带参构造。super(参数),在子类构造器中 +public class in01{ + +} diff --git a/java/src/top/lejings/jiekou/Text.java b/java/src/top/lejings/jiekou/Text.java new file mode 100644 index 0000000..93f6c5b --- /dev/null +++ b/java/src/top/lejings/jiekou/Text.java @@ -0,0 +1,12 @@ +package top.lejings.jiekou; + +public class Text { + public static void main(String[] args) { + dog dog = new dog("黄",1); + rabbit rabbit = new rabbit(); + frog frog = new frog(); + + dog.eat(); + } + +} diff --git a/java/src/top/lejings/jiekou/animal.java b/java/src/top/lejings/jiekou/animal.java new file mode 100644 index 0000000..eb9a1d0 --- /dev/null +++ b/java/src/top/lejings/jiekou/animal.java @@ -0,0 +1,53 @@ +package top.lejings.jiekou; + +public abstract class animal { + private String name; + private int age; + + public animal() { + } + + public animal(String name, int age) { + this.name = name; + this.age = age; + } + + public abstract void eat(); + + + /** + * 获取 + * @return name + */ + public String getName() { + return name; + } + + /** + * 设置 + * @param name + */ + public void setName(String name) { + this.name = name; + } + + /** + * 获取 + * @return age + */ + public int getAge() { + return age; + } + + /** + * 设置 + * @param age + */ + public void setAge(int age) { + this.age = age; + } + + public String toString() { + return "animal{name = " + name + ", age = " + age + "}"; + } +} diff --git a/java/src/top/lejings/jiekou/dog.java b/java/src/top/lejings/jiekou/dog.java new file mode 100644 index 0000000..0b52dfe --- /dev/null +++ b/java/src/top/lejings/jiekou/dog.java @@ -0,0 +1,17 @@ +package top.lejings.jiekou; + +public class dog extends animal implements swim{ + public dog(String name, int age) { + super(name, age); + } + + public dog() { + } + + public void eat(){ + System.out.println("狗吃骨头"); + } + public void swim(){ + System.out.println("狗刨"); + } +} diff --git a/java/src/top/lejings/jiekou/extend/e1.java b/java/src/top/lejings/jiekou/extend/e1.java new file mode 100644 index 0000000..a3299de --- /dev/null +++ b/java/src/top/lejings/jiekou/extend/e1.java @@ -0,0 +1,17 @@ +package top.lejings.jiekou.extend; +/* +* JDK8以后新增的接口: +* 可以定义有方法体的方法 +* 必须是静态方法,并且只能通过接口名来调用 +* +* JDK9以后的新特性: +* 接口中可以定义私有方法 +* 格式: + *1. + * private 返回值类型 方法名 (){} + * 2. + * private static 返回值类型 方法名(){} +* +* */ +public class e1 { +} diff --git a/java/src/top/lejings/jiekou/extend/e2.java b/java/src/top/lejings/jiekou/extend/e2.java new file mode 100644 index 0000000..1339cf4 --- /dev/null +++ b/java/src/top/lejings/jiekou/extend/e2.java @@ -0,0 +1,17 @@ + +/* +* 适配器设计模式 +* 在接口和类中添加一个适配器类 +* 让适配器作为接口的实现类 +* 让适配器作为类的父类 +* 以防类需要对所有的抽象方法进行重写 +* 一般会把适配器修饰为抽象类 +* 一般命名为 XXXAdapter +* */ + + +package top.lejings.jiekou.extend; +public class e2 { + + +} diff --git a/java/src/top/lejings/jiekou/frog.java b/java/src/top/lejings/jiekou/frog.java new file mode 100644 index 0000000..ec4fcca --- /dev/null +++ b/java/src/top/lejings/jiekou/frog.java @@ -0,0 +1,10 @@ +package top.lejings.jiekou; + +public class frog extends animal implements swim{ + public void eat(){ + System.out.println("青蛙吃虫子"); + } + public void swim(){ + System.out.println("蛙泳"); + } +} diff --git a/java/src/top/lejings/jiekou/jiekouandlei.java b/java/src/top/lejings/jiekou/jiekouandlei.java new file mode 100644 index 0000000..ec283ec --- /dev/null +++ b/java/src/top/lejings/jiekou/jiekouandlei.java @@ -0,0 +1,13 @@ +package top.lejings.jiekou; +/* +* 类和类之间只能单继承不能多继承,但是可以多层继承 +* 类和接口之间,可以单实现,也可以多实现。但是注意要重写所有的抽象方法: +* 如果两个或多个接口之间有重名的方法,只需要重写一次即可 +* 接口和接口的关系: +*是继承关系,可以单继承,也可以多继承 +* +* +* */ + +public interface jiekouandlei { +} diff --git a/java/src/top/lejings/jiekou/jk01.java b/java/src/top/lejings/jiekou/jk01.java new file mode 100644 index 0000000..288513b --- /dev/null +++ b/java/src/top/lejings/jiekou/jk01.java @@ -0,0 +1,34 @@ +package top.lejings.jiekou; +/* +* 接口:一种规则 +* 拥有具体功能的接口 +* 定义: +* public interface 接口名{} +*接口的实现类要么重写接口中所有的抽象方法,要么是抽象类 +* +* public class 类名 extend 父类 implements 接口名1,接口名2,~~~{} +*与抽象类的区别 +* 类表一类事物 +* 接口表一种规则一种行为 +*接口里的成员变量都是常量 +* 接口没有构造方法 +* 方法:jdk7前只能定义抽象方法 +* +* */ + +/* +* 练习: +* +* +* */ +public class jk01 { + +} + + + + + + + + diff --git a/java/src/top/lejings/jiekou/rabbit.java b/java/src/top/lejings/jiekou/rabbit.java new file mode 100644 index 0000000..4c709f8 --- /dev/null +++ b/java/src/top/lejings/jiekou/rabbit.java @@ -0,0 +1,8 @@ +package top.lejings.jiekou; + +public class rabbit extends animal{ + + public void eat(){ + System.out.println("兔子吃胡萝卜"); + } +} diff --git a/java/src/top/lejings/jiekou/swim.java b/java/src/top/lejings/jiekou/swim.java new file mode 100644 index 0000000..c89d275 --- /dev/null +++ b/java/src/top/lejings/jiekou/swim.java @@ -0,0 +1,5 @@ +package top.lejings.jiekou; + +public interface swim { + public void swim(); +} diff --git a/java/src/top/lejings/jihe/Student.java b/java/src/top/lejings/jihe/Student.java new file mode 100644 index 0000000..0759fdd --- /dev/null +++ b/java/src/top/lejings/jihe/Student.java @@ -0,0 +1,50 @@ +package top.lejings.jihe; + +public class Student { + private String name; + private int age; + + public Student() { + } + + public Student(String name, int age) { + this.name = name; + this.age = age; + } + + /** + * 获取 + * @return name + */ + public String getName() { + return name; + } + + /** + * 设置 + * @param name + */ + public void setName(String name) { + this.name = name; + } + + /** + * 获取 + * @return age + */ + public int getAge() { + return age; + } + + /** + * 设置 + * @param age + */ + public void setAge(int age) { + this.age = age; + } + + public String toString() { + return "Student{name = " + name + ", age = " + age + "}"; + } +} diff --git a/java/src/top/lejings/jihe/User.java b/java/src/top/lejings/jihe/User.java new file mode 100644 index 0000000..83cea08 --- /dev/null +++ b/java/src/top/lejings/jihe/User.java @@ -0,0 +1,69 @@ +package top.lejings.jihe; + +public class User { + + private int id; + private String username; + private String password; + + public User() { + } + + public User(int id, String username, String password) { + this.id = id; + this.username = username; + this.password = password; + } + + /** + * 获取 + * @return id + */ + public int getId() { + return id; + } + + /** + * 设置 + * @param id + */ + public void setId(int id) { + this.id = id; + } + + /** + * 获取 + * @return username + */ + public String getUsername() { + return username; + } + + /** + * 设置 + * @param username + */ + public void setUsername(String username) { + this.username = username; + } + + /** + * 获取 + * @return password + */ + public String getPassword() { + return password; + } + + /** + * 设置 + * @param password + */ + public void setPassword(String password) { + this.password = password; + } + + public String toString() { + return "User{id = " + id + ", username = " + username + ", password = " + password + "}"; + } +} diff --git a/java/src/top/lejings/jihe/jh01.java b/java/src/top/lejings/jihe/jh01.java new file mode 100644 index 0000000..e1765a4 --- /dev/null +++ b/java/src/top/lejings/jihe/jh01.java @@ -0,0 +1,23 @@ +package top.lejings.jihe; +import java.util.ArrayList; +public class jh01 { + public static void main(String[] args) { + //1.创建集合,集合不能直接存储基本数据类型 + //泛型 + ArrayList list = new ArrayList<>(); + System.out.println(list); + //集合方法:增删改查 + //1.添加 + boolean result = list.add("a"); + //一般都会添加成功 + //2.删除元素或者删除索引的元素 + boolean result2 = list.remove("b"); + String a = list.remove(0); + //修改 + String b = list.set(1,"bbb"); + //查询 + String s = list.get(0); + //获取长度 + int i = list.size(); + } +} diff --git a/java/src/top/lejings/jihe/jh02.java b/java/src/top/lejings/jihe/jh02.java new file mode 100644 index 0000000..be5a9eb --- /dev/null +++ b/java/src/top/lejings/jihe/jh02.java @@ -0,0 +1,40 @@ +package top.lejings.jihe; + +import java.util.ArrayList; + +/* +* 1.因为集合不能直接存放基本数据类型 +* 基本数据类型必须经过包装类才能存放 +* 对应的: +* byte Byte +* short Short +* char Character +* int Integer +* long Long +* float Float +* double Double +* boolean Boolean +* */ +public class jh02 { + public static void main(String[] args) { + ArrayList list = new ArrayList(); + + list.add("火"); + list.add("aa"); + list.add("bb"); + list.add("cc"); + + //遍历 + for(int i=0; i list1 = new ArrayList<>(); + list1.add(1); + list1.add(200); + for(int i=0; i list = new ArrayList<>(); + //创建对象 + Student s1 = new Student("zhang",23); + Student s2 = new Student("w",10); + Student s3 = new Student("sd",15); + + list.add(s1); + list.add(s2); + list.add(s3); + + for (int i = 0; i < list.size(); i++) { + Student stu =list.get(i); + System.out.println(stu.getName()+","+stu.getAge()); + } + + } +} diff --git a/java/src/top/lejings/jihe/jh04.java b/java/src/top/lejings/jihe/jh04.java new file mode 100644 index 0000000..6eb3400 --- /dev/null +++ b/java/src/top/lejings/jihe/jh04.java @@ -0,0 +1,32 @@ +package top.lejings.jihe; + +import java.util.ArrayList; +import java.util.Scanner; + +public class jh04 { + public static void main(String[] args) { + ArrayList list = new ArrayList<>(); + + User u1 = new User(1,"a","aaa"); + User u2 = new User(2,"b","bbb"); + User u3 = new User(3,"c","ccc"); + User u4 = new User(4,"d","ddd"); + + list.add(u1); + list.add(u2); + list.add(u3); + list.add(u4); + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + for(int i=0; i + + + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/.idea/.gitignore b/javaweb_ai/.idea/.gitignore new file mode 100644 index 0000000..35410ca --- /dev/null +++ b/javaweb_ai/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/javaweb_ai/.idea/compiler.xml b/javaweb_ai/.idea/compiler.xml new file mode 100644 index 0000000..e4e3d73 --- /dev/null +++ b/javaweb_ai/.idea/compiler.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/.idea/dataSources.xml b/javaweb_ai/.idea/dataSources.xml new file mode 100644 index 0000000..8cc520d --- /dev/null +++ b/javaweb_ai/.idea/dataSources.xml @@ -0,0 +1,17 @@ + + + + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://localhost:3306/web01 + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/javaweb_ai/.idea/encodings.xml b/javaweb_ai/.idea/encodings.xml new file mode 100644 index 0000000..573b89b --- /dev/null +++ b/javaweb_ai/.idea/encodings.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/.idea/jarRepositories.xml b/javaweb_ai/.idea/jarRepositories.xml new file mode 100644 index 0000000..c7ea920 --- /dev/null +++ b/javaweb_ai/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/.idea/misc.xml b/javaweb_ai/.idea/misc.xml new file mode 100644 index 0000000..228be2d --- /dev/null +++ b/javaweb_ai/.idea/misc.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/.idea/modules.xml b/javaweb_ai/.idea/modules.xml new file mode 100644 index 0000000..c759a88 --- /dev/null +++ b/javaweb_ai/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/.idea/vcs.xml b/javaweb_ai/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/javaweb_ai/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/javaweb_ai/Mybatis_demo/learn.md b/javaweb_ai/Mybatis_demo/learn.md new file mode 100644 index 0000000..085998c --- /dev/null +++ b/javaweb_ai/Mybatis_demo/learn.md @@ -0,0 +1,14 @@ +### XML映射 + +1. XML名称与Mapper接口名称一致,同包同名 + + + + + + +### SpringBoot配置文件 +properties 配置文件 臃肿不清晰 +yaml/yml 配置文件 清晰简洁 +1. 配置文件名可以任意,但建议以application开头,如application.yml +2. 以空格为缩进,相同层级的属性,缩进相同,左边对齐 diff --git a/javaweb_ai/Mybatis_demo/pom.xml b/javaweb_ai/Mybatis_demo/pom.xml new file mode 100644 index 0000000..0089541 --- /dev/null +++ b/javaweb_ai/Mybatis_demo/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.6 + + + top.lejings + Mybatis_demo + 0.0.1-SNAPSHOT + Mybatis_demo + Mybatis_demo + + + + + + + + + + + + + + + 17 + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 3.0.3 + + + + com.mysql + mysql-connector-j + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.mybatis.spring.boot + mybatis-spring-boot-starter-test + 3.0.3 + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/MybatisDemoApplication.java b/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/MybatisDemoApplication.java new file mode 100644 index 0000000..ef12ac5 --- /dev/null +++ b/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/MybatisDemoApplication.java @@ -0,0 +1,13 @@ +package top.lejings.mybatis_demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MybatisDemoApplication { + + public static void main(String[] args) { + SpringApplication.run(MybatisDemoApplication.class, args); + } + +} diff --git a/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/mapper/UserMapper.java b/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/mapper/UserMapper.java new file mode 100644 index 0000000..ed25e6d --- /dev/null +++ b/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/mapper/UserMapper.java @@ -0,0 +1,52 @@ +package top.lejings.mybatis_demo.mapper; + + +import org.apache.ibatis.annotations.*; +import top.lejings.mybatis_demo.pojo.User; + +import java.util.List; + +//应用程序在运行时,会自动的为该接口创建一个实现类对象,该对象会作为代理对象,并且会自动的将该实现类对象存入IOC容器中 +@Mapper +public interface UserMapper { + + //此注解表查询 + @Select("select * from user") + public List findAll(); + + @Delete("delete from user where id=#{id}") + public void deleteById(Integer id); + + //如果要求返回值,则返回执行完毕后的影响行数 + /* + * #{···} + * 表明占位符,推荐 + * ${···} + * 表明拼接符,不推荐 + * */ + +// 新增,也可以直接传递对象 values里面写对象的属性名 + @Insert("insert into user( username, password, name, age) values(#{username},#{password},#{name},#{age})") + public void insert(String username,String password,String name,Integer age); + + /* + * 修改操作 + * */ + @Update("update user set username = #{username},password = #{password},name = #{name},age = #{age} where id = #{id}") + public void update(User user); + + + + @Select("select * from user where username = #{username} and password = #{password}") + public User findByUsernameAndPassword(@Param("username") String username,@Param("password") String password); +/* +* +* 给接口的方法形参起名字: @Param("形参名") +* +* +* +* +* +* +* */ +} diff --git a/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/pojo/User.java b/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/pojo/User.java new file mode 100644 index 0000000..3383918 --- /dev/null +++ b/javaweb_ai/Mybatis_demo/src/main/java/top/lejings/mybatis_demo/pojo/User.java @@ -0,0 +1,16 @@ +package top.lejings.mybatis_demo.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class User { + private Integer id; + private String username; + private String password; + private String name; + private Integer age; +} diff --git a/javaweb_ai/Mybatis_demo/src/main/resources/application.properties b/javaweb_ai/Mybatis_demo/src/main/resources/application.properties new file mode 100644 index 0000000..544c766 --- /dev/null +++ b/javaweb_ai/Mybatis_demo/src/main/resources/application.properties @@ -0,0 +1,10 @@ +spring.application.name=Mybatis_demo + +#配置数据库的连接信息 +spring.datasource.url=jdbc:mysql://localhost:3306/web01 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=123456 + +#开启Mybatis的执行语句输出到控制台 +mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl \ No newline at end of file diff --git a/javaweb_ai/Mybatis_demo/src/test/java/top/lejings/mybatis_demo/MybatisDemoApplicationTests.java b/javaweb_ai/Mybatis_demo/src/test/java/top/lejings/mybatis_demo/MybatisDemoApplicationTests.java new file mode 100644 index 0000000..24e3284 --- /dev/null +++ b/javaweb_ai/Mybatis_demo/src/test/java/top/lejings/mybatis_demo/MybatisDemoApplicationTests.java @@ -0,0 +1,37 @@ +package top.lejings.mybatis_demo; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import top.lejings.mybatis_demo.mapper.UserMapper; +import top.lejings.mybatis_demo.pojo.User; + +import java.util.List; + +@SpringBootTest //springboot中测试注解, 启动springboot环境 -IOC容器也会创建好 +class MybatisDemoApplicationTests { + + @Autowired + private UserMapper userMapper; + + + @Test + public void testFindAll(){ +/* List userList = userMapper.findAll(); + userList.forEach(user -> {System.out.println(user);}); + + userMapper.deleteById(5); + + userList = userMapper.findAll(); + userList.forEach(user -> {System.out.println(user);}); + + userMapper.insert("zhou","123456","周瑜",20);*/ + + User user = new User(1,"zhou","123456","sb",20); + + userMapper.update(user); + + + + } +} diff --git a/javaweb_ai/Mybatis_demo/target/classes/application.properties b/javaweb_ai/Mybatis_demo/target/classes/application.properties new file mode 100644 index 0000000..544c766 --- /dev/null +++ b/javaweb_ai/Mybatis_demo/target/classes/application.properties @@ -0,0 +1,10 @@ +spring.application.name=Mybatis_demo + +#配置数据库的连接信息 +spring.datasource.url=jdbc:mysql://localhost:3306/web01 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=123456 + +#开启Mybatis的执行语句输出到控制台 +mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl \ No newline at end of file diff --git a/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/MybatisDemoApplication.class b/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/MybatisDemoApplication.class new file mode 100644 index 0000000..e1b58d3 Binary files /dev/null and b/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/MybatisDemoApplication.class differ diff --git a/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/mapper/UserMapper.class b/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/mapper/UserMapper.class new file mode 100644 index 0000000..89a4cb7 Binary files /dev/null and b/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/mapper/UserMapper.class differ diff --git a/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/pojo/User.class b/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/pojo/User.class new file mode 100644 index 0000000..0ebfe68 Binary files /dev/null and b/javaweb_ai/Mybatis_demo/target/classes/top/lejings/mybatis_demo/pojo/User.class differ diff --git a/javaweb_ai/Mybatis_demo/target/test-classes/top/lejings/mybatis_demo/MybatisDemoApplicationTests.class b/javaweb_ai/Mybatis_demo/target/test-classes/top/lejings/mybatis_demo/MybatisDemoApplicationTests.class new file mode 100644 index 0000000..c2271f6 Binary files /dev/null and b/javaweb_ai/Mybatis_demo/target/test-classes/top/lejings/mybatis_demo/MybatisDemoApplicationTests.class differ diff --git a/javaweb_ai/java_web_ai.iml b/javaweb_ai/java_web_ai.iml new file mode 100644 index 0000000..9a5cfce --- /dev/null +++ b/javaweb_ai/java_web_ai.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/jdbc-demo/pom.xml b/javaweb_ai/jdbc-demo/pom.xml new file mode 100644 index 0000000..6b6641f --- /dev/null +++ b/javaweb_ai/jdbc-demo/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + top.lejings + jdbc-demo + 1.0-SNAPSHOT + + + + + + com.mysql + mysql-connector-j + 8.0.33 + + + + + org.junit.jupiter + junit-jupiter-api + 5.7.0 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.7.0 + test + + + org.projectlombok + lombok + 1.18.36 + provided + + + org.projectlombok + lombok + 1.18.36 + provided + + + + + + 23 + 23 + UTF-8 + + + \ No newline at end of file diff --git a/javaweb_ai/jdbc-demo/src/main/java/top/lejings/pojo/User.java b/javaweb_ai/jdbc-demo/src/main/java/top/lejings/pojo/User.java new file mode 100644 index 0000000..8c25f95 --- /dev/null +++ b/javaweb_ai/jdbc-demo/src/main/java/top/lejings/pojo/User.java @@ -0,0 +1,23 @@ +package top.lejings.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/* +* 实体类 +* +* +* */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class User { + private Integer id; + private String username; + private String password; + private String name; + private Integer age; + + +} diff --git a/javaweb_ai/jdbc-demo/src/test/java/lejings/jdbcTest.java b/javaweb_ai/jdbc-demo/src/test/java/lejings/jdbcTest.java new file mode 100644 index 0000000..45ac71b --- /dev/null +++ b/javaweb_ai/jdbc-demo/src/test/java/lejings/jdbcTest.java @@ -0,0 +1,37 @@ +package lejings; + +import org.junit.jupiter.api.Test; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; + +public class jdbcTest { + /* + * + * + * JDBC入门程序 + * + * */ + + @Test + public void testUpdate() throws Exception { + //1.注册驱动 + Class.forName("com.mysql.cj.jdbc.Driver"); + + //2.获取连接 + String url = "jdbc:mysql://localhost:3306/web01"; + Connection connection = DriverManager.getConnection(url, "root", "123456"); + + //3.获取操作数据库的预处理对象 + Statement statement = connection.createStatement(); + //4.执行sql语句,实现数据的添加、修改、删除 + int i = statement.executeUpdate("update user set age = 25 where id = 1"); + System.out.println("影响的记录数为"+i); + + //5.释放资源 + statement.close(); + connection.close(); + } + +} diff --git a/javaweb_ai/jdbc-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/javaweb_ai/jdbc-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/javaweb_ai/jdbc-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/javaweb_ai/jdbc-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..cafa9bc --- /dev/null +++ b/javaweb_ai/jdbc-demo/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +C:\Users\LeJingS\IdeaProjects\java_web_ai\jdbc-demo\src\main\java\top\lejings\jdbcTest.java diff --git a/javaweb_ai/jdbc-demo/target/test-classes/lejings/jdbcTest.class b/javaweb_ai/jdbc-demo/target/test-classes/lejings/jdbcTest.class new file mode 100644 index 0000000..2445562 Binary files /dev/null and b/javaweb_ai/jdbc-demo/target/test-classes/lejings/jdbcTest.class differ diff --git a/javaweb_ai/maven-hello/maven.md b/javaweb_ai/maven-hello/maven.md new file mode 100644 index 0000000..de8fdfe --- /dev/null +++ b/javaweb_ai/maven-hello/maven.md @@ -0,0 +1,19 @@ +## 依赖配置 +1. 在pom.xml中,编写< dependencies > 标签 +2. 在其中使用< dependency >引入坐标 +3. 点击刷新,引入最新加入的坐标 + +## maven的三套生命周期 +负责对所有maven项目构建进行抽象和统一 +### claen +claen:移除上一次项目构建生成的文件 + +### default +compile:编译项目源代码 +test:使用合适的单元测试框架进行测试 +package:将项目编译后的文件打包 +install:安装项目到本地仓库 +### site + + +注意: 在同一套生命周期中运行后面的阶段时,前面的阶段都会运行 \ No newline at end of file diff --git a/javaweb_ai/maven-hello/pom.xml b/javaweb_ai/maven-hello/pom.xml new file mode 100644 index 0000000..bd0e252 --- /dev/null +++ b/javaweb_ai/maven-hello/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + + + maven坐标: + 组织名称,即域名反写 + 项目名 + 版本号 + <--> + top.lejings + maven-hello + 1.0-SNAPSHOT + + + 23 + 23 + UTF-8 + + + + 配置依赖 + 排除依赖 + <--> + + + org.springframework + spring-context + 6.1.4 + + + + + + \ No newline at end of file diff --git a/javaweb_ai/maven-hello/src/main/java/top/lejings/Main.java b/javaweb_ai/maven-hello/src/main/java/top/lejings/Main.java new file mode 100644 index 0000000..6fdfd1e --- /dev/null +++ b/javaweb_ai/maven-hello/src/main/java/top/lejings/Main.java @@ -0,0 +1,17 @@ +package top.lejings; + +//TIP 要运行代码,请按 或 +// 点击装订区域中的 图标。 +public class Main { + public static void main(String[] args) { + //TIP 当文本光标位于高亮显示的文本处时按 + // 查看 IntelliJ IDEA 建议如何修正。 + System.out.printf("Hello and welcome!"); + + for (int i = 1; i <= 5; i++) { + //TIP 按 开始调试代码。我们已经设置了一个 断点 + // 但您始终可以通过按 添加更多断点。 + System.out.println("i = " + i); + } + } +} \ No newline at end of file diff --git a/javaweb_ai/maven-hello/target/classes/top/lejings/Main.class b/javaweb_ai/maven-hello/target/classes/top/lejings/Main.class new file mode 100644 index 0000000..60cd87f Binary files /dev/null and b/javaweb_ai/maven-hello/target/classes/top/lejings/Main.class differ diff --git a/javaweb_ai/maven-hello/target/maven-archiver/pom.properties b/javaweb_ai/maven-hello/target/maven-archiver/pom.properties new file mode 100644 index 0000000..9633199 --- /dev/null +++ b/javaweb_ai/maven-hello/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=maven-hello +groupId=top.lejings +version=1.0-SNAPSHOT diff --git a/javaweb_ai/maven-hello/target/maven-hello-1.0-SNAPSHOT.jar b/javaweb_ai/maven-hello/target/maven-hello-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..9a6c807 Binary files /dev/null and b/javaweb_ai/maven-hello/target/maven-hello-1.0-SNAPSHOT.jar differ diff --git a/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..52d2648 --- /dev/null +++ b/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +C:\Users\LeJingS\IdeaProjects\java_web_ai\maven-hello\src\main\java\top\lejings\Main.java diff --git a/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/javaweb_ai/maven-hello/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/javaweb_ai/spring-list/learn.md b/javaweb_ai/spring-list/learn.md new file mode 100644 index 0000000..8a854c9 --- /dev/null +++ b/javaweb_ai/spring-list/learn.md @@ -0,0 +1,27 @@ +## 分层解耦 +三层架构 +单一职责原则,使得代码更清晰,更易维护。可读性强。更容易复用。 +1. 控制层,接受前段发送的请求,对请求进行处理,然后返回结果。 +controller + + +2. 业务逻辑层,处理具体的业务逻辑 +service + + +3. 数据访问层,处理与数据库的交互。 +dao(Data Access Object) + + +为了完成分层解耦,防止空指针异常,不能在类中直接创建另一层的对象 +为了解决这个问题,我们引入IOC与DI,即反转控制与依赖注入。 +用容器来管理对象,将对象的创建与使用分离。 + +1. IOC容器 +将Dao和Service的创建权交给容器,容器负责创建对象,并将对象注入到Service中。 +加上注解@Component + +2. DI +为Controller和Service注入所依赖对象。 +加上@Autowired + diff --git a/javaweb_ai/spring-list/pom.xml b/javaweb_ai/spring-list/pom.xml new file mode 100644 index 0000000..9d0b182 --- /dev/null +++ b/javaweb_ai/spring-list/pom.xml @@ -0,0 +1,76 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.4.0 + + + top.lejings + spring-list + 0.0.1-SNAPSHOT + spring-list + spring-list + + + + + + + + + + + + + + + 23 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + cn.hutool + hutool-all + 5.8.27 + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/SpringListApplication.java b/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/SpringListApplication.java new file mode 100644 index 0000000..6409501 --- /dev/null +++ b/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/SpringListApplication.java @@ -0,0 +1,13 @@ +package top.lejings.springlist; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringListApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringListApplication.class, args); + } + +} diff --git a/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/controller/UserController.java b/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/controller/UserController.java new file mode 100644 index 0000000..493d9b7 --- /dev/null +++ b/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/controller/UserController.java @@ -0,0 +1,64 @@ +package top.lejings.springlist.controller; + + +import cn.hutool.core.io.IoUtil; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import top.lejings.springlist.pojo.User; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static java.nio.charset.StandardCharsets.*; + +/* +* 用户信息的Controller +* +* @RestController这个注解封装了@ResponseBody和@Controller的功能, +* @RestController返回json格式的数据,将返回值的类型作为json格式返回 +* +* +* +* */ +@RestController +public class UserController { + @RequestMapping("/list") + public List list() throws Exception { + //加载并读取user.txt文件 + /*InputStream in = new FileInputStream("src/main/resources/user.txt");*/ + //推荐方式: + System.out.println("1"); + InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt"); + ArrayList lines = IoUtil.readLines(in, UTF_8,new ArrayList<>()); + + //解析用户信息,封装User对象 -> list集合 + //遍历集合,解析数据 + List userList = lines.stream().map(line ->{ + String[] parts = line.split(","); + Integer id = Integer.parseInt(parts[0]); + String username = parts[1]; + String password = parts[2]; + String name = parts[3]; + Integer age = Integer.parseInt(parts[4]); + //时间的解析:将字符串转为时间格式,并且指定格式 + LocalDateTime updateTime = LocalDateTime.parse(parts[5], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + + //封装对象 + return new User(id,username,password,name,age,updateTime); + + }).collect(Collectors.toList()); + + + + //转为json格式,返回浏览器 + + return userList; + } +} diff --git a/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/pojo/User.java b/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/pojo/User.java new file mode 100644 index 0000000..14f9983 --- /dev/null +++ b/javaweb_ai/spring-list/src/main/java/top/lejings/springlist/pojo/User.java @@ -0,0 +1,27 @@ +package top.lejings.springlist.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/* +* 建议开发过程中,使用包装类,基本数据类型会有默认值 +* +* +* */ +//表明get set方法,有参构造,无参构造 +@Data +@NoArgsConstructor +@AllArgsConstructor +public class User { + private Integer id; + private String username; + private String password; + private String name; + private Integer age; + //最后更新时间,xxxx-xx-xx xx:xx:xx + private LocalDateTime updateTime; + +} diff --git a/javaweb_ai/spring-list/src/main/resources/application.properties b/javaweb_ai/spring-list/src/main/resources/application.properties new file mode 100644 index 0000000..0202b48 --- /dev/null +++ b/javaweb_ai/spring-list/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=spring-list diff --git a/javaweb_ai/spring-list/src/main/resources/static/js/axios.min.js b/javaweb_ai/spring-list/src/main/resources/static/js/axios.min.js new file mode 100644 index 0000000..0cfdfd2 --- /dev/null +++ b/javaweb_ai/spring-list/src/main/resources/static/js/axios.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),s=a.value,u=s instanceof t;Promise.resolve(u?s.v:s).then((function(t){if(u){var n="return"===r?"return":"next";if(!s.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var s={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=s:(r=n=s,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){l(i,n,o,a,s,"next",e)}function s(e){l(i,n,o,a,s,"throw",e)}a(void 0)}))}}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),L(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Q=function(e){return!N(e)&&e!==Y};var Z,ee=(Z="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return Z&&e instanceof Z}),te=A("HTMLFormElement"),re=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),ne=A("RegExp"),oe=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};X(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ie="abcdefghijklmnopqrstuvwxyz",ae="0123456789",se={DIGIT:ae,ALPHA:ie,ALPHA_DIGIT:ie+ie.toUpperCase()+ae};var ue=A("AsyncFunction"),ce={isArray:L,isArrayBuffer:_,isBuffer:function(e){return null!==e&&!N(e)&&null!==e.constructor&&!N(e.constructor)&&F(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||F(e.append)&&("formdata"===(t=k(e))||"object"===t&&F(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&_(e.buffer)},isString:C,isNumber:U,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:B,isReadableStream:W,isRequest:G,isResponse:K,isHeaders:V,isUndefined:N,isDate:I,isFile:q,isBlob:z,isRegExp:ne,isFunction:F,isStream:function(e){return D(e)&&F(e.pipe)},isURLSearchParams:H,isTypedArray:ee,isFileList:M,forEach:X,merge:function e(){for(var t=Q(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&$(n,o)||o;B(n[i])&&B(t)?n[i]=e(n[i],t):B(t)?n[i]=e({},t):L(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return X(t,(function(t,n){r&&F(t)?e[n]=x(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:k,kindOfTest:A,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(L(e))return e;var t=e.length;if(!U(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:te,hasOwnProperty:re,hasOwnProp:re,reduceDescriptors:oe,freezeMethods:function(e){oe(e,(function(t,r){if(F(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];F(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return L(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:$,global:Y,isContextDefined:Q,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&F(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=L(r)?[]:{};return X(r,(function(t,r){var i=e(t,n+1);!N(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:ue,isThenable:function(e){return e&&(D(e)||F(e))&&F(e.then)&&F(e.catch)}};function fe(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o)}ce.inherits(fe,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ce.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var le=fe.prototype,he={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){he[e]={value:e}})),Object.defineProperties(fe,he),Object.defineProperty(le,"isAxiosError",{value:!0}),fe.from=function(e,t,r,n,o,i){var a=Object.create(le);return ce.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),fe.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function pe(e){return ce.isPlainObject(e)||ce.isArray(e)}function de(e){return ce.endsWith(e,"[]")?e.slice(0,-2):e}function ye(e,t,r){return e?e.concat(t).map((function(e,t){return e=de(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var ve=ce.toFlatObject(ce,{},null,(function(e){return/^is[A-Z]/.test(e)}));function me(e,t,r){if(!ce.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ce.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ce.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,s=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ce.isSpecCompliantForm(t);if(!ce.isFunction(o))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(ce.isDate(e))return e.toISOString();if(!s&&ce.isBlob(e))throw new fe("Blob is not supported. Use a Buffer instead.");return ce.isArrayBuffer(e)||ce.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var s=e;if(e&&!o&&"object"===f(e))if(ce.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ce.isArray(e)&&function(e){return ce.isArray(e)&&!e.some(pe)}(e)||(ce.isFileList(e)||ce.endsWith(r,"[]"))&&(s=ce.toArray(e)))return r=de(r),s.forEach((function(e,n){!ce.isUndefined(e)&&null!==e&&t.append(!0===a?ye([r],n,i):null===a?r:r+"[]",u(e))})),!1;return!!pe(e)||(t.append(ye(o,r,i),u(e)),!1)}var l=[],h=Object.assign(ve,{defaultVisitor:c,convertValue:u,isVisitable:pe});if(!ce.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ce.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ce.forEach(r,(function(r,i){!0===(!(ce.isUndefined(r)||null===r)&&o.call(t,r,ce.isString(i)?i.trim():i,n,h))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function be(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function ge(e,t){this._pairs=[],e&&me(e,this,t)}var we=ge.prototype;function Ee(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Oe(e,t,r){if(!t)return e;var n,o=r&&r.encode||Ee,i=r&&r.serialize;if(n=i?i(t,r):ce.isURLSearchParams(t)?t.toString():new ge(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}we.append=function(e,t){this._pairs.push([e,t])},we.toString=function(e){var t=e?function(t){return e.call(this,t,be)}:be;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Se,xe=function(){function e(){p(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ce.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Re={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Te={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ge,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},je="undefined"!=typeof window&&"undefined"!=typeof document,ke=(Se="undefined"!=typeof navigator&&navigator.product,je&&["ReactNative","NativeScript","NS"].indexOf(Se)<0),Ae="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Pe=je&&window.location.href||"http://localhost",Le=s(s({},Object.freeze({__proto__:null,hasBrowserEnv:je,hasStandardBrowserWebWorkerEnv:Ae,hasStandardBrowserEnv:ke,origin:Pe})),Te);function Ne(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&ce.isArray(n)?n.length:i,s?(ce.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ce.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ce.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ce.isObject(e);if(i&&ce.isHTMLForm(e)&&(e=new FormData(e)),ce.isFormData(e))return o?JSON.stringify(Ne(e)):e;if(ce.isArrayBuffer(e)||ce.isBuffer(e)||ce.isStream(e)||ce.isFile(e)||ce.isBlob(e)||ce.isReadableStream(e))return e;if(ce.isArrayBufferView(e))return e.buffer;if(ce.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return me(e,new Le.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return Le.isNode&&ce.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ce.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return me(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ce.isString(e))try{return(t||JSON.parse)(e),ce.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||_e.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ce.isResponse(e)||ce.isReadableStream(e))return e;if(e&&ce.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw fe.from(e,fe.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Le.classes.FormData,Blob:Le.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ce.forEach(["delete","get","head","post","put","patch"],(function(e){_e.headers[e]={}}));var Ce=_e,Fe=ce.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Ue=Symbol("internals");function De(e){return e&&String(e).trim().toLowerCase()}function Be(e){return!1===e||null==e?e:ce.isArray(e)?e.map(Be):String(e)}function Ie(e,t,r,n,o){return ce.isFunction(n)?n.call(this,t,r):(o&&(t=r),ce.isString(t)?ce.isString(n)?-1!==t.indexOf(n):ce.isRegExp(n)?n.test(t):void 0:void 0)}var qe=function(e,t){function r(e){p(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=De(t);if(!o)throw new Error("header name must be a non-empty string");var i=ce.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=Be(e))}var i=function(e,t){return ce.forEach(e,(function(e,r){return o(e,r,t)}))};if(ce.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ce.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&Fe[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ce.isHeaders(e)){var a,s=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=E(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e.entries());try{for(s.s();!(a=s.n()).done;){var u=m(a.value,2),c=u[0];o(u[1],c,r)}}catch(e){s.e(e)}finally{s.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=De(e)){var r=ce.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ce.isFunction(t))return t.call(this,n,r);if(ce.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=De(e)){var r=ce.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ie(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=De(e)){var o=ce.findKey(r,e);!o||t&&!Ie(0,r[o],o,t)||(delete r[o],n=!0)}}return ce.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ie(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ce.forEach(this,(function(n,o){var i=ce.findKey(r,o);if(i)return t[i]=Be(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Be(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;on)return o&&(clearTimeout(o),o=null),r=a,e.apply(null,arguments);o||(o=setTimeout((function(){return o=null,r=Date.now(),e.apply(null,t)}),n-(a-r)))}}ce.inherits(Je,fe,{__CANCEL__:!0});var Ve=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ge(50,250);return Ke((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,s=i-n,u=o(s);n=i;var c={loaded:i,total:a,progress:a?i/a:void 0,bytes:s,rate:u||void 0,estimated:u&&a&&i<=a?(a-i)/u:void 0,event:r,lengthComputable:null!=a};c[t?"download":"upload"]=!0,e(c)}),r)},Xe=Le.hasStandardBrowserEnv?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function n(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=n(window.location.href),function(t){var r=ce.isString(t)?n(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},$e=Le.hasStandardBrowserEnv?{write:function(e,t,r,n,o,i){var a=[e+"="+encodeURIComponent(t)];ce.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),ce.isString(n)&&a.push("path="+n),ce.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function Ye(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Qe=function(e){return e instanceof ze?s({},e):e};function Ze(e,t){t=t||{};var r={};function n(e,t,r){return ce.isPlainObject(e)&&ce.isPlainObject(t)?ce.merge.call({caseless:r},e,t):ce.isPlainObject(t)?ce.merge({},t):ce.isArray(t)?t.slice():t}function o(e,t,r){return ce.isUndefined(t)?ce.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!ce.isUndefined(t))return n(void 0,t)}function a(e,t){return ce.isUndefined(t)?ce.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}var u={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:function(e,t){return o(Qe(e),Qe(t),!0)}};return ce.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);ce.isUndefined(a)&&i!==s||(r[n]=a)})),r}var et,tt,rt,nt,ot=function(e){var t,r,n=Ze({},e),o=n.data,i=n.withXSRFToken,a=n.xsrfHeaderName,s=n.xsrfCookieName,u=n.headers,c=n.auth;if(n.headers=u=ze.from(u),n.url=Oe(Ye(n.baseURL,n.url),e.params,e.paramsSerializer),c&&u.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),ce.isFormData(o))if(Le.hasStandardBrowserEnv||Le.hasStandardBrowserWebWorkerEnv)u.setContentType(void 0);else if(!1!==(t=u.getContentType())){var f=t?t.split(";").map((function(e){return e.trim()})).filter(Boolean):[],l=g(r=f)||w(r)||E(r)||S(),h=l[0],p=l.slice(1);u.setContentType([h||"multipart/form-data"].concat(b(p)).join("; "))}if(Le.hasStandardBrowserEnv&&(i&&ce.isFunction(i)&&(i=i(n)),i||!1!==i&&Xe(n.url))){var d=a&&s&&$e.read(s);d&&u.set(a,d)}return n},it="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){var n,o=ot(e),i=o.data,a=ze.from(o.headers).normalize(),s=o.responseType;function u(){o.cancelToken&&o.cancelToken.unsubscribe(n),o.signal&&o.signal.removeEventListener("abort",n)}var c=new XMLHttpRequest;function f(){if(c){var n=ze.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());We((function(e){t(e),u()}),(function(e){r(e),u()}),{data:s&&"text"!==s&&"json"!==s?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:n,config:e,request:c}),c=null}}c.open(o.method.toUpperCase(),o.url,!0),c.timeout=o.timeout,"onloadend"in c?c.onloadend=f:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(f)},c.onabort=function(){c&&(r(new fe("Request aborted",fe.ECONNABORTED,o,c)),c=null)},c.onerror=function(){r(new fe("Network Error",fe.ERR_NETWORK,o,c)),c=null},c.ontimeout=function(){var e=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded",t=o.transitional||Re;o.timeoutErrorMessage&&(e=o.timeoutErrorMessage),r(new fe(e,t.clarifyTimeoutError?fe.ETIMEDOUT:fe.ECONNABORTED,o,c)),c=null},void 0===i&&a.setContentType(null),"setRequestHeader"in c&&ce.forEach(a.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),ce.isUndefined(o.withCredentials)||(c.withCredentials=!!o.withCredentials),s&&"json"!==s&&(c.responseType=o.responseType),"function"==typeof o.onDownloadProgress&&c.addEventListener("progress",Ve(o.onDownloadProgress,!0)),"function"==typeof o.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",Ve(o.onUploadProgress)),(o.cancelToken||o.signal)&&(n=function(t){c&&(r(!t||t.type?new Je(null,e,c):t),c.abort(),c=null)},o.cancelToken&&o.cancelToken.subscribe(n),o.signal&&(o.signal.aborted?n():o.signal.addEventListener("abort",n)));var l,h,p=(l=o.url,(h=/^([-+\w]{1,25})(:?\/\/|:)/.exec(l))&&h[1]||"");p&&-1===Le.protocols.indexOf(p)?r(new fe("Unsupported protocol "+p+":",fe.ERR_BAD_REQUEST,e)):c.send(i||null)}))},at=function(e,t){var r,n=new AbortController,o=function(e){if(!r){r=!0,a();var t=e instanceof Error?e:this.reason;n.abort(t instanceof fe?t:new Je(t instanceof Error?t.message:t))}},i=t&&setTimeout((function(){o(new fe("timeout ".concat(t," of ms exceeded"),fe.ETIMEDOUT))}),t),a=function(){e&&(i&&clearTimeout(i),i=null,e.forEach((function(e){e&&(e.removeEventListener?e.removeEventListener("abort",o):e.unsubscribe(o))})),e=null)};e.forEach((function(e){return e&&e.addEventListener&&e.addEventListener("abort",o)}));var s=n.signal;return s.unsubscribe=a,[s,function(){i&&clearTimeout(i),i=null}]},st=u().mark((function e(t,r){var n,o,i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.byteLength,r&&!(n1?"since :\n"+s.map(Et).join("\n"):" "+Et(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function xt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Je(null,e)}function Rt(e){return xt(e),e.headers=ze.from(e.headers),e.data=Me.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),St(e.adapter||Ce.adapter)(e).then((function(t){return xt(e),t.data=Me.call(e,e.transformResponse,t),t.headers=ze.from(t.headers),t}),(function(t){return He(t)||(xt(e),t&&t.response&&(t.response.data=Me.call(e,e.transformResponse,t.response),t.response.headers=ze.from(t.response.headers))),Promise.reject(t)}))}var Tt="1.7.2",jt={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){jt[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var kt={};jt.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.2] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new fe(n(o," has been removed"+(t?" in "+t:"")),fe.ERR_DEPRECATED);return t&&!kt[o]&&(kt[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var At={assertOptions:function(e,t,r){if("object"!==f(e))throw new fe("options must be an object",fe.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var s=e[i],u=void 0===s||a(s,i,e);if(!0!==u)throw new fe("option "+i+" must be "+u,fe.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new fe("Unknown option "+i,fe.ERR_BAD_OPTION)}},validators:jt},Pt=At.validators,Lt=function(){function e(t){p(this,e),this.defaults=t,this.interceptors={request:new xe,response:new xe}}var t;return y(e,[{key:"request",value:(t=h(u().mark((function e(t,r){var n,o;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){Error.captureStackTrace?Error.captureStackTrace(n={}):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=Ze(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&At.assertOptions(n,{silentJSONParsing:Pt.transitional(Pt.boolean),forcedJSONParsing:Pt.transitional(Pt.boolean),clarifyTimeoutError:Pt.transitional(Pt.boolean)},!1),null!=o&&(ce.isFunction(o)?t.paramsSerializer={serialize:o}:At.assertOptions(o,{encode:Pt.function,serialize:Pt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ce.merge(i.common,i[t.method]);i&&ce.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=ze.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!u){var p=[Rt.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Je(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Ct={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ct).forEach((function(e){var t=m(e,2),r=t[0],n=t[1];Ct[n]=r}));var Ft=Ct;var Ut=function e(t){var r=new Nt(t),n=x(Nt.prototype.request,r);return ce.extend(n,Nt.prototype,r,{allOwnKeys:!0}),ce.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(Ze(t,r))},n}(Ce);return Ut.Axios=Nt,Ut.CanceledError=Je,Ut.CancelToken=_t,Ut.isCancel=He,Ut.VERSION=Tt,Ut.toFormData=me,Ut.AxiosError=fe,Ut.Cancel=Ut.CanceledError,Ut.all=function(e){return Promise.all(e)},Ut.spread=function(e){return function(t){return e.apply(null,t)}},Ut.isAxiosError=function(e){return ce.isObject(e)&&!0===e.isAxiosError},Ut.mergeConfig=Ze,Ut.AxiosHeaders=ze,Ut.formToJSON=function(e){return Ne(ce.isHTMLForm(e)?new FormData(e):e)},Ut.getAdapter=St,Ut.HttpStatusCode=Ft,Ut.default=Ut,Ut})); +//# sourceMappingURL=axios.min.js.map \ No newline at end of file diff --git a/javaweb_ai/spring-list/src/main/resources/static/js/vue.esm-browser.js b/javaweb_ai/spring-list/src/main/resources/static/js/vue.esm-browser.js new file mode 100644 index 0000000..b85f802 --- /dev/null +++ b/javaweb_ai/spring-list/src/main/resources/static/js/vue.esm-browser.js @@ -0,0 +1,16741 @@ + +/** + * vue v3.4.27 + * (c) 2018-present Yuxi (Evan) You and Vue contributors + * @license MIT + **/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str, expectsLowerCase) { + const set = new Set(str.split(",")); + return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val); +} + +const EMPTY_OBJ = Object.freeze({}) ; +const EMPTY_ARR = Object.freeze([]) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter + (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; + +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` +}; + +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return ret; + } + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function warn$2(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$2(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else { + warn$2( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +let activeEffect; +class ReactiveEffect { + constructor(fn, trigger, scheduler, scope) { + this.fn = fn; + this.trigger = trigger; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + /** + * @internal + */ + this._dirtyLevel = 4; + /** + * @internal + */ + this._trackId = 0; + /** + * @internal + */ + this._runnings = 0; + /** + * @internal + */ + this._shouldSchedule = false; + /** + * @internal + */ + this._depsLength = 0; + recordEffectScope(this, scope); + } + get dirty() { + if (this._dirtyLevel === 2 || this._dirtyLevel === 3) { + this._dirtyLevel = 1; + pauseTracking(); + for (let i = 0; i < this._depsLength; i++) { + const dep = this.deps[i]; + if (dep.computed) { + triggerComputed(dep.computed); + if (this._dirtyLevel >= 4) { + break; + } + } + } + if (this._dirtyLevel === 1) { + this._dirtyLevel = 0; + } + resetTracking(); + } + return this._dirtyLevel >= 4; + } + set dirty(v) { + this._dirtyLevel = v ? 4 : 0; + } + run() { + this._dirtyLevel = 0; + if (!this.active) { + return this.fn(); + } + let lastShouldTrack = shouldTrack; + let lastEffect = activeEffect; + try { + shouldTrack = true; + activeEffect = this; + this._runnings++; + preCleanupEffect(this); + return this.fn(); + } finally { + postCleanupEffect(this); + this._runnings--; + activeEffect = lastEffect; + shouldTrack = lastShouldTrack; + } + } + stop() { + if (this.active) { + preCleanupEffect(this); + postCleanupEffect(this); + this.onStop && this.onStop(); + this.active = false; + } + } +} +function triggerComputed(computed) { + return computed.value; +} +function preCleanupEffect(effect2) { + effect2._trackId++; + effect2._depsLength = 0; +} +function postCleanupEffect(effect2) { + if (effect2.deps.length > effect2._depsLength) { + for (let i = effect2._depsLength; i < effect2.deps.length; i++) { + cleanupDepEffect(effect2.deps[i], effect2); + } + effect2.deps.length = effect2._depsLength; + } +} +function cleanupDepEffect(dep, effect2) { + const trackId = dep.get(effect2); + if (trackId !== void 0 && effect2._trackId !== trackId) { + dep.delete(effect2); + if (dep.size === 0) { + dep.cleanup(); + } + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn, NOOP, () => { + if (_effect.dirty) { + _effect.run(); + } + }); + if (options) { + extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +let pauseScheduleStack = 0; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function pauseScheduling() { + pauseScheduleStack++; +} +function resetScheduling() { + pauseScheduleStack--; + while (!pauseScheduleStack && queueEffectSchedulers.length) { + queueEffectSchedulers.shift()(); + } +} +function trackEffect(effect2, dep, debuggerEventExtraInfo) { + var _a; + if (dep.get(effect2) !== effect2._trackId) { + dep.set(effect2, effect2._trackId); + const oldDep = effect2.deps[effect2._depsLength]; + if (oldDep !== dep) { + if (oldDep) { + cleanupDepEffect(oldDep, effect2); + } + effect2.deps[effect2._depsLength++] = dep; + } else { + effect2._depsLength++; + } + { + (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + } +} +const queueEffectSchedulers = []; +function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) { + var _a; + pauseScheduling(); + for (const effect2 of dep.keys()) { + let tracking; + if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0); + effect2._dirtyLevel = dirtyLevel; + } + if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + { + (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + effect2.trigger(); + if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) { + effect2._shouldSchedule = false; + if (effect2.scheduler) { + queueEffectSchedulers.push(effect2.scheduler); + } + } + } + } + resetScheduling(); +} + +const createDep = (cleanup, computed) => { + const dep = /* @__PURE__ */ new Map(); + dep.cleanup = cleanup; + dep.computed = computed; + return dep; +}; + +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol("iterate" ); +const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" ); +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep(() => depsMap.delete(key))); + } + trackEffect( + activeEffect, + dep, + { + target, + type, + key + } + ); + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + pauseScheduling(); + for (const dep of deps) { + if (dep) { + triggerEffects( + dep, + 4, + { + target, + type, + key, + newValue, + oldValue, + oldTarget + } + ); + } + } + resetScheduling(); +} +function getDepFromReactive(object, key) { + const depsMap = targetMap.get(object); + return depsMap && depsMap.get(key); +} + +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + pauseScheduling(); + const res = toRaw(this)[key].apply(this, args); + resetScheduling(); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty(key) { + if (!isSymbol(key)) + key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the reciever is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn$2( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$2( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( + true +); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly = false, isShallow = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly = false) { + target = target["__v_raw"]; + !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly, isShallow) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn$2( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod(method, false, false); + readonlyInstrumentations2[method] = createIterableMethod(method, true, false); + shallowInstrumentations2[method] = createIterableMethod(method, false, true); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +const [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = /* @__PURE__ */ createInstrumentations(); +function createInstrumentationGetter(isReadonly, shallow) { + const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly; + } else if (key === "__v_isReadonly") { + return isReadonly; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + warn$2( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn$2(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; + +const COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`; +class ComputedRefImpl { + constructor(getter, _setter, isReadonly, isSSR) { + this.getter = getter; + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this.effect = new ReactiveEffect( + () => getter(this._value), + () => triggerRefValue( + this, + this.effect._dirtyLevel === 2 ? 2 : 3 + ) + ); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly; + } + get value() { + const self = toRaw(this); + if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) { + triggerRefValue(self, 4); + } + trackRefValue(self); + if (self.effect._dirtyLevel >= 2) { + if (this._warnRecursive) { + warn$2(COMPUTED_SIDE_EFFECT_WARN, ` + +getter: `, this.getter); + } + triggerRefValue(self, 2); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } + // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x + get _dirty() { + return this.effect.dirty; + } + set _dirty(v) { + this.effect.dirty = v; + } + // #endregion +} +function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = () => { + warn$2("Write operation failed: computed value is readonly"); + } ; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +function trackRefValue(ref2) { + var _a; + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + trackEffect( + activeEffect, + (_a = ref2.dep) != null ? _a : ref2.dep = createDep( + () => ref2.dep = void 0, + ref2 instanceof ComputedRefImpl ? ref2 : void 0 + ), + { + target: ref2, + type: "get", + key: "value" + } + ); + } +} +function triggerRefValue(ref2, dirtyLevel = 4, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + triggerEffects( + dep, + dirtyLevel, + { + target: ref2, + type: "set", + key: "value", + newValue: newVal + } + ); + } +} +function isRef(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, 4, newVal); + } + } +} +function triggerRef(ref2) { + triggerRefValue(ref2, 4, ref2.value ); +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get, set } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get; + this._set = set; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + warn$2(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; + +const stack$1 = []; +function pushWarningContext(vnode) { + stack$1.push(vnode); +} +function popWarningContext() { + stack$1.pop(); +} +function warn$1(msg, ...args) { + pauseTracking(); + const instance = stack$1.length ? stack$1[stack$1.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack$1[stack$1.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} + +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ." +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings$1[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + pauseTracking(); + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +let isFlushing = false; +let isFlushPending = false; +const queue = []; +let flushIndex = 0; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? Infinity : job.id; +const comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Set(); +{ + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.effect.dirty = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + instance.parent.effect.dirty = true; + queueJob(instance.parent.update); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +let devtools$1; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( + "component:added" /* COMPONENT_ADDED */ +); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:start" /* PERFORMANCE_START */ +); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:end" /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + true ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + true ? shallowReadonly(props) : props, + true ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + true ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +let hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) !== suspense.hiddenContainer) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(` slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "post" }) + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "sync" }) + ); +} +const INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, { + immediate, + deep, + flush, + once, + onTrack, + onTrigger +} = EMPTY_OBJ) { + if (cb && once) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + unwatch(); + }; + } + if (deep !== void 0 && typeof deep === "number") { + warn$1( + `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.` + ); + } + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s) => { + warn$1( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = currentInstance; + const reactiveGetter = (source2) => deep === true ? source2 : ( + // for deep: false, only traverse root-level properties + traverse(source2, deep === false ? 1 : void 0) + ); + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect.onStop = () => { + callWithErrorHandling(fn, instance, 4); + cleanup = effect.onStop = void 0; + }; + }; + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect.active || !effect.dirty) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect = new ReactiveEffect(getter, NOOP, scheduler); + const scope = getCurrentScope(); + const unwatch = () => { + effect.stop(); + if (scope) { + remove(scope.effects, effect); + } + }; + { + effect.onTrack = onTrack; + effect.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect.run.bind(effect), + instance && instance.suspense + ); + } else { + effect.run(); + } + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + } + return value; +} + +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey$1 = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn$1( + " can only be used on a single element or component. Use for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.effect.dirty = true; + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } +}; +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey$1] = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey$1] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey$1]) { + el[enterCbKey$1]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) + return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getKeepAliveChild(vnode) { + if (!isKeepAlive(vnode)) { + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || false) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.effect.dirty = true; + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook("bu"); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook("bum"); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook("sp"); +const onRenderTriggered = createHook( + "rtg" +); +const onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + i.effect.dirty = true; + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate + + + \ No newline at end of file diff --git a/javaweb_ai/spring-list/src/main/resources/user.txt b/javaweb_ai/spring-list/src/main/resources/user.txt new file mode 100644 index 0000000..10e6842 --- /dev/null +++ b/javaweb_ai/spring-list/src/main/resources/user.txt @@ -0,0 +1,8 @@ +1,daqiao,1234567890,大乔,22,2024-07-15 15:05:45 +2,xiaoqiao,1234567890,小乔,18,2024-07-15 15:12:09 +3,diaochan,1234567890,貂蝉,21,2024-07-15 15:07:16 +4,lvbu,1234567890,吕布,28,2024-07-16 10:05:15 +5,zhaoyun,1234567890,赵云,27,2024-07-16 11:03:28 +6,zhangfei,1234567890,张飞,31,2024-07-16 11:03:28 +7,guanyu,1234567890,关羽,34,2024-07-16 12:05:12 +8,liubei,1234567890,刘备,37,2024-07-16 15:03:28 \ No newline at end of file diff --git a/javaweb_ai/spring-list/src/test/java/top/lejings/springlist/SpringListApplicationTests.java b/javaweb_ai/spring-list/src/test/java/top/lejings/springlist/SpringListApplicationTests.java new file mode 100644 index 0000000..8461426 --- /dev/null +++ b/javaweb_ai/spring-list/src/test/java/top/lejings/springlist/SpringListApplicationTests.java @@ -0,0 +1,13 @@ +package top.lejings.springlist; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SpringListApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/javaweb_ai/spring-list/target/classes/application.properties b/javaweb_ai/spring-list/target/classes/application.properties new file mode 100644 index 0000000..0202b48 --- /dev/null +++ b/javaweb_ai/spring-list/target/classes/application.properties @@ -0,0 +1 @@ +spring.application.name=spring-list diff --git a/javaweb_ai/spring-list/target/classes/static/js/axios.min.js b/javaweb_ai/spring-list/target/classes/static/js/axios.min.js new file mode 100644 index 0000000..0cfdfd2 --- /dev/null +++ b/javaweb_ai/spring-list/target/classes/static/js/axios.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),s=a.value,u=s instanceof t;Promise.resolve(u?s.v:s).then((function(t){if(u){var n="return"===r?"return":"next";if(!s.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var s={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=s:(r=n=s,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){l(i,n,o,a,s,"next",e)}function s(e){l(i,n,o,a,s,"throw",e)}a(void 0)}))}}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),L(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Q=function(e){return!N(e)&&e!==Y};var Z,ee=(Z="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return Z&&e instanceof Z}),te=A("HTMLFormElement"),re=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),ne=A("RegExp"),oe=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};X(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ie="abcdefghijklmnopqrstuvwxyz",ae="0123456789",se={DIGIT:ae,ALPHA:ie,ALPHA_DIGIT:ie+ie.toUpperCase()+ae};var ue=A("AsyncFunction"),ce={isArray:L,isArrayBuffer:_,isBuffer:function(e){return null!==e&&!N(e)&&null!==e.constructor&&!N(e.constructor)&&F(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||F(e.append)&&("formdata"===(t=k(e))||"object"===t&&F(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&_(e.buffer)},isString:C,isNumber:U,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:B,isReadableStream:W,isRequest:G,isResponse:K,isHeaders:V,isUndefined:N,isDate:I,isFile:q,isBlob:z,isRegExp:ne,isFunction:F,isStream:function(e){return D(e)&&F(e.pipe)},isURLSearchParams:H,isTypedArray:ee,isFileList:M,forEach:X,merge:function e(){for(var t=Q(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&$(n,o)||o;B(n[i])&&B(t)?n[i]=e(n[i],t):B(t)?n[i]=e({},t):L(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return X(t,(function(t,n){r&&F(t)?e[n]=x(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:k,kindOfTest:A,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(L(e))return e;var t=e.length;if(!U(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:te,hasOwnProperty:re,hasOwnProp:re,reduceDescriptors:oe,freezeMethods:function(e){oe(e,(function(t,r){if(F(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];F(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return L(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:$,global:Y,isContextDefined:Q,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&F(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=L(r)?[]:{};return X(r,(function(t,r){var i=e(t,n+1);!N(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:ue,isThenable:function(e){return e&&(D(e)||F(e))&&F(e.then)&&F(e.catch)}};function fe(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o)}ce.inherits(fe,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ce.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var le=fe.prototype,he={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){he[e]={value:e}})),Object.defineProperties(fe,he),Object.defineProperty(le,"isAxiosError",{value:!0}),fe.from=function(e,t,r,n,o,i){var a=Object.create(le);return ce.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),fe.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function pe(e){return ce.isPlainObject(e)||ce.isArray(e)}function de(e){return ce.endsWith(e,"[]")?e.slice(0,-2):e}function ye(e,t,r){return e?e.concat(t).map((function(e,t){return e=de(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var ve=ce.toFlatObject(ce,{},null,(function(e){return/^is[A-Z]/.test(e)}));function me(e,t,r){if(!ce.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ce.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ce.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,s=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ce.isSpecCompliantForm(t);if(!ce.isFunction(o))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(ce.isDate(e))return e.toISOString();if(!s&&ce.isBlob(e))throw new fe("Blob is not supported. Use a Buffer instead.");return ce.isArrayBuffer(e)||ce.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var s=e;if(e&&!o&&"object"===f(e))if(ce.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ce.isArray(e)&&function(e){return ce.isArray(e)&&!e.some(pe)}(e)||(ce.isFileList(e)||ce.endsWith(r,"[]"))&&(s=ce.toArray(e)))return r=de(r),s.forEach((function(e,n){!ce.isUndefined(e)&&null!==e&&t.append(!0===a?ye([r],n,i):null===a?r:r+"[]",u(e))})),!1;return!!pe(e)||(t.append(ye(o,r,i),u(e)),!1)}var l=[],h=Object.assign(ve,{defaultVisitor:c,convertValue:u,isVisitable:pe});if(!ce.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ce.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ce.forEach(r,(function(r,i){!0===(!(ce.isUndefined(r)||null===r)&&o.call(t,r,ce.isString(i)?i.trim():i,n,h))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function be(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function ge(e,t){this._pairs=[],e&&me(e,this,t)}var we=ge.prototype;function Ee(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Oe(e,t,r){if(!t)return e;var n,o=r&&r.encode||Ee,i=r&&r.serialize;if(n=i?i(t,r):ce.isURLSearchParams(t)?t.toString():new ge(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}we.append=function(e,t){this._pairs.push([e,t])},we.toString=function(e){var t=e?function(t){return e.call(this,t,be)}:be;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Se,xe=function(){function e(){p(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ce.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Re={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Te={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ge,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},je="undefined"!=typeof window&&"undefined"!=typeof document,ke=(Se="undefined"!=typeof navigator&&navigator.product,je&&["ReactNative","NativeScript","NS"].indexOf(Se)<0),Ae="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Pe=je&&window.location.href||"http://localhost",Le=s(s({},Object.freeze({__proto__:null,hasBrowserEnv:je,hasStandardBrowserWebWorkerEnv:Ae,hasStandardBrowserEnv:ke,origin:Pe})),Te);function Ne(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&ce.isArray(n)?n.length:i,s?(ce.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ce.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ce.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ce.isObject(e);if(i&&ce.isHTMLForm(e)&&(e=new FormData(e)),ce.isFormData(e))return o?JSON.stringify(Ne(e)):e;if(ce.isArrayBuffer(e)||ce.isBuffer(e)||ce.isStream(e)||ce.isFile(e)||ce.isBlob(e)||ce.isReadableStream(e))return e;if(ce.isArrayBufferView(e))return e.buffer;if(ce.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return me(e,new Le.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return Le.isNode&&ce.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ce.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return me(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ce.isString(e))try{return(t||JSON.parse)(e),ce.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||_e.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ce.isResponse(e)||ce.isReadableStream(e))return e;if(e&&ce.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw fe.from(e,fe.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Le.classes.FormData,Blob:Le.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ce.forEach(["delete","get","head","post","put","patch"],(function(e){_e.headers[e]={}}));var Ce=_e,Fe=ce.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Ue=Symbol("internals");function De(e){return e&&String(e).trim().toLowerCase()}function Be(e){return!1===e||null==e?e:ce.isArray(e)?e.map(Be):String(e)}function Ie(e,t,r,n,o){return ce.isFunction(n)?n.call(this,t,r):(o&&(t=r),ce.isString(t)?ce.isString(n)?-1!==t.indexOf(n):ce.isRegExp(n)?n.test(t):void 0:void 0)}var qe=function(e,t){function r(e){p(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=De(t);if(!o)throw new Error("header name must be a non-empty string");var i=ce.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=Be(e))}var i=function(e,t){return ce.forEach(e,(function(e,r){return o(e,r,t)}))};if(ce.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ce.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&Fe[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ce.isHeaders(e)){var a,s=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=E(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e.entries());try{for(s.s();!(a=s.n()).done;){var u=m(a.value,2),c=u[0];o(u[1],c,r)}}catch(e){s.e(e)}finally{s.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=De(e)){var r=ce.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ce.isFunction(t))return t.call(this,n,r);if(ce.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=De(e)){var r=ce.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ie(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=De(e)){var o=ce.findKey(r,e);!o||t&&!Ie(0,r[o],o,t)||(delete r[o],n=!0)}}return ce.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ie(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ce.forEach(this,(function(n,o){var i=ce.findKey(r,o);if(i)return t[i]=Be(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Be(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;on)return o&&(clearTimeout(o),o=null),r=a,e.apply(null,arguments);o||(o=setTimeout((function(){return o=null,r=Date.now(),e.apply(null,t)}),n-(a-r)))}}ce.inherits(Je,fe,{__CANCEL__:!0});var Ve=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ge(50,250);return Ke((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,s=i-n,u=o(s);n=i;var c={loaded:i,total:a,progress:a?i/a:void 0,bytes:s,rate:u||void 0,estimated:u&&a&&i<=a?(a-i)/u:void 0,event:r,lengthComputable:null!=a};c[t?"download":"upload"]=!0,e(c)}),r)},Xe=Le.hasStandardBrowserEnv?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function n(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=n(window.location.href),function(t){var r=ce.isString(t)?n(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},$e=Le.hasStandardBrowserEnv?{write:function(e,t,r,n,o,i){var a=[e+"="+encodeURIComponent(t)];ce.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),ce.isString(n)&&a.push("path="+n),ce.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function Ye(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Qe=function(e){return e instanceof ze?s({},e):e};function Ze(e,t){t=t||{};var r={};function n(e,t,r){return ce.isPlainObject(e)&&ce.isPlainObject(t)?ce.merge.call({caseless:r},e,t):ce.isPlainObject(t)?ce.merge({},t):ce.isArray(t)?t.slice():t}function o(e,t,r){return ce.isUndefined(t)?ce.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!ce.isUndefined(t))return n(void 0,t)}function a(e,t){return ce.isUndefined(t)?ce.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}var u={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:function(e,t){return o(Qe(e),Qe(t),!0)}};return ce.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);ce.isUndefined(a)&&i!==s||(r[n]=a)})),r}var et,tt,rt,nt,ot=function(e){var t,r,n=Ze({},e),o=n.data,i=n.withXSRFToken,a=n.xsrfHeaderName,s=n.xsrfCookieName,u=n.headers,c=n.auth;if(n.headers=u=ze.from(u),n.url=Oe(Ye(n.baseURL,n.url),e.params,e.paramsSerializer),c&&u.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),ce.isFormData(o))if(Le.hasStandardBrowserEnv||Le.hasStandardBrowserWebWorkerEnv)u.setContentType(void 0);else if(!1!==(t=u.getContentType())){var f=t?t.split(";").map((function(e){return e.trim()})).filter(Boolean):[],l=g(r=f)||w(r)||E(r)||S(),h=l[0],p=l.slice(1);u.setContentType([h||"multipart/form-data"].concat(b(p)).join("; "))}if(Le.hasStandardBrowserEnv&&(i&&ce.isFunction(i)&&(i=i(n)),i||!1!==i&&Xe(n.url))){var d=a&&s&&$e.read(s);d&&u.set(a,d)}return n},it="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){var n,o=ot(e),i=o.data,a=ze.from(o.headers).normalize(),s=o.responseType;function u(){o.cancelToken&&o.cancelToken.unsubscribe(n),o.signal&&o.signal.removeEventListener("abort",n)}var c=new XMLHttpRequest;function f(){if(c){var n=ze.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());We((function(e){t(e),u()}),(function(e){r(e),u()}),{data:s&&"text"!==s&&"json"!==s?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:n,config:e,request:c}),c=null}}c.open(o.method.toUpperCase(),o.url,!0),c.timeout=o.timeout,"onloadend"in c?c.onloadend=f:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(f)},c.onabort=function(){c&&(r(new fe("Request aborted",fe.ECONNABORTED,o,c)),c=null)},c.onerror=function(){r(new fe("Network Error",fe.ERR_NETWORK,o,c)),c=null},c.ontimeout=function(){var e=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded",t=o.transitional||Re;o.timeoutErrorMessage&&(e=o.timeoutErrorMessage),r(new fe(e,t.clarifyTimeoutError?fe.ETIMEDOUT:fe.ECONNABORTED,o,c)),c=null},void 0===i&&a.setContentType(null),"setRequestHeader"in c&&ce.forEach(a.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),ce.isUndefined(o.withCredentials)||(c.withCredentials=!!o.withCredentials),s&&"json"!==s&&(c.responseType=o.responseType),"function"==typeof o.onDownloadProgress&&c.addEventListener("progress",Ve(o.onDownloadProgress,!0)),"function"==typeof o.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",Ve(o.onUploadProgress)),(o.cancelToken||o.signal)&&(n=function(t){c&&(r(!t||t.type?new Je(null,e,c):t),c.abort(),c=null)},o.cancelToken&&o.cancelToken.subscribe(n),o.signal&&(o.signal.aborted?n():o.signal.addEventListener("abort",n)));var l,h,p=(l=o.url,(h=/^([-+\w]{1,25})(:?\/\/|:)/.exec(l))&&h[1]||"");p&&-1===Le.protocols.indexOf(p)?r(new fe("Unsupported protocol "+p+":",fe.ERR_BAD_REQUEST,e)):c.send(i||null)}))},at=function(e,t){var r,n=new AbortController,o=function(e){if(!r){r=!0,a();var t=e instanceof Error?e:this.reason;n.abort(t instanceof fe?t:new Je(t instanceof Error?t.message:t))}},i=t&&setTimeout((function(){o(new fe("timeout ".concat(t," of ms exceeded"),fe.ETIMEDOUT))}),t),a=function(){e&&(i&&clearTimeout(i),i=null,e.forEach((function(e){e&&(e.removeEventListener?e.removeEventListener("abort",o):e.unsubscribe(o))})),e=null)};e.forEach((function(e){return e&&e.addEventListener&&e.addEventListener("abort",o)}));var s=n.signal;return s.unsubscribe=a,[s,function(){i&&clearTimeout(i),i=null}]},st=u().mark((function e(t,r){var n,o,i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.byteLength,r&&!(n1?"since :\n"+s.map(Et).join("\n"):" "+Et(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function xt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Je(null,e)}function Rt(e){return xt(e),e.headers=ze.from(e.headers),e.data=Me.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),St(e.adapter||Ce.adapter)(e).then((function(t){return xt(e),t.data=Me.call(e,e.transformResponse,t),t.headers=ze.from(t.headers),t}),(function(t){return He(t)||(xt(e),t&&t.response&&(t.response.data=Me.call(e,e.transformResponse,t.response),t.response.headers=ze.from(t.response.headers))),Promise.reject(t)}))}var Tt="1.7.2",jt={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){jt[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var kt={};jt.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.2] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new fe(n(o," has been removed"+(t?" in "+t:"")),fe.ERR_DEPRECATED);return t&&!kt[o]&&(kt[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var At={assertOptions:function(e,t,r){if("object"!==f(e))throw new fe("options must be an object",fe.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var s=e[i],u=void 0===s||a(s,i,e);if(!0!==u)throw new fe("option "+i+" must be "+u,fe.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new fe("Unknown option "+i,fe.ERR_BAD_OPTION)}},validators:jt},Pt=At.validators,Lt=function(){function e(t){p(this,e),this.defaults=t,this.interceptors={request:new xe,response:new xe}}var t;return y(e,[{key:"request",value:(t=h(u().mark((function e(t,r){var n,o;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){Error.captureStackTrace?Error.captureStackTrace(n={}):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=Ze(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&At.assertOptions(n,{silentJSONParsing:Pt.transitional(Pt.boolean),forcedJSONParsing:Pt.transitional(Pt.boolean),clarifyTimeoutError:Pt.transitional(Pt.boolean)},!1),null!=o&&(ce.isFunction(o)?t.paramsSerializer={serialize:o}:At.assertOptions(o,{encode:Pt.function,serialize:Pt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ce.merge(i.common,i[t.method]);i&&ce.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=ze.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!u){var p=[Rt.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Je(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Ct={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ct).forEach((function(e){var t=m(e,2),r=t[0],n=t[1];Ct[n]=r}));var Ft=Ct;var Ut=function e(t){var r=new Nt(t),n=x(Nt.prototype.request,r);return ce.extend(n,Nt.prototype,r,{allOwnKeys:!0}),ce.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(Ze(t,r))},n}(Ce);return Ut.Axios=Nt,Ut.CanceledError=Je,Ut.CancelToken=_t,Ut.isCancel=He,Ut.VERSION=Tt,Ut.toFormData=me,Ut.AxiosError=fe,Ut.Cancel=Ut.CanceledError,Ut.all=function(e){return Promise.all(e)},Ut.spread=function(e){return function(t){return e.apply(null,t)}},Ut.isAxiosError=function(e){return ce.isObject(e)&&!0===e.isAxiosError},Ut.mergeConfig=Ze,Ut.AxiosHeaders=ze,Ut.formToJSON=function(e){return Ne(ce.isHTMLForm(e)?new FormData(e):e)},Ut.getAdapter=St,Ut.HttpStatusCode=Ft,Ut.default=Ut,Ut})); +//# sourceMappingURL=axios.min.js.map \ No newline at end of file diff --git a/javaweb_ai/spring-list/target/classes/static/js/vue.esm-browser.js b/javaweb_ai/spring-list/target/classes/static/js/vue.esm-browser.js new file mode 100644 index 0000000..b85f802 --- /dev/null +++ b/javaweb_ai/spring-list/target/classes/static/js/vue.esm-browser.js @@ -0,0 +1,16741 @@ + +/** + * vue v3.4.27 + * (c) 2018-present Yuxi (Evan) You and Vue contributors + * @license MIT + **/ +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function makeMap(str, expectsLowerCase) { + const set = new Set(str.split(",")); + return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val); +} + +const EMPTY_OBJ = Object.freeze({}) ; +const EMPTY_ARR = Object.freeze([]) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter + (key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty$1 = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +const def = (obj, key, value, writable = false) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + writable, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; + +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` +}; + +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return ret; + } + for (const key in styles) { + const value = styles[key]; + if (isString(value) || typeof value === "number") { + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); +function isRenderableAttrValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce( + (entries, [key, val2], i) => { + entries[stringifySymbol(key, i) + " =>"] = val2; + return entries; + }, + {} + ) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v)) + }; + } else if (isSymbol(val)) { + return stringifySymbol(val); + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; +const stringifySymbol = (v, i = "") => { + var _a; + return ( + // Symbol.description in es2019+ so we need to cast here to pass + // the lib: es2016 check + isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v + ); +}; + +function warn$2(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$2(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else { + warn$2( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +let activeEffect; +class ReactiveEffect { + constructor(fn, trigger, scheduler, scope) { + this.fn = fn; + this.trigger = trigger; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + /** + * @internal + */ + this._dirtyLevel = 4; + /** + * @internal + */ + this._trackId = 0; + /** + * @internal + */ + this._runnings = 0; + /** + * @internal + */ + this._shouldSchedule = false; + /** + * @internal + */ + this._depsLength = 0; + recordEffectScope(this, scope); + } + get dirty() { + if (this._dirtyLevel === 2 || this._dirtyLevel === 3) { + this._dirtyLevel = 1; + pauseTracking(); + for (let i = 0; i < this._depsLength; i++) { + const dep = this.deps[i]; + if (dep.computed) { + triggerComputed(dep.computed); + if (this._dirtyLevel >= 4) { + break; + } + } + } + if (this._dirtyLevel === 1) { + this._dirtyLevel = 0; + } + resetTracking(); + } + return this._dirtyLevel >= 4; + } + set dirty(v) { + this._dirtyLevel = v ? 4 : 0; + } + run() { + this._dirtyLevel = 0; + if (!this.active) { + return this.fn(); + } + let lastShouldTrack = shouldTrack; + let lastEffect = activeEffect; + try { + shouldTrack = true; + activeEffect = this; + this._runnings++; + preCleanupEffect(this); + return this.fn(); + } finally { + postCleanupEffect(this); + this._runnings--; + activeEffect = lastEffect; + shouldTrack = lastShouldTrack; + } + } + stop() { + if (this.active) { + preCleanupEffect(this); + postCleanupEffect(this); + this.onStop && this.onStop(); + this.active = false; + } + } +} +function triggerComputed(computed) { + return computed.value; +} +function preCleanupEffect(effect2) { + effect2._trackId++; + effect2._depsLength = 0; +} +function postCleanupEffect(effect2) { + if (effect2.deps.length > effect2._depsLength) { + for (let i = effect2._depsLength; i < effect2.deps.length; i++) { + cleanupDepEffect(effect2.deps[i], effect2); + } + effect2.deps.length = effect2._depsLength; + } +} +function cleanupDepEffect(dep, effect2) { + const trackId = dep.get(effect2); + if (trackId !== void 0 && effect2._trackId !== trackId) { + dep.delete(effect2); + if (dep.size === 0) { + dep.cleanup(); + } + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn, NOOP, () => { + if (_effect.dirty) { + _effect.run(); + } + }); + if (options) { + extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +let pauseScheduleStack = 0; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function pauseScheduling() { + pauseScheduleStack++; +} +function resetScheduling() { + pauseScheduleStack--; + while (!pauseScheduleStack && queueEffectSchedulers.length) { + queueEffectSchedulers.shift()(); + } +} +function trackEffect(effect2, dep, debuggerEventExtraInfo) { + var _a; + if (dep.get(effect2) !== effect2._trackId) { + dep.set(effect2, effect2._trackId); + const oldDep = effect2.deps[effect2._depsLength]; + if (oldDep !== dep) { + if (oldDep) { + cleanupDepEffect(oldDep, effect2); + } + effect2.deps[effect2._depsLength++] = dep; + } else { + effect2._depsLength++; + } + { + (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + } +} +const queueEffectSchedulers = []; +function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) { + var _a; + pauseScheduling(); + for (const effect2 of dep.keys()) { + let tracking; + if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0); + effect2._dirtyLevel = dirtyLevel; + } + if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) { + { + (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + effect2.trigger(); + if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) { + effect2._shouldSchedule = false; + if (effect2.scheduler) { + queueEffectSchedulers.push(effect2.scheduler); + } + } + } + } + resetScheduling(); +} + +const createDep = (cleanup, computed) => { + const dep = /* @__PURE__ */ new Map(); + dep.cleanup = cleanup; + dep.computed = computed; + return dep; +}; + +const targetMap = /* @__PURE__ */ new WeakMap(); +const ITERATE_KEY = Symbol("iterate" ); +const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" ); +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep(() => depsMap.delete(key))); + } + trackEffect( + activeEffect, + dep, + { + target, + type, + key + } + ); + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + pauseScheduling(); + for (const dep of deps) { + if (dep) { + triggerEffects( + dep, + 4, + { + target, + type, + key, + newValue, + oldValue, + oldTarget + } + ); + } + } + resetScheduling(); +} +function getDepFromReactive(object, key) { + const depsMap = targetMap.get(object); + return depsMap && depsMap.get(key); +} + +const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) +); +const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + pauseScheduling(); + const res = toRaw(this)[key].apply(this, args); + resetScheduling(); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty(key) { + if (!isSymbol(key)) + key = String(key); + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _isShallow = false) { + this._isReadonly = _isReadonly; + this._isShallow = _isShallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return isShallow2; + } else if (key === "__v_raw") { + if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype + // this means the reciever is a user proxy of the reactive proxy + Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) { + return target; + } + return; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (isShallow2) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(false, isShallow2); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (!this._isShallow) { + const isOldValueReadonly = isReadonly(oldValue); + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + if (isOldValueReadonly) { + return false; + } else { + oldValue.value = value; + return true; + } + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(isShallow2 = false) { + super(true, isShallow2); + } + set(target, key) { + { + warn$2( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn$2( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( + true +); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly = false, isShallow = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly = false) { + target = target["__v_raw"]; + !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly, isShallow) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + warn$2( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = [ + "keys", + "values", + "entries", + Symbol.iterator + ]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod(method, false, false); + readonlyInstrumentations2[method] = createIterableMethod(method, true, false); + shallowInstrumentations2[method] = createIterableMethod(method, false, true); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +const [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = /* @__PURE__ */ createInstrumentations(); +function createInstrumentationGetter(isReadonly, shallow) { + const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly; + } else if (key === "__v_isReadonly") { + return isReadonly; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + warn$2( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + warn$2(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return value ? !!value["__v_raw"] : false; +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + if (Object.isExtensible(value)) { + def(value, "__v_skip", true); + } + return value; +} +const toReactive = (value) => isObject(value) ? reactive(value) : value; +const toReadonly = (value) => isObject(value) ? readonly(value) : value; + +const COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`; +class ComputedRefImpl { + constructor(getter, _setter, isReadonly, isSSR) { + this.getter = getter; + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this.effect = new ReactiveEffect( + () => getter(this._value), + () => triggerRefValue( + this, + this.effect._dirtyLevel === 2 ? 2 : 3 + ) + ); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly; + } + get value() { + const self = toRaw(this); + if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) { + triggerRefValue(self, 4); + } + trackRefValue(self); + if (self.effect._dirtyLevel >= 2) { + if (this._warnRecursive) { + warn$2(COMPUTED_SIDE_EFFECT_WARN, ` + +getter: `, this.getter); + } + triggerRefValue(self, 2); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } + // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x + get _dirty() { + return this.effect.dirty; + } + set _dirty(v) { + this.effect.dirty = v; + } + // #endregion +} +function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = () => { + warn$2("Write operation failed: computed value is readonly"); + } ; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +function trackRefValue(ref2) { + var _a; + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + trackEffect( + activeEffect, + (_a = ref2.dep) != null ? _a : ref2.dep = createDep( + () => ref2.dep = void 0, + ref2 instanceof ComputedRefImpl ? ref2 : void 0 + ), + { + target: ref2, + type: "get", + key: "value" + } + ); + } +} +function triggerRefValue(ref2, dirtyLevel = 4, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + triggerEffects( + dep, + dirtyLevel, + { + target: ref2, + type: "set", + key: "value", + newValue: newVal + } + ); + } +} +function isRef(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, 4, newVal); + } + } +} +function triggerRef(ref2) { + triggerRefValue(ref2, 4, ref2.value ); +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get, set } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get; + this._set = set; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + warn$2(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +const TrackOpTypes = { + "GET": "get", + "HAS": "has", + "ITERATE": "iterate" +}; +const TriggerOpTypes = { + "SET": "set", + "ADD": "add", + "DELETE": "delete", + "CLEAR": "clear" +}; + +const stack$1 = []; +function pushWarningContext(vnode) { + stack$1.push(vnode); +} +function popWarningContext() { + stack$1.pop(); +} +function warn$1(msg, ...args) { + pauseTracking(); + const instance = stack$1.length ? stack$1[stack$1.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.map((a) => { + var _a, _b; + return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a); + }).join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack$1[stack$1.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn$1(`${type} is NaN - the duration expression might be incorrect.`); + } +} + +const ErrorCodes = { + "SETUP_FUNCTION": 0, + "0": "SETUP_FUNCTION", + "RENDER_FUNCTION": 1, + "1": "RENDER_FUNCTION", + "WATCH_GETTER": 2, + "2": "WATCH_GETTER", + "WATCH_CALLBACK": 3, + "3": "WATCH_CALLBACK", + "WATCH_CLEANUP": 4, + "4": "WATCH_CLEANUP", + "NATIVE_EVENT_HANDLER": 5, + "5": "NATIVE_EVENT_HANDLER", + "COMPONENT_EVENT_HANDLER": 6, + "6": "COMPONENT_EVENT_HANDLER", + "VNODE_HOOK": 7, + "7": "VNODE_HOOK", + "DIRECTIVE_HOOK": 8, + "8": "DIRECTIVE_HOOK", + "TRANSITION_HOOK": 9, + "9": "TRANSITION_HOOK", + "APP_ERROR_HANDLER": 10, + "10": "APP_ERROR_HANDLER", + "APP_WARN_HANDLER": 11, + "11": "APP_WARN_HANDLER", + "FUNCTION_REF": 12, + "12": "FUNCTION_REF", + "ASYNC_COMPONENT_LOADER": 13, + "13": "ASYNC_COMPONENT_LOADER", + "SCHEDULER": 14, + "14": "SCHEDULER" +}; +const ErrorTypeStrings$1 = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core ." +}; +function callWithErrorHandling(fn, instance, type, args) { + try { + return args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + if (isArray(fn)) { + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } else { + warn$1( + `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}` + ); + } +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings$1[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + pauseTracking(); + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + resetTracking(); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings$1[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +let isFlushing = false; +let isFlushPending = false; +const queue = []; +let flushIndex = 0; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (instance && cb.id !== instance.uid) { + continue; + } + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)].sort( + (a, b) => getId(a) - getId(b) + ); + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? Infinity : job.id; +const comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + handleError( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`, + null, + 10 + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Set(); +{ + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.effect.dirty = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + instance.parent.effect.dirty = true; + queueJob(instance.parent.update); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); +} +function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +let devtools$1; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (devtools$1) { + devtools$1.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook$1(hook, target) { + var _a, _b; + devtools$1 = hook; + if (devtools$1) { + devtools$1.enabled = true; + buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook$1(newHook, target); + }); + setTimeout(() => { + if (!devtools$1) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( + "component:added" /* COMPONENT_ADDED */ +); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (devtools$1 && typeof devtools$1.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !devtools$1.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:start" /* PERFORMANCE_START */ +); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:end" /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn$1( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn$1( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn$1( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate( + event + )}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + props, + data, + setupState, + ctx, + inheritAttrs + } = instance; + const prev = setCurrentRenderingInstance(instance); + let result; + let fallthroughAttrs; + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn$1( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + true ? shallowReadonly(props) : props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + true ? shallowReadonly(props) : props, + true ? { + get attrs() { + markAttrsAccessed(); + return shallowReadonly(attrs); + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + true ? shallowReadonly(props) : props, + null + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs, false, true); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn$1( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn$1( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn$1( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root, null, false, true); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn$1( + `Component inside renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren, false); + if (!childRoot) { + return [vnode, void 0]; + } else if (childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) { + return getChildRoot(childRoot); + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children, recurse = true) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + if (recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) { + return filterSingleRoot(singleRoot.children); + } + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent) { + const root = parent.subTree; + if (root.suspense && root.suspense.activeBranch === vnode) { + root.el = vnode.el; + } + if (root === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } else { + break; + } + } +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn$1( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); +} + +const isSuspense = (type) => type.__isSuspense; +let suspenseId = 0; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) { + n2.suspense = n1.suspense; + n2.suspense.vnode = n2; + n2.el = n1.el; + return; + } + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + namespace, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + if (!isHydrating) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } + } else { + suspense.pendingId = suspenseId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + if (newBranch.shapeFlag & 512) { + suspense.pendingId = newBranch.component.suspenseId; + } else { + suspense.pendingId = suspenseId++; + } + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + namespace, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +let hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const initialAnchor = anchor; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + namespace, + container, + hiddenContainer, + deps: 0, + pendingId: suspenseId++, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: !isHydrating, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + anchor === initialAnchor ? next(activeBranch) : anchor, + 0 + ); + queuePostFlushCb(effects); + } + }; + } + if (activeBranch) { + if (parentNode(activeBranch.el) !== suspense.hiddenContainer) { + anchor = next(activeBranch); + } + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + namespace2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + namespace, + optimized + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + // eslint-disable-next-line no-restricted-globals + document.createElement("div"), + null, + namespace, + slotScopeIds, + optimized, + rendererInternals, + true + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn$1(` slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + let el = branch.el; + while (!el && branch.component) { + branch = branch.component.subTree; + el = branch.el; + } + vnode.el = el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + const suspensible = vnode.props && vnode.props.suspensible; + return suspensible != null && suspensible !== false; +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn$1( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "post" }) + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "sync" }) + ); +} +const INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + if (!isFunction(cb)) { + warn$1( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, { + immediate, + deep, + flush, + once, + onTrack, + onTrigger +} = EMPTY_OBJ) { + if (cb && once) { + const _cb = cb; + cb = (...args) => { + _cb(...args); + unwatch(); + }; + } + if (deep !== void 0 && typeof deep === "number") { + warn$1( + `watch() "deep" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.` + ); + } + if (!cb) { + if (immediate !== void 0) { + warn$1( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn$1( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (once !== void 0) { + warn$1( + `watch() "once" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s) => { + warn$1( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = currentInstance; + const reactiveGetter = (source2) => deep === true ? source2 : ( + // for deep: false, only traverse root-level properties + traverse(source2, deep === false ? 1 : void 0) + ); + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => reactiveGetter(source); + forceTrigger = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return reactiveGetter(s); + } else if (isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect.onStop = () => { + callWithErrorHandling(fn, instance, 4); + cleanup = effect.onStop = void 0; + }; + }; + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect.active || !effect.dirty) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect = new ReactiveEffect(getter, NOOP, scheduler); + const scope = getCurrentScope(); + const unwatch = () => { + effect.stop(); + if (scope) { + remove(scope.effects, effect); + } + }; + { + effect.onTrack = onTrack; + effect.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect.run.bind(effect), + instance && instance.suspense + ); + } else { + effect.run(); + } + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const reset = setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + reset(); + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, depth = Infinity, seen) { + if (depth <= 0 || !isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + depth--; + if (isRef(value)) { + traverse(value.value, depth, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], depth, seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, depth, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], depth, seen); + } + } + return value; +} + +function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn$1("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + if (currentRenderingInstance === null) { + warn$1(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey$1 = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn$1( + " can only be used on a single element or component. Use for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn$1(`invalid mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in" && innerChild.type !== Comment) { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.effect.dirty = true; + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } +}; +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey$1] = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey$1] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey$1]) { + el[enterCbKey$1]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) + return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getKeepAliveChild(vnode) { + if (!isKeepAlive(vnode)) { + return vnode; + } + if (vnode.component) { + return vnode.component.subTree; + } + const { shapeFlag, children } = vnode; + if (children) { + if (shapeFlag & 16) { + return children[0]; + } + if (shapeFlag & 32 && isFunction(children.default)) { + return children.default(); + } + } +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn$1( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + ); + }; + if (suspensible && instance.suspense || false) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + instance.parent.effect.dirty = true; + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, namespace, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + namespace, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn$1(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + pauseTracking(); + const reset = setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + reset(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, "")); + warn$1( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook("bu"); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook("bum"); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook("sp"); +const onRenderTriggered = createHook( + "rtg" +); +const onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn$1(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn$1( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn$1(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => { + i.effect.dirty = true; + queueJob(i.update); + }), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + if (key === "__v_skip") { + return true; + } + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance.attrs, "get", ""); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn$1( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn$1( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn$1(`Cannot mutate + + + \ No newline at end of file diff --git a/javaweb_ai/spring-list/target/classes/top/lejings/springlist/SpringListApplication.class b/javaweb_ai/spring-list/target/classes/top/lejings/springlist/SpringListApplication.class new file mode 100644 index 0000000..7da9261 Binary files /dev/null and b/javaweb_ai/spring-list/target/classes/top/lejings/springlist/SpringListApplication.class differ diff --git a/javaweb_ai/spring-list/target/classes/top/lejings/springlist/controller/UserController.class b/javaweb_ai/spring-list/target/classes/top/lejings/springlist/controller/UserController.class new file mode 100644 index 0000000..a1f9d30 Binary files /dev/null and b/javaweb_ai/spring-list/target/classes/top/lejings/springlist/controller/UserController.class differ diff --git a/javaweb_ai/spring-list/target/classes/top/lejings/springlist/pojo/User.class b/javaweb_ai/spring-list/target/classes/top/lejings/springlist/pojo/User.class new file mode 100644 index 0000000..19797d4 Binary files /dev/null and b/javaweb_ai/spring-list/target/classes/top/lejings/springlist/pojo/User.class differ diff --git a/javaweb_ai/spring-list/target/classes/user.txt b/javaweb_ai/spring-list/target/classes/user.txt new file mode 100644 index 0000000..10e6842 --- /dev/null +++ b/javaweb_ai/spring-list/target/classes/user.txt @@ -0,0 +1,8 @@ +1,daqiao,1234567890,大乔,22,2024-07-15 15:05:45 +2,xiaoqiao,1234567890,小乔,18,2024-07-15 15:12:09 +3,diaochan,1234567890,貂蝉,21,2024-07-15 15:07:16 +4,lvbu,1234567890,吕布,28,2024-07-16 10:05:15 +5,zhaoyun,1234567890,赵云,27,2024-07-16 11:03:28 +6,zhangfei,1234567890,张飞,31,2024-07-16 11:03:28 +7,guanyu,1234567890,关羽,34,2024-07-16 12:05:12 +8,liubei,1234567890,刘备,37,2024-07-16 15:03:28 \ No newline at end of file diff --git a/javaweb_ai/spring-list/target/maven-archiver/pom.properties b/javaweb_ai/spring-list/target/maven-archiver/pom.properties new file mode 100644 index 0000000..ab2bdfd --- /dev/null +++ b/javaweb_ai/spring-list/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=spring-list +groupId=top.lejings +version=0.0.1-SNAPSHOT diff --git a/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..ec57614 --- /dev/null +++ b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1 @@ +top\lejings\springlist\SpringListApplication.class diff --git a/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..3d4e04a --- /dev/null +++ b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +C:\Users\LeJingS\IdeaProjects\java_web_ai\spring-list\src\main\java\top\lejings\springlist\SpringListApplication.java diff --git a/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..4740cc9 --- /dev/null +++ b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1 @@ +top\lejings\springlist\SpringListApplicationTests.class diff --git a/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..6d42d76 --- /dev/null +++ b/javaweb_ai/spring-list/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1 @@ +C:\Users\LeJingS\IdeaProjects\java_web_ai\spring-list\src\test\java\top\lejings\springlist\SpringListApplicationTests.java diff --git a/javaweb_ai/spring-list/target/spring-list-0.0.1-SNAPSHOT.jar b/javaweb_ai/spring-list/target/spring-list-0.0.1-SNAPSHOT.jar new file mode 100644 index 0000000..03ba545 Binary files /dev/null and b/javaweb_ai/spring-list/target/spring-list-0.0.1-SNAPSHOT.jar differ diff --git a/javaweb_ai/spring-list/target/spring-list-0.0.1-SNAPSHOT.jar.original b/javaweb_ai/spring-list/target/spring-list-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 0000000..f13c25f Binary files /dev/null and b/javaweb_ai/spring-list/target/spring-list-0.0.1-SNAPSHOT.jar.original differ diff --git a/javaweb_ai/spring-list/target/surefire-reports/2024-11-25T22-13-21_332.dumpstream b/javaweb_ai/spring-list/target/surefire-reports/2024-11-25T22-13-21_332.dumpstream new file mode 100644 index 0000000..0d72d8c --- /dev/null +++ b/javaweb_ai/spring-list/target/surefire-reports/2024-11-25T22-13-21_332.dumpstream @@ -0,0 +1,5 @@ +# Created at 2024-11-25T22:13:24.991 +Boot Manifest-JAR contains absolute paths in classpath 'D:\learn\tools\Java\Maven\mvn_reps\org\apache\maven\surefire\surefire-booter\3.5.2\surefire-booter-3.5.2.jar' +Hint: -Djdk.net.URLClassPath.disableClassPathURLCheck=true +'other' has different root + diff --git a/javaweb_ai/spring-list/target/surefire-reports/TEST-top.lejings.springlist.SpringListApplicationTests.xml b/javaweb_ai/spring-list/target/surefire-reports/TEST-top.lejings.springlist.SpringListApplicationTests.xml new file mode 100644 index 0000000..efa3968 --- /dev/null +++ b/javaweb_ai/spring-list/target/surefire-reports/TEST-top.lejings.springlist.SpringListApplicationTests.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/spring-list/target/surefire-reports/top.lejings.springlist.SpringListApplicationTests.txt b/javaweb_ai/spring-list/target/surefire-reports/top.lejings.springlist.SpringListApplicationTests.txt new file mode 100644 index 0000000..6d49af5 --- /dev/null +++ b/javaweb_ai/spring-list/target/surefire-reports/top.lejings.springlist.SpringListApplicationTests.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: top.lejings.springlist.SpringListApplicationTests +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.483 s -- in top.lejings.springlist.SpringListApplicationTests diff --git a/javaweb_ai/spring-list/target/test-classes/top/lejings/springlist/SpringListApplicationTests.class b/javaweb_ai/spring-list/target/test-classes/top/lejings/springlist/SpringListApplicationTests.class new file mode 100644 index 0000000..aa48130 Binary files /dev/null and b/javaweb_ai/spring-list/target/test-classes/top/lejings/springlist/SpringListApplicationTests.class differ diff --git a/javaweb_ai/spring-webai-quickstart/learn.md b/javaweb_ai/spring-webai-quickstart/learn.md new file mode 100644 index 0000000..d4be819 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/learn.md @@ -0,0 +1,2 @@ +# javaweb +## http协议 diff --git a/javaweb_ai/spring-webai-quickstart/pom.xml b/javaweb_ai/spring-webai-quickstart/pom.xml new file mode 100644 index 0000000..e7657de --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + + + org.springframework.boot + spring-boot-starter-parent + 3.4.0 + + + top.lejings + spring-webai-quickstart + 0.0.1-SNAPSHOT + spring-webai-quickstart + spring-webai-quickstart + + + + + + + + + + + + + + + + 23 + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/Hello.java b/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/Hello.java new file mode 100644 index 0000000..ca355db --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/Hello.java @@ -0,0 +1,14 @@ +package top.lejings.springwebaiquickstart; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +//表示当前类为请求处理类 +@RestController +public class Hello { + @RequestMapping("/hello") + public String sayHello(String name) { + System.out.println("Hello " + name); + return "Hello " + name +"~"; + } + +} diff --git a/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplication.java b/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplication.java new file mode 100644 index 0000000..d3dc765 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplication.java @@ -0,0 +1,18 @@ +package top.lejings.springwebaiquickstart; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +/* +* 启动类或者说引导类 +* +* +* +* */ +@SpringBootApplication +public class SpringWebaiQuickstartApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringWebaiQuickstartApplication.class, args); + } + +} diff --git a/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/rest01.java b/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/rest01.java new file mode 100644 index 0000000..27318cd --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/src/main/java/top/lejings/springwebaiquickstart/rest01.java @@ -0,0 +1,30 @@ +package top.lejings.springwebaiquickstart; + +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class rest01 { + @RequestMapping + public String request(HttpServletRequest request){ + //获取请求方式: + String method = request.getMethod(); + System.out.println("请求方式"+method); + //获取请求的url地址 + String url = request.getRequestURL().toString(); + System.out.println("请求地址"+url); + //获取请求协议 + String protocol = request.getProtocol(); + System.out.println("请求协议"+protocol); + //获取请求参数 + String queryString = request.getQueryString(); + System.out.println("请求参数"+queryString); + //获取请求头 eg Accept : + String header = request.getHeader("Accept"); + System.out.println("请求头"+header); + //相应给前端一个字符串 OK + System.out.println("method:"+method); + return "ok"; + } +} diff --git a/javaweb_ai/spring-webai-quickstart/src/main/resources/application.properties b/javaweb_ai/spring-webai-quickstart/src/main/resources/application.properties new file mode 100644 index 0000000..1675bff --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=spring-webai-quickstart diff --git a/javaweb_ai/spring-webai-quickstart/src/test/java/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplicationTests.java b/javaweb_ai/spring-webai-quickstart/src/test/java/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplicationTests.java new file mode 100644 index 0000000..0232fb3 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/src/test/java/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplicationTests.java @@ -0,0 +1,13 @@ +package top.lejings.springwebaiquickstart; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SpringWebaiQuickstartApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/javaweb_ai/spring-webai-quickstart/target/classes/top/lejings/springwebaiquickstart/rest01.class b/javaweb_ai/spring-webai-quickstart/target/classes/top/lejings/springwebaiquickstart/rest01.class new file mode 100644 index 0000000..a715126 Binary files /dev/null and b/javaweb_ai/spring-webai-quickstart/target/classes/top/lejings/springwebaiquickstart/rest01.class differ diff --git a/javaweb_ai/spring-webai-quickstart/target/maven-archiver/pom.properties b/javaweb_ai/spring-webai-quickstart/target/maven-archiver/pom.properties new file mode 100644 index 0000000..dadbfb8 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=spring-webai-quickstart +groupId=top.lejings +version=0.0.1-SNAPSHOT diff --git a/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..ed8a357 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +top\lejings\springwebaiquickstart\rest01.class +top\lejings\springwebaiquickstart\Hello.class +top\lejings\springwebaiquickstart\SpringWebaiQuickstartApplication.class diff --git a/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..f62b5c7 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +C:\Users\LeJingS\IdeaProjects\java_web_ai\spring-webai-quickstart\src\main\java\top\lejings\springwebaiquickstart\Hello.java +C:\Users\LeJingS\IdeaProjects\java_web_ai\spring-webai-quickstart\src\main\java\top\lejings\springwebaiquickstart\rest01.java +C:\Users\LeJingS\IdeaProjects\java_web_ai\spring-webai-quickstart\src\main\java\top\lejings\springwebaiquickstart\SpringWebaiQuickstartApplication.java diff --git a/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..7f4ebb9 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1 @@ +top\lejings\springwebaiquickstart\SpringWebaiQuickstartApplicationTests.class diff --git a/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..1233e04 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1 @@ +C:\Users\LeJingS\IdeaProjects\java_web_ai\spring-webai-quickstart\src\test\java\top\lejings\springwebaiquickstart\SpringWebaiQuickstartApplicationTests.java diff --git a/javaweb_ai/spring-webai-quickstart/target/spring-webai-quickstart-0.0.1-SNAPSHOT.jar b/javaweb_ai/spring-webai-quickstart/target/spring-webai-quickstart-0.0.1-SNAPSHOT.jar new file mode 100644 index 0000000..6e2953e Binary files /dev/null and b/javaweb_ai/spring-webai-quickstart/target/spring-webai-quickstart-0.0.1-SNAPSHOT.jar differ diff --git a/javaweb_ai/spring-webai-quickstart/target/spring-webai-quickstart-0.0.1-SNAPSHOT.jar.original b/javaweb_ai/spring-webai-quickstart/target/spring-webai-quickstart-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 0000000..b0f55ce Binary files /dev/null and b/javaweb_ai/spring-webai-quickstart/target/spring-webai-quickstart-0.0.1-SNAPSHOT.jar.original differ diff --git a/javaweb_ai/spring-webai-quickstart/target/surefire-reports/2024-11-25T22-13-26_512.dumpstream b/javaweb_ai/spring-webai-quickstart/target/surefire-reports/2024-11-25T22-13-26_512.dumpstream new file mode 100644 index 0000000..f27ecf5 --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/surefire-reports/2024-11-25T22-13-26_512.dumpstream @@ -0,0 +1,5 @@ +# Created at 2024-11-25T22:13:26.734 +Boot Manifest-JAR contains absolute paths in classpath 'D:\learn\tools\Java\Maven\mvn_reps\org\apache\maven\surefire\surefire-booter\3.5.2\surefire-booter-3.5.2.jar' +Hint: -Djdk.net.URLClassPath.disableClassPathURLCheck=true +'other' has different root + diff --git a/javaweb_ai/spring-webai-quickstart/target/surefire-reports/TEST-top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests.xml b/javaweb_ai/spring-webai-quickstart/target/surefire-reports/TEST-top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests.xml new file mode 100644 index 0000000..d11465d --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/surefire-reports/TEST-top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/javaweb_ai/spring-webai-quickstart/target/surefire-reports/top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests.txt b/javaweb_ai/spring-webai-quickstart/target/surefire-reports/top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests.txt new file mode 100644 index 0000000..e36498d --- /dev/null +++ b/javaweb_ai/spring-webai-quickstart/target/surefire-reports/top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.119 s -- in top.lejings.springwebaiquickstart.SpringWebaiQuickstartApplicationTests diff --git a/javaweb_ai/spring-webai-quickstart/target/test-classes/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplicationTests.class b/javaweb_ai/spring-webai-quickstart/target/test-classes/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplicationTests.class new file mode 100644 index 0000000..392d1c4 Binary files /dev/null and b/javaweb_ai/spring-webai-quickstart/target/test-classes/top/lejings/springwebaiquickstart/SpringWebaiQuickstartApplicationTests.class differ